diff --git a/.gitignore b/.gitignore index 4d4e37c..dd0d673 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,6 @@ build/ *.swp src/main.cc +help/ +Testing/ +**/api_key.json \ No newline at end of file diff --git a/README.md b/README.md index 41f443d..494d973 100644 --- a/README.md +++ b/README.md @@ -16,8 +16,15 @@ you can use these endpoint - statuses/user_timeline - favorites/create - favorites/destroy +- users/show - media/upload(support: jpg, jpeg, png, gif, mp4) - direct_messages/events/new (message_create) +- oauth/access_token +- oauth/authorize +- oauth/invalidate_token +- oauth/request_token +- oauth2/token +- oauth2/invalidate_token # Dependency - libcurl(openssl version) @@ -26,7 +33,7 @@ you can use these endpoint # Installation ## Ubuntu ``` -# apt install clang cmake git libboost-dev libboost-test-dev libcurl4-openssl-dev libssl-dev ninja-build +# apt install clang cmake git libboost-dev libcurl4-openssl-dev libssl-dev ninja-build $ git clone https://github.com/koron0902/CocoaTweet $ cd CocoaTweet $ mkdir build @@ -71,17 +78,19 @@ $ mingw32-make # How ## API Key Registration +there're 4 ways to register API key + ### 1.Write Key into code write api key into code and create Key object use it. ``` -#include "cocoatweet/oauth/key.h" +#include "cocoatweet/authentication/key.h" auto consumerKey = "your consumer key"; auto consumerSecret = "your consumer secret"; auto accessToken = "your access token"; auto accessTokenSecret = "your access token secret"; -CocoaTweet::OAuth::Key key(consumerKey, consumerSecret, accessToken, accessTokenSecret); +CocoaTweet::Authentication::Key key(consumerKey, consumerSecret, accessToken, accessTokenSecret); ``` @@ -99,11 +108,45 @@ prepare file which written 'api-key' with json format. then you can load api key from json file. ``` -#include "cocoatweet/oauth/key.h" +#include "cocoatweet/authentication/key.h" -CocoaTweet::OAuth::Key key = CocoaTweet::OAuth::Key::fromJsonFile("api_key.json"); +CocoaTweet::Authentication::Key key = CocoaTweet::Authentication::Key::fromJsonFile("api_key.json"); ``` +### 3. Authenticate with API call +※ consumer key, consumer secret are needed. in this case, get access token with api call. +``` +CocoaTweet::API::API api(key); + +auto oAuthToken = api.oauth1().requestToken("oob"); +const auto signInUrl = api.oauth1().authorize(oAuthToken); +std::cout << "signin : " << signInUrl << std::endl; +std::string pin = ""; +std::cout << "pincode : "; +std::cin >> pin; + +const auto validOAuthToken = api.oauth1().accessToken(oAuthToken, pin); +key.accessToken(validOAuthToken.oauthToken()); +key.accessTokenSecret(validOAuthToken.oauthTokenSecret()); +api.swapKey(key); +``` + + +### 4. Get BearerToken with API call +if you want to call Twitter API using Bearer Token; OAuth2, you can do. +also need consumer key and secret +``` +CocoaTweet::API::API api(key); +auto bearerToken = api.oauth2().token(); +key.bearerToken(bearerToken); +key.authType(CocoaTweet::Authentication::Key::AUTH_TYPE::OAUTH2); +api.swapKey(key); +``` + +After call it, always use Bearer Token to access API which kinds of GET method. +no affect to POST method. +then, if you use this, and ONLY use kind of GET API, you DO NOT need acess token. + ## Generate API object generating API object with Key. this object is API entry point. @@ -115,15 +158,6 @@ CocoaTweet::API::API api(key); ``` -### NOTE -if you want to call Twitter API using Bearer Token; OAuth2, you can do. -``` -api.generateBearerToken(); -``` -After call it, always use Bearer Token to access API which kinds of GET method. -no affect to POST method. -then, if you use this, and ONLY use kind of GET API, you DO NOT need acess token. - ## Use API ``` @@ -153,8 +187,10 @@ api.favorite().destroy("tweet id"); // get a timeline with screen name auto timeline = api.status().userTimeline("milkcocoa0902"); +auto user = api.user().show("milkcocoa0902"); + // send a direct message -// you cau get recipient_id using https://idtwi.com/ +// you cau get recipient_id using user.show() api.directMessage().messageCreate("", "Sent message using Cocoa Twitter Library"); ``` diff --git a/Testing/Temporary/CTestCostData.txt b/Testing/Temporary/CTestCostData.txt deleted file mode 100644 index ed97d53..0000000 --- a/Testing/Temporary/CTestCostData.txt +++ /dev/null @@ -1 +0,0 @@ ---- diff --git a/Testing/Temporary/LastTest.log b/Testing/Temporary/LastTest.log deleted file mode 100644 index 873b00a..0000000 --- a/Testing/Temporary/LastTest.log +++ /dev/null @@ -1,3 +0,0 @@ -Start testing: Oct 07 22:14 JST ----------------------------------------------------------- -End testing: Oct 07 22:14 JST diff --git a/api_key.json b/api_key.json index 37865c0..41b6fa8 100644 --- a/api_key.json +++ b/api_key.json @@ -1,6 +1,6 @@ { - "consumer_key" : "HmXS3q4yrQ2wndiCQzH8YnUQM", - "consumer_secret" : "qZwdGJYGFMpz7CSVGPHmbrh0O3Sk99wa0OLMf8HSvKKtNclrnf", - "access_token" : "1427931990792146949-iuNX8xBgQSXGtxr5cz8m495OtnXKcw", - "access_token_secret" : "A0R7vOOR3pRm4trGLxVbwNiQTkOMAkEh3z5ed3IxJVbJl" + "consumer_key" : "wcSkGjuvoQ7gGjB0rR5XSJiWI", + "consumer_secret" : "Qo9fiQaimj7QwqB8dXOONVI9QL2quJyxh3ZXo2REgvcrpCC3gE", + "access_token" : "1427931990792146949-nmcoAzhLSq0j0vwv8ati9F5oQN3Gb7", + "access_token_secret" : "bzWd71ARfczBMuYLcsHdlXotdNVHY3nX7WMOSrLCuHXHa" } diff --git a/help/html/CMakeCCompilerId_8c.html b/help/html/CMakeCCompilerId_8c.html deleted file mode 100644 index fd32b5b..0000000 --- a/help/html/CMakeCCompilerId_8c.html +++ /dev/null @@ -1,354 +0,0 @@ - - - - - - - -CocoaTweet: build/CMakeFiles/3.16.3/CompilerIdC/CMakeCCompilerId.c File Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
CMakeCCompilerId.c File Reference
-
-
- - - - - - - - - - - - - - - - - - -

-Macros

#define COMPILER_ID   ""
 
#define STRINGIFY_HELPER(X)   #X
 
#define STRINGIFY(X)   STRINGIFY_HELPER(X)
 
#define PLATFORM_ID
 
#define ARCHITECTURE_ID
 
#define DEC(n)
 
#define HEX(n)
 
#define C_DIALECT
 
- - - -

-Functions

int main (int argc, char *argv[])
 
- - - - - - - - - -

-Variables

char const * info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]"
 
char const * info_platform = "INFO" ":" "platform[" PLATFORM_ID "]"
 
char const * info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]"
 
const char * info_language_dialect_default
 
-

Macro Definition Documentation

- -

◆ ARCHITECTURE_ID

- -
-
- - - - -
#define ARCHITECTURE_ID
-
- -
-
- -

◆ C_DIALECT

- -
-
- - - - -
#define C_DIALECT
-
- -
-
- -

◆ COMPILER_ID

- -
-
- - - - -
#define COMPILER_ID   ""
-
- -
-
- -

◆ DEC

- -
-
- - - - - - - - -
#define DEC( n)
-
-Value:
('0' + (((n) / 10000000)%10)), \
-
('0' + (((n) / 1000000)%10)), \
-
('0' + (((n) / 100000)%10)), \
-
('0' + (((n) / 10000)%10)), \
-
('0' + (((n) / 1000)%10)), \
-
('0' + (((n) / 100)%10)), \
-
('0' + (((n) / 10)%10)), \
-
('0' + ((n) % 10))
-
-
-
- -

◆ HEX

- -
-
- - - - - - - - -
#define HEX( n)
-
-Value:
('0' + ((n)>>28 & 0xF)), \
-
('0' + ((n)>>24 & 0xF)), \
-
('0' + ((n)>>20 & 0xF)), \
-
('0' + ((n)>>16 & 0xF)), \
-
('0' + ((n)>>12 & 0xF)), \
-
('0' + ((n)>>8 & 0xF)), \
-
('0' + ((n)>>4 & 0xF)), \
-
('0' + ((n) & 0xF))
-
-
-
- -

◆ PLATFORM_ID

- -
-
- - - - -
#define PLATFORM_ID
-
- -
-
- -

◆ STRINGIFY

- -
-
- - - - - - - - -
#define STRINGIFY( X)   STRINGIFY_HELPER(X)
-
- -
-
- -

◆ STRINGIFY_HELPER

- -
-
- - - - - - - - -
#define STRINGIFY_HELPER( X)   #X
-
- -
-
-

Function Documentation

- -

◆ main()

- -
-
- - - - - - - - - - - - - - - - - - -
int main (int argc,
char * argv[] 
)
-
- -
-
-

Variable Documentation

- -

◆ info_arch

- -
-
- - - - -
char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]"
-
- -
-
- -

◆ info_compiler

- -
-
- - - - -
char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]"
-
- -
-
- -

◆ info_language_dialect_default

- -
-
- - - - -
const char* info_language_dialect_default
-
-Initial value:
=
-
"INFO" ":" "dialect_default[" C_DIALECT "]"
-
-
-
- -

◆ info_platform

- -
-
- - - - -
char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]"
-
- -
-
-
-
#define C_DIALECT
Definition: CMakeCCompilerId.c:625
- - - - diff --git a/help/html/CMakeCXXCompilerId_8cpp.html b/help/html/CMakeCXXCompilerId_8cpp.html deleted file mode 100644 index e50558f..0000000 --- a/help/html/CMakeCXXCompilerId_8cpp.html +++ /dev/null @@ -1,364 +0,0 @@ - - - - - - - -CocoaTweet: build/CMakeFiles/3.16.3/CompilerIdCXX/CMakeCXXCompilerId.cpp File Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
CMakeCXXCompilerId.cpp File Reference
-
-
- - - - - - - - - - - - - - - - - - -

-Macros

#define COMPILER_ID   ""
 
#define STRINGIFY_HELPER(X)   #X
 
#define STRINGIFY(X)   STRINGIFY_HELPER(X)
 
#define PLATFORM_ID
 
#define ARCHITECTURE_ID
 
#define DEC(n)
 
#define HEX(n)
 
#define CXX_STD   __cplusplus
 
- - - -

-Functions

int main (int argc, char *argv[])
 
- - - - - - - - - -

-Variables

char const * info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]"
 
char const * info_platform = "INFO" ":" "platform[" PLATFORM_ID "]"
 
char const * info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]"
 
const char * info_language_dialect_default
 
-

Macro Definition Documentation

- -

◆ ARCHITECTURE_ID

- -
-
- - - - -
#define ARCHITECTURE_ID
-
- -
-
- -

◆ COMPILER_ID

- -
-
- - - - -
#define COMPILER_ID   ""
-
- -
-
- -

◆ CXX_STD

- -
-
- - - - -
#define CXX_STD   __cplusplus
-
- -
-
- -

◆ DEC

- -
-
- - - - - - - - -
#define DEC( n)
-
-Value:
('0' + (((n) / 10000000)%10)), \
-
('0' + (((n) / 1000000)%10)), \
-
('0' + (((n) / 100000)%10)), \
-
('0' + (((n) / 10000)%10)), \
-
('0' + (((n) / 1000)%10)), \
-
('0' + (((n) / 100)%10)), \
-
('0' + (((n) / 10)%10)), \
-
('0' + ((n) % 10))
-
-
-
- -

◆ HEX

- -
-
- - - - - - - - -
#define HEX( n)
-
-Value:
('0' + ((n)>>28 & 0xF)), \
-
('0' + ((n)>>24 & 0xF)), \
-
('0' + ((n)>>20 & 0xF)), \
-
('0' + ((n)>>16 & 0xF)), \
-
('0' + ((n)>>12 & 0xF)), \
-
('0' + ((n)>>8 & 0xF)), \
-
('0' + ((n)>>4 & 0xF)), \
-
('0' + ((n) & 0xF))
-
-
-
- -

◆ PLATFORM_ID

- -
-
- - - - -
#define PLATFORM_ID
-
- -
-
- -

◆ STRINGIFY

- -
-
- - - - - - - - -
#define STRINGIFY( X)   STRINGIFY_HELPER(X)
-
- -
-
- -

◆ STRINGIFY_HELPER

- -
-
- - - - - - - - -
#define STRINGIFY_HELPER( X)   #X
-
- -
-
-

Function Documentation

- -

◆ main()

- -
-
- - - - - - - - - - - - - - - - - - -
int main (int argc,
char * argv[] 
)
-
- -
-
-

Variable Documentation

- -

◆ info_arch

- -
-
- - - - -
char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]"
-
- -
-
- -

◆ info_compiler

- -
-
- - - - -
char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]"
-
- -
-
- -

◆ info_language_dialect_default

- -
-
- - - - -
const char* info_language_dialect_default
-
-Initial value:
= "INFO" ":" "dialect_default["
-
-
-
-
-
-
-
-
-
-
"98"
-
-
"]"
-
-
-
- -

◆ info_platform

- -
-
- - - - -
char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]"
-
- -
-
-
- - - - diff --git a/help/html/CMakeCache_8txt.html b/help/html/CMakeCache_8txt.html deleted file mode 100644 index e12959f..0000000 --- a/help/html/CMakeCache_8txt.html +++ /dev/null @@ -1,1011 +0,0 @@ - - - - - - - -CocoaTweet: build/CMakeCache.txt File Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
- -
-
build/CMakeCache.txt File Reference
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Variables

BUILD_TESTING __pad1__
 
 lcurl
 
 lnghttp2
 
 lidn2
 
 lrtmp
 
 lssh
 
 lpsl
 
 lssl
 
 lcrypto
 
 Wl
 
Bsymbolic functions
 
 z
 
 relro
 
 lgssapi_krb5
 
 lkrb5
 
 lk5crypto
 
 lcom_err
 
 llber
 
 lldap
 
 lbrotlidec
 
lz PC_CURL_STATIC_LDFLAGS_OTHER
 
relro PC_CURL_STATIC_LIBDIR
 
 nghttp2
 
 idn2
 
 rtmp
 
 ssh
 
 psl
 
 ssl
 
 crypto
 
 gssapi_krb5
 
 krb5
 
 k5crypto
 
 com_err
 
 lber
 
 ldap
 
 brotlidec
 
z PC_CURL_STATIC_LIBRARY_DIRS
 
lcrypto _OPENSSL_LDFLAGS_OTHER
 
crypto _OPENSSL_LIBRARY_DIRS
 
 ldl
 
pthread _OPENSSL_STATIC_LDFLAGS_OTHER
 
dl _OPENSSL_STATIC_LIBRARY_DIRS
 
libcurl __pkg_config_arguments__OPENSSL
 
openssl __pkg_config_checked_PC_CURL
 
 IPv6
 
 UnixSockets
 
 libz
 
 brotli
 
 AsynchDNS
 
 IDN
 
GSS API
 
 PSL
 
 SPNEGO
 
 Kerberos
 
 NTLM
 
 NTLM_WB
 
TLS SRP
 
 HTTP2
 
-

Variable Documentation

- -

◆ __pad1__

- -
-
- - - - -
BUILD_TESTING __pad1__
-
- -
-
- -

◆ __pkg_config_arguments__OPENSSL

- -
-
- - - - -
libcurl __pkg_config_arguments__OPENSSL
-
- -
-
- -

◆ __pkg_config_checked_PC_CURL

- -
-
- - - - -
openssl __pkg_config_checked_PC_CURL
-
- -
-
- -

◆ _OPENSSL_LDFLAGS_OTHER

- -
-
- - - - -
lcrypto _OPENSSL_LDFLAGS_OTHER
-
- -
-
- -

◆ _OPENSSL_LIBRARY_DIRS

- -
-
- - - - -
crypto _OPENSSL_LIBRARY_DIRS
-
- -
-
- -

◆ _OPENSSL_STATIC_LDFLAGS_OTHER

- -
-
- - - - -
pthread _OPENSSL_STATIC_LDFLAGS_OTHER
-
- -
-
- -

◆ _OPENSSL_STATIC_LIBRARY_DIRS

- -
-
- - - - -
dl _OPENSSL_STATIC_LIBRARY_DIRS
-
- -
-
- -

◆ API

- -
-
- - - - -
GSS API
-
- -
-
- -

◆ AsynchDNS

- -
-
- - - - -
AsynchDNS
-
- -
-
- -

◆ brotli

- -
-
- - - - -
brotli
-
- -
-
- -

◆ brotlidec

- -
-
- - - - -
brotlidec
-
- -
-
- -

◆ com_err

- -
-
- - - - -
com_err
-
- -
-
- -

◆ crypto

- -
-
- - - - -
crypto
-
- -
-
- -

◆ functions

- -
-
- - - - -
lz Bsymbolic functions
-
- -
-
- -

◆ gssapi_krb5

- -
-
- - - - -
gssapi_krb5
-
- -
-
- -

◆ HTTP2

- -
-
- - - - -
HTTP2
-
- -
-
- -

◆ IDN

- -
-
- - - - -
IDN
-
- -
-
- -

◆ idn2

- -
-
- - - - -
idn2
-
- -
-
- -

◆ IPv6

- -
-
- - - - -
IPv6
-
- -
-
- -

◆ k5crypto

- -
-
- - - - -
k5crypto
-
- -
-
- -

◆ Kerberos

- -
-
- - - - -
Kerberos
-
- -
-
- -

◆ krb5

- -
-
- - - - -
krb5
-
- -
-
- -

◆ lber

- -
-
- - - - -
lber
-
- -
-
- -

◆ lbrotlidec

- -
-
- - - - -
lbrotlidec
-
- -
-
- -

◆ lcom_err

- -
-
- - - - -
lcom_err
-
- -
-
- -

◆ lcrypto

- -
-
- - - - -
lcrypto
-
- -
-
- -

◆ lcurl

- -
-
- - - - -
lcurl
-
- -
-
- -

◆ ldap

- -
-
- - - - -
ldap
-
- -
-
- -

◆ ldl

- -
-
- - - - -
ldl
-
- -
-
- -

◆ lgssapi_krb5

- -
-
- - - - -
lgssapi_krb5
-
- -
-
- -

◆ libz

- -
-
- - - - -
libz
-
- -
-
- -

◆ lidn2

- -
-
- - - - -
lidn2
-
- -
-
- -

◆ lk5crypto

- -
-
- - - - -
lk5crypto
-
- -
-
- -

◆ lkrb5

- -
-
- - - - -
lkrb5
-
- -
-
- -

◆ llber

- -
-
- - - - -
llber
-
- -
-
- -

◆ lldap

- -
-
- - - - -
lldap
-
- -
-
- -

◆ lnghttp2

- -
-
- - - - -
lnghttp2
-
- -
-
- -

◆ lpsl

- -
-
- - - - -
lpsl
-
- -
-
- -

◆ lrtmp

- -
-
- - - - -
lrtmp
-
- -
-
- -

◆ lssh

- -
-
- - - - -
lssh
-
- -
-
- -

◆ lssl

- -
-
- - - - -
lssl
-
- -
-
- -

◆ nghttp2

- -
-
- - - - -
nghttp2
-
- -
-
- -

◆ NTLM

- -
-
- - - - -
NTLM
-
- -
-
- -

◆ NTLM_WB

- -
-
- - - - -
NTLM_WB
-
- -
-
- -

◆ PC_CURL_STATIC_LDFLAGS_OTHER

- -
-
- - - - -
lz PC_CURL_STATIC_LDFLAGS_OTHER
-
- -
-
- -

◆ PC_CURL_STATIC_LIBDIR

- -
-
- - - - -
relro PC_CURL_STATIC_LIBDIR
-
- -
-
- -

◆ PC_CURL_STATIC_LIBRARY_DIRS

- -
-
- - - - -
z PC_CURL_STATIC_LIBRARY_DIRS
-
- -
-
- -

◆ psl

- -
-
- - - - -
psl
-
- -
-
- -

◆ PSL

- -
-
- - - - -
PSL
-
- -
-
- -

◆ relro

- -
-
- - - - -
relro
-
- -
-
- -

◆ rtmp

- -
-
- - - - -
rtmp
-
- -
-
- -

◆ SPNEGO

- -
-
- - - - -
SPNEGO
-
- -
-
- -

◆ SRP

- -
-
- - - - -
TLS SRP
-
- -
-
- -

◆ ssh

- -
-
- - - - -
ssh
-
- -
-
- -

◆ ssl

- -
-
- - - - -
ssl
-
- -
-
- -

◆ UnixSockets

- -
-
- - - - -
UnixSockets
-
- -
-
- -

◆ Wl

- -
-
- - - - -
Wl
-
- -
-
- -

◆ z

- -
-
- - - - -
z
-
- -
-
-
- - - - diff --git a/help/html/CMakeFiles_2TargetDirectories_8txt.html b/help/html/CMakeFiles_2TargetDirectories_8txt.html deleted file mode 100644 index 422c7ef..0000000 --- a/help/html/CMakeFiles_2TargetDirectories_8txt.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - -CocoaTweet: build/CMakeFiles/TargetDirectories.txt File Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
build/CMakeFiles/TargetDirectories.txt File Reference
-
-
-
- - - - diff --git a/help/html/CMakeLists_8txt.html b/help/html/CMakeLists_8txt.html deleted file mode 100644 index 39e56d2..0000000 --- a/help/html/CMakeLists_8txt.html +++ /dev/null @@ -1,192 +0,0 @@ - - - - - - - -CocoaTweet: CMakeLists.txt File Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
- -
-
CMakeLists.txt File Reference
-
-
- - - - - - -

-Functions

 cmake_minimum_required (VERSION 3.05) project(CocoaTweet CXX C) set(CMAKE_MODULE_PATH $
 
sort as relro elseif (WIN32 OR APPLE) endif() if(CMAKE_GENERATOR STREQUAL "Ninja") if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") set(CMAKE_CXX_FLAGS "$
 
- - - - - - - - - -

-Variables

 O1
 
sort common
 
sort as needed
 
sort as z
 
-

Function Documentation

- -

◆ cmake_minimum_required()

- -
-
- - - - - - - - -
cmake_minimum_required (VERSION 3. 05)
-
- -
-
- -

◆ elseif()

- -
-
- - - - - - - - -
sort as relro elseif (WIN32 OR APPLE)
-
- -
-
-

Variable Documentation

- -

◆ common

- -
-
- - - - -
sort common
-
- -
-
- -

◆ needed

- -
-
- - - - -
sort as needed
-
- -
-
- -

◆ O1

- -
-
- - - - -
O1
-
- -
-
- -

◆ z

- -
-
- - - - -
sort as z
-
- -
-
-
- - - - diff --git a/help/html/CTestCostData_8txt.html b/help/html/CTestCostData_8txt.html deleted file mode 100644 index 1a816fe..0000000 --- a/help/html/CTestCostData_8txt.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - -CocoaTweet: Testing/Temporary/CTestCostData.txt File Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
Testing/Temporary/CTestCostData.txt File Reference
-
-
-
- - - - diff --git a/help/html/DartConfiguration_8tcl.html b/help/html/DartConfiguration_8tcl.html deleted file mode 100644 index e40ddc7..0000000 --- a/help/html/DartConfiguration_8tcl.html +++ /dev/null @@ -1,80 +0,0 @@ - - - - - - - -CocoaTweet: build/_deps/json-build/DartConfiguration.tcl File Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
DartConfiguration.tcl File Reference
-
-
-
- - - - diff --git a/help/html/Labels_8txt.html b/help/html/Labels_8txt.html deleted file mode 100644 index eb99b99..0000000 --- a/help/html/Labels_8txt.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - -CocoaTweet: build/_deps/json-subbuild/CMakeFiles/json-populate.dir/Labels.txt File Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
build/_deps/json-subbuild/CMakeFiles/json-populate.dir/Labels.txt File Reference
-
-
-
- - - - diff --git a/help/html/README_8md.html b/help/html/README_8md.html deleted file mode 100644 index c6b9e53..0000000 --- a/help/html/README_8md.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - -CocoaTweet: README.md File Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
README.md File Reference
-
-
-
- - - - diff --git a/help/html/__deps_2json-subbuild_2CMakeCache_8txt.html b/help/html/__deps_2json-subbuild_2CMakeCache_8txt.html deleted file mode 100644 index 73d6630..0000000 --- a/help/html/__deps_2json-subbuild_2CMakeCache_8txt.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - -CocoaTweet: build/_deps/json-subbuild/CMakeCache.txt File Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
build/_deps/json-subbuild/CMakeCache.txt File Reference
-
-
-
- - - - diff --git a/help/html/__deps_2json-subbuild_2CMakeFiles_2TargetDirectories_8txt.html b/help/html/__deps_2json-subbuild_2CMakeFiles_2TargetDirectories_8txt.html deleted file mode 100644 index 54bcb88..0000000 --- a/help/html/__deps_2json-subbuild_2CMakeFiles_2TargetDirectories_8txt.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - -CocoaTweet: build/_deps/json-subbuild/CMakeFiles/TargetDirectories.txt File Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
build/_deps/json-subbuild/CMakeFiles/TargetDirectories.txt File Reference
-
-
-
- - - - diff --git a/help/html/annotated.html b/help/html/annotated.html deleted file mode 100644 index df875a7..0000000 --- a/help/html/annotated.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - - -CocoaTweet: Class List - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
-
Class List
-
-
-
Here are the classes, structs, unions and interfaces with brief descriptions:
-
[detail level 12345]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 NCocoaTweet
 NAPI
 NDirectMessages
 CDirectMessageEntory point for statuses/*
 CNewClass for using statuses/update endpoint
 NFavorites
 CCreate
 CDestroy
 CFavorite
 NInterface
 CHttpBase
 CHttpGetClass for Send request with POST method
 CHttpPostClass for Send request with POST method
 NMedias
 CMediaEntory point for statuses/*
 CUploadEntry point for using media/upload endpoint
 NModel
 CMediaStoreData class for tweet object
 CTweetData class for tweet object
 CUserData class for tweet object
 NStatuses
 CDestroyClass for using status/destroy:id endpoint
 CRetweet
 CStatusEntory point for statuses/*
 COptions
 CUnretweet
 CUpdateClass for using statuses/update endpoint
 CUserTimelineClass for using statuses/user_timeline endpoint
 CAPITwitter API Entry Point
 CgroupInterface
 NException
 CAuthenticateException
 CException
 CInvalidParameterException
 CRateLimitException
 CTokenInvalidException
 CTweetDuplicateException
 CTweetNotFoundException
 CTweetTooLongException
 CUnsupportedMediaTypeException
 NOAuth
 CKey
 COAuth1
-
-
- - - - diff --git a/help/html/api_8cc.html b/help/html/api_8cc.html deleted file mode 100644 index de0e543..0000000 --- a/help/html/api_8cc.html +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api/api.cc File Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
api.cc File Reference
-
-
-
-Include dependency graph for api.cc:
-
-
- - - - - - - - - - - - - - - - - - - - - - - - -
-
- - - - - -

-Namespaces

 CocoaTweet
 
 CocoaTweet::API
 
-
- - - - diff --git a/help/html/api_8cc__incl.map b/help/html/api_8cc__incl.map deleted file mode 100644 index 75202ae..0000000 --- a/help/html/api_8cc__incl.map +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/help/html/api_8cc__incl.md5 b/help/html/api_8cc__incl.md5 deleted file mode 100644 index 15dd878..0000000 --- a/help/html/api_8cc__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -0b399bf7ed9ba90f7c8a04b903d3c0f5 \ No newline at end of file diff --git a/help/html/api_8cc__incl.png b/help/html/api_8cc__incl.png deleted file mode 100644 index 7ff0edc..0000000 Binary files a/help/html/api_8cc__incl.png and /dev/null differ diff --git a/help/html/api_8h.html b/help/html/api_8h.html deleted file mode 100644 index b38966d..0000000 --- a/help/html/api_8h.html +++ /dev/null @@ -1,142 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api/api.h File Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
api.h File Reference
-
-
-
-Include dependency graph for api.h:
-
-
- - - - - - - - - - - - - - - - - - - - - - - -
-
-This graph shows which files directly or indirectly include this file:
-
-
- - - - - -
-
-

Go to the source code of this file.

- - - - - -

-Classes

class  CocoaTweet::API::API
 Twitter API Entry Point. More...
 
- - - - - -

-Namespaces

 CocoaTweet
 
 CocoaTweet::API
 
-
- - - - diff --git a/help/html/api_8h__dep__incl.map b/help/html/api_8h__dep__incl.map deleted file mode 100644 index d457012..0000000 --- a/help/html/api_8h__dep__incl.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/help/html/api_8h__dep__incl.md5 b/help/html/api_8h__dep__incl.md5 deleted file mode 100644 index 8e3f629..0000000 --- a/help/html/api_8h__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -db0d7f15b0dddc6718c0a7d1c40082ac \ No newline at end of file diff --git a/help/html/api_8h__dep__incl.png b/help/html/api_8h__dep__incl.png deleted file mode 100644 index 3a41bb8..0000000 Binary files a/help/html/api_8h__dep__incl.png and /dev/null differ diff --git a/help/html/api_8h__incl.map b/help/html/api_8h__incl.map deleted file mode 100644 index 61ef21b..0000000 --- a/help/html/api_8h__incl.map +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - diff --git a/help/html/api_8h__incl.md5 b/help/html/api_8h__incl.md5 deleted file mode 100644 index aa58c3e..0000000 --- a/help/html/api_8h__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -38dfa576040effd9955728e81072058e \ No newline at end of file diff --git a/help/html/api_8h__incl.png b/help/html/api_8h__incl.png deleted file mode 100644 index 702c755..0000000 Binary files a/help/html/api_8h__incl.png and /dev/null differ diff --git a/help/html/api_8h_source.html b/help/html/api_8h_source.html deleted file mode 100644 index f72924a..0000000 --- a/help/html/api_8h_source.html +++ /dev/null @@ -1,131 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api/api.h Source File - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
api.h
-
-
-Go to the documentation of this file.
1 #ifndef COCOATWEET_API_API_H_
-
2 #define COCOATWEET_API_API_H_
-
3 
- - - - - -
9 
-
10 namespace CocoaTweet::API {
-
12 class API {
-
13 public:
- -
17 
-
20  Statuses::Status status() const;
-
21 
- -
25 
-
26  Medias::Media media() const;
-
27 
- -
29  const std::string& generateBearerToken() const;
-
30 
-
31 private:
-
32  Statuses::Status status_;
-
33  Favorites::Favorite favorite_;
-
34  Medias::Media media_;
-
35  DirectMessages::DirectMessage directMessage_;
-
36  std::shared_ptr<CocoaTweet::OAuth::OAuth1> oauth_;
-
37 };
-
38 } // namespace CocoaTweet::API
-
39 
-
40 #endif
-
-
-
Favorites::Favorite favorite() const
Getter for Grouped by Favorites/*.
Definition: api.cc:20
-
Medias::Media media() const
Definition: api.cc:24
-
Statuses::Status status() const
Getter for Grouped by Statuses/*.
Definition: api.cc:16
-
DirectMessages::DirectMessage directMessage() const
Definition: api.cc:28
-
Definition: favorite.h:9
-
-
Entory point for statuses/*.
Definition: directMessage.h:13
-
API(CocoaTweet::OAuth::Key _key)
primary constructor
Definition: api.cc:4
-
Definition: api.cc:3
-
Twitter API Entry Point.
Definition: api.h:12
-
Definition: key.h:8
-
const std::string & generateBearerToken() const
Definition: api.cc:12
-
-
Entory point for statuses/*.
Definition: status.h:13
-
-
Entory point for statuses/*.
Definition: media.h:13
-
- - - - diff --git a/help/html/authenticateException_8h.html b/help/html/authenticateException_8h.html deleted file mode 100644 index 8adb188..0000000 --- a/help/html/authenticateException_8h.html +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/exception/authenticateException.h File Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
authenticateException.h File Reference
-
-
-
-Include dependency graph for authenticateException.h:
-
-
- - - - - - -
-
-This graph shows which files directly or indirectly include this file:
-
-
- - - - - -
-
-

Go to the source code of this file.

- - - - -

-Classes

class  CocoaTweet::Exception::AuthenticateException
 
- - - - - -

-Namespaces

 CocoaTweet
 
 CocoaTweet::Exception
 
-
- - - - diff --git a/help/html/authenticateException_8h__dep__incl.map b/help/html/authenticateException_8h__dep__incl.map deleted file mode 100644 index c623b2a..0000000 --- a/help/html/authenticateException_8h__dep__incl.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/help/html/authenticateException_8h__dep__incl.md5 b/help/html/authenticateException_8h__dep__incl.md5 deleted file mode 100644 index 11eafb4..0000000 --- a/help/html/authenticateException_8h__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -ad8417863f519aa03919cd4a6e2e4ca5 \ No newline at end of file diff --git a/help/html/authenticateException_8h__dep__incl.png b/help/html/authenticateException_8h__dep__incl.png deleted file mode 100644 index a1ec95c..0000000 Binary files a/help/html/authenticateException_8h__dep__incl.png and /dev/null differ diff --git a/help/html/authenticateException_8h__incl.map b/help/html/authenticateException_8h__incl.map deleted file mode 100644 index 9632790..0000000 --- a/help/html/authenticateException_8h__incl.map +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/help/html/authenticateException_8h__incl.md5 b/help/html/authenticateException_8h__incl.md5 deleted file mode 100644 index 7409392..0000000 --- a/help/html/authenticateException_8h__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -ed52136599be2a94c5c36114056d532c \ No newline at end of file diff --git a/help/html/authenticateException_8h__incl.png b/help/html/authenticateException_8h__incl.png deleted file mode 100644 index 65b1c4f..0000000 Binary files a/help/html/authenticateException_8h__incl.png and /dev/null differ diff --git a/help/html/authenticateException_8h_source.html b/help/html/authenticateException_8h_source.html deleted file mode 100644 index 7e4ff06..0000000 --- a/help/html/authenticateException_8h_source.html +++ /dev/null @@ -1,97 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/exception/authenticateException.h Source File - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
authenticateException.h
-
-
-Go to the documentation of this file.
1 #ifndef COCOATWEET_EXCEPTION_AUTHENTICATEEXCEPTION_H_
-
2 #define COCOATWEET_EXCEPTION_AUTHENTICATEEXCEPTION_H_
-
3 
- -
5 
- -
7 class AuthenticateException final : public Exception {
- -
9 };
-
10 } // namespace CocoaTweet::Exception
-
11 
-
12 #endif
-
-
Definition: authenticateException.h:7
-
Exception(const char *_msg)
Definition: exception.h:10
-
Definition: authenticateException.h:6
-
Definition: exception.h:8
-
- - - - diff --git a/help/html/bc_s.png b/help/html/bc_s.png deleted file mode 100644 index 224b29a..0000000 Binary files a/help/html/bc_s.png and /dev/null differ diff --git a/help/html/bdwn.png b/help/html/bdwn.png deleted file mode 100644 index 940a0b9..0000000 Binary files a/help/html/bdwn.png and /dev/null differ diff --git a/help/html/build_2__deps_2json-src_2CMakeLists_8txt.html b/help/html/build_2__deps_2json-src_2CMakeLists_8txt.html deleted file mode 100644 index 1451a3d..0000000 --- a/help/html/build_2__deps_2json-src_2CMakeLists_8txt.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - -CocoaTweet: build/_deps/json-src/CMakeLists.txt File Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
build/_deps/json-src/CMakeLists.txt File Reference
-
-
-
- - - - diff --git a/help/html/build_2__deps_2json-src_2README_8md.html b/help/html/build_2__deps_2json-src_2README_8md.html deleted file mode 100644 index aa6967d..0000000 --- a/help/html/build_2__deps_2json-src_2README_8md.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - -CocoaTweet: build/_deps/json-src/README.md File Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
build/_deps/json-src/README.md File Reference
-
-
-
- - - - diff --git a/help/html/build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html b/help/html/build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html deleted file mode 100644 index 1ed5cff..0000000 --- a/help/html/build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html +++ /dev/null @@ -1,4056 +0,0 @@ - - - - - - - -CocoaTweet: build/_deps/json-src/include/nlohmann/json.hpp File Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
json.hpp File Reference
-
-
-
#include <algorithm>
-#include <cassert>
-#include <ciso646>
-#include <cstddef>
-#include <functional>
-#include <initializer_list>
-#include <iosfwd>
-#include <iterator>
-#include <memory>
-#include <numeric>
-#include <string>
-#include <utility>
-#include <vector>
-#include <array>
-#include <forward_list>
-#include <map>
-#include <tuple>
-#include <type_traits>
-#include <unordered_map>
-#include <valarray>
-#include <exception>
-#include <stdexcept>
-#include <cstdlib>
-#include <limits>
-#include <cstdint>
-#include <cmath>
-#include <cstdio>
-#include <cstring>
-#include <istream>
-#include <clocale>
-#include <cctype>
-#include <ios>
-#include <ostream>
-
-Include dependency graph for json.hpp:
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-

Go to the source code of this file.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Classes

struct  nlohmann::detail::position_t
 struct to capture the start position of the current token More...
 
class  nlohmann::detail::exception
 general exception of the basic_json class More...
 
class  nlohmann::detail::parse_error
 exception indicating a parse error More...
 
class  nlohmann::detail::invalid_iterator
 exception indicating errors with iterators More...
 
class  nlohmann::detail::type_error
 exception indicating executing a member function with a wrong type More...
 
class  nlohmann::detail::out_of_range
 exception indicating access out of the defined range More...
 
class  nlohmann::detail::other_error
 exception indicating other library errors More...
 
struct  nlohmann::detail::index_sequence< Ints >
 
struct  nlohmann::detail::merge_and_renumber< Sequence1, Sequence2 >
 
struct  nlohmann::detail::merge_and_renumber< index_sequence< I1... >, index_sequence< I2... > >
 
struct  nlohmann::detail::make_index_sequence< N >
 
struct  nlohmann::detail::make_index_sequence< 0 >
 
struct  nlohmann::detail::make_index_sequence< 1 >
 
struct  nlohmann::detail::priority_tag< N >
 
struct  nlohmann::detail::priority_tag< 0 >
 
struct  nlohmann::detail::static_const< T >
 
struct  nlohmann::detail::make_void< Ts >
 
struct  nlohmann::detail::iterator_types< It, typename >
 
struct  nlohmann::detail::iterator_types< It, void_t< typename It::difference_type, typename It::value_type, typename It::pointer, typename It::reference, typename It::iterator_category > >
 
struct  nlohmann::detail::iterator_traits< T, typename >
 
struct  nlohmann::detail::iterator_traits< T, enable_if_t< !std::is_pointer< T >::value > >
 
struct  nlohmann::detail::iterator_traits< T *, enable_if_t< std::is_object< T >::value > >
 
struct  nlohmann::detail::nonesuch
 
struct  nlohmann::detail::detector< Default, AlwaysVoid, Op, Args >
 
struct  nlohmann::detail::detector< Default, void_t< Op< Args... > >, Op, Args... >
 
struct  nlohmann::adl_serializer< typename, typename >
 default JSONSerializer template argument More...
 
class  nlohmann::basic_json
 a class to store JSON values More...
 
class  nlohmann::json_pointer< BasicJsonType >
 JSON Pointer. More...
 
struct  nlohmann::detail::is_basic_json< typename >
 
struct  nlohmann::detail::is_basic_json< NLOHMANN_BASIC_JSON_TPL >
 
struct  nlohmann::detail::has_from_json< BasicJsonType, T, typename >
 
struct  nlohmann::detail::has_from_json< BasicJsonType, T, enable_if_t< not is_basic_json< T >::value > >
 
struct  nlohmann::detail::has_non_default_from_json< BasicJsonType, T, typename >
 
struct  nlohmann::detail::has_non_default_from_json< BasicJsonType, T, enable_if_t< not is_basic_json< T >::value > >
 
struct  nlohmann::detail::has_to_json< BasicJsonType, T, typename >
 
struct  nlohmann::detail::has_to_json< BasicJsonType, T, enable_if_t< not is_basic_json< T >::value > >
 
struct  nlohmann::detail::is_iterator_traits< T, typename >
 
struct  nlohmann::detail::is_iterator_traits< iterator_traits< T > >
 
struct  nlohmann::detail::is_complete_type< T, typename >
 
struct  nlohmann::detail::is_complete_type< T, decltype(void(sizeof(T)))>
 
struct  nlohmann::detail::is_compatible_object_type_impl< BasicJsonType, CompatibleObjectType, typename >
 
struct  nlohmann::detail::is_compatible_object_type_impl< BasicJsonType, CompatibleObjectType, enable_if_t< is_detected< mapped_type_t, CompatibleObjectType >::value and is_detected< key_type_t, CompatibleObjectType >::value > >
 
struct  nlohmann::detail::is_compatible_object_type< BasicJsonType, CompatibleObjectType >
 
struct  nlohmann::detail::is_constructible_object_type_impl< BasicJsonType, ConstructibleObjectType, typename >
 
struct  nlohmann::detail::is_constructible_object_type_impl< BasicJsonType, ConstructibleObjectType, enable_if_t< is_detected< mapped_type_t, ConstructibleObjectType >::value and is_detected< key_type_t, ConstructibleObjectType >::value > >
 
struct  nlohmann::detail::is_constructible_object_type< BasicJsonType, ConstructibleObjectType >
 
struct  nlohmann::detail::is_compatible_string_type_impl< BasicJsonType, CompatibleStringType, typename >
 
struct  nlohmann::detail::is_compatible_string_type_impl< BasicJsonType, CompatibleStringType, enable_if_t< is_detected_exact< typename BasicJsonType::string_t::value_type, value_type_t, CompatibleStringType >::value > >
 
struct  nlohmann::detail::is_compatible_string_type< BasicJsonType, ConstructibleStringType >
 
struct  nlohmann::detail::is_constructible_string_type_impl< BasicJsonType, ConstructibleStringType, typename >
 
struct  nlohmann::detail::is_constructible_string_type_impl< BasicJsonType, ConstructibleStringType, enable_if_t< is_detected_exact< typename BasicJsonType::string_t::value_type, value_type_t, ConstructibleStringType >::value > >
 
struct  nlohmann::detail::is_constructible_string_type< BasicJsonType, ConstructibleStringType >
 
struct  nlohmann::detail::is_compatible_array_type_impl< BasicJsonType, CompatibleArrayType, typename >
 
struct  nlohmann::detail::is_compatible_array_type_impl< BasicJsonType, CompatibleArrayType, enable_if_t< is_detected< value_type_t, CompatibleArrayType >::value and is_detected< iterator_t, CompatibleArrayType >::value and not is_iterator_traits< iterator_traits< CompatibleArrayType > >::value > >
 
struct  nlohmann::detail::is_compatible_array_type< BasicJsonType, CompatibleArrayType >
 
struct  nlohmann::detail::is_constructible_array_type_impl< BasicJsonType, ConstructibleArrayType, typename >
 
struct  nlohmann::detail::is_constructible_array_type_impl< BasicJsonType, ConstructibleArrayType, enable_if_t< std::is_same< ConstructibleArrayType, typename BasicJsonType::value_type >::value > >
 
struct  nlohmann::detail::is_constructible_array_type_impl< BasicJsonType, ConstructibleArrayType, enable_if_t< not std::is_same< ConstructibleArrayType, typename BasicJsonType::value_type >::value and std::is_default_constructible< ConstructibleArrayType >::value and(std::is_move_assignable< ConstructibleArrayType >::value or std::is_copy_assignable< ConstructibleArrayType >::value) andis_detected< value_type_t, ConstructibleArrayType >::value andis_detected< iterator_t, ConstructibleArrayType >::value andis_complete_type< detected_t< value_type_t, ConstructibleArrayType > >::value > >
 
struct  nlohmann::detail::is_constructible_array_type< BasicJsonType, ConstructibleArrayType >
 
struct  nlohmann::detail::is_compatible_integer_type_impl< RealIntegerType, CompatibleNumberIntegerType, typename >
 
struct  nlohmann::detail::is_compatible_integer_type_impl< RealIntegerType, CompatibleNumberIntegerType, enable_if_t< std::is_integral< RealIntegerType >::value and std::is_integral< CompatibleNumberIntegerType >::value and not std::is_same< bool, CompatibleNumberIntegerType >::value > >
 
struct  nlohmann::detail::is_compatible_integer_type< RealIntegerType, CompatibleNumberIntegerType >
 
struct  nlohmann::detail::is_compatible_type_impl< BasicJsonType, CompatibleType, typename >
 
struct  nlohmann::detail::is_compatible_type_impl< BasicJsonType, CompatibleType, enable_if_t< is_complete_type< CompatibleType >::value > >
 
struct  nlohmann::detail::is_compatible_type< BasicJsonType, CompatibleType >
 
struct  nlohmann::detail::conjunction<... >
 
struct  nlohmann::detail::conjunction< B1 >
 
struct  nlohmann::detail::conjunction< B1, Bn... >
 
struct  nlohmann::detail::is_constructible_tuple< T1, T2 >
 
struct  nlohmann::detail::is_constructible_tuple< T1, std::tuple< Args... > >
 
struct  nlohmann::detail::from_json_fn
 
class  nlohmann::detail::iteration_proxy_value< IteratorType >
 
class  nlohmann::detail::iteration_proxy< IteratorType >
 proxy class for the items() function More...
 
class  std::tuple_size<::nlohmann::detail::iteration_proxy_value< IteratorType > >
 
class  std::tuple_element< N, ::nlohmann::detail::iteration_proxy_value< IteratorType > >
 
struct  nlohmann::detail::external_constructor< value_t >
 
struct  nlohmann::detail::external_constructor< value_t::boolean >
 
struct  nlohmann::detail::external_constructor< value_t::string >
 
struct  nlohmann::detail::external_constructor< value_t::number_float >
 
struct  nlohmann::detail::external_constructor< value_t::number_unsigned >
 
struct  nlohmann::detail::external_constructor< value_t::number_integer >
 
struct  nlohmann::detail::external_constructor< value_t::array >
 
struct  nlohmann::detail::external_constructor< value_t::object >
 
struct  nlohmann::detail::to_json_fn
 
struct  nlohmann::adl_serializer< typename, typename >
 default JSONSerializer template argument More...
 
struct  nlohmann::detail::input_adapter_protocol
 abstract input adapter interface More...
 
class  nlohmann::detail::file_input_adapter
 
class  nlohmann::detail::input_stream_adapter
 
class  nlohmann::detail::input_buffer_adapter
 input adapter for buffer input More...
 
struct  nlohmann::detail::wide_string_input_helper< WideStringType, T >
 
struct  nlohmann::detail::wide_string_input_helper< WideStringType, 2 >
 
class  nlohmann::detail::wide_string_input_adapter< WideStringType >
 
class  nlohmann::detail::input_adapter
 
struct  nlohmann::json_sax< BasicJsonType >
 SAX interface. More...
 
class  nlohmann::detail::json_sax_dom_parser< BasicJsonType >
 SAX implementation to create a JSON value from SAX events. More...
 
class  nlohmann::detail::json_sax_dom_callback_parser< BasicJsonType >
 
class  nlohmann::detail::json_sax_acceptor< BasicJsonType >
 
struct  nlohmann::detail::is_sax< SAX, BasicJsonType >
 
struct  nlohmann::detail::is_sax_static_asserts< SAX, BasicJsonType >
 
class  nlohmann::detail::binary_reader< BasicJsonType, SAX >
 deserialization of CBOR, MessagePack, and UBJSON values More...
 
class  nlohmann::detail::lexer< BasicJsonType >
 lexical analysis More...
 
class  nlohmann::detail::parser< BasicJsonType >
 syntax analysis More...
 
class  nlohmann::detail::primitive_iterator_t
 
struct  nlohmann::detail::internal_iterator< BasicJsonType >
 an iterator value More...
 
class  nlohmann::detail::iteration_proxy< IteratorType >
 proxy class for the items() function More...
 
class  nlohmann::detail::iteration_proxy_value< IteratorType >
 
class  nlohmann::detail::iter_impl< BasicJsonType >
 a template for a bidirectional iterator for the basic_json class This class implements a both iterators (iterator and const_iterator) for the basic_json class. More...
 
class  nlohmann::detail::json_reverse_iterator< Base >
 a template for a reverse iterator class More...
 
class  nlohmann::json_pointer< BasicJsonType >
 JSON Pointer. More...
 
class  nlohmann::detail::json_ref< BasicJsonType >
 
struct  nlohmann::detail::output_adapter_protocol< CharType >
 abstract output adapter interface More...
 
class  nlohmann::detail::output_vector_adapter< CharType >
 output adapter for byte vectors More...
 
class  nlohmann::detail::output_stream_adapter< CharType >
 output adapter for output streams More...
 
class  nlohmann::detail::output_string_adapter< CharType, StringType >
 output adapter for basic_string More...
 
class  nlohmann::detail::output_adapter< CharType, StringType >
 
class  nlohmann::detail::binary_writer< BasicJsonType, CharType >
 serialization to CBOR and MessagePack values More...
 
struct  nlohmann::detail::dtoa_impl::diyfp
 
struct  nlohmann::detail::dtoa_impl::boundaries
 
struct  nlohmann::detail::dtoa_impl::cached_power
 
class  nlohmann::detail::serializer< BasicJsonType >
 
class  nlohmann::basic_json
 a class to store JSON values More...
 
struct  std::hash< nlohmann::json >
 hash value for JSON objects More...
 
struct  std::less<::nlohmann::detail::value_t >
 
- - - - - - - - - - - - -

-Namespaces

 nlohmann
 namespace for Niels Lohmann
 
 nlohmann::detail
 detail namespace with internal helper functions
 
 std
 
 nlohmann::detail::dtoa_impl
 implements the Grisu2 algorithm for binary to decimal floating-point conversion.
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Macros

#define NLOHMANN_JSON_VERSION_MAJOR   3
 
#define NLOHMANN_JSON_VERSION_MINOR   7
 
#define NLOHMANN_JSON_VERSION_PATCH   3
 
#define JSON_HEDLEY_VERSION   11
 
#define JSON_HEDLEY_STRINGIFY_EX(x)   #x
 
#define JSON_HEDLEY_STRINGIFY(x)   JSON_HEDLEY_STRINGIFY_EX(x)
 
#define JSON_HEDLEY_CONCAT_EX(a, b)   a##b
 
#define JSON_HEDLEY_CONCAT(a, b)   JSON_HEDLEY_CONCAT_EX(a,b)
 
#define JSON_HEDLEY_VERSION_ENCODE(major, minor, revision)   (((major) * 1000000) + ((minor) * 1000) + (revision))
 
#define JSON_HEDLEY_VERSION_DECODE_MAJOR(version)   ((version) / 1000000)
 
#define JSON_HEDLEY_VERSION_DECODE_MINOR(version)   (((version) % 1000000) / 1000)
 
#define JSON_HEDLEY_VERSION_DECODE_REVISION(version)   ((version) % 1000)
 
#define JSON_HEDLEY_GNUC_VERSION_CHECK(major, minor, patch)   (0)
 
#define JSON_HEDLEY_MSVC_VERSION_CHECK(major, minor, patch)   (0)
 
#define JSON_HEDLEY_INTEL_VERSION_CHECK(major, minor, patch)   (0)
 
#define JSON_HEDLEY_PGI_VERSION_CHECK(major, minor, patch)   (0)
 
#define JSON_HEDLEY_SUNPRO_VERSION_CHECK(major, minor, patch)   (0)
 
#define JSON_HEDLEY_EMSCRIPTEN_VERSION_CHECK(major, minor, patch)   (0)
 
#define JSON_HEDLEY_ARM_VERSION_CHECK(major, minor, patch)   (0)
 
#define JSON_HEDLEY_IBM_VERSION_CHECK(major, minor, patch)   (0)
 
#define JSON_HEDLEY_TI_VERSION_CHECK(major, minor, patch)   (0)
 
#define JSON_HEDLEY_CRAY_VERSION_CHECK(major, minor, patch)   (0)
 
#define JSON_HEDLEY_IAR_VERSION_CHECK(major, minor, patch)   (0)
 
#define JSON_HEDLEY_TINYC_VERSION_CHECK(major, minor, patch)   (0)
 
#define JSON_HEDLEY_DMC_VERSION_CHECK(major, minor, patch)   (0)
 
#define JSON_HEDLEY_COMPCERT_VERSION_CHECK(major, minor, patch)   (0)
 
#define JSON_HEDLEY_PELLES_VERSION_CHECK(major, minor, patch)   (0)
 
#define JSON_HEDLEY_GCC_VERSION_CHECK(major, minor, patch)   (0)
 
#define JSON_HEDLEY_HAS_ATTRIBUTE(attribute)   (0)
 
#define JSON_HEDLEY_GNUC_HAS_ATTRIBUTE(attribute, major, minor, patch)   JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch)
 
#define JSON_HEDLEY_GCC_HAS_ATTRIBUTE(attribute, major, minor, patch)   JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch)
 
#define JSON_HEDLEY_HAS_CPP_ATTRIBUTE(attribute)   (0)
 
#define JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS(ns, attribute)   (0)
 
#define JSON_HEDLEY_GNUC_HAS_CPP_ATTRIBUTE(attribute, major, minor, patch)   JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch)
 
#define JSON_HEDLEY_GCC_HAS_CPP_ATTRIBUTE(attribute, major, minor, patch)   JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch)
 
#define JSON_HEDLEY_HAS_BUILTIN(builtin)   (0)
 
#define JSON_HEDLEY_GNUC_HAS_BUILTIN(builtin, major, minor, patch)   JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch)
 
#define JSON_HEDLEY_GCC_HAS_BUILTIN(builtin, major, minor, patch)   JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch)
 
#define JSON_HEDLEY_HAS_FEATURE(feature)   (0)
 
#define JSON_HEDLEY_GNUC_HAS_FEATURE(feature, major, minor, patch)   JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch)
 
#define JSON_HEDLEY_GCC_HAS_FEATURE(feature, major, minor, patch)   JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch)
 
#define JSON_HEDLEY_HAS_EXTENSION(extension)   (0)
 
#define JSON_HEDLEY_GNUC_HAS_EXTENSION(extension, major, minor, patch)   JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch)
 
#define JSON_HEDLEY_GCC_HAS_EXTENSION(extension, major, minor, patch)   JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch)
 
#define JSON_HEDLEY_HAS_DECLSPEC_ATTRIBUTE(attribute)   (0)
 
#define JSON_HEDLEY_GNUC_HAS_DECLSPEC_ATTRIBUTE(attribute, major, minor, patch)   JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch)
 
#define JSON_HEDLEY_GCC_HAS_DECLSPEC_ATTRIBUTE(attribute, major, minor, patch)   JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch)
 
#define JSON_HEDLEY_HAS_WARNING(warning)   (0)
 
#define JSON_HEDLEY_GNUC_HAS_WARNING(warning, major, minor, patch)   JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch)
 
#define JSON_HEDLEY_GCC_HAS_WARNING(warning, major, minor, patch)   JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch)
 
#define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(x)   x
 
#define JSON_HEDLEY_PRAGMA(value)
 
#define JSON_HEDLEY_DIAGNOSTIC_PUSH
 
#define JSON_HEDLEY_DIAGNOSTIC_POP
 
#define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED
 
#define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS
 
#define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES
 
#define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL
 
#define JSON_HEDLEY_DEPRECATED(since)
 
#define JSON_HEDLEY_DEPRECATED_FOR(since, replacement)
 
#define JSON_HEDLEY_UNAVAILABLE(available_since)
 
#define JSON_HEDLEY_WARN_UNUSED_RESULT
 
#define JSON_HEDLEY_SENTINEL(position)
 
#define JSON_HEDLEY_NO_RETURN
 
#define JSON_HEDLEY_NO_ESCAPE
 
#define JSON_HEDLEY_UNREACHABLE()
 
#define JSON_HEDLEY_UNREACHABLE_RETURN(value)   return value
 
#define JSON_HEDLEY_ASSUME(expr)   ((void) (expr))
 
#define JSON_HEDLEY_NON_NULL(...)
 
#define JSON_HEDLEY_PRINTF_FORMAT(string_idx, first_to_check)
 
#define JSON_HEDLEY_CONSTEXPR
 
#define JSON_HEDLEY_PREDICT(expr, expected, probability)   (((void) (expected)), !!(expr))
 
#define JSON_HEDLEY_PREDICT_TRUE(expr, probability)   (!!(expr))
 
#define JSON_HEDLEY_PREDICT_FALSE(expr, probability)   (!!(expr))
 
#define JSON_HEDLEY_LIKELY(expr)   (!!(expr))
 
#define JSON_HEDLEY_UNLIKELY(expr)   (!!(expr))
 
#define JSON_HEDLEY_UNPREDICTABLE(expr)   JSON_HEDLEY_PREDICT(expr, 1, 0.5)
 
#define JSON_HEDLEY_MALLOC
 
#define JSON_HEDLEY_PURE
 
#define JSON_HEDLEY_CONST   JSON_HEDLEY_PURE
 
#define JSON_HEDLEY_RESTRICT
 
#define JSON_HEDLEY_INLINE
 
#define JSON_HEDLEY_ALWAYS_INLINE   JSON_HEDLEY_INLINE
 
#define JSON_HEDLEY_NEVER_INLINE
 
#define JSON_HEDLEY_PRIVATE
 
#define JSON_HEDLEY_PUBLIC
 
#define JSON_HEDLEY_IMPORT   extern
 
#define JSON_HEDLEY_NO_THROW
 
#define JSON_HEDLEY_FALL_THROUGH
 
#define JSON_HEDLEY_RETURNS_NON_NULL
 
#define JSON_HEDLEY_ARRAY_PARAM(name)
 
#define JSON_HEDLEY_IS_CONSTANT(expr)   (0)
 
#define JSON_HEDLEY_REQUIRE_CONSTEXPR(expr)   (expr)
 
#define JSON_HEDLEY_BEGIN_C_DECLS
 
#define JSON_HEDLEY_END_C_DECLS
 
#define JSON_HEDLEY_C_DECL
 
#define JSON_HEDLEY_STATIC_ASSERT(expr, message)
 
#define JSON_HEDLEY_CONST_CAST(T, expr)   ((T) (expr))
 
#define JSON_HEDLEY_REINTERPRET_CAST(T, expr)   (*((T*) &(expr)))
 
#define JSON_HEDLEY_STATIC_CAST(T, expr)   ((T) (expr))
 
#define JSON_HEDLEY_CPP_CAST(T, expr)   (expr)
 
#define JSON_HEDLEY_NULL   ((void*) 0)
 
#define JSON_HEDLEY_MESSAGE(msg)
 
#define JSON_HEDLEY_WARNING(msg)   JSON_HEDLEY_MESSAGE(msg)
 
#define JSON_HEDLEY_REQUIRE(expr)
 
#define JSON_HEDLEY_REQUIRE_MSG(expr, msg)
 
#define JSON_HEDLEY_FLAGS_CAST(T, expr)   JSON_HEDLEY_STATIC_CAST(T, expr)
 
#define JSON_HEDLEY_EMPTY_BASES
 
#define JSON_HEDLEY_GCC_NOT_CLANG_VERSION_CHECK(major, minor, patch)   JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch)
 
#define JSON_HEDLEY_CLANG_HAS_ATTRIBUTE(attribute)   JSON_HEDLEY_HAS_ATTRIBUTE(attribute)
 
#define JSON_HEDLEY_CLANG_HAS_CPP_ATTRIBUTE(attribute)   JSON_HEDLEY_HAS_CPP_ATTRIBUTE(attribute)
 
#define JSON_HEDLEY_CLANG_HAS_BUILTIN(builtin)   JSON_HEDLEY_HAS_BUILTIN(builtin)
 
#define JSON_HEDLEY_CLANG_HAS_FEATURE(feature)   JSON_HEDLEY_HAS_FEATURE(feature)
 
#define JSON_HEDLEY_CLANG_HAS_EXTENSION(extension)   JSON_HEDLEY_HAS_EXTENSION(extension)
 
#define JSON_HEDLEY_CLANG_HAS_DECLSPEC_ATTRIBUTE(attribute)   JSON_HEDLEY_HAS_DECLSPEC_ATTRIBUTE(attribute)
 
#define JSON_HEDLEY_CLANG_HAS_WARNING(warning)   JSON_HEDLEY_HAS_WARNING(warning)
 
#define JSON_THROW(exception)   std::abort()
 
#define JSON_TRY   if(true)
 
#define JSON_CATCH(exception)   if(false)
 
#define JSON_INTERNAL_CATCH(exception)   if(false)
 
#define NLOHMANN_JSON_SERIALIZE_ENUM(ENUM_TYPE, ...)
 macro to briefly define a mapping between an enum and JSON More...
 
#define NLOHMANN_BASIC_JSON_TPL_DECLARATION
 
#define NLOHMANN_BASIC_JSON_TPL
 
#define INCLUDE_NLOHMANN_JSON_FWD_HPP_
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Typedefs

template<bool B, typename T = void>
using nlohmann::detail::enable_if_t = typename std::enable_if< B, T >::type
 
template<typename T >
using nlohmann::detail::uncvref_t = typename std::remove_cv< typename std::remove_reference< T >::type >::type
 
template<typename... Ts>
using nlohmann::detail::index_sequence_for = make_index_sequence< sizeof...(Ts)>
 
template<typename ... Ts>
using nlohmann::detail::void_t = typename make_void< Ts... >::type
 
template<template< class... > class Op, class... Args>
using nlohmann::detail::is_detected = typename detector< nonesuch, void, Op, Args... >::value_t
 
template<template< class... > class Op, class... Args>
using nlohmann::detail::detected_t = typename detector< nonesuch, void, Op, Args... >::type
 
template<class Default , template< class... > class Op, class... Args>
using nlohmann::detail::detected_or = detector< Default, void, Op, Args... >
 
template<class Default , template< class... > class Op, class... Args>
using nlohmann::detail::detected_or_t = typename detected_or< Default, Op, Args... >::type
 
template<class Expected , template< class... > class Op, class... Args>
using nlohmann::detail::is_detected_exact = std::is_same< Expected, detected_t< Op, Args... > >
 
template<class To , template< class... > class Op, class... Args>
using nlohmann::detail::is_detected_convertible = std::is_convertible< detected_t< Op, Args... >, To >
 
using nlohmann::json = basic_json<>
 default JSON class More...
 
template<typename T >
using nlohmann::detail::mapped_type_t = typename T::mapped_type
 
template<typename T >
using nlohmann::detail::key_type_t = typename T::key_type
 
template<typename T >
using nlohmann::detail::value_type_t = typename T::value_type
 
template<typename T >
using nlohmann::detail::difference_type_t = typename T::difference_type
 
template<typename T >
using nlohmann::detail::pointer_t = typename T::pointer
 
template<typename T >
using nlohmann::detail::reference_t = typename T::reference
 
template<typename T >
using nlohmann::detail::iterator_category_t = typename T::iterator_category
 
template<typename T >
using nlohmann::detail::iterator_t = typename T::iterator
 
template<typename T , typename... Args>
using nlohmann::detail::to_json_function = decltype(T::to_json(std::declval< Args >()...))
 
template<typename T , typename... Args>
using nlohmann::detail::from_json_function = decltype(T::from_json(std::declval< Args >()...))
 
template<typename T , typename U >
using nlohmann::detail::get_template_function = decltype(std::declval< T >().template get< U >())
 
using nlohmann::detail::input_adapter_t = std::shared_ptr< input_adapter_protocol >
 a type to simplify interfaces More...
 
template<typename T >
using nlohmann::detail::null_function_t = decltype(std::declval< T & >().null())
 
template<typename T >
using nlohmann::detail::boolean_function_t = decltype(std::declval< T & >().boolean(std::declval< bool >()))
 
template<typename T , typename Integer >
using nlohmann::detail::number_integer_function_t = decltype(std::declval< T & >().number_integer(std::declval< Integer >()))
 
template<typename T , typename Unsigned >
using nlohmann::detail::number_unsigned_function_t = decltype(std::declval< T & >().number_unsigned(std::declval< Unsigned >()))
 
template<typename T , typename Float , typename String >
using nlohmann::detail::number_float_function_t = decltype(std::declval< T & >().number_float(std::declval< Float >(), std::declval< const String & >()))
 
template<typename T , typename String >
using nlohmann::detail::string_function_t = decltype(std::declval< T & >().string(std::declval< String & >()))
 
template<typename T >
using nlohmann::detail::start_object_function_t = decltype(std::declval< T & >().start_object(std::declval< std::size_t >()))
 
template<typename T , typename String >
using nlohmann::detail::key_function_t = decltype(std::declval< T & >().key(std::declval< String & >()))
 
template<typename T >
using nlohmann::detail::end_object_function_t = decltype(std::declval< T & >().end_object())
 
template<typename T >
using nlohmann::detail::start_array_function_t = decltype(std::declval< T & >().start_array(std::declval< std::size_t >()))
 
template<typename T >
using nlohmann::detail::end_array_function_t = decltype(std::declval< T & >().end_array())
 
template<typename T , typename Exception >
using nlohmann::detail::parse_error_function_t = decltype(std::declval< T & >().parse_error(std::declval< std::size_t >(), std::declval< const std::string & >(), std::declval< const Exception & >()))
 
template<typename CharType >
using nlohmann::detail::output_adapter_t = std::shared_ptr< output_adapter_protocol< CharType > >
 a type to simplify interfaces More...
 
- - - - - - - - - - -

-Enumerations

enum  nlohmann::detail::value_t : std::uint8_t {
-  nlohmann::detail::value_t::null, -nlohmann::detail::value_t::object, -nlohmann::detail::value_t::array, -nlohmann::detail::value_t::string, -
-  nlohmann::detail::value_t::boolean, -nlohmann::detail::value_t::number_integer, -nlohmann::detail::value_t::number_unsigned, -nlohmann::detail::value_t::number_float, -
-  nlohmann::detail::value_t::discarded, -nlohmann::detail::value_t::null, -nlohmann::detail::value_t::object, -nlohmann::detail::value_t::array, -
-  nlohmann::detail::value_t::string, -nlohmann::detail::value_t::boolean, -nlohmann::detail::value_t::number_integer, -nlohmann::detail::value_t::number_unsigned, -
-  nlohmann::detail::value_t::number_float, -nlohmann::detail::value_t::binary, -nlohmann::detail::value_t::discarded -
- }
 the JSON type enumeration More...
 
enum  nlohmann::detail::input_format_t {
-  nlohmann::detail::input_format_t::json, -nlohmann::detail::input_format_t::cbor, -nlohmann::detail::input_format_t::msgpack, -nlohmann::detail::input_format_t::ubjson, -
-  nlohmann::detail::input_format_t::bson, -nlohmann::detail::input_format_t::json, -nlohmann::detail::input_format_t::cbor, -nlohmann::detail::input_format_t::msgpack, -
-  nlohmann::detail::input_format_t::ubjson, -nlohmann::detail::input_format_t::bson -
- }
 the supported input formats More...
 
enum  nlohmann::detail::error_handler_t {
-  nlohmann::detail::error_handler_t::strict, -nlohmann::detail::error_handler_t::replace, -nlohmann::detail::error_handler_t::ignore, -nlohmann::detail::error_handler_t::strict, -
-  nlohmann::detail::error_handler_t::replace, -nlohmann::detail::error_handler_t::ignore -
- }
 how to treat decoding errors More...
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

bool nlohmann::detail::operator< (const value_t lhs, const value_t rhs) noexcept
 comparison operator for JSON types More...
 
template<typename BasicJsonType >
void nlohmann::detail::from_json (const BasicJsonType &j, typename std::nullptr_t &n)
 
template<typename BasicJsonType , typename ArithmeticType , enable_if_t< std::is_arithmetic< ArithmeticType >::value and not std::is_same< ArithmeticType, typename BasicJsonType::boolean_t >::value, int > = 0>
void nlohmann::detail::get_arithmetic_value (const BasicJsonType &j, ArithmeticType &val)
 
template<typename BasicJsonType >
void nlohmann::detail::from_json (const BasicJsonType &j, typename BasicJsonType::boolean_t &b)
 
template<typename BasicJsonType >
void nlohmann::detail::from_json (const BasicJsonType &j, typename BasicJsonType::string_t &s)
 
template<typename BasicJsonType , typename ConstructibleStringType , enable_if_t< is_constructible_string_type< BasicJsonType, ConstructibleStringType >::value and not std::is_same< typename BasicJsonType::string_t, ConstructibleStringType >::value, int > = 0>
void nlohmann::detail::from_json (const BasicJsonType &j, ConstructibleStringType &s)
 
template<typename BasicJsonType >
void nlohmann::detail::from_json (const BasicJsonType &j, typename BasicJsonType::number_float_t &val)
 
template<typename BasicJsonType >
void nlohmann::detail::from_json (const BasicJsonType &j, typename BasicJsonType::number_unsigned_t &val)
 
template<typename BasicJsonType >
void nlohmann::detail::from_json (const BasicJsonType &j, typename BasicJsonType::number_integer_t &val)
 
template<typename BasicJsonType , typename EnumType , enable_if_t< std::is_enum< EnumType >::value, int > = 0>
void nlohmann::detail::from_json (const BasicJsonType &j, EnumType &e)
 
template<typename BasicJsonType , typename T , typename Allocator , enable_if_t< std::is_convertible< BasicJsonType, T >::value, int > = 0>
void nlohmann::detail::from_json (const BasicJsonType &j, std::forward_list< T, Allocator > &l)
 
template<typename BasicJsonType , typename T , enable_if_t< std::is_convertible< BasicJsonType, T >::value, int > = 0>
void nlohmann::detail::from_json (const BasicJsonType &j, std::valarray< T > &l)
 
template<typename BasicJsonType , typename T , std::size_t N>
auto nlohmann::detail::from_json (const BasicJsonType &j, T(&arr)[N]) -> decltype(j.template get< T >(), void())
 
template<typename BasicJsonType >
void nlohmann::detail::from_json_array_impl (const BasicJsonType &j, typename BasicJsonType::array_t &arr, priority_tag< 3 >)
 
template<typename BasicJsonType , typename T , std::size_t N>
auto nlohmann::detail::from_json_array_impl (const BasicJsonType &j, std::array< T, N > &arr, priority_tag< 2 >) -> decltype(j.template get< T >(), void())
 
template<typename BasicJsonType , typename ConstructibleArrayType >
auto nlohmann::detail::from_json_array_impl (const BasicJsonType &j, ConstructibleArrayType &arr, priority_tag< 1 >) -> decltype(arr.reserve(std::declval< typename ConstructibleArrayType::size_type >()), j.template get< typename ConstructibleArrayType::value_type >(), void())
 
template<typename BasicJsonType , typename ConstructibleArrayType >
void nlohmann::detail::from_json_array_impl (const BasicJsonType &j, ConstructibleArrayType &arr, priority_tag< 0 >)
 
template<typename BasicJsonType , typename ConstructibleArrayType , enable_if_t< is_constructible_array_type< BasicJsonType, ConstructibleArrayType >::value and not is_constructible_object_type< BasicJsonType, ConstructibleArrayType >::value and not is_constructible_string_type< BasicJsonType, ConstructibleArrayType >::value and not is_basic_json< ConstructibleArrayType >::value, int > = 0>
auto nlohmann::detail::from_json (const BasicJsonType &j, ConstructibleArrayType &arr) -> decltype(from_json_array_impl(j, arr, priority_tag< 3 >
 
j template nlohmann::detail::get< typename ConstructibleArrayType::value_type > ()
 
j template nlohmann::detail::void ())
 
template<typename BasicJsonType , typename ConstructibleObjectType , enable_if_t< is_constructible_object_type< BasicJsonType, ConstructibleObjectType >::value, int > = 0>
void nlohmann::detail::from_json (const BasicJsonType &j, ConstructibleObjectType &obj)
 
template<typename BasicJsonType , typename ArithmeticType , enable_if_t< std::is_arithmetic< ArithmeticType >::value and not std::is_same< ArithmeticType, typename BasicJsonType::number_unsigned_t >::value and not std::is_same< ArithmeticType, typename BasicJsonType::number_integer_t >::value and not std::is_same< ArithmeticType, typename BasicJsonType::number_float_t >::value and not std::is_same< ArithmeticType, typename BasicJsonType::boolean_t >::value, int > = 0>
void nlohmann::detail::from_json (const BasicJsonType &j, ArithmeticType &val)
 
template<typename BasicJsonType , typename A1 , typename A2 >
void nlohmann::detail::from_json (const BasicJsonType &j, std::pair< A1, A2 > &p)
 
template<typename BasicJsonType , typename Tuple , std::size_t... Idx>
void nlohmann::detail::from_json_tuple_impl (const BasicJsonType &j, Tuple &t, index_sequence< Idx... >)
 
template<typename BasicJsonType , typename... Args>
void nlohmann::detail::from_json (const BasicJsonType &j, std::tuple< Args... > &t)
 
template<typename BasicJsonType , typename Key , typename Value , typename Compare , typename Allocator , typename = enable_if_t<not std::is_constructible< typename BasicJsonType::string_t, Key>::value>>
void nlohmann::detail::from_json (const BasicJsonType &j, std::map< Key, Value, Compare, Allocator > &m)
 
template<typename BasicJsonType , typename Key , typename Value , typename Hash , typename KeyEqual , typename Allocator , typename = enable_if_t<not std::is_constructible< typename BasicJsonType::string_t, Key>::value>>
void nlohmann::detail::from_json (const BasicJsonType &j, std::unordered_map< Key, Value, Hash, KeyEqual, Allocator > &m)
 
template<typename string_type >
void nlohmann::detail::int_to_string (string_type &target, std::size_t value)
 
template<std::size_t N, typename IteratorType , enable_if_t< N==0, int > = 0>
auto nlohmann::detail::get (const nlohmann::detail::iteration_proxy_value< IteratorType > &i) -> decltype(i.key())
 
template<typename BasicJsonType , typename T , enable_if_t< std::is_same< T, typename BasicJsonType::boolean_t >::value, int > = 0>
void nlohmann::detail::to_json (BasicJsonType &j, T b) noexcept
 
template<typename BasicJsonType , typename CompatibleString , enable_if_t< std::is_constructible< typename BasicJsonType::string_t, CompatibleString >::value, int > = 0>
void nlohmann::detail::to_json (BasicJsonType &j, const CompatibleString &s)
 
template<typename BasicJsonType >
void nlohmann::detail::to_json (BasicJsonType &j, typename BasicJsonType::string_t &&s)
 
template<typename BasicJsonType , typename FloatType , enable_if_t< std::is_floating_point< FloatType >::value, int > = 0>
void nlohmann::detail::to_json (BasicJsonType &j, FloatType val) noexcept
 
template<typename BasicJsonType , typename CompatibleNumberUnsignedType , enable_if_t< is_compatible_integer_type< typename BasicJsonType::number_unsigned_t, CompatibleNumberUnsignedType >::value, int > = 0>
void nlohmann::detail::to_json (BasicJsonType &j, CompatibleNumberUnsignedType val) noexcept
 
template<typename BasicJsonType , typename CompatibleNumberIntegerType , enable_if_t< is_compatible_integer_type< typename BasicJsonType::number_integer_t, CompatibleNumberIntegerType >::value, int > = 0>
void nlohmann::detail::to_json (BasicJsonType &j, CompatibleNumberIntegerType val) noexcept
 
template<typename BasicJsonType , typename EnumType , enable_if_t< std::is_enum< EnumType >::value, int > = 0>
void nlohmann::detail::to_json (BasicJsonType &j, EnumType e) noexcept
 
template<typename BasicJsonType >
void nlohmann::detail::to_json (BasicJsonType &j, const std::vector< bool > &e)
 
template<typename BasicJsonType , typename CompatibleArrayType , enable_if_t< is_compatible_array_type< BasicJsonType, CompatibleArrayType >::value and not is_compatible_object_type< BasicJsonType, CompatibleArrayType >::value and not is_compatible_string_type< BasicJsonType, CompatibleArrayType >::value and not is_basic_json< CompatibleArrayType >::value, int > = 0>
void nlohmann::detail::to_json (BasicJsonType &j, const CompatibleArrayType &arr)
 
template<typename BasicJsonType , typename T , enable_if_t< std::is_convertible< T, BasicJsonType >::value, int > = 0>
void nlohmann::detail::to_json (BasicJsonType &j, const std::valarray< T > &arr)
 
template<typename BasicJsonType >
void nlohmann::detail::to_json (BasicJsonType &j, typename BasicJsonType::array_t &&arr)
 
template<typename BasicJsonType , typename CompatibleObjectType , enable_if_t< is_compatible_object_type< BasicJsonType, CompatibleObjectType >::value and not is_basic_json< CompatibleObjectType >::value, int > = 0>
void nlohmann::detail::to_json (BasicJsonType &j, const CompatibleObjectType &obj)
 
template<typename BasicJsonType >
void nlohmann::detail::to_json (BasicJsonType &j, typename BasicJsonType::object_t &&obj)
 
template<typename BasicJsonType , typename T , std::size_t N, enable_if_t< not std::is_constructible< typename BasicJsonType::string_t, const T(&)[N]>::value, int > = 0>
void nlohmann::detail::to_json (BasicJsonType &j, const T(&arr)[N])
 
template<typename BasicJsonType , typename T1 , typename T2 , enable_if_t< std::is_constructible< BasicJsonType, T1 >::value &&std::is_constructible< BasicJsonType, T2 >::value, int > = 0>
void nlohmann::detail::to_json (BasicJsonType &j, const std::pair< T1, T2 > &p)
 
template<typename BasicJsonType , typename T , enable_if_t< std::is_same< T, iteration_proxy_value< typename BasicJsonType::iterator >>::value, int > = 0>
void nlohmann::detail::to_json (BasicJsonType &j, const T &b)
 
template<typename BasicJsonType , typename Tuple , std::size_t... Idx>
void nlohmann::detail::to_json_tuple_impl (BasicJsonType &j, const Tuple &t, index_sequence< Idx... >)
 
template<typename Target , typename Source >
Target nlohmann::detail::dtoa_impl::reinterpret_bits (const Source source)
 
template<typename FloatType >
boundaries nlohmann::detail::dtoa_impl::compute_boundaries (FloatType value)
 
cached_power nlohmann::detail::dtoa_impl::get_cached_power_for_binary_exponent (int e)
 
int nlohmann::detail::dtoa_impl::find_largest_pow10 (const std::uint32_t n, std::uint32_t &pow10)
 
void nlohmann::detail::dtoa_impl::grisu2_round (char *buf, int len, std::uint64_t dist, std::uint64_t delta, std::uint64_t rest, std::uint64_t ten_k)
 
void nlohmann::detail::dtoa_impl::grisu2_digit_gen (char *buffer, int &length, int &decimal_exponent, diyfp M_minus, diyfp w, diyfp M_plus)
 
void nlohmann::detail::dtoa_impl::grisu2 (char *buf, int &len, int &decimal_exponent, diyfp m_minus, diyfp v, diyfp m_plus)
 
template<typename FloatType >
void nlohmann::detail::dtoa_impl::grisu2 (char *buf, int &len, int &decimal_exponent, FloatType value)
 
JSON_HEDLEY_RETURNS_NON_NULL char * nlohmann::detail::dtoa_impl::append_exponent (char *buf, int e)
 appends a decimal representation of e to buf More...
 
JSON_HEDLEY_RETURNS_NON_NULL char * nlohmann::detail::dtoa_impl::format_buffer (char *buf, int len, int decimal_exponent, int min_exp, int max_exp)
 prettify v = buf * 10^decimal_exponent More...
 
template<typename FloatType >
JSON_HEDLEY_RETURNS_NON_NULL char * nlohmann::detail::to_chars (char *first, const char *last, FloatType value)
 generates a decimal representation of the floating-point number value in [first, last). More...
 
NLOHMANN_BASIC_JSON_TPL_DECLARATION std::string nlohmann::to_string (const NLOHMANN_BASIC_JSON_TPL &j)
 user-defined to_string function for JSON values More...
 
template<>
void std::swap< nlohmann::json > (nlohmann::json &j1, nlohmann::json &j2) noexcept(is_nothrow_move_constructible< nlohmann::json >::value and is_nothrow_move_assignable< nlohmann::json >::value)
 exchanges the values of two JSON objects More...
 
nlohmann::json operator""_json (const char *s, std::size_t n)
 user-defined string literal for JSON values More...
 
nlohmann::json::json_pointer operator""_json_pointer (const char *s, std::size_t n)
 user-defined string literal for JSON pointer More...
 
- - - - - -

-Variables

constexpr int nlohmann::detail::dtoa_impl::kAlpha = -60
 
constexpr int nlohmann::detail::dtoa_impl::kGamma = -32
 
-

Macro Definition Documentation

- -

◆ INCLUDE_NLOHMANN_JSON_FWD_HPP_

- -
-
- - - - -
#define INCLUDE_NLOHMANN_JSON_FWD_HPP_
-
- -
-
- -

◆ JSON_CATCH

- -
-
- - - - - - - - -
#define JSON_CATCH( exception)   if(false)
-
- -
-
- -

◆ JSON_HEDLEY_ALWAYS_INLINE

- -
-
- - - - -
#define JSON_HEDLEY_ALWAYS_INLINE   JSON_HEDLEY_INLINE
-
- -
-
- -

◆ JSON_HEDLEY_ARM_VERSION_CHECK

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
#define JSON_HEDLEY_ARM_VERSION_CHECK( major,
 minor,
 patch 
)   (0)
-
- -
-
- -

◆ JSON_HEDLEY_ARRAY_PARAM

- -
-
- - - - - - - - -
#define JSON_HEDLEY_ARRAY_PARAM( name)
-
- -
-
- -

◆ JSON_HEDLEY_ASSUME

- -
-
- - - - - - - - -
#define JSON_HEDLEY_ASSUME( expr)   ((void) (expr))
-
- -
-
- -

◆ JSON_HEDLEY_BEGIN_C_DECLS

- -
-
- - - - -
#define JSON_HEDLEY_BEGIN_C_DECLS
-
- -
-
- -

◆ JSON_HEDLEY_C_DECL

- -
-
- - - - -
#define JSON_HEDLEY_C_DECL
-
- -
-
- -

◆ JSON_HEDLEY_CLANG_HAS_ATTRIBUTE

- -
-
- - - - - - - - -
#define JSON_HEDLEY_CLANG_HAS_ATTRIBUTE( attribute)   JSON_HEDLEY_HAS_ATTRIBUTE(attribute)
-
- -
-
- -

◆ JSON_HEDLEY_CLANG_HAS_BUILTIN

- -
-
- - - - - - - - -
#define JSON_HEDLEY_CLANG_HAS_BUILTIN( builtin)   JSON_HEDLEY_HAS_BUILTIN(builtin)
-
- -
-
- -

◆ JSON_HEDLEY_CLANG_HAS_CPP_ATTRIBUTE

- -
-
- - - - - - - - -
#define JSON_HEDLEY_CLANG_HAS_CPP_ATTRIBUTE( attribute)   JSON_HEDLEY_HAS_CPP_ATTRIBUTE(attribute)
-
- -
-
- -

◆ JSON_HEDLEY_CLANG_HAS_DECLSPEC_ATTRIBUTE

- -
-
- - - - - - - - -
#define JSON_HEDLEY_CLANG_HAS_DECLSPEC_ATTRIBUTE( attribute)   JSON_HEDLEY_HAS_DECLSPEC_ATTRIBUTE(attribute)
-
- -
-
- -

◆ JSON_HEDLEY_CLANG_HAS_EXTENSION

- -
-
- - - - - - - - -
#define JSON_HEDLEY_CLANG_HAS_EXTENSION( extension)   JSON_HEDLEY_HAS_EXTENSION(extension)
-
- -
-
- -

◆ JSON_HEDLEY_CLANG_HAS_FEATURE

- -
-
- - - - - - - - -
#define JSON_HEDLEY_CLANG_HAS_FEATURE( feature)   JSON_HEDLEY_HAS_FEATURE(feature)
-
- -
-
- -

◆ JSON_HEDLEY_CLANG_HAS_WARNING

- -
-
- - - - - - - - -
#define JSON_HEDLEY_CLANG_HAS_WARNING( warning)   JSON_HEDLEY_HAS_WARNING(warning)
-
- -
-
- -

◆ JSON_HEDLEY_COMPCERT_VERSION_CHECK

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
#define JSON_HEDLEY_COMPCERT_VERSION_CHECK( major,
 minor,
 patch 
)   (0)
-
- -
-
- -

◆ JSON_HEDLEY_CONCAT

- -
-
- - - - - - - - - - - - - - - - - - -
#define JSON_HEDLEY_CONCAT( a,
 
)   JSON_HEDLEY_CONCAT_EX(a,b)
-
- -
-
- -

◆ JSON_HEDLEY_CONCAT_EX

- -
-
- - - - - - - - - - - - - - - - - - -
#define JSON_HEDLEY_CONCAT_EX( a,
 
)   a##b
-
- -
-
- -

◆ JSON_HEDLEY_CONST

- -
-
- - - - -
#define JSON_HEDLEY_CONST   JSON_HEDLEY_PURE
-
- -
-
- -

◆ JSON_HEDLEY_CONST_CAST

- -
-
- - - - - - - - - - - - - - - - - - -
#define JSON_HEDLEY_CONST_CAST( T,
 expr 
)   ((T) (expr))
-
- -
-
- -

◆ JSON_HEDLEY_CONSTEXPR

- -
-
- - - - -
#define JSON_HEDLEY_CONSTEXPR
-
- -
-
- -

◆ JSON_HEDLEY_CPP_CAST

- -
-
- - - - - - - - - - - - - - - - - - -
#define JSON_HEDLEY_CPP_CAST( T,
 expr 
)   (expr)
-
- -
-
- -

◆ JSON_HEDLEY_CRAY_VERSION_CHECK

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
#define JSON_HEDLEY_CRAY_VERSION_CHECK( major,
 minor,
 patch 
)   (0)
-
- -
-
- -

◆ JSON_HEDLEY_DEPRECATED

- -
-
- - - - - - - - -
#define JSON_HEDLEY_DEPRECATED( since)
-
- -
-
- -

◆ JSON_HEDLEY_DEPRECATED_FOR

- -
-
- - - - - - - - - - - - - - - - - - -
#define JSON_HEDLEY_DEPRECATED_FOR( since,
 replacement 
)
-
- -
-
- -

◆ JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL

- -
-
- - - - -
#define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL
-
- -
-
- -

◆ JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_

- -
-
- - - - - - - - -
#define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_( x)   x
-
- -
-
- -

◆ JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED

- -
-
- - - - -
#define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED
-
- -
-
- -

◆ JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES

- -
-
- - - - -
#define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES
-
- -
-
- -

◆ JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS

- -
-
- - - - -
#define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS
-
- -
-
- -

◆ JSON_HEDLEY_DIAGNOSTIC_POP

- -
-
- - - - -
#define JSON_HEDLEY_DIAGNOSTIC_POP
-
- -
-
- -

◆ JSON_HEDLEY_DIAGNOSTIC_PUSH

- -
-
- - - - -
#define JSON_HEDLEY_DIAGNOSTIC_PUSH
-
- -
-
- -

◆ JSON_HEDLEY_DMC_VERSION_CHECK

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
#define JSON_HEDLEY_DMC_VERSION_CHECK( major,
 minor,
 patch 
)   (0)
-
- -
-
- -

◆ JSON_HEDLEY_EMPTY_BASES

- -
-
- - - - -
#define JSON_HEDLEY_EMPTY_BASES
-
- -
-
- -

◆ JSON_HEDLEY_EMSCRIPTEN_VERSION_CHECK

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
#define JSON_HEDLEY_EMSCRIPTEN_VERSION_CHECK( major,
 minor,
 patch 
)   (0)
-
- -
-
- -

◆ JSON_HEDLEY_END_C_DECLS

- -
-
- - - - -
#define JSON_HEDLEY_END_C_DECLS
-
- -
-
- -

◆ JSON_HEDLEY_FALL_THROUGH

- -
-
- - - - -
#define JSON_HEDLEY_FALL_THROUGH
-
- -
-
- -

◆ JSON_HEDLEY_FLAGS_CAST

- -
-
- - - - - - - - - - - - - - - - - - -
#define JSON_HEDLEY_FLAGS_CAST( T,
 expr 
)   JSON_HEDLEY_STATIC_CAST(T, expr)
-
- -
-
- -

◆ JSON_HEDLEY_GCC_HAS_ATTRIBUTE

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#define JSON_HEDLEY_GCC_HAS_ATTRIBUTE( attribute,
 major,
 minor,
 patch 
)   JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch)
-
- -
-
- -

◆ JSON_HEDLEY_GCC_HAS_BUILTIN

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#define JSON_HEDLEY_GCC_HAS_BUILTIN( builtin,
 major,
 minor,
 patch 
)   JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch)
-
- -
-
- -

◆ JSON_HEDLEY_GCC_HAS_CPP_ATTRIBUTE

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#define JSON_HEDLEY_GCC_HAS_CPP_ATTRIBUTE( attribute,
 major,
 minor,
 patch 
)   JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch)
-
- -
-
- -

◆ JSON_HEDLEY_GCC_HAS_DECLSPEC_ATTRIBUTE

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#define JSON_HEDLEY_GCC_HAS_DECLSPEC_ATTRIBUTE( attribute,
 major,
 minor,
 patch 
)   JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch)
-
- -
-
- -

◆ JSON_HEDLEY_GCC_HAS_EXTENSION

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#define JSON_HEDLEY_GCC_HAS_EXTENSION( extension,
 major,
 minor,
 patch 
)   JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch)
-
- -
-
- -

◆ JSON_HEDLEY_GCC_HAS_FEATURE

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#define JSON_HEDLEY_GCC_HAS_FEATURE( feature,
 major,
 minor,
 patch 
)   JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch)
-
- -
-
- -

◆ JSON_HEDLEY_GCC_HAS_WARNING

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#define JSON_HEDLEY_GCC_HAS_WARNING( warning,
 major,
 minor,
 patch 
)   JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch)
-
- -
-
- -

◆ JSON_HEDLEY_GCC_NOT_CLANG_VERSION_CHECK

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
#define JSON_HEDLEY_GCC_NOT_CLANG_VERSION_CHECK( major,
 minor,
 patch 
)   JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch)
-
- -
-
- -

◆ JSON_HEDLEY_GCC_VERSION_CHECK

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
#define JSON_HEDLEY_GCC_VERSION_CHECK( major,
 minor,
 patch 
)   (0)
-
- -
-
- -

◆ JSON_HEDLEY_GNUC_HAS_ATTRIBUTE

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#define JSON_HEDLEY_GNUC_HAS_ATTRIBUTE( attribute,
 major,
 minor,
 patch 
)   JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch)
-
- -
-
- -

◆ JSON_HEDLEY_GNUC_HAS_BUILTIN

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#define JSON_HEDLEY_GNUC_HAS_BUILTIN( builtin,
 major,
 minor,
 patch 
)   JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch)
-
- -
-
- -

◆ JSON_HEDLEY_GNUC_HAS_CPP_ATTRIBUTE

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#define JSON_HEDLEY_GNUC_HAS_CPP_ATTRIBUTE( attribute,
 major,
 minor,
 patch 
)   JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch)
-
- -
-
- -

◆ JSON_HEDLEY_GNUC_HAS_DECLSPEC_ATTRIBUTE

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#define JSON_HEDLEY_GNUC_HAS_DECLSPEC_ATTRIBUTE( attribute,
 major,
 minor,
 patch 
)   JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch)
-
- -
-
- -

◆ JSON_HEDLEY_GNUC_HAS_EXTENSION

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#define JSON_HEDLEY_GNUC_HAS_EXTENSION( extension,
 major,
 minor,
 patch 
)   JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch)
-
- -
-
- -

◆ JSON_HEDLEY_GNUC_HAS_FEATURE

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#define JSON_HEDLEY_GNUC_HAS_FEATURE( feature,
 major,
 minor,
 patch 
)   JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch)
-
- -
-
- -

◆ JSON_HEDLEY_GNUC_HAS_WARNING

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#define JSON_HEDLEY_GNUC_HAS_WARNING( warning,
 major,
 minor,
 patch 
)   JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch)
-
- -
-
- -

◆ JSON_HEDLEY_GNUC_VERSION_CHECK

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
#define JSON_HEDLEY_GNUC_VERSION_CHECK( major,
 minor,
 patch 
)   (0)
-
- -
-
- -

◆ JSON_HEDLEY_HAS_ATTRIBUTE

- -
-
- - - - - - - - -
#define JSON_HEDLEY_HAS_ATTRIBUTE( attribute)   (0)
-
- -
-
- -

◆ JSON_HEDLEY_HAS_BUILTIN

- -
-
- - - - - - - - -
#define JSON_HEDLEY_HAS_BUILTIN( builtin)   (0)
-
- -
-
- -

◆ JSON_HEDLEY_HAS_CPP_ATTRIBUTE

- -
-
- - - - - - - - -
#define JSON_HEDLEY_HAS_CPP_ATTRIBUTE( attribute)   (0)
-
- -
-
- -

◆ JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS

- -
-
- - - - - - - - - - - - - - - - - - -
#define JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS( ns,
 attribute 
)   (0)
-
- -
-
- -

◆ JSON_HEDLEY_HAS_DECLSPEC_ATTRIBUTE

- -
-
- - - - - - - - -
#define JSON_HEDLEY_HAS_DECLSPEC_ATTRIBUTE( attribute)   (0)
-
- -
-
- -

◆ JSON_HEDLEY_HAS_EXTENSION

- -
-
- - - - - - - - -
#define JSON_HEDLEY_HAS_EXTENSION( extension)   (0)
-
- -
-
- -

◆ JSON_HEDLEY_HAS_FEATURE

- -
-
- - - - - - - - -
#define JSON_HEDLEY_HAS_FEATURE( feature)   (0)
-
- -
-
- -

◆ JSON_HEDLEY_HAS_WARNING

- -
-
- - - - - - - - -
#define JSON_HEDLEY_HAS_WARNING( warning)   (0)
-
- -
-
- -

◆ JSON_HEDLEY_IAR_VERSION_CHECK

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
#define JSON_HEDLEY_IAR_VERSION_CHECK( major,
 minor,
 patch 
)   (0)
-
- -
-
- -

◆ JSON_HEDLEY_IBM_VERSION_CHECK

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
#define JSON_HEDLEY_IBM_VERSION_CHECK( major,
 minor,
 patch 
)   (0)
-
- -
-
- -

◆ JSON_HEDLEY_IMPORT

- -
-
- - - - -
#define JSON_HEDLEY_IMPORT   extern
-
- -
-
- -

◆ JSON_HEDLEY_INLINE

- -
-
- - - - -
#define JSON_HEDLEY_INLINE
-
- -
-
- -

◆ JSON_HEDLEY_INTEL_VERSION_CHECK

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
#define JSON_HEDLEY_INTEL_VERSION_CHECK( major,
 minor,
 patch 
)   (0)
-
- -
-
- -

◆ JSON_HEDLEY_IS_CONSTANT

- -
-
- - - - - - - - -
#define JSON_HEDLEY_IS_CONSTANT( expr)   (0)
-
- -
-
- -

◆ JSON_HEDLEY_LIKELY

- -
-
- - - - - - - - -
#define JSON_HEDLEY_LIKELY( expr)   (!!(expr))
-
- -
-
- -

◆ JSON_HEDLEY_MALLOC

- -
-
- - - - -
#define JSON_HEDLEY_MALLOC
-
- -
-
- -

◆ JSON_HEDLEY_MESSAGE

- -
-
- - - - - - - - -
#define JSON_HEDLEY_MESSAGE( msg)
-
- -
-
- -

◆ JSON_HEDLEY_MSVC_VERSION_CHECK

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
#define JSON_HEDLEY_MSVC_VERSION_CHECK( major,
 minor,
 patch 
)   (0)
-
- -
-
- -

◆ JSON_HEDLEY_NEVER_INLINE

- -
-
- - - - -
#define JSON_HEDLEY_NEVER_INLINE
-
- -
-
- -

◆ JSON_HEDLEY_NO_ESCAPE

- -
-
- - - - -
#define JSON_HEDLEY_NO_ESCAPE
-
- -
-
- -

◆ JSON_HEDLEY_NO_RETURN

- -
-
- - - - -
#define JSON_HEDLEY_NO_RETURN
-
- -
-
- -

◆ JSON_HEDLEY_NO_THROW

- -
-
- - - - -
#define JSON_HEDLEY_NO_THROW
-
- -
-
- -

◆ JSON_HEDLEY_NON_NULL

- -
-
- - - - - - - - -
#define JSON_HEDLEY_NON_NULL( ...)
-
- -
-
- -

◆ JSON_HEDLEY_NULL

- -
-
- - - - -
#define JSON_HEDLEY_NULL   ((void*) 0)
-
- -
-
- -

◆ JSON_HEDLEY_PELLES_VERSION_CHECK

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
#define JSON_HEDLEY_PELLES_VERSION_CHECK( major,
 minor,
 patch 
)   (0)
-
- -
-
- -

◆ JSON_HEDLEY_PGI_VERSION_CHECK

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
#define JSON_HEDLEY_PGI_VERSION_CHECK( major,
 minor,
 patch 
)   (0)
-
- -
-
- -

◆ JSON_HEDLEY_PRAGMA

- -
-
- - - - - - - - -
#define JSON_HEDLEY_PRAGMA( value)
-
- -
-
- -

◆ JSON_HEDLEY_PREDICT

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
#define JSON_HEDLEY_PREDICT( expr,
 expected,
 probability 
)   (((void) (expected)), !!(expr))
-
- -
-
- -

◆ JSON_HEDLEY_PREDICT_FALSE

- -
-
- - - - - - - - - - - - - - - - - - -
#define JSON_HEDLEY_PREDICT_FALSE( expr,
 probability 
)   (!!(expr))
-
- -
-
- -

◆ JSON_HEDLEY_PREDICT_TRUE

- -
-
- - - - - - - - - - - - - - - - - - -
#define JSON_HEDLEY_PREDICT_TRUE( expr,
 probability 
)   (!!(expr))
-
- -
-
- -

◆ JSON_HEDLEY_PRINTF_FORMAT

- -
-
- - - - - - - - - - - - - - - - - - -
#define JSON_HEDLEY_PRINTF_FORMAT( string_idx,
 first_to_check 
)
-
- -
-
- -

◆ JSON_HEDLEY_PRIVATE

- -
-
- - - - -
#define JSON_HEDLEY_PRIVATE
-
- -
-
- -

◆ JSON_HEDLEY_PUBLIC

- -
-
- - - - -
#define JSON_HEDLEY_PUBLIC
-
- -
-
- -

◆ JSON_HEDLEY_PURE

- -
-
- - - - -
#define JSON_HEDLEY_PURE
-
- -
-
- -

◆ JSON_HEDLEY_REINTERPRET_CAST

- -
-
- - - - - - - - - - - - - - - - - - -
#define JSON_HEDLEY_REINTERPRET_CAST( T,
 expr 
)   (*((T*) &(expr)))
-
- -
-
- -

◆ JSON_HEDLEY_REQUIRE

- -
-
- - - - - - - - -
#define JSON_HEDLEY_REQUIRE( expr)
-
- -
-
- -

◆ JSON_HEDLEY_REQUIRE_CONSTEXPR

- -
-
- - - - - - - - -
#define JSON_HEDLEY_REQUIRE_CONSTEXPR( expr)   (expr)
-
- -
-
- -

◆ JSON_HEDLEY_REQUIRE_MSG

- -
-
- - - - - - - - - - - - - - - - - - -
#define JSON_HEDLEY_REQUIRE_MSG( expr,
 msg 
)
-
- -
-
- -

◆ JSON_HEDLEY_RESTRICT

- -
-
- - - - -
#define JSON_HEDLEY_RESTRICT
-
- -
-
- -

◆ JSON_HEDLEY_RETURNS_NON_NULL

- -
-
- - - - -
#define JSON_HEDLEY_RETURNS_NON_NULL
-
- -
-
- -

◆ JSON_HEDLEY_SENTINEL

- -
-
- - - - - - - - -
#define JSON_HEDLEY_SENTINEL( position)
-
- -
-
- -

◆ JSON_HEDLEY_STATIC_ASSERT

- -
-
- - - - - - - - - - - - - - - - - - -
#define JSON_HEDLEY_STATIC_ASSERT( expr,
 message 
)
-
- -
-
- -

◆ JSON_HEDLEY_STATIC_CAST

- -
-
- - - - - - - - - - - - - - - - - - -
#define JSON_HEDLEY_STATIC_CAST( T,
 expr 
)   ((T) (expr))
-
- -
-
- -

◆ JSON_HEDLEY_STRINGIFY

- -
-
- - - - - - - - -
#define JSON_HEDLEY_STRINGIFY( x)   JSON_HEDLEY_STRINGIFY_EX(x)
-
- -
-
- -

◆ JSON_HEDLEY_STRINGIFY_EX

- -
-
- - - - - - - - -
#define JSON_HEDLEY_STRINGIFY_EX( x)   #x
-
- -
-
- -

◆ JSON_HEDLEY_SUNPRO_VERSION_CHECK

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
#define JSON_HEDLEY_SUNPRO_VERSION_CHECK( major,
 minor,
 patch 
)   (0)
-
- -
-
- -

◆ JSON_HEDLEY_TI_VERSION_CHECK

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
#define JSON_HEDLEY_TI_VERSION_CHECK( major,
 minor,
 patch 
)   (0)
-
- -
-
- -

◆ JSON_HEDLEY_TINYC_VERSION_CHECK

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
#define JSON_HEDLEY_TINYC_VERSION_CHECK( major,
 minor,
 patch 
)   (0)
-
- -
-
- -

◆ JSON_HEDLEY_UNAVAILABLE

- -
-
- - - - - - - - -
#define JSON_HEDLEY_UNAVAILABLE( available_since)
-
- -
-
- -

◆ JSON_HEDLEY_UNLIKELY

- -
-
- - - - - - - - -
#define JSON_HEDLEY_UNLIKELY( expr)   (!!(expr))
-
- -
-
- -

◆ JSON_HEDLEY_UNPREDICTABLE

- -
-
- - - - - - - - -
#define JSON_HEDLEY_UNPREDICTABLE( expr)   JSON_HEDLEY_PREDICT(expr, 1, 0.5)
-
- -
-
- -

◆ JSON_HEDLEY_UNREACHABLE

- -
-
- - - - - - - -
#define JSON_HEDLEY_UNREACHABLE()
-
- -
-
- -

◆ JSON_HEDLEY_UNREACHABLE_RETURN

- -
-
- - - - - - - - -
#define JSON_HEDLEY_UNREACHABLE_RETURN( value)   return value
-
- -
-
- -

◆ JSON_HEDLEY_VERSION

- -
-
- - - - -
#define JSON_HEDLEY_VERSION   11
-
- -
-
- -

◆ JSON_HEDLEY_VERSION_DECODE_MAJOR

- -
-
- - - - - - - - -
#define JSON_HEDLEY_VERSION_DECODE_MAJOR( version)   ((version) / 1000000)
-
- -
-
- -

◆ JSON_HEDLEY_VERSION_DECODE_MINOR

- -
-
- - - - - - - - -
#define JSON_HEDLEY_VERSION_DECODE_MINOR( version)   (((version) % 1000000) / 1000)
-
- -
-
- -

◆ JSON_HEDLEY_VERSION_DECODE_REVISION

- -
-
- - - - - - - - -
#define JSON_HEDLEY_VERSION_DECODE_REVISION( version)   ((version) % 1000)
-
- -
-
- -

◆ JSON_HEDLEY_VERSION_ENCODE

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
#define JSON_HEDLEY_VERSION_ENCODE( major,
 minor,
 revision 
)   (((major) * 1000000) + ((minor) * 1000) + (revision))
-
- -
-
- -

◆ JSON_HEDLEY_WARN_UNUSED_RESULT

- -
-
- - - - -
#define JSON_HEDLEY_WARN_UNUSED_RESULT
-
- -
-
- -

◆ JSON_HEDLEY_WARNING

- -
-
- - - - - - - - -
#define JSON_HEDLEY_WARNING( msg)   JSON_HEDLEY_MESSAGE(msg)
-
- -
-
- -

◆ JSON_INTERNAL_CATCH

- -
-
- - - - - - - - -
#define JSON_INTERNAL_CATCH( exception)   if(false)
-
- -
-
- -

◆ JSON_THROW

- -
-
- - - - - - - - -
#define JSON_THROW( exception)   std::abort()
-
- -
-
- -

◆ JSON_TRY

- -
-
- - - - -
#define JSON_TRY   if(true)
-
- -
-
- -

◆ NLOHMANN_BASIC_JSON_TPL

- -
-
- - - - -
#define NLOHMANN_BASIC_JSON_TPL
-
-Value:
basic_json<ObjectType, ArrayType, StringType, BooleanType, \
-
NumberIntegerType, NumberUnsignedType, NumberFloatType, \
-
AllocatorType, JSONSerializer>
-
-
-
- -

◆ NLOHMANN_BASIC_JSON_TPL_DECLARATION

- -
-
- - - - -
#define NLOHMANN_BASIC_JSON_TPL_DECLARATION
-
-Value:
template<template<typename, typename, typename...> class ObjectType, \
-
template<typename, typename...> class ArrayType, \
-
class StringType, class BooleanType, class NumberIntegerType, \
-
class NumberUnsignedType, class NumberFloatType, \
-
template<typename> class AllocatorType, \
-
template<typename, typename = void> class JSONSerializer>
-
-
-
- -

◆ NLOHMANN_JSON_SERIALIZE_ENUM

- -
-
- - - - - - - - - - - - - - - - - - -
#define NLOHMANN_JSON_SERIALIZE_ENUM( ENUM_TYPE,
 ... 
)
-
-Value:
template<typename BasicJsonType> \
-
inline void to_json(BasicJsonType& j, const ENUM_TYPE& e) \
-
{ \
-
static_assert(std::is_enum<ENUM_TYPE>::value, #ENUM_TYPE " must be an enum!"); \
-
static const std::pair<ENUM_TYPE, BasicJsonType> m[] = __VA_ARGS__; \
-
auto it = std::find_if(std::begin(m), std::end(m), \
-
[e](const std::pair<ENUM_TYPE, BasicJsonType>& ej_pair) -> bool \
-
{ \
-
return ej_pair.first == e; \
-
}); \
-
j = ((it != std::end(m)) ? it : std::begin(m))->second; \
-
} \
-
template<typename BasicJsonType> \
-
inline void from_json(const BasicJsonType& j, ENUM_TYPE& e) \
-
{ \
-
static_assert(std::is_enum<ENUM_TYPE>::value, #ENUM_TYPE " must be an enum!"); \
-
static const std::pair<ENUM_TYPE, BasicJsonType> m[] = __VA_ARGS__; \
-
auto it = std::find_if(std::begin(m), std::end(m), \
-
[&j](const std::pair<ENUM_TYPE, BasicJsonType>& ej_pair) -> bool \
-
{ \
-
return ej_pair.second == j; \
-
}); \
-
e = ((it != std::end(m)) ? it : std::begin(m))->first; \
-
}
-
-

macro to briefly define a mapping between an enum and JSON

-
Since
version 3.4.0
- -
-
- -

◆ NLOHMANN_JSON_VERSION_MAJOR

- -
-
- - - - -
#define NLOHMANN_JSON_VERSION_MAJOR   3
-
- -
-
- -

◆ NLOHMANN_JSON_VERSION_MINOR

- -
-
- - - - -
#define NLOHMANN_JSON_VERSION_MINOR   7
-
- -
-
- -

◆ NLOHMANN_JSON_VERSION_PATCH

- -
-
- - - - -
#define NLOHMANN_JSON_VERSION_PATCH   3
-
- -
-
-

Function Documentation

- -

◆ operator""_json()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
nlohmann::json operator""_json (const char * s,
std::size_t n 
)
-
-inline
-
- -

user-defined string literal for JSON values

-

This operator implements a user-defined string literal for JSON objects. It can be used by adding "_json" to a string literal and returns a JSON object if no parse error occurred.

-
Parameters
- - - -
[in]sa string representation of a JSON object
[in]nthe length of string s
-
-
-
Returns
a JSON object
-
Since
version 1.0.0
- -
-
- -

◆ operator""_json_pointer()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
nlohmann::json::json_pointer operator""_json_pointer (const char * s,
std::size_t n 
)
-
-inline
-
- -

user-defined string literal for JSON pointer

-

This operator implements a user-defined string literal for JSON Pointers. It can be used by adding "_json_pointer" to a string literal and returns a JSON pointer object if no parse error occurred.

-
Parameters
- - - -
[in]sa string representation of a JSON Pointer
[in]nthe length of string s
-
-
-
Returns
a JSON pointer object
-
Since
version 2.0.0
- -
-
-
-
void from_json(const BasicJsonType &j, typename BasicJsonType::binary_t &bin)
Definition: json.hpp:3652
-
void to_json(BasicJsonType &j, const typename BasicJsonType::binary_t &bin)
Definition: json.hpp:4280
- - - - diff --git a/help/html/build_2__deps_2json-src_2include_2nlohmann_2json_8hpp__incl.map b/help/html/build_2__deps_2json-src_2include_2nlohmann_2json_8hpp__incl.map deleted file mode 100644 index c2f88fe..0000000 --- a/help/html/build_2__deps_2json-src_2include_2nlohmann_2json_8hpp__incl.map +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/help/html/build_2__deps_2json-src_2include_2nlohmann_2json_8hpp__incl.md5 b/help/html/build_2__deps_2json-src_2include_2nlohmann_2json_8hpp__incl.md5 deleted file mode 100644 index 032a710..0000000 --- a/help/html/build_2__deps_2json-src_2include_2nlohmann_2json_8hpp__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -0e5bef3d12b8e30ecb8040bafcf0e347 \ No newline at end of file diff --git a/help/html/build_2__deps_2json-src_2include_2nlohmann_2json_8hpp__incl.png b/help/html/build_2__deps_2json-src_2include_2nlohmann_2json_8hpp__incl.png deleted file mode 100644 index 51d75f9..0000000 Binary files a/help/html/build_2__deps_2json-src_2include_2nlohmann_2json_8hpp__incl.png and /dev/null differ diff --git a/help/html/build_2__deps_2json-src_2include_2nlohmann_2json_8hpp_source.html b/help/html/build_2__deps_2json-src_2include_2nlohmann_2json_8hpp_source.html deleted file mode 100644 index 979b5dc..0000000 --- a/help/html/build_2__deps_2json-src_2include_2nlohmann_2json_8hpp_source.html +++ /dev/null @@ -1,17076 +0,0 @@ - - - - - - - -CocoaTweet: build/_deps/json-src/include/nlohmann/json.hpp Source File - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
json.hpp
-
-
-Go to the documentation of this file.
1 /*
-
2  __ _____ _____ _____
-
3  __| | __| | | | JSON for Modern C++
-
4 | | |__ | | | | | | version 3.7.3
-
5 |_____|_____|_____|_|___| https://github.com/nlohmann/json
-
6 
-
7 Licensed under the MIT License <http://opensource.org/licenses/MIT>.
-
8 SPDX-License-Identifier: MIT
-
9 Copyright (c) 2013-2019 Niels Lohmann <http://nlohmann.me>.
-
10 
-
11 Permission is hereby granted, free of charge, to any person obtaining a copy
-
12 of this software and associated documentation files (the "Software"), to deal
-
13 in the Software without restriction, including without limitation the rights
-
14 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-
15 copies of the Software, and to permit persons to whom the Software is
-
16 furnished to do so, subject to the following conditions:
-
17 
-
18 The above copyright notice and this permission notice shall be included in all
-
19 copies or substantial portions of the Software.
-
20 
-
21 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-
22 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-
23 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-
24 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-
25 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-
26 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-
27 SOFTWARE.
-
28 */
-
29 
-
30 #ifndef INCLUDE_NLOHMANN_JSON_HPP_
-
31 #define INCLUDE_NLOHMANN_JSON_HPP_
-
32 
-
33 #define NLOHMANN_JSON_VERSION_MAJOR 3
-
34 #define NLOHMANN_JSON_VERSION_MINOR 7
-
35 #define NLOHMANN_JSON_VERSION_PATCH 3
-
36 
-
37 #include <algorithm> // all_of, find, for_each
-
38 #include <cassert> // assert
-
39 #include <ciso646> // and, not, or
-
40 #include <cstddef> // nullptr_t, ptrdiff_t, size_t
-
41 #include <functional> // hash, less
-
42 #include <initializer_list> // initializer_list
-
43 #include <iosfwd> // istream, ostream
-
44 #include <iterator> // random_access_iterator_tag
-
45 #include <memory> // unique_ptr
-
46 #include <numeric> // accumulate
-
47 #include <string> // string, stoi, to_string
-
48 #include <utility> // declval, forward, move, pair, swap
-
49 #include <vector> // vector
-
50 
-
51 // #include <nlohmann/adl_serializer.hpp>
-
52 
-
53 
-
54 #include <utility>
-
55 
-
56 // #include <nlohmann/detail/conversions/from_json.hpp>
-
57 
-
58 
-
59 #include <algorithm> // transform
-
60 #include <array> // array
-
61 #include <ciso646> // and, not
-
62 #include <forward_list> // forward_list
-
63 #include <iterator> // inserter, front_inserter, end
-
64 #include <map> // map
-
65 #include <string> // string
-
66 #include <tuple> // tuple, make_tuple
-
67 #include <type_traits> // is_arithmetic, is_same, is_enum, underlying_type, is_convertible
-
68 #include <unordered_map> // unordered_map
-
69 #include <utility> // pair, declval
-
70 #include <valarray> // valarray
-
71 
-
72 // #include <nlohmann/detail/exceptions.hpp>
-
73 
-
74 
-
75 #include <exception> // exception
-
76 #include <stdexcept> // runtime_error
-
77 #include <string> // to_string
-
78 
-
79 // #include <nlohmann/detail/input/position_t.hpp>
-
80 
-
81 
-
82 #include <cstddef> // size_t
-
83 
-
84 namespace nlohmann
-
85 {
-
86 namespace detail
-
87 {
-
89 struct position_t
-
90 {
-
92  std::size_t chars_read_total = 0;
-
94  std::size_t chars_read_current_line = 0;
-
96  std::size_t lines_read = 0;
-
97 
-
99  constexpr operator size_t() const
-
100  {
-
101  return chars_read_total;
-
102  }
-
103 };
-
104 
-
105 } // namespace detail
-
106 } // namespace nlohmann
-
107 
-
108 // #include <nlohmann/detail/macro_scope.hpp>
-
109 
-
110 
-
111 #include <utility> // pair
-
112 // #include <nlohmann/thirdparty/hedley/hedley.hpp>
-
113 /* Hedley - https://nemequ.github.io/hedley
-
114  * Created by Evan Nemerson <evan@nemerson.com>
-
115  *
-
116  * To the extent possible under law, the author(s) have dedicated all
-
117  * copyright and related and neighboring rights to this software to
-
118  * the public domain worldwide. This software is distributed without
-
119  * any warranty.
-
120  *
-
121  * For details, see <http://creativecommons.org/publicdomain/zero/1.0/>.
-
122  * SPDX-License-Identifier: CC0-1.0
-
123  */
-
124 
-
125 #if !defined(JSON_HEDLEY_VERSION) || (JSON_HEDLEY_VERSION < 11)
-
126 #if defined(JSON_HEDLEY_VERSION)
-
127  #undef JSON_HEDLEY_VERSION
-
128 #endif
-
129 #define JSON_HEDLEY_VERSION 11
-
130 
-
131 #if defined(JSON_HEDLEY_STRINGIFY_EX)
-
132  #undef JSON_HEDLEY_STRINGIFY_EX
-
133 #endif
-
134 #define JSON_HEDLEY_STRINGIFY_EX(x) #x
-
135 
-
136 #if defined(JSON_HEDLEY_STRINGIFY)
-
137  #undef JSON_HEDLEY_STRINGIFY
-
138 #endif
-
139 #define JSON_HEDLEY_STRINGIFY(x) JSON_HEDLEY_STRINGIFY_EX(x)
-
140 
-
141 #if defined(JSON_HEDLEY_CONCAT_EX)
-
142  #undef JSON_HEDLEY_CONCAT_EX
-
143 #endif
-
144 #define JSON_HEDLEY_CONCAT_EX(a,b) a##b
-
145 
-
146 #if defined(JSON_HEDLEY_CONCAT)
-
147  #undef JSON_HEDLEY_CONCAT
-
148 #endif
-
149 #define JSON_HEDLEY_CONCAT(a,b) JSON_HEDLEY_CONCAT_EX(a,b)
-
150 
-
151 #if defined(JSON_HEDLEY_VERSION_ENCODE)
-
152  #undef JSON_HEDLEY_VERSION_ENCODE
-
153 #endif
-
154 #define JSON_HEDLEY_VERSION_ENCODE(major,minor,revision) (((major) * 1000000) + ((minor) * 1000) + (revision))
-
155 
-
156 #if defined(JSON_HEDLEY_VERSION_DECODE_MAJOR)
-
157  #undef JSON_HEDLEY_VERSION_DECODE_MAJOR
-
158 #endif
-
159 #define JSON_HEDLEY_VERSION_DECODE_MAJOR(version) ((version) / 1000000)
-
160 
-
161 #if defined(JSON_HEDLEY_VERSION_DECODE_MINOR)
-
162  #undef JSON_HEDLEY_VERSION_DECODE_MINOR
-
163 #endif
-
164 #define JSON_HEDLEY_VERSION_DECODE_MINOR(version) (((version) % 1000000) / 1000)
-
165 
-
166 #if defined(JSON_HEDLEY_VERSION_DECODE_REVISION)
-
167  #undef JSON_HEDLEY_VERSION_DECODE_REVISION
-
168 #endif
-
169 #define JSON_HEDLEY_VERSION_DECODE_REVISION(version) ((version) % 1000)
-
170 
-
171 #if defined(JSON_HEDLEY_GNUC_VERSION)
-
172  #undef JSON_HEDLEY_GNUC_VERSION
-
173 #endif
-
174 #if defined(__GNUC__) && defined(__GNUC_PATCHLEVEL__)
-
175  #define JSON_HEDLEY_GNUC_VERSION JSON_HEDLEY_VERSION_ENCODE(__GNUC__, __GNUC_MINOR__, __GNUC_PATCHLEVEL__)
-
176 #elif defined(__GNUC__)
-
177  #define JSON_HEDLEY_GNUC_VERSION JSON_HEDLEY_VERSION_ENCODE(__GNUC__, __GNUC_MINOR__, 0)
-
178 #endif
-
179 
-
180 #if defined(JSON_HEDLEY_GNUC_VERSION_CHECK)
-
181  #undef JSON_HEDLEY_GNUC_VERSION_CHECK
-
182 #endif
-
183 #if defined(JSON_HEDLEY_GNUC_VERSION)
-
184  #define JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_GNUC_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch))
-
185 #else
-
186  #define JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch) (0)
-
187 #endif
-
188 
-
189 #if defined(JSON_HEDLEY_MSVC_VERSION)
-
190  #undef JSON_HEDLEY_MSVC_VERSION
-
191 #endif
-
192 #if defined(_MSC_FULL_VER) && (_MSC_FULL_VER >= 140000000)
-
193  #define JSON_HEDLEY_MSVC_VERSION JSON_HEDLEY_VERSION_ENCODE(_MSC_FULL_VER / 10000000, (_MSC_FULL_VER % 10000000) / 100000, (_MSC_FULL_VER % 100000) / 100)
-
194 #elif defined(_MSC_FULL_VER)
-
195  #define JSON_HEDLEY_MSVC_VERSION JSON_HEDLEY_VERSION_ENCODE(_MSC_FULL_VER / 1000000, (_MSC_FULL_VER % 1000000) / 10000, (_MSC_FULL_VER % 10000) / 10)
-
196 #elif defined(_MSC_VER)
-
197  #define JSON_HEDLEY_MSVC_VERSION JSON_HEDLEY_VERSION_ENCODE(_MSC_VER / 100, _MSC_VER % 100, 0)
-
198 #endif
-
199 
-
200 #if defined(JSON_HEDLEY_MSVC_VERSION_CHECK)
-
201  #undef JSON_HEDLEY_MSVC_VERSION_CHECK
-
202 #endif
-
203 #if !defined(_MSC_VER)
-
204  #define JSON_HEDLEY_MSVC_VERSION_CHECK(major,minor,patch) (0)
-
205 #elif defined(_MSC_VER) && (_MSC_VER >= 1400)
-
206  #define JSON_HEDLEY_MSVC_VERSION_CHECK(major,minor,patch) (_MSC_FULL_VER >= ((major * 10000000) + (minor * 100000) + (patch)))
-
207 #elif defined(_MSC_VER) && (_MSC_VER >= 1200)
-
208  #define JSON_HEDLEY_MSVC_VERSION_CHECK(major,minor,patch) (_MSC_FULL_VER >= ((major * 1000000) + (minor * 10000) + (patch)))
-
209 #else
-
210  #define JSON_HEDLEY_MSVC_VERSION_CHECK(major,minor,patch) (_MSC_VER >= ((major * 100) + (minor)))
-
211 #endif
-
212 
-
213 #if defined(JSON_HEDLEY_INTEL_VERSION)
-
214  #undef JSON_HEDLEY_INTEL_VERSION
-
215 #endif
-
216 #if defined(__INTEL_COMPILER) && defined(__INTEL_COMPILER_UPDATE)
-
217  #define JSON_HEDLEY_INTEL_VERSION JSON_HEDLEY_VERSION_ENCODE(__INTEL_COMPILER / 100, __INTEL_COMPILER % 100, __INTEL_COMPILER_UPDATE)
-
218 #elif defined(__INTEL_COMPILER)
-
219  #define JSON_HEDLEY_INTEL_VERSION JSON_HEDLEY_VERSION_ENCODE(__INTEL_COMPILER / 100, __INTEL_COMPILER % 100, 0)
-
220 #endif
-
221 
-
222 #if defined(JSON_HEDLEY_INTEL_VERSION_CHECK)
-
223  #undef JSON_HEDLEY_INTEL_VERSION_CHECK
-
224 #endif
-
225 #if defined(JSON_HEDLEY_INTEL_VERSION)
-
226  #define JSON_HEDLEY_INTEL_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_INTEL_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch))
-
227 #else
-
228  #define JSON_HEDLEY_INTEL_VERSION_CHECK(major,minor,patch) (0)
-
229 #endif
-
230 
-
231 #if defined(JSON_HEDLEY_PGI_VERSION)
-
232  #undef JSON_HEDLEY_PGI_VERSION
-
233 #endif
-
234 #if defined(__PGI) && defined(__PGIC__) && defined(__PGIC_MINOR__) && defined(__PGIC_PATCHLEVEL__)
-
235  #define JSON_HEDLEY_PGI_VERSION JSON_HEDLEY_VERSION_ENCODE(__PGIC__, __PGIC_MINOR__, __PGIC_PATCHLEVEL__)
-
236 #endif
-
237 
-
238 #if defined(JSON_HEDLEY_PGI_VERSION_CHECK)
-
239  #undef JSON_HEDLEY_PGI_VERSION_CHECK
-
240 #endif
-
241 #if defined(JSON_HEDLEY_PGI_VERSION)
-
242  #define JSON_HEDLEY_PGI_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_PGI_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch))
-
243 #else
-
244  #define JSON_HEDLEY_PGI_VERSION_CHECK(major,minor,patch) (0)
-
245 #endif
-
246 
-
247 #if defined(JSON_HEDLEY_SUNPRO_VERSION)
-
248  #undef JSON_HEDLEY_SUNPRO_VERSION
-
249 #endif
-
250 #if defined(__SUNPRO_C) && (__SUNPRO_C > 0x1000)
-
251  #define JSON_HEDLEY_SUNPRO_VERSION JSON_HEDLEY_VERSION_ENCODE((((__SUNPRO_C >> 16) & 0xf) * 10) + ((__SUNPRO_C >> 12) & 0xf), (((__SUNPRO_C >> 8) & 0xf) * 10) + ((__SUNPRO_C >> 4) & 0xf), (__SUNPRO_C & 0xf) * 10)
-
252 #elif defined(__SUNPRO_C)
-
253  #define JSON_HEDLEY_SUNPRO_VERSION JSON_HEDLEY_VERSION_ENCODE((__SUNPRO_C >> 8) & 0xf, (__SUNPRO_C >> 4) & 0xf, (__SUNPRO_C) & 0xf)
-
254 #elif defined(__SUNPRO_CC) && (__SUNPRO_CC > 0x1000)
-
255  #define JSON_HEDLEY_SUNPRO_VERSION JSON_HEDLEY_VERSION_ENCODE((((__SUNPRO_CC >> 16) & 0xf) * 10) + ((__SUNPRO_CC >> 12) & 0xf), (((__SUNPRO_CC >> 8) & 0xf) * 10) + ((__SUNPRO_CC >> 4) & 0xf), (__SUNPRO_CC & 0xf) * 10)
-
256 #elif defined(__SUNPRO_CC)
-
257  #define JSON_HEDLEY_SUNPRO_VERSION JSON_HEDLEY_VERSION_ENCODE((__SUNPRO_CC >> 8) & 0xf, (__SUNPRO_CC >> 4) & 0xf, (__SUNPRO_CC) & 0xf)
-
258 #endif
-
259 
-
260 #if defined(JSON_HEDLEY_SUNPRO_VERSION_CHECK)
-
261  #undef JSON_HEDLEY_SUNPRO_VERSION_CHECK
-
262 #endif
-
263 #if defined(JSON_HEDLEY_SUNPRO_VERSION)
-
264  #define JSON_HEDLEY_SUNPRO_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_SUNPRO_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch))
-
265 #else
-
266  #define JSON_HEDLEY_SUNPRO_VERSION_CHECK(major,minor,patch) (0)
-
267 #endif
-
268 
-
269 #if defined(JSON_HEDLEY_EMSCRIPTEN_VERSION)
-
270  #undef JSON_HEDLEY_EMSCRIPTEN_VERSION
-
271 #endif
-
272 #if defined(__EMSCRIPTEN__)
-
273  #define JSON_HEDLEY_EMSCRIPTEN_VERSION JSON_HEDLEY_VERSION_ENCODE(__EMSCRIPTEN_major__, __EMSCRIPTEN_minor__, __EMSCRIPTEN_tiny__)
-
274 #endif
-
275 
-
276 #if defined(JSON_HEDLEY_EMSCRIPTEN_VERSION_CHECK)
-
277  #undef JSON_HEDLEY_EMSCRIPTEN_VERSION_CHECK
-
278 #endif
-
279 #if defined(JSON_HEDLEY_EMSCRIPTEN_VERSION)
-
280  #define JSON_HEDLEY_EMSCRIPTEN_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_EMSCRIPTEN_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch))
-
281 #else
-
282  #define JSON_HEDLEY_EMSCRIPTEN_VERSION_CHECK(major,minor,patch) (0)
-
283 #endif
-
284 
-
285 #if defined(JSON_HEDLEY_ARM_VERSION)
-
286  #undef JSON_HEDLEY_ARM_VERSION
-
287 #endif
-
288 #if defined(__CC_ARM) && defined(__ARMCOMPILER_VERSION)
-
289  #define JSON_HEDLEY_ARM_VERSION JSON_HEDLEY_VERSION_ENCODE(__ARMCOMPILER_VERSION / 1000000, (__ARMCOMPILER_VERSION % 1000000) / 10000, (__ARMCOMPILER_VERSION % 10000) / 100)
-
290 #elif defined(__CC_ARM) && defined(__ARMCC_VERSION)
-
291  #define JSON_HEDLEY_ARM_VERSION JSON_HEDLEY_VERSION_ENCODE(__ARMCC_VERSION / 1000000, (__ARMCC_VERSION % 1000000) / 10000, (__ARMCC_VERSION % 10000) / 100)
-
292 #endif
-
293 
-
294 #if defined(JSON_HEDLEY_ARM_VERSION_CHECK)
-
295  #undef JSON_HEDLEY_ARM_VERSION_CHECK
-
296 #endif
-
297 #if defined(JSON_HEDLEY_ARM_VERSION)
-
298  #define JSON_HEDLEY_ARM_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_ARM_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch))
-
299 #else
-
300  #define JSON_HEDLEY_ARM_VERSION_CHECK(major,minor,patch) (0)
-
301 #endif
-
302 
-
303 #if defined(JSON_HEDLEY_IBM_VERSION)
-
304  #undef JSON_HEDLEY_IBM_VERSION
-
305 #endif
-
306 #if defined(__ibmxl__)
-
307  #define JSON_HEDLEY_IBM_VERSION JSON_HEDLEY_VERSION_ENCODE(__ibmxl_version__, __ibmxl_release__, __ibmxl_modification__)
-
308 #elif defined(__xlC__) && defined(__xlC_ver__)
-
309  #define JSON_HEDLEY_IBM_VERSION JSON_HEDLEY_VERSION_ENCODE(__xlC__ >> 8, __xlC__ & 0xff, (__xlC_ver__ >> 8) & 0xff)
-
310 #elif defined(__xlC__)
-
311  #define JSON_HEDLEY_IBM_VERSION JSON_HEDLEY_VERSION_ENCODE(__xlC__ >> 8, __xlC__ & 0xff, 0)
-
312 #endif
-
313 
-
314 #if defined(JSON_HEDLEY_IBM_VERSION_CHECK)
-
315  #undef JSON_HEDLEY_IBM_VERSION_CHECK
-
316 #endif
-
317 #if defined(JSON_HEDLEY_IBM_VERSION)
-
318  #define JSON_HEDLEY_IBM_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_IBM_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch))
-
319 #else
-
320  #define JSON_HEDLEY_IBM_VERSION_CHECK(major,minor,patch) (0)
-
321 #endif
-
322 
-
323 #if defined(JSON_HEDLEY_TI_VERSION)
-
324  #undef JSON_HEDLEY_TI_VERSION
-
325 #endif
-
326 #if defined(__TI_COMPILER_VERSION__)
-
327  #define JSON_HEDLEY_TI_VERSION JSON_HEDLEY_VERSION_ENCODE(__TI_COMPILER_VERSION__ / 1000000, (__TI_COMPILER_VERSION__ % 1000000) / 1000, (__TI_COMPILER_VERSION__ % 1000))
-
328 #endif
-
329 
-
330 #if defined(JSON_HEDLEY_TI_VERSION_CHECK)
-
331  #undef JSON_HEDLEY_TI_VERSION_CHECK
-
332 #endif
-
333 #if defined(JSON_HEDLEY_TI_VERSION)
-
334  #define JSON_HEDLEY_TI_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_TI_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch))
-
335 #else
-
336  #define JSON_HEDLEY_TI_VERSION_CHECK(major,minor,patch) (0)
-
337 #endif
-
338 
-
339 #if defined(JSON_HEDLEY_CRAY_VERSION)
-
340  #undef JSON_HEDLEY_CRAY_VERSION
-
341 #endif
-
342 #if defined(_CRAYC)
-
343  #if defined(_RELEASE_PATCHLEVEL)
-
344  #define JSON_HEDLEY_CRAY_VERSION JSON_HEDLEY_VERSION_ENCODE(_RELEASE_MAJOR, _RELEASE_MINOR, _RELEASE_PATCHLEVEL)
-
345  #else
-
346  #define JSON_HEDLEY_CRAY_VERSION JSON_HEDLEY_VERSION_ENCODE(_RELEASE_MAJOR, _RELEASE_MINOR, 0)
-
347  #endif
-
348 #endif
-
349 
-
350 #if defined(JSON_HEDLEY_CRAY_VERSION_CHECK)
-
351  #undef JSON_HEDLEY_CRAY_VERSION_CHECK
-
352 #endif
-
353 #if defined(JSON_HEDLEY_CRAY_VERSION)
-
354  #define JSON_HEDLEY_CRAY_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_CRAY_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch))
-
355 #else
-
356  #define JSON_HEDLEY_CRAY_VERSION_CHECK(major,minor,patch) (0)
-
357 #endif
-
358 
-
359 #if defined(JSON_HEDLEY_IAR_VERSION)
-
360  #undef JSON_HEDLEY_IAR_VERSION
-
361 #endif
-
362 #if defined(__IAR_SYSTEMS_ICC__)
-
363  #if __VER__ > 1000
-
364  #define JSON_HEDLEY_IAR_VERSION JSON_HEDLEY_VERSION_ENCODE((__VER__ / 1000000), ((__VER__ / 1000) % 1000), (__VER__ % 1000))
-
365  #else
-
366  #define JSON_HEDLEY_IAR_VERSION JSON_HEDLEY_VERSION_ENCODE(VER / 100, __VER__ % 100, 0)
-
367  #endif
-
368 #endif
-
369 
-
370 #if defined(JSON_HEDLEY_IAR_VERSION_CHECK)
-
371  #undef JSON_HEDLEY_IAR_VERSION_CHECK
-
372 #endif
-
373 #if defined(JSON_HEDLEY_IAR_VERSION)
-
374  #define JSON_HEDLEY_IAR_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_IAR_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch))
-
375 #else
-
376  #define JSON_HEDLEY_IAR_VERSION_CHECK(major,minor,patch) (0)
-
377 #endif
-
378 
-
379 #if defined(JSON_HEDLEY_TINYC_VERSION)
-
380  #undef JSON_HEDLEY_TINYC_VERSION
-
381 #endif
-
382 #if defined(__TINYC__)
-
383  #define JSON_HEDLEY_TINYC_VERSION JSON_HEDLEY_VERSION_ENCODE(__TINYC__ / 1000, (__TINYC__ / 100) % 10, __TINYC__ % 100)
-
384 #endif
-
385 
-
386 #if defined(JSON_HEDLEY_TINYC_VERSION_CHECK)
-
387  #undef JSON_HEDLEY_TINYC_VERSION_CHECK
-
388 #endif
-
389 #if defined(JSON_HEDLEY_TINYC_VERSION)
-
390  #define JSON_HEDLEY_TINYC_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_TINYC_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch))
-
391 #else
-
392  #define JSON_HEDLEY_TINYC_VERSION_CHECK(major,minor,patch) (0)
-
393 #endif
-
394 
-
395 #if defined(JSON_HEDLEY_DMC_VERSION)
-
396  #undef JSON_HEDLEY_DMC_VERSION
-
397 #endif
-
398 #if defined(__DMC__)
-
399  #define JSON_HEDLEY_DMC_VERSION JSON_HEDLEY_VERSION_ENCODE(__DMC__ >> 8, (__DMC__ >> 4) & 0xf, __DMC__ & 0xf)
-
400 #endif
-
401 
-
402 #if defined(JSON_HEDLEY_DMC_VERSION_CHECK)
-
403  #undef JSON_HEDLEY_DMC_VERSION_CHECK
-
404 #endif
-
405 #if defined(JSON_HEDLEY_DMC_VERSION)
-
406  #define JSON_HEDLEY_DMC_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_DMC_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch))
-
407 #else
-
408  #define JSON_HEDLEY_DMC_VERSION_CHECK(major,minor,patch) (0)
-
409 #endif
-
410 
-
411 #if defined(JSON_HEDLEY_COMPCERT_VERSION)
-
412  #undef JSON_HEDLEY_COMPCERT_VERSION
-
413 #endif
-
414 #if defined(__COMPCERT_VERSION__)
-
415  #define JSON_HEDLEY_COMPCERT_VERSION JSON_HEDLEY_VERSION_ENCODE(__COMPCERT_VERSION__ / 10000, (__COMPCERT_VERSION__ / 100) % 100, __COMPCERT_VERSION__ % 100)
-
416 #endif
-
417 
-
418 #if defined(JSON_HEDLEY_COMPCERT_VERSION_CHECK)
-
419  #undef JSON_HEDLEY_COMPCERT_VERSION_CHECK
-
420 #endif
-
421 #if defined(JSON_HEDLEY_COMPCERT_VERSION)
-
422  #define JSON_HEDLEY_COMPCERT_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_COMPCERT_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch))
-
423 #else
-
424  #define JSON_HEDLEY_COMPCERT_VERSION_CHECK(major,minor,patch) (0)
-
425 #endif
-
426 
-
427 #if defined(JSON_HEDLEY_PELLES_VERSION)
-
428  #undef JSON_HEDLEY_PELLES_VERSION
-
429 #endif
-
430 #if defined(__POCC__)
-
431  #define JSON_HEDLEY_PELLES_VERSION JSON_HEDLEY_VERSION_ENCODE(__POCC__ / 100, __POCC__ % 100, 0)
-
432 #endif
-
433 
-
434 #if defined(JSON_HEDLEY_PELLES_VERSION_CHECK)
-
435  #undef JSON_HEDLEY_PELLES_VERSION_CHECK
-
436 #endif
-
437 #if defined(JSON_HEDLEY_PELLES_VERSION)
-
438  #define JSON_HEDLEY_PELLES_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_PELLES_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch))
-
439 #else
-
440  #define JSON_HEDLEY_PELLES_VERSION_CHECK(major,minor,patch) (0)
-
441 #endif
-
442 
-
443 #if defined(JSON_HEDLEY_GCC_VERSION)
-
444  #undef JSON_HEDLEY_GCC_VERSION
-
445 #endif
-
446 #if \
-
447  defined(JSON_HEDLEY_GNUC_VERSION) && \
-
448  !defined(__clang__) && \
-
449  !defined(JSON_HEDLEY_INTEL_VERSION) && \
-
450  !defined(JSON_HEDLEY_PGI_VERSION) && \
-
451  !defined(JSON_HEDLEY_ARM_VERSION) && \
-
452  !defined(JSON_HEDLEY_TI_VERSION) && \
-
453  !defined(__COMPCERT__)
-
454  #define JSON_HEDLEY_GCC_VERSION JSON_HEDLEY_GNUC_VERSION
-
455 #endif
-
456 
-
457 #if defined(JSON_HEDLEY_GCC_VERSION_CHECK)
-
458  #undef JSON_HEDLEY_GCC_VERSION_CHECK
-
459 #endif
-
460 #if defined(JSON_HEDLEY_GCC_VERSION)
-
461  #define JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_GCC_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch))
-
462 #else
-
463  #define JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) (0)
-
464 #endif
-
465 
-
466 #if defined(JSON_HEDLEY_HAS_ATTRIBUTE)
-
467  #undef JSON_HEDLEY_HAS_ATTRIBUTE
-
468 #endif
-
469 #if defined(__has_attribute)
-
470  #define JSON_HEDLEY_HAS_ATTRIBUTE(attribute) __has_attribute(attribute)
-
471 #else
-
472  #define JSON_HEDLEY_HAS_ATTRIBUTE(attribute) (0)
-
473 #endif
-
474 
-
475 #if defined(JSON_HEDLEY_GNUC_HAS_ATTRIBUTE)
-
476  #undef JSON_HEDLEY_GNUC_HAS_ATTRIBUTE
-
477 #endif
-
478 #if defined(__has_attribute)
-
479  #define JSON_HEDLEY_GNUC_HAS_ATTRIBUTE(attribute,major,minor,patch) __has_attribute(attribute)
-
480 #else
-
481  #define JSON_HEDLEY_GNUC_HAS_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch)
-
482 #endif
-
483 
-
484 #if defined(JSON_HEDLEY_GCC_HAS_ATTRIBUTE)
-
485  #undef JSON_HEDLEY_GCC_HAS_ATTRIBUTE
-
486 #endif
-
487 #if defined(__has_attribute)
-
488  #define JSON_HEDLEY_GCC_HAS_ATTRIBUTE(attribute,major,minor,patch) __has_attribute(attribute)
-
489 #else
-
490  #define JSON_HEDLEY_GCC_HAS_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch)
-
491 #endif
-
492 
-
493 #if defined(JSON_HEDLEY_HAS_CPP_ATTRIBUTE)
-
494  #undef JSON_HEDLEY_HAS_CPP_ATTRIBUTE
-
495 #endif
-
496 #if \
-
497  defined(__has_cpp_attribute) && \
-
498  defined(__cplusplus) && \
-
499  (!defined(JSON_HEDLEY_SUNPRO_VERSION) || JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,15,0))
-
500  #define JSON_HEDLEY_HAS_CPP_ATTRIBUTE(attribute) __has_cpp_attribute(attribute)
-
501 #else
-
502  #define JSON_HEDLEY_HAS_CPP_ATTRIBUTE(attribute) (0)
-
503 #endif
-
504 
-
505 #if defined(JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS)
-
506  #undef JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS
-
507 #endif
-
508 #if !defined(__cplusplus) || !defined(__has_cpp_attribute)
-
509  #define JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS(ns,attribute) (0)
-
510 #elif \
-
511  !defined(JSON_HEDLEY_PGI_VERSION) && \
-
512  (!defined(JSON_HEDLEY_SUNPRO_VERSION) || JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,15,0)) && \
-
513  (!defined(JSON_HEDLEY_MSVC_VERSION) || JSON_HEDLEY_MSVC_VERSION_CHECK(19,20,0))
-
514  #define JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS(ns,attribute) JSON_HEDLEY_HAS_CPP_ATTRIBUTE(ns::attribute)
-
515 #else
-
516  #define JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS(ns,attribute) (0)
-
517 #endif
-
518 
-
519 #if defined(JSON_HEDLEY_GNUC_HAS_CPP_ATTRIBUTE)
-
520  #undef JSON_HEDLEY_GNUC_HAS_CPP_ATTRIBUTE
-
521 #endif
-
522 #if defined(__has_cpp_attribute) && defined(__cplusplus)
-
523  #define JSON_HEDLEY_GNUC_HAS_CPP_ATTRIBUTE(attribute,major,minor,patch) __has_cpp_attribute(attribute)
-
524 #else
-
525  #define JSON_HEDLEY_GNUC_HAS_CPP_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch)
-
526 #endif
-
527 
-
528 #if defined(JSON_HEDLEY_GCC_HAS_CPP_ATTRIBUTE)
-
529  #undef JSON_HEDLEY_GCC_HAS_CPP_ATTRIBUTE
-
530 #endif
-
531 #if defined(__has_cpp_attribute) && defined(__cplusplus)
-
532  #define JSON_HEDLEY_GCC_HAS_CPP_ATTRIBUTE(attribute,major,minor,patch) __has_cpp_attribute(attribute)
-
533 #else
-
534  #define JSON_HEDLEY_GCC_HAS_CPP_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch)
-
535 #endif
-
536 
-
537 #if defined(JSON_HEDLEY_HAS_BUILTIN)
-
538  #undef JSON_HEDLEY_HAS_BUILTIN
-
539 #endif
-
540 #if defined(__has_builtin)
-
541  #define JSON_HEDLEY_HAS_BUILTIN(builtin) __has_builtin(builtin)
-
542 #else
-
543  #define JSON_HEDLEY_HAS_BUILTIN(builtin) (0)
-
544 #endif
-
545 
-
546 #if defined(JSON_HEDLEY_GNUC_HAS_BUILTIN)
-
547  #undef JSON_HEDLEY_GNUC_HAS_BUILTIN
-
548 #endif
-
549 #if defined(__has_builtin)
-
550  #define JSON_HEDLEY_GNUC_HAS_BUILTIN(builtin,major,minor,patch) __has_builtin(builtin)
-
551 #else
-
552  #define JSON_HEDLEY_GNUC_HAS_BUILTIN(builtin,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch)
-
553 #endif
-
554 
-
555 #if defined(JSON_HEDLEY_GCC_HAS_BUILTIN)
-
556  #undef JSON_HEDLEY_GCC_HAS_BUILTIN
-
557 #endif
-
558 #if defined(__has_builtin)
-
559  #define JSON_HEDLEY_GCC_HAS_BUILTIN(builtin,major,minor,patch) __has_builtin(builtin)
-
560 #else
-
561  #define JSON_HEDLEY_GCC_HAS_BUILTIN(builtin,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch)
-
562 #endif
-
563 
-
564 #if defined(JSON_HEDLEY_HAS_FEATURE)
-
565  #undef JSON_HEDLEY_HAS_FEATURE
-
566 #endif
-
567 #if defined(__has_feature)
-
568  #define JSON_HEDLEY_HAS_FEATURE(feature) __has_feature(feature)
-
569 #else
-
570  #define JSON_HEDLEY_HAS_FEATURE(feature) (0)
-
571 #endif
-
572 
-
573 #if defined(JSON_HEDLEY_GNUC_HAS_FEATURE)
-
574  #undef JSON_HEDLEY_GNUC_HAS_FEATURE
-
575 #endif
-
576 #if defined(__has_feature)
-
577  #define JSON_HEDLEY_GNUC_HAS_FEATURE(feature,major,minor,patch) __has_feature(feature)
-
578 #else
-
579  #define JSON_HEDLEY_GNUC_HAS_FEATURE(feature,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch)
-
580 #endif
-
581 
-
582 #if defined(JSON_HEDLEY_GCC_HAS_FEATURE)
-
583  #undef JSON_HEDLEY_GCC_HAS_FEATURE
-
584 #endif
-
585 #if defined(__has_feature)
-
586  #define JSON_HEDLEY_GCC_HAS_FEATURE(feature,major,minor,patch) __has_feature(feature)
-
587 #else
-
588  #define JSON_HEDLEY_GCC_HAS_FEATURE(feature,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch)
-
589 #endif
-
590 
-
591 #if defined(JSON_HEDLEY_HAS_EXTENSION)
-
592  #undef JSON_HEDLEY_HAS_EXTENSION
-
593 #endif
-
594 #if defined(__has_extension)
-
595  #define JSON_HEDLEY_HAS_EXTENSION(extension) __has_extension(extension)
-
596 #else
-
597  #define JSON_HEDLEY_HAS_EXTENSION(extension) (0)
-
598 #endif
-
599 
-
600 #if defined(JSON_HEDLEY_GNUC_HAS_EXTENSION)
-
601  #undef JSON_HEDLEY_GNUC_HAS_EXTENSION
-
602 #endif
-
603 #if defined(__has_extension)
-
604  #define JSON_HEDLEY_GNUC_HAS_EXTENSION(extension,major,minor,patch) __has_extension(extension)
-
605 #else
-
606  #define JSON_HEDLEY_GNUC_HAS_EXTENSION(extension,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch)
-
607 #endif
-
608 
-
609 #if defined(JSON_HEDLEY_GCC_HAS_EXTENSION)
-
610  #undef JSON_HEDLEY_GCC_HAS_EXTENSION
-
611 #endif
-
612 #if defined(__has_extension)
-
613  #define JSON_HEDLEY_GCC_HAS_EXTENSION(extension,major,minor,patch) __has_extension(extension)
-
614 #else
-
615  #define JSON_HEDLEY_GCC_HAS_EXTENSION(extension,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch)
-
616 #endif
-
617 
-
618 #if defined(JSON_HEDLEY_HAS_DECLSPEC_ATTRIBUTE)
-
619  #undef JSON_HEDLEY_HAS_DECLSPEC_ATTRIBUTE
-
620 #endif
-
621 #if defined(__has_declspec_attribute)
-
622  #define JSON_HEDLEY_HAS_DECLSPEC_ATTRIBUTE(attribute) __has_declspec_attribute(attribute)
-
623 #else
-
624  #define JSON_HEDLEY_HAS_DECLSPEC_ATTRIBUTE(attribute) (0)
-
625 #endif
-
626 
-
627 #if defined(JSON_HEDLEY_GNUC_HAS_DECLSPEC_ATTRIBUTE)
-
628  #undef JSON_HEDLEY_GNUC_HAS_DECLSPEC_ATTRIBUTE
-
629 #endif
-
630 #if defined(__has_declspec_attribute)
-
631  #define JSON_HEDLEY_GNUC_HAS_DECLSPEC_ATTRIBUTE(attribute,major,minor,patch) __has_declspec_attribute(attribute)
-
632 #else
-
633  #define JSON_HEDLEY_GNUC_HAS_DECLSPEC_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch)
-
634 #endif
-
635 
-
636 #if defined(JSON_HEDLEY_GCC_HAS_DECLSPEC_ATTRIBUTE)
-
637  #undef JSON_HEDLEY_GCC_HAS_DECLSPEC_ATTRIBUTE
-
638 #endif
-
639 #if defined(__has_declspec_attribute)
-
640  #define JSON_HEDLEY_GCC_HAS_DECLSPEC_ATTRIBUTE(attribute,major,minor,patch) __has_declspec_attribute(attribute)
-
641 #else
-
642  #define JSON_HEDLEY_GCC_HAS_DECLSPEC_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch)
-
643 #endif
-
644 
-
645 #if defined(JSON_HEDLEY_HAS_WARNING)
-
646  #undef JSON_HEDLEY_HAS_WARNING
-
647 #endif
-
648 #if defined(__has_warning)
-
649  #define JSON_HEDLEY_HAS_WARNING(warning) __has_warning(warning)
-
650 #else
-
651  #define JSON_HEDLEY_HAS_WARNING(warning) (0)
-
652 #endif
-
653 
-
654 #if defined(JSON_HEDLEY_GNUC_HAS_WARNING)
-
655  #undef JSON_HEDLEY_GNUC_HAS_WARNING
-
656 #endif
-
657 #if defined(__has_warning)
-
658  #define JSON_HEDLEY_GNUC_HAS_WARNING(warning,major,minor,patch) __has_warning(warning)
-
659 #else
-
660  #define JSON_HEDLEY_GNUC_HAS_WARNING(warning,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch)
-
661 #endif
-
662 
-
663 #if defined(JSON_HEDLEY_GCC_HAS_WARNING)
-
664  #undef JSON_HEDLEY_GCC_HAS_WARNING
-
665 #endif
-
666 #if defined(__has_warning)
-
667  #define JSON_HEDLEY_GCC_HAS_WARNING(warning,major,minor,patch) __has_warning(warning)
-
668 #else
-
669  #define JSON_HEDLEY_GCC_HAS_WARNING(warning,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch)
-
670 #endif
-
671 
-
672 /* JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_ is for
-
673  HEDLEY INTERNAL USE ONLY. API subject to change without notice. */
-
674 #if defined(JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_)
-
675  #undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_
-
676 #endif
-
677 #if defined(__cplusplus) && JSON_HEDLEY_HAS_WARNING("-Wc++98-compat")
-
678 # define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(xpr) \
-
679  JSON_HEDLEY_DIAGNOSTIC_PUSH \
-
680  _Pragma("clang diagnostic ignored \"-Wc++98-compat\"") \
-
681  xpr \
-
682  JSON_HEDLEY_DIAGNOSTIC_POP
-
683 #else
-
684 # define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(x) x
-
685 #endif
-
686 
-
687 #if \
-
688  (defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || \
-
689  defined(__clang__) || \
-
690  JSON_HEDLEY_GCC_VERSION_CHECK(3,0,0) || \
-
691  JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \
-
692  JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) || \
-
693  JSON_HEDLEY_PGI_VERSION_CHECK(18,4,0) || \
-
694  JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \
-
695  JSON_HEDLEY_TI_VERSION_CHECK(6,0,0) || \
-
696  JSON_HEDLEY_CRAY_VERSION_CHECK(5,0,0) || \
-
697  JSON_HEDLEY_TINYC_VERSION_CHECK(0,9,17) || \
-
698  JSON_HEDLEY_SUNPRO_VERSION_CHECK(8,0,0) || \
-
699  (JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) && defined(__C99_PRAGMA_OPERATOR))
-
700  #define JSON_HEDLEY_PRAGMA(value) _Pragma(#value)
-
701 #elif JSON_HEDLEY_MSVC_VERSION_CHECK(15,0,0)
-
702  #define JSON_HEDLEY_PRAGMA(value) __pragma(value)
-
703 #else
-
704  #define JSON_HEDLEY_PRAGMA(value)
-
705 #endif
-
706 
-
707 #if defined(JSON_HEDLEY_DIAGNOSTIC_PUSH)
-
708  #undef JSON_HEDLEY_DIAGNOSTIC_PUSH
-
709 #endif
-
710 #if defined(JSON_HEDLEY_DIAGNOSTIC_POP)
-
711  #undef JSON_HEDLEY_DIAGNOSTIC_POP
-
712 #endif
-
713 #if defined(__clang__)
-
714  #define JSON_HEDLEY_DIAGNOSTIC_PUSH _Pragma("clang diagnostic push")
-
715  #define JSON_HEDLEY_DIAGNOSTIC_POP _Pragma("clang diagnostic pop")
-
716 #elif JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0)
-
717  #define JSON_HEDLEY_DIAGNOSTIC_PUSH _Pragma("warning(push)")
-
718  #define JSON_HEDLEY_DIAGNOSTIC_POP _Pragma("warning(pop)")
-
719 #elif JSON_HEDLEY_GCC_VERSION_CHECK(4,6,0)
-
720  #define JSON_HEDLEY_DIAGNOSTIC_PUSH _Pragma("GCC diagnostic push")
-
721  #define JSON_HEDLEY_DIAGNOSTIC_POP _Pragma("GCC diagnostic pop")
-
722 #elif JSON_HEDLEY_MSVC_VERSION_CHECK(15,0,0)
-
723  #define JSON_HEDLEY_DIAGNOSTIC_PUSH __pragma(warning(push))
-
724  #define JSON_HEDLEY_DIAGNOSTIC_POP __pragma(warning(pop))
-
725 #elif JSON_HEDLEY_ARM_VERSION_CHECK(5,6,0)
-
726  #define JSON_HEDLEY_DIAGNOSTIC_PUSH _Pragma("push")
-
727  #define JSON_HEDLEY_DIAGNOSTIC_POP _Pragma("pop")
-
728 #elif JSON_HEDLEY_TI_VERSION_CHECK(8,1,0)
-
729  #define JSON_HEDLEY_DIAGNOSTIC_PUSH _Pragma("diag_push")
-
730  #define JSON_HEDLEY_DIAGNOSTIC_POP _Pragma("diag_pop")
-
731 #elif JSON_HEDLEY_PELLES_VERSION_CHECK(2,90,0)
-
732  #define JSON_HEDLEY_DIAGNOSTIC_PUSH _Pragma("warning(push)")
-
733  #define JSON_HEDLEY_DIAGNOSTIC_POP _Pragma("warning(pop)")
-
734 #else
-
735  #define JSON_HEDLEY_DIAGNOSTIC_PUSH
-
736  #define JSON_HEDLEY_DIAGNOSTIC_POP
-
737 #endif
-
738 
-
739 #if defined(JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED)
-
740  #undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED
-
741 #endif
-
742 #if JSON_HEDLEY_HAS_WARNING("-Wdeprecated-declarations")
-
743  #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("clang diagnostic ignored \"-Wdeprecated-declarations\"")
-
744 #elif JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0)
-
745  #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("warning(disable:1478 1786)")
-
746 #elif JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0)
-
747  #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("diag_suppress 1215,1444")
-
748 #elif JSON_HEDLEY_GCC_VERSION_CHECK(4,3,0)
-
749  #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("GCC diagnostic ignored \"-Wdeprecated-declarations\"")
-
750 #elif JSON_HEDLEY_MSVC_VERSION_CHECK(15,0,0)
-
751  #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED __pragma(warning(disable:4996))
-
752 #elif JSON_HEDLEY_TI_VERSION_CHECK(8,0,0)
-
753  #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("diag_suppress 1291,1718")
-
754 #elif JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,13,0) && !defined(__cplusplus)
-
755  #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("error_messages(off,E_DEPRECATED_ATT,E_DEPRECATED_ATT_MESS)")
-
756 #elif JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,13,0) && defined(__cplusplus)
-
757  #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("error_messages(off,symdeprecated,symdeprecated2)")
-
758 #elif JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0)
-
759  #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("diag_suppress=Pe1444,Pe1215")
-
760 #elif JSON_HEDLEY_PELLES_VERSION_CHECK(2,90,0)
-
761  #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("warn(disable:2241)")
-
762 #else
-
763  #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED
-
764 #endif
-
765 
-
766 #if defined(JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS)
-
767  #undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS
-
768 #endif
-
769 #if JSON_HEDLEY_HAS_WARNING("-Wunknown-pragmas")
-
770  #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("clang diagnostic ignored \"-Wunknown-pragmas\"")
-
771 #elif JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0)
-
772  #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("warning(disable:161)")
-
773 #elif JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0)
-
774  #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("diag_suppress 1675")
-
775 #elif JSON_HEDLEY_GCC_VERSION_CHECK(4,3,0)
-
776  #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("GCC diagnostic ignored \"-Wunknown-pragmas\"")
-
777 #elif JSON_HEDLEY_MSVC_VERSION_CHECK(15,0,0)
-
778  #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS __pragma(warning(disable:4068))
-
779 #elif JSON_HEDLEY_TI_VERSION_CHECK(8,0,0)
-
780  #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("diag_suppress 163")
-
781 #elif JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0)
-
782  #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("diag_suppress=Pe161")
-
783 #else
-
784  #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS
-
785 #endif
-
786 
-
787 #if defined(JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES)
-
788  #undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES
-
789 #endif
-
790 #if JSON_HEDLEY_HAS_WARNING("-Wunknown-attributes")
-
791  #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("clang diagnostic ignored \"-Wunknown-attributes\"")
-
792 #elif JSON_HEDLEY_GCC_VERSION_CHECK(4,6,0)
-
793  #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("GCC diagnostic ignored \"-Wdeprecated-declarations\"")
-
794 #elif JSON_HEDLEY_INTEL_VERSION_CHECK(17,0,0)
-
795  #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("warning(disable:1292)")
-
796 #elif JSON_HEDLEY_MSVC_VERSION_CHECK(19,0,0)
-
797  #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES __pragma(warning(disable:5030))
-
798 #elif JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0)
-
799  #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("diag_suppress 1097")
-
800 #elif JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,14,0) && defined(__cplusplus)
-
801  #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("error_messages(off,attrskipunsup)")
-
802 #elif JSON_HEDLEY_TI_VERSION_CHECK(8,0,0)
-
803  #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("diag_suppress 1173")
-
804 #else
-
805  #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES
-
806 #endif
-
807 
-
808 #if defined(JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL)
-
809  #undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL
-
810 #endif
-
811 #if JSON_HEDLEY_HAS_WARNING("-Wcast-qual")
-
812  #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL _Pragma("clang diagnostic ignored \"-Wcast-qual\"")
-
813 #elif JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0)
-
814  #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL _Pragma("warning(disable:2203 2331)")
-
815 #elif JSON_HEDLEY_GCC_VERSION_CHECK(3,0,0)
-
816  #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL _Pragma("GCC diagnostic ignored \"-Wcast-qual\"")
-
817 #else
-
818  #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL
-
819 #endif
-
820 
-
821 #if defined(JSON_HEDLEY_DEPRECATED)
-
822  #undef JSON_HEDLEY_DEPRECATED
-
823 #endif
-
824 #if defined(JSON_HEDLEY_DEPRECATED_FOR)
-
825  #undef JSON_HEDLEY_DEPRECATED_FOR
-
826 #endif
-
827 #if defined(__cplusplus) && (__cplusplus >= 201402L)
-
828  #define JSON_HEDLEY_DEPRECATED(since) JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[deprecated("Since " #since)]])
-
829  #define JSON_HEDLEY_DEPRECATED_FOR(since, replacement) JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[deprecated("Since " #since "; use " #replacement)]])
-
830 #elif \
-
831  JSON_HEDLEY_HAS_EXTENSION(attribute_deprecated_with_message) || \
-
832  JSON_HEDLEY_GCC_VERSION_CHECK(4,5,0) || \
-
833  JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \
-
834  JSON_HEDLEY_ARM_VERSION_CHECK(5,6,0) || \
-
835  JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,13,0) || \
-
836  JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0) || \
-
837  JSON_HEDLEY_TI_VERSION_CHECK(8,3,0)
-
838  #define JSON_HEDLEY_DEPRECATED(since) __attribute__((__deprecated__("Since " #since)))
-
839  #define JSON_HEDLEY_DEPRECATED_FOR(since, replacement) __attribute__((__deprecated__("Since " #since "; use " #replacement)))
-
840 #elif \
-
841  JSON_HEDLEY_HAS_ATTRIBUTE(deprecated) || \
-
842  JSON_HEDLEY_GCC_VERSION_CHECK(3,1,0) || \
-
843  JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \
-
844  JSON_HEDLEY_TI_VERSION_CHECK(8,0,0) || \
-
845  (JSON_HEDLEY_TI_VERSION_CHECK(7,3,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__))
-
846  #define JSON_HEDLEY_DEPRECATED(since) __attribute__((__deprecated__))
-
847  #define JSON_HEDLEY_DEPRECATED_FOR(since, replacement) __attribute__((__deprecated__))
-
848 #elif JSON_HEDLEY_MSVC_VERSION_CHECK(14,0,0)
-
849  #define JSON_HEDLEY_DEPRECATED(since) __declspec(deprecated("Since " # since))
-
850  #define JSON_HEDLEY_DEPRECATED_FOR(since, replacement) __declspec(deprecated("Since " #since "; use " #replacement))
-
851 #elif \
-
852  JSON_HEDLEY_MSVC_VERSION_CHECK(13,10,0) || \
-
853  JSON_HEDLEY_PELLES_VERSION_CHECK(6,50,0)
-
854  #define JSON_HEDLEY_DEPRECATED(since) __declspec(deprecated)
-
855  #define JSON_HEDLEY_DEPRECATED_FOR(since, replacement) __declspec(deprecated)
-
856 #elif JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0)
-
857  #define JSON_HEDLEY_DEPRECATED(since) _Pragma("deprecated")
-
858  #define JSON_HEDLEY_DEPRECATED_FOR(since, replacement) _Pragma("deprecated")
-
859 #else
-
860  #define JSON_HEDLEY_DEPRECATED(since)
-
861  #define JSON_HEDLEY_DEPRECATED_FOR(since, replacement)
-
862 #endif
-
863 
-
864 #if defined(JSON_HEDLEY_UNAVAILABLE)
-
865  #undef JSON_HEDLEY_UNAVAILABLE
-
866 #endif
-
867 #if \
-
868  JSON_HEDLEY_HAS_ATTRIBUTE(warning) || \
-
869  JSON_HEDLEY_GCC_VERSION_CHECK(4,3,0) || \
-
870  JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0)
-
871  #define JSON_HEDLEY_UNAVAILABLE(available_since) __attribute__((__warning__("Not available until " #available_since)))
-
872 #else
-
873  #define JSON_HEDLEY_UNAVAILABLE(available_since)
-
874 #endif
-
875 
-
876 #if defined(JSON_HEDLEY_WARN_UNUSED_RESULT)
-
877  #undef JSON_HEDLEY_WARN_UNUSED_RESULT
-
878 #endif
-
879 #if defined(__cplusplus) && (__cplusplus >= 201703L)
-
880  #define JSON_HEDLEY_WARN_UNUSED_RESULT JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[nodiscard]])
-
881 #elif \
-
882  JSON_HEDLEY_HAS_ATTRIBUTE(warn_unused_result) || \
-
883  JSON_HEDLEY_GCC_VERSION_CHECK(3,4,0) || \
-
884  JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \
-
885  JSON_HEDLEY_TI_VERSION_CHECK(8,0,0) || \
-
886  (JSON_HEDLEY_TI_VERSION_CHECK(7,3,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \
-
887  (JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,15,0) && defined(__cplusplus)) || \
-
888  JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0)
-
889  #define JSON_HEDLEY_WARN_UNUSED_RESULT __attribute__((__warn_unused_result__))
-
890 #elif defined(_Check_return_) /* SAL */
-
891  #define JSON_HEDLEY_WARN_UNUSED_RESULT _Check_return_
-
892 #else
-
893  #define JSON_HEDLEY_WARN_UNUSED_RESULT
-
894 #endif
-
895 
-
896 #if defined(JSON_HEDLEY_SENTINEL)
-
897  #undef JSON_HEDLEY_SENTINEL
-
898 #endif
-
899 #if \
-
900  JSON_HEDLEY_HAS_ATTRIBUTE(sentinel) || \
-
901  JSON_HEDLEY_GCC_VERSION_CHECK(4,0,0) || \
-
902  JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \
-
903  JSON_HEDLEY_ARM_VERSION_CHECK(5,4,0)
-
904  #define JSON_HEDLEY_SENTINEL(position) __attribute__((__sentinel__(position)))
-
905 #else
-
906  #define JSON_HEDLEY_SENTINEL(position)
-
907 #endif
-
908 
-
909 #if defined(JSON_HEDLEY_NO_RETURN)
-
910  #undef JSON_HEDLEY_NO_RETURN
-
911 #endif
-
912 #if JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0)
-
913  #define JSON_HEDLEY_NO_RETURN __noreturn
-
914 #elif JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0)
-
915  #define JSON_HEDLEY_NO_RETURN __attribute__((__noreturn__))
-
916 #elif defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L
-
917  #define JSON_HEDLEY_NO_RETURN _Noreturn
-
918 #elif defined(__cplusplus) && (__cplusplus >= 201103L)
-
919  #define JSON_HEDLEY_NO_RETURN JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[noreturn]])
-
920 #elif \
-
921  JSON_HEDLEY_HAS_ATTRIBUTE(noreturn) || \
-
922  JSON_HEDLEY_GCC_VERSION_CHECK(3,2,0) || \
-
923  JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \
-
924  JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \
-
925  JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \
-
926  JSON_HEDLEY_TI_VERSION_CHECK(18,0,0) || \
-
927  (JSON_HEDLEY_TI_VERSION_CHECK(17,3,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__))
-
928  #define JSON_HEDLEY_NO_RETURN __attribute__((__noreturn__))
-
929 #elif JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,10,0)
-
930  #define JSON_HEDLEY_NO_RETURN _Pragma("does_not_return")
-
931 #elif JSON_HEDLEY_MSVC_VERSION_CHECK(13,10,0)
-
932  #define JSON_HEDLEY_NO_RETURN __declspec(noreturn)
-
933 #elif JSON_HEDLEY_TI_VERSION_CHECK(6,0,0) && defined(__cplusplus)
-
934  #define JSON_HEDLEY_NO_RETURN _Pragma("FUNC_NEVER_RETURNS;")
-
935 #elif JSON_HEDLEY_COMPCERT_VERSION_CHECK(3,2,0)
-
936  #define JSON_HEDLEY_NO_RETURN __attribute((noreturn))
-
937 #elif JSON_HEDLEY_PELLES_VERSION_CHECK(9,0,0)
-
938  #define JSON_HEDLEY_NO_RETURN __declspec(noreturn)
-
939 #else
-
940  #define JSON_HEDLEY_NO_RETURN
-
941 #endif
-
942 
-
943 #if defined(JSON_HEDLEY_NO_ESCAPE)
-
944  #undef JSON_HEDLEY_NO_ESCAPE
-
945 #endif
-
946 #if JSON_HEDLEY_HAS_ATTRIBUTE(noescape)
-
947  #define JSON_HEDLEY_NO_ESCAPE __attribute__((__noescape__))
-
948 #else
-
949  #define JSON_HEDLEY_NO_ESCAPE
-
950 #endif
-
951 
-
952 #if defined(JSON_HEDLEY_UNREACHABLE)
-
953  #undef JSON_HEDLEY_UNREACHABLE
-
954 #endif
-
955 #if defined(JSON_HEDLEY_UNREACHABLE_RETURN)
-
956  #undef JSON_HEDLEY_UNREACHABLE_RETURN
-
957 #endif
-
958 #if \
-
959  (JSON_HEDLEY_HAS_BUILTIN(__builtin_unreachable) && (!defined(JSON_HEDLEY_ARM_VERSION))) || \
-
960  JSON_HEDLEY_GCC_VERSION_CHECK(4,5,0) || \
-
961  JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \
-
962  JSON_HEDLEY_IBM_VERSION_CHECK(13,1,5)
-
963  #define JSON_HEDLEY_UNREACHABLE() __builtin_unreachable()
-
964 #elif JSON_HEDLEY_MSVC_VERSION_CHECK(13,10,0)
-
965  #define JSON_HEDLEY_UNREACHABLE() __assume(0)
-
966 #elif JSON_HEDLEY_TI_VERSION_CHECK(6,0,0)
-
967  #if defined(__cplusplus)
-
968  #define JSON_HEDLEY_UNREACHABLE() std::_nassert(0)
-
969  #else
-
970  #define JSON_HEDLEY_UNREACHABLE() _nassert(0)
-
971  #endif
-
972  #define JSON_HEDLEY_UNREACHABLE_RETURN(value) return value
-
973 #elif defined(EXIT_FAILURE)
-
974  #define JSON_HEDLEY_UNREACHABLE() abort()
-
975 #else
-
976  #define JSON_HEDLEY_UNREACHABLE()
-
977  #define JSON_HEDLEY_UNREACHABLE_RETURN(value) return value
-
978 #endif
-
979 #if !defined(JSON_HEDLEY_UNREACHABLE_RETURN)
-
980  #define JSON_HEDLEY_UNREACHABLE_RETURN(value) JSON_HEDLEY_UNREACHABLE()
-
981 #endif
-
982 
-
983 #if defined(JSON_HEDLEY_ASSUME)
-
984  #undef JSON_HEDLEY_ASSUME
-
985 #endif
-
986 #if \
-
987  JSON_HEDLEY_MSVC_VERSION_CHECK(13,10,0) || \
-
988  JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0)
-
989  #define JSON_HEDLEY_ASSUME(expr) __assume(expr)
-
990 #elif JSON_HEDLEY_HAS_BUILTIN(__builtin_assume)
-
991  #define JSON_HEDLEY_ASSUME(expr) __builtin_assume(expr)
-
992 #elif JSON_HEDLEY_TI_VERSION_CHECK(6,0,0)
-
993  #if defined(__cplusplus)
-
994  #define JSON_HEDLEY_ASSUME(expr) std::_nassert(expr)
-
995  #else
-
996  #define JSON_HEDLEY_ASSUME(expr) _nassert(expr)
-
997  #endif
-
998 #elif \
-
999  (JSON_HEDLEY_HAS_BUILTIN(__builtin_unreachable) && !defined(JSON_HEDLEY_ARM_VERSION)) || \
-
1000  JSON_HEDLEY_GCC_VERSION_CHECK(4,5,0) || \
-
1001  JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \
-
1002  JSON_HEDLEY_IBM_VERSION_CHECK(13,1,5)
-
1003  #define JSON_HEDLEY_ASSUME(expr) ((void) ((expr) ? 1 : (__builtin_unreachable(), 1)))
-
1004 #else
-
1005  #define JSON_HEDLEY_ASSUME(expr) ((void) (expr))
-
1006 #endif
-
1007 
- -
1009 #if JSON_HEDLEY_HAS_WARNING("-Wpedantic")
-
1010  #pragma clang diagnostic ignored "-Wpedantic"
-
1011 #endif
-
1012 #if JSON_HEDLEY_HAS_WARNING("-Wc++98-compat-pedantic") && defined(__cplusplus)
-
1013  #pragma clang diagnostic ignored "-Wc++98-compat-pedantic"
-
1014 #endif
-
1015 #if JSON_HEDLEY_GCC_HAS_WARNING("-Wvariadic-macros",4,0,0)
-
1016  #if defined(__clang__)
-
1017  #pragma clang diagnostic ignored "-Wvariadic-macros"
-
1018  #elif defined(JSON_HEDLEY_GCC_VERSION)
-
1019  #pragma GCC diagnostic ignored "-Wvariadic-macros"
-
1020  #endif
-
1021 #endif
-
1022 #if defined(JSON_HEDLEY_NON_NULL)
-
1023  #undef JSON_HEDLEY_NON_NULL
-
1024 #endif
-
1025 #if \
-
1026  JSON_HEDLEY_HAS_ATTRIBUTE(nonnull) || \
-
1027  JSON_HEDLEY_GCC_VERSION_CHECK(3,3,0) || \
-
1028  JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \
-
1029  JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0)
-
1030  #define JSON_HEDLEY_NON_NULL(...) __attribute__((__nonnull__(__VA_ARGS__)))
-
1031 #else
-
1032  #define JSON_HEDLEY_NON_NULL(...)
-
1033 #endif
- -
1035 
-
1036 #if defined(JSON_HEDLEY_PRINTF_FORMAT)
-
1037  #undef JSON_HEDLEY_PRINTF_FORMAT
-
1038 #endif
-
1039 #if defined(__MINGW32__) && JSON_HEDLEY_GCC_HAS_ATTRIBUTE(format,4,4,0) && !defined(__USE_MINGW_ANSI_STDIO)
-
1040  #define JSON_HEDLEY_PRINTF_FORMAT(string_idx,first_to_check) __attribute__((__format__(ms_printf, string_idx, first_to_check)))
-
1041 #elif defined(__MINGW32__) && JSON_HEDLEY_GCC_HAS_ATTRIBUTE(format,4,4,0) && defined(__USE_MINGW_ANSI_STDIO)
-
1042  #define JSON_HEDLEY_PRINTF_FORMAT(string_idx,first_to_check) __attribute__((__format__(gnu_printf, string_idx, first_to_check)))
-
1043 #elif \
-
1044  JSON_HEDLEY_HAS_ATTRIBUTE(format) || \
-
1045  JSON_HEDLEY_GCC_VERSION_CHECK(3,1,0) || \
-
1046  JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \
-
1047  JSON_HEDLEY_ARM_VERSION_CHECK(5,6,0) || \
-
1048  JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \
-
1049  JSON_HEDLEY_TI_VERSION_CHECK(8,0,0) || \
-
1050  (JSON_HEDLEY_TI_VERSION_CHECK(7,3,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__))
-
1051  #define JSON_HEDLEY_PRINTF_FORMAT(string_idx,first_to_check) __attribute__((__format__(__printf__, string_idx, first_to_check)))
-
1052 #elif JSON_HEDLEY_PELLES_VERSION_CHECK(6,0,0)
-
1053  #define JSON_HEDLEY_PRINTF_FORMAT(string_idx,first_to_check) __declspec(vaformat(printf,string_idx,first_to_check))
-
1054 #else
-
1055  #define JSON_HEDLEY_PRINTF_FORMAT(string_idx,first_to_check)
-
1056 #endif
-
1057 
-
1058 #if defined(JSON_HEDLEY_CONSTEXPR)
-
1059  #undef JSON_HEDLEY_CONSTEXPR
-
1060 #endif
-
1061 #if defined(__cplusplus)
-
1062  #if __cplusplus >= 201103L
-
1063  #define JSON_HEDLEY_CONSTEXPR JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(constexpr)
-
1064  #endif
-
1065 #endif
-
1066 #if !defined(JSON_HEDLEY_CONSTEXPR)
-
1067  #define JSON_HEDLEY_CONSTEXPR
-
1068 #endif
-
1069 
-
1070 #if defined(JSON_HEDLEY_PREDICT)
-
1071  #undef JSON_HEDLEY_PREDICT
-
1072 #endif
-
1073 #if defined(JSON_HEDLEY_LIKELY)
-
1074  #undef JSON_HEDLEY_LIKELY
-
1075 #endif
-
1076 #if defined(JSON_HEDLEY_UNLIKELY)
-
1077  #undef JSON_HEDLEY_UNLIKELY
-
1078 #endif
-
1079 #if defined(JSON_HEDLEY_UNPREDICTABLE)
-
1080  #undef JSON_HEDLEY_UNPREDICTABLE
-
1081 #endif
-
1082 #if JSON_HEDLEY_HAS_BUILTIN(__builtin_unpredictable)
-
1083  #define JSON_HEDLEY_UNPREDICTABLE(expr) __builtin_unpredictable(!!(expr))
-
1084 #endif
-
1085 #if \
-
1086  JSON_HEDLEY_HAS_BUILTIN(__builtin_expect_with_probability) || \
-
1087  JSON_HEDLEY_GCC_VERSION_CHECK(9,0,0)
-
1088 # define JSON_HEDLEY_PREDICT(expr, value, probability) __builtin_expect_with_probability(expr, value, probability)
-
1089 # define JSON_HEDLEY_PREDICT_TRUE(expr, probability) __builtin_expect_with_probability(!!(expr), 1, probability)
-
1090 # define JSON_HEDLEY_PREDICT_FALSE(expr, probability) __builtin_expect_with_probability(!!(expr), 0, probability)
-
1091 # define JSON_HEDLEY_LIKELY(expr) __builtin_expect(!!(expr), 1)
-
1092 # define JSON_HEDLEY_UNLIKELY(expr) __builtin_expect(!!(expr), 0)
-
1093 #if !defined(JSON_HEDLEY_BUILTIN_UNPREDICTABLE)
-
1094  #define JSON_HEDLEY_BUILTIN_UNPREDICTABLE(expr) __builtin_expect_with_probability(!!(expr), 1, 0.5)
-
1095 #endif
-
1096 #elif \
-
1097  JSON_HEDLEY_HAS_BUILTIN(__builtin_expect) || \
-
1098  JSON_HEDLEY_GCC_VERSION_CHECK(3,0,0) || \
-
1099  JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \
-
1100  (JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,15,0) && defined(__cplusplus)) || \
-
1101  JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \
-
1102  JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \
-
1103  JSON_HEDLEY_TI_VERSION_CHECK(6,1,0) || \
-
1104  JSON_HEDLEY_TINYC_VERSION_CHECK(0,9,27)
-
1105 # define JSON_HEDLEY_PREDICT(expr, expected, probability) \
-
1106  (((probability) >= 0.9) ? __builtin_expect(!!(expr), (expected)) : (((void) (expected)), !!(expr)))
-
1107 # define JSON_HEDLEY_PREDICT_TRUE(expr, probability) \
-
1108  (__extension__ ({ \
-
1109  JSON_HEDLEY_CONSTEXPR double hedley_probability_ = (probability); \
-
1110  ((hedley_probability_ >= 0.9) ? __builtin_expect(!!(expr), 1) : ((hedley_probability_ <= 0.1) ? __builtin_expect(!!(expr), 0) : !!(expr))); \
-
1111  }))
-
1112 # define JSON_HEDLEY_PREDICT_FALSE(expr, probability) \
-
1113  (__extension__ ({ \
-
1114  JSON_HEDLEY_CONSTEXPR double hedley_probability_ = (probability); \
-
1115  ((hedley_probability_ >= 0.9) ? __builtin_expect(!!(expr), 0) : ((hedley_probability_ <= 0.1) ? __builtin_expect(!!(expr), 1) : !!(expr))); \
-
1116  }))
-
1117 # define JSON_HEDLEY_LIKELY(expr) __builtin_expect(!!(expr), 1)
-
1118 # define JSON_HEDLEY_UNLIKELY(expr) __builtin_expect(!!(expr), 0)
-
1119 #else
-
1120 # define JSON_HEDLEY_PREDICT(expr, expected, probability) (((void) (expected)), !!(expr))
-
1121 # define JSON_HEDLEY_PREDICT_TRUE(expr, probability) (!!(expr))
-
1122 # define JSON_HEDLEY_PREDICT_FALSE(expr, probability) (!!(expr))
-
1123 # define JSON_HEDLEY_LIKELY(expr) (!!(expr))
-
1124 # define JSON_HEDLEY_UNLIKELY(expr) (!!(expr))
-
1125 #endif
-
1126 #if !defined(JSON_HEDLEY_UNPREDICTABLE)
-
1127  #define JSON_HEDLEY_UNPREDICTABLE(expr) JSON_HEDLEY_PREDICT(expr, 1, 0.5)
-
1128 #endif
-
1129 
-
1130 #if defined(JSON_HEDLEY_MALLOC)
-
1131  #undef JSON_HEDLEY_MALLOC
-
1132 #endif
-
1133 #if \
-
1134  JSON_HEDLEY_HAS_ATTRIBUTE(malloc) || \
-
1135  JSON_HEDLEY_GCC_VERSION_CHECK(3,1,0) || \
-
1136  JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \
-
1137  JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \
-
1138  JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \
-
1139  JSON_HEDLEY_IBM_VERSION_CHECK(12,1,0) || \
-
1140  JSON_HEDLEY_TI_VERSION_CHECK(8,0,0) || \
-
1141  (JSON_HEDLEY_TI_VERSION_CHECK(7,3,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__))
-
1142  #define JSON_HEDLEY_MALLOC __attribute__((__malloc__))
-
1143 #elif JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,10,0)
-
1144  #define JSON_HEDLEY_MALLOC _Pragma("returns_new_memory")
-
1145 #elif JSON_HEDLEY_MSVC_VERSION_CHECK(14, 0, 0)
-
1146  #define JSON_HEDLEY_MALLOC __declspec(restrict)
-
1147 #else
-
1148  #define JSON_HEDLEY_MALLOC
-
1149 #endif
-
1150 
-
1151 #if defined(JSON_HEDLEY_PURE)
-
1152  #undef JSON_HEDLEY_PURE
-
1153 #endif
-
1154 #if \
-
1155  JSON_HEDLEY_HAS_ATTRIBUTE(pure) || \
-
1156  JSON_HEDLEY_GCC_VERSION_CHECK(2,96,0) || \
-
1157  JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \
-
1158  JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \
-
1159  JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \
-
1160  JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \
-
1161  JSON_HEDLEY_TI_VERSION_CHECK(8,0,0) || \
-
1162  (JSON_HEDLEY_TI_VERSION_CHECK(7,3,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \
-
1163  JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0)
-
1164  #define JSON_HEDLEY_PURE __attribute__((__pure__))
-
1165 #elif JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,10,0)
-
1166  #define JSON_HEDLEY_PURE _Pragma("does_not_write_global_data")
-
1167 #elif JSON_HEDLEY_TI_VERSION_CHECK(6,0,0) && defined(__cplusplus)
-
1168  #define JSON_HEDLEY_PURE _Pragma("FUNC_IS_PURE;")
-
1169 #else
-
1170  #define JSON_HEDLEY_PURE
-
1171 #endif
-
1172 
-
1173 #if defined(JSON_HEDLEY_CONST)
-
1174  #undef JSON_HEDLEY_CONST
-
1175 #endif
-
1176 #if \
-
1177  JSON_HEDLEY_HAS_ATTRIBUTE(const) || \
-
1178  JSON_HEDLEY_GCC_VERSION_CHECK(2,5,0) || \
-
1179  JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \
-
1180  JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \
-
1181  JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \
-
1182  JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \
-
1183  JSON_HEDLEY_TI_VERSION_CHECK(8,0,0) || \
-
1184  (JSON_HEDLEY_TI_VERSION_CHECK(7,3,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \
-
1185  JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0)
-
1186  #define JSON_HEDLEY_CONST __attribute__((__const__))
-
1187 #elif \
-
1188  JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,10,0)
-
1189  #define JSON_HEDLEY_CONST _Pragma("no_side_effect")
-
1190 #else
-
1191  #define JSON_HEDLEY_CONST JSON_HEDLEY_PURE
-
1192 #endif
-
1193 
-
1194 #if defined(JSON_HEDLEY_RESTRICT)
-
1195  #undef JSON_HEDLEY_RESTRICT
-
1196 #endif
-
1197 #if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) && !defined(__cplusplus)
-
1198  #define JSON_HEDLEY_RESTRICT restrict
-
1199 #elif \
-
1200  JSON_HEDLEY_GCC_VERSION_CHECK(3,1,0) || \
-
1201  JSON_HEDLEY_MSVC_VERSION_CHECK(14,0,0) || \
-
1202  JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \
-
1203  JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \
-
1204  JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \
-
1205  JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0) || \
-
1206  JSON_HEDLEY_TI_VERSION_CHECK(8,0,0) || \
-
1207  (JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,14,0) && defined(__cplusplus)) || \
-
1208  JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) || \
-
1209  defined(__clang__)
-
1210  #define JSON_HEDLEY_RESTRICT __restrict
-
1211 #elif JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,3,0) && !defined(__cplusplus)
-
1212  #define JSON_HEDLEY_RESTRICT _Restrict
-
1213 #else
-
1214  #define JSON_HEDLEY_RESTRICT
-
1215 #endif
-
1216 
-
1217 #if defined(JSON_HEDLEY_INLINE)
-
1218  #undef JSON_HEDLEY_INLINE
-
1219 #endif
-
1220 #if \
-
1221  (defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || \
-
1222  (defined(__cplusplus) && (__cplusplus >= 199711L))
-
1223  #define JSON_HEDLEY_INLINE inline
-
1224 #elif \
-
1225  defined(JSON_HEDLEY_GCC_VERSION) || \
-
1226  JSON_HEDLEY_ARM_VERSION_CHECK(6,2,0)
-
1227  #define JSON_HEDLEY_INLINE __inline__
-
1228 #elif \
-
1229  JSON_HEDLEY_MSVC_VERSION_CHECK(12,0,0) || \
-
1230  JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \
-
1231  JSON_HEDLEY_TI_VERSION_CHECK(8,0,0)
-
1232  #define JSON_HEDLEY_INLINE __inline
-
1233 #else
-
1234  #define JSON_HEDLEY_INLINE
-
1235 #endif
-
1236 
-
1237 #if defined(JSON_HEDLEY_ALWAYS_INLINE)
-
1238  #undef JSON_HEDLEY_ALWAYS_INLINE
-
1239 #endif
-
1240 #if \
-
1241  JSON_HEDLEY_HAS_ATTRIBUTE(always_inline) || \
-
1242  JSON_HEDLEY_GCC_VERSION_CHECK(4,0,0) || \
-
1243  JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \
-
1244  JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \
-
1245  JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \
-
1246  JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \
-
1247  JSON_HEDLEY_TI_VERSION_CHECK(8,0,0) || \
-
1248  (JSON_HEDLEY_TI_VERSION_CHECK(7,3,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__))
-
1249  #define JSON_HEDLEY_ALWAYS_INLINE __attribute__((__always_inline__)) JSON_HEDLEY_INLINE
-
1250 #elif JSON_HEDLEY_MSVC_VERSION_CHECK(12,0,0)
-
1251  #define JSON_HEDLEY_ALWAYS_INLINE __forceinline
-
1252 #elif JSON_HEDLEY_TI_VERSION_CHECK(7,0,0) && defined(__cplusplus)
-
1253  #define JSON_HEDLEY_ALWAYS_INLINE _Pragma("FUNC_ALWAYS_INLINE;")
-
1254 #elif JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0)
-
1255  #define JSON_HEDLEY_ALWAYS_INLINE _Pragma("inline=forced")
-
1256 #else
-
1257  #define JSON_HEDLEY_ALWAYS_INLINE JSON_HEDLEY_INLINE
-
1258 #endif
-
1259 
-
1260 #if defined(JSON_HEDLEY_NEVER_INLINE)
-
1261  #undef JSON_HEDLEY_NEVER_INLINE
-
1262 #endif
-
1263 #if \
-
1264  JSON_HEDLEY_HAS_ATTRIBUTE(noinline) || \
-
1265  JSON_HEDLEY_GCC_VERSION_CHECK(4,0,0) || \
-
1266  JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \
-
1267  JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \
-
1268  JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \
-
1269  JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \
-
1270  JSON_HEDLEY_TI_VERSION_CHECK(8,0,0) || \
-
1271  (JSON_HEDLEY_TI_VERSION_CHECK(7,3,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__))
-
1272  #define JSON_HEDLEY_NEVER_INLINE __attribute__((__noinline__))
-
1273 #elif JSON_HEDLEY_MSVC_VERSION_CHECK(13,10,0)
-
1274  #define JSON_HEDLEY_NEVER_INLINE __declspec(noinline)
-
1275 #elif JSON_HEDLEY_PGI_VERSION_CHECK(10,2,0)
-
1276  #define JSON_HEDLEY_NEVER_INLINE _Pragma("noinline")
-
1277 #elif JSON_HEDLEY_TI_VERSION_CHECK(6,0,0) && defined(__cplusplus)
-
1278  #define JSON_HEDLEY_NEVER_INLINE _Pragma("FUNC_CANNOT_INLINE;")
-
1279 #elif JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0)
-
1280  #define JSON_HEDLEY_NEVER_INLINE _Pragma("inline=never")
-
1281 #elif JSON_HEDLEY_COMPCERT_VERSION_CHECK(3,2,0)
-
1282  #define JSON_HEDLEY_NEVER_INLINE __attribute((noinline))
-
1283 #elif JSON_HEDLEY_PELLES_VERSION_CHECK(9,0,0)
-
1284  #define JSON_HEDLEY_NEVER_INLINE __declspec(noinline)
-
1285 #else
-
1286  #define JSON_HEDLEY_NEVER_INLINE
-
1287 #endif
-
1288 
-
1289 #if defined(JSON_HEDLEY_PRIVATE)
-
1290  #undef JSON_HEDLEY_PRIVATE
-
1291 #endif
-
1292 #if defined(JSON_HEDLEY_PUBLIC)
-
1293  #undef JSON_HEDLEY_PUBLIC
-
1294 #endif
-
1295 #if defined(JSON_HEDLEY_IMPORT)
-
1296  #undef JSON_HEDLEY_IMPORT
-
1297 #endif
-
1298 #if defined(_WIN32) || defined(__CYGWIN__)
-
1299  #define JSON_HEDLEY_PRIVATE
-
1300  #define JSON_HEDLEY_PUBLIC __declspec(dllexport)
-
1301  #define JSON_HEDLEY_IMPORT __declspec(dllimport)
-
1302 #else
-
1303  #if \
-
1304  JSON_HEDLEY_HAS_ATTRIBUTE(visibility) || \
-
1305  JSON_HEDLEY_GCC_VERSION_CHECK(3,3,0) || \
-
1306  JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \
-
1307  JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \
-
1308  JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \
-
1309  JSON_HEDLEY_IBM_VERSION_CHECK(13,1,0) || \
-
1310  JSON_HEDLEY_TI_VERSION_CHECK(8,0,0) || \
-
1311  (JSON_HEDLEY_TI_VERSION_CHECK(7,3,0) && defined(__TI_EABI__) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__))
-
1312  #define JSON_HEDLEY_PRIVATE __attribute__((__visibility__("hidden")))
-
1313  #define JSON_HEDLEY_PUBLIC __attribute__((__visibility__("default")))
-
1314  #else
-
1315  #define JSON_HEDLEY_PRIVATE
-
1316  #define JSON_HEDLEY_PUBLIC
-
1317  #endif
-
1318  #define JSON_HEDLEY_IMPORT extern
-
1319 #endif
-
1320 
-
1321 #if defined(JSON_HEDLEY_NO_THROW)
-
1322  #undef JSON_HEDLEY_NO_THROW
-
1323 #endif
-
1324 #if \
-
1325  JSON_HEDLEY_HAS_ATTRIBUTE(nothrow) || \
-
1326  JSON_HEDLEY_GCC_VERSION_CHECK(3,3,0) || \
-
1327  JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0)
-
1328  #define JSON_HEDLEY_NO_THROW __attribute__((__nothrow__))
-
1329 #elif \
-
1330  JSON_HEDLEY_MSVC_VERSION_CHECK(13,1,0) || \
-
1331  JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0)
-
1332  #define JSON_HEDLEY_NO_THROW __declspec(nothrow)
-
1333 #else
-
1334  #define JSON_HEDLEY_NO_THROW
-
1335 #endif
-
1336 
-
1337 #if defined(JSON_HEDLEY_FALL_THROUGH)
-
1338  #undef JSON_HEDLEY_FALL_THROUGH
-
1339 #endif
-
1340 #if JSON_HEDLEY_GNUC_HAS_ATTRIBUTE(fallthrough,7,0,0) && !defined(JSON_HEDLEY_PGI_VERSION)
-
1341  #define JSON_HEDLEY_FALL_THROUGH __attribute__((__fallthrough__))
-
1342 #elif JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS(clang,fallthrough)
-
1343  #define JSON_HEDLEY_FALL_THROUGH JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[clang::fallthrough]])
-
1344 #elif JSON_HEDLEY_HAS_CPP_ATTRIBUTE(fallthrough)
-
1345  #define JSON_HEDLEY_FALL_THROUGH JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[fallthrough]])
-
1346 #elif defined(__fallthrough) /* SAL */
-
1347  #define JSON_HEDLEY_FALL_THROUGH __fallthrough
-
1348 #else
-
1349  #define JSON_HEDLEY_FALL_THROUGH
-
1350 #endif
-
1351 
-
1352 #if defined(JSON_HEDLEY_RETURNS_NON_NULL)
-
1353  #undef JSON_HEDLEY_RETURNS_NON_NULL
-
1354 #endif
-
1355 #if \
-
1356  JSON_HEDLEY_HAS_ATTRIBUTE(returns_nonnull) || \
-
1357  JSON_HEDLEY_GCC_VERSION_CHECK(4,9,0)
-
1358  #define JSON_HEDLEY_RETURNS_NON_NULL __attribute__((__returns_nonnull__))
-
1359 #elif defined(_Ret_notnull_) /* SAL */
-
1360  #define JSON_HEDLEY_RETURNS_NON_NULL _Ret_notnull_
-
1361 #else
-
1362  #define JSON_HEDLEY_RETURNS_NON_NULL
-
1363 #endif
-
1364 
-
1365 #if defined(JSON_HEDLEY_ARRAY_PARAM)
-
1366  #undef JSON_HEDLEY_ARRAY_PARAM
-
1367 #endif
-
1368 #if \
-
1369  defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) && \
-
1370  !defined(__STDC_NO_VLA__) && \
-
1371  !defined(__cplusplus) && \
-
1372  !defined(JSON_HEDLEY_PGI_VERSION) && \
-
1373  !defined(JSON_HEDLEY_TINYC_VERSION)
-
1374  #define JSON_HEDLEY_ARRAY_PARAM(name) (name)
-
1375 #else
-
1376  #define JSON_HEDLEY_ARRAY_PARAM(name)
-
1377 #endif
-
1378 
-
1379 #if defined(JSON_HEDLEY_IS_CONSTANT)
-
1380  #undef JSON_HEDLEY_IS_CONSTANT
-
1381 #endif
-
1382 #if defined(JSON_HEDLEY_REQUIRE_CONSTEXPR)
-
1383  #undef JSON_HEDLEY_REQUIRE_CONSTEXPR
-
1384 #endif
-
1385 /* JSON_HEDLEY_IS_CONSTEXPR_ is for
-
1386  HEDLEY INTERNAL USE ONLY. API subject to change without notice. */
-
1387 #if defined(JSON_HEDLEY_IS_CONSTEXPR_)
-
1388  #undef JSON_HEDLEY_IS_CONSTEXPR_
-
1389 #endif
-
1390 #if \
-
1391  JSON_HEDLEY_HAS_BUILTIN(__builtin_constant_p) || \
-
1392  JSON_HEDLEY_GCC_VERSION_CHECK(3,4,0) || \
-
1393  JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \
-
1394  JSON_HEDLEY_TINYC_VERSION_CHECK(0,9,19) || \
-
1395  JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \
-
1396  JSON_HEDLEY_IBM_VERSION_CHECK(13,1,0) || \
-
1397  JSON_HEDLEY_TI_VERSION_CHECK(6,1,0) || \
-
1398  (JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,10,0) && !defined(__cplusplus)) || \
-
1399  JSON_HEDLEY_CRAY_VERSION_CHECK(8,1,0)
-
1400  #define JSON_HEDLEY_IS_CONSTANT(expr) __builtin_constant_p(expr)
-
1401 #endif
-
1402 #if !defined(__cplusplus)
-
1403 # if \
-
1404  JSON_HEDLEY_HAS_BUILTIN(__builtin_types_compatible_p) || \
-
1405  JSON_HEDLEY_GCC_VERSION_CHECK(3,4,0) || \
-
1406  JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \
-
1407  JSON_HEDLEY_IBM_VERSION_CHECK(13,1,0) || \
-
1408  JSON_HEDLEY_CRAY_VERSION_CHECK(8,1,0) || \
-
1409  JSON_HEDLEY_ARM_VERSION_CHECK(5,4,0) || \
-
1410  JSON_HEDLEY_TINYC_VERSION_CHECK(0,9,24)
-
1411 #if defined(__INTPTR_TYPE__)
-
1412  #define JSON_HEDLEY_IS_CONSTEXPR_(expr) __builtin_types_compatible_p(__typeof__((1 ? (void*) ((__INTPTR_TYPE__) ((expr) * 0)) : (int*) 0)), int*)
-
1413 #else
-
1414  #include <stdint.h>
-
1415  #define JSON_HEDLEY_IS_CONSTEXPR_(expr) __builtin_types_compatible_p(__typeof__((1 ? (void*) ((intptr_t) ((expr) * 0)) : (int*) 0)), int*)
-
1416 #endif
-
1417 # elif \
-
1418  (defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 201112L) && !defined(JSON_HEDLEY_SUNPRO_VERSION) && !defined(JSON_HEDLEY_PGI_VERSION)) || \
-
1419  JSON_HEDLEY_HAS_EXTENSION(c_generic_selections) || \
-
1420  JSON_HEDLEY_GCC_VERSION_CHECK(4,9,0) || \
-
1421  JSON_HEDLEY_INTEL_VERSION_CHECK(17,0,0) || \
-
1422  JSON_HEDLEY_IBM_VERSION_CHECK(12,1,0) || \
-
1423  JSON_HEDLEY_ARM_VERSION_CHECK(5,3,0)
-
1424 #if defined(__INTPTR_TYPE__)
-
1425  #define JSON_HEDLEY_IS_CONSTEXPR_(expr) _Generic((1 ? (void*) ((__INTPTR_TYPE__) ((expr) * 0)) : (int*) 0), int*: 1, void*: 0)
-
1426 #else
-
1427  #include <stdint.h>
-
1428  #define JSON_HEDLEY_IS_CONSTEXPR_(expr) _Generic((1 ? (void*) ((intptr_t) * 0) : (int*) 0), int*: 1, void*: 0)
-
1429 #endif
-
1430 # elif \
-
1431  defined(JSON_HEDLEY_GCC_VERSION) || \
-
1432  defined(JSON_HEDLEY_INTEL_VERSION) || \
-
1433  defined(JSON_HEDLEY_TINYC_VERSION) || \
-
1434  defined(JSON_HEDLEY_TI_VERSION) || \
-
1435  defined(__clang__)
-
1436 # define JSON_HEDLEY_IS_CONSTEXPR_(expr) ( \
-
1437  sizeof(void) != \
-
1438  sizeof(*( \
-
1439  1 ? \
-
1440  ((void*) ((expr) * 0L) ) : \
-
1441 ((struct { char v[sizeof(void) * 2]; } *) 1) \
-
1442  ) \
-
1443  ) \
-
1444  )
-
1445 # endif
-
1446 #endif
-
1447 #if defined(JSON_HEDLEY_IS_CONSTEXPR_)
-
1448  #if !defined(JSON_HEDLEY_IS_CONSTANT)
-
1449  #define JSON_HEDLEY_IS_CONSTANT(expr) JSON_HEDLEY_IS_CONSTEXPR_(expr)
-
1450  #endif
-
1451  #define JSON_HEDLEY_REQUIRE_CONSTEXPR(expr) (JSON_HEDLEY_IS_CONSTEXPR_(expr) ? (expr) : (-1))
-
1452 #else
-
1453  #if !defined(JSON_HEDLEY_IS_CONSTANT)
-
1454  #define JSON_HEDLEY_IS_CONSTANT(expr) (0)
-
1455  #endif
-
1456  #define JSON_HEDLEY_REQUIRE_CONSTEXPR(expr) (expr)
-
1457 #endif
-
1458 
-
1459 #if defined(JSON_HEDLEY_BEGIN_C_DECLS)
-
1460  #undef JSON_HEDLEY_BEGIN_C_DECLS
-
1461 #endif
-
1462 #if defined(JSON_HEDLEY_END_C_DECLS)
-
1463  #undef JSON_HEDLEY_END_C_DECLS
-
1464 #endif
-
1465 #if defined(JSON_HEDLEY_C_DECL)
-
1466  #undef JSON_HEDLEY_C_DECL
-
1467 #endif
-
1468 #if defined(__cplusplus)
-
1469  #define JSON_HEDLEY_BEGIN_C_DECLS extern "C" {
-
1470  #define JSON_HEDLEY_END_C_DECLS }
-
1471  #define JSON_HEDLEY_C_DECL extern "C"
-
1472 #else
-
1473  #define JSON_HEDLEY_BEGIN_C_DECLS
-
1474  #define JSON_HEDLEY_END_C_DECLS
-
1475  #define JSON_HEDLEY_C_DECL
-
1476 #endif
-
1477 
-
1478 #if defined(JSON_HEDLEY_STATIC_ASSERT)
-
1479  #undef JSON_HEDLEY_STATIC_ASSERT
-
1480 #endif
-
1481 #if \
-
1482  !defined(__cplusplus) && ( \
-
1483  (defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 201112L)) || \
-
1484  JSON_HEDLEY_HAS_FEATURE(c_static_assert) || \
-
1485  JSON_HEDLEY_GCC_VERSION_CHECK(6,0,0) || \
-
1486  JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \
-
1487  defined(_Static_assert) \
-
1488  )
-
1489 # define JSON_HEDLEY_STATIC_ASSERT(expr, message) _Static_assert(expr, message)
-
1490 #elif \
-
1491  (defined(__cplusplus) && (__cplusplus >= 201103L)) || \
-
1492  JSON_HEDLEY_MSVC_VERSION_CHECK(16,0,0) || \
-
1493  (defined(__cplusplus) && JSON_HEDLEY_TI_VERSION_CHECK(8,3,0))
-
1494 # define JSON_HEDLEY_STATIC_ASSERT(expr, message) JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(static_assert(expr, message))
-
1495 #else
-
1496 # define JSON_HEDLEY_STATIC_ASSERT(expr, message)
-
1497 #endif
-
1498 
-
1499 #if defined(JSON_HEDLEY_CONST_CAST)
-
1500  #undef JSON_HEDLEY_CONST_CAST
-
1501 #endif
-
1502 #if defined(__cplusplus)
-
1503 # define JSON_HEDLEY_CONST_CAST(T, expr) (const_cast<T>(expr))
-
1504 #elif \
-
1505  JSON_HEDLEY_HAS_WARNING("-Wcast-qual") || \
-
1506  JSON_HEDLEY_GCC_VERSION_CHECK(4,6,0) || \
-
1507  JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0)
-
1508 # define JSON_HEDLEY_CONST_CAST(T, expr) (__extension__ ({ \
-
1509  JSON_HEDLEY_DIAGNOSTIC_PUSH \
-
1510  JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL \
-
1511  ((T) (expr)); \
-
1512  JSON_HEDLEY_DIAGNOSTIC_POP \
-
1513  }))
-
1514 #else
-
1515 # define JSON_HEDLEY_CONST_CAST(T, expr) ((T) (expr))
-
1516 #endif
-
1517 
-
1518 #if defined(JSON_HEDLEY_REINTERPRET_CAST)
-
1519  #undef JSON_HEDLEY_REINTERPRET_CAST
-
1520 #endif
-
1521 #if defined(__cplusplus)
-
1522  #define JSON_HEDLEY_REINTERPRET_CAST(T, expr) (reinterpret_cast<T>(expr))
-
1523 #else
-
1524  #define JSON_HEDLEY_REINTERPRET_CAST(T, expr) (*((T*) &(expr)))
-
1525 #endif
-
1526 
-
1527 #if defined(JSON_HEDLEY_STATIC_CAST)
-
1528  #undef JSON_HEDLEY_STATIC_CAST
-
1529 #endif
-
1530 #if defined(__cplusplus)
-
1531  #define JSON_HEDLEY_STATIC_CAST(T, expr) (static_cast<T>(expr))
-
1532 #else
-
1533  #define JSON_HEDLEY_STATIC_CAST(T, expr) ((T) (expr))
-
1534 #endif
-
1535 
-
1536 #if defined(JSON_HEDLEY_CPP_CAST)
-
1537  #undef JSON_HEDLEY_CPP_CAST
-
1538 #endif
-
1539 #if defined(__cplusplus)
-
1540  #define JSON_HEDLEY_CPP_CAST(T, expr) static_cast<T>(expr)
-
1541 #else
-
1542  #define JSON_HEDLEY_CPP_CAST(T, expr) (expr)
-
1543 #endif
-
1544 
-
1545 #if defined(JSON_HEDLEY_NULL)
-
1546  #undef JSON_HEDLEY_NULL
-
1547 #endif
-
1548 #if defined(__cplusplus)
-
1549  #if __cplusplus >= 201103L
-
1550  #define JSON_HEDLEY_NULL JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(nullptr)
-
1551  #elif defined(NULL)
-
1552  #define JSON_HEDLEY_NULL NULL
-
1553  #else
-
1554  #define JSON_HEDLEY_NULL JSON_HEDLEY_STATIC_CAST(void*, 0)
-
1555  #endif
-
1556 #elif defined(NULL)
-
1557  #define JSON_HEDLEY_NULL NULL
-
1558 #else
-
1559  #define JSON_HEDLEY_NULL ((void*) 0)
-
1560 #endif
-
1561 
-
1562 #if defined(JSON_HEDLEY_MESSAGE)
-
1563  #undef JSON_HEDLEY_MESSAGE
-
1564 #endif
-
1565 #if JSON_HEDLEY_HAS_WARNING("-Wunknown-pragmas")
-
1566 # define JSON_HEDLEY_MESSAGE(msg) \
-
1567  JSON_HEDLEY_DIAGNOSTIC_PUSH \
-
1568  JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS \
-
1569  JSON_HEDLEY_PRAGMA(message msg) \
-
1570  JSON_HEDLEY_DIAGNOSTIC_POP
-
1571 #elif \
-
1572  JSON_HEDLEY_GCC_VERSION_CHECK(4,4,0) || \
-
1573  JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0)
-
1574 # define JSON_HEDLEY_MESSAGE(msg) JSON_HEDLEY_PRAGMA(message msg)
-
1575 #elif JSON_HEDLEY_CRAY_VERSION_CHECK(5,0,0)
-
1576 # define JSON_HEDLEY_MESSAGE(msg) JSON_HEDLEY_PRAGMA(_CRI message msg)
-
1577 #elif JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0)
-
1578 # define JSON_HEDLEY_MESSAGE(msg) JSON_HEDLEY_PRAGMA(message(msg))
-
1579 #elif JSON_HEDLEY_PELLES_VERSION_CHECK(2,0,0)
-
1580 # define JSON_HEDLEY_MESSAGE(msg) JSON_HEDLEY_PRAGMA(message(msg))
-
1581 #else
-
1582 # define JSON_HEDLEY_MESSAGE(msg)
-
1583 #endif
-
1584 
-
1585 #if defined(JSON_HEDLEY_WARNING)
-
1586  #undef JSON_HEDLEY_WARNING
-
1587 #endif
-
1588 #if JSON_HEDLEY_HAS_WARNING("-Wunknown-pragmas")
-
1589 # define JSON_HEDLEY_WARNING(msg) \
-
1590  JSON_HEDLEY_DIAGNOSTIC_PUSH \
-
1591  JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS \
-
1592  JSON_HEDLEY_PRAGMA(clang warning msg) \
-
1593  JSON_HEDLEY_DIAGNOSTIC_POP
-
1594 #elif \
-
1595  JSON_HEDLEY_GCC_VERSION_CHECK(4,8,0) || \
-
1596  JSON_HEDLEY_PGI_VERSION_CHECK(18,4,0)
-
1597 # define JSON_HEDLEY_WARNING(msg) JSON_HEDLEY_PRAGMA(GCC warning msg)
-
1598 #elif JSON_HEDLEY_MSVC_VERSION_CHECK(15,0,0)
-
1599 # define JSON_HEDLEY_WARNING(msg) JSON_HEDLEY_PRAGMA(message(msg))
-
1600 #else
-
1601 # define JSON_HEDLEY_WARNING(msg) JSON_HEDLEY_MESSAGE(msg)
-
1602 #endif
-
1603 
-
1604 #if defined(JSON_HEDLEY_REQUIRE)
-
1605  #undef JSON_HEDLEY_REQUIRE
-
1606 #endif
-
1607 #if defined(JSON_HEDLEY_REQUIRE_MSG)
-
1608  #undef JSON_HEDLEY_REQUIRE_MSG
-
1609 #endif
-
1610 #if JSON_HEDLEY_HAS_ATTRIBUTE(diagnose_if)
-
1611 # if JSON_HEDLEY_HAS_WARNING("-Wgcc-compat")
-
1612 # define JSON_HEDLEY_REQUIRE(expr) \
-
1613  JSON_HEDLEY_DIAGNOSTIC_PUSH \
-
1614  _Pragma("clang diagnostic ignored \"-Wgcc-compat\"") \
-
1615  __attribute__((diagnose_if(!(expr), #expr, "error"))) \
-
1616  JSON_HEDLEY_DIAGNOSTIC_POP
-
1617 # define JSON_HEDLEY_REQUIRE_MSG(expr,msg) \
-
1618  JSON_HEDLEY_DIAGNOSTIC_PUSH \
-
1619  _Pragma("clang diagnostic ignored \"-Wgcc-compat\"") \
-
1620  __attribute__((diagnose_if(!(expr), msg, "error"))) \
-
1621  JSON_HEDLEY_DIAGNOSTIC_POP
-
1622 # else
-
1623 # define JSON_HEDLEY_REQUIRE(expr) __attribute__((diagnose_if(!(expr), #expr, "error")))
-
1624 # define JSON_HEDLEY_REQUIRE_MSG(expr,msg) __attribute__((diagnose_if(!(expr), msg, "error")))
-
1625 # endif
-
1626 #else
-
1627 # define JSON_HEDLEY_REQUIRE(expr)
-
1628 # define JSON_HEDLEY_REQUIRE_MSG(expr,msg)
-
1629 #endif
-
1630 
-
1631 #if defined(JSON_HEDLEY_FLAGS)
-
1632  #undef JSON_HEDLEY_FLAGS
-
1633 #endif
-
1634 #if JSON_HEDLEY_HAS_ATTRIBUTE(flag_enum)
-
1635  #define JSON_HEDLEY_FLAGS __attribute__((__flag_enum__))
-
1636 #endif
-
1637 
-
1638 #if defined(JSON_HEDLEY_FLAGS_CAST)
-
1639  #undef JSON_HEDLEY_FLAGS_CAST
-
1640 #endif
-
1641 #if JSON_HEDLEY_INTEL_VERSION_CHECK(19,0,0)
-
1642 # define JSON_HEDLEY_FLAGS_CAST(T, expr) (__extension__ ({ \
-
1643  JSON_HEDLEY_DIAGNOSTIC_PUSH \
-
1644  _Pragma("warning(disable:188)") \
-
1645  ((T) (expr)); \
-
1646  JSON_HEDLEY_DIAGNOSTIC_POP \
-
1647  }))
-
1648 #else
-
1649 # define JSON_HEDLEY_FLAGS_CAST(T, expr) JSON_HEDLEY_STATIC_CAST(T, expr)
-
1650 #endif
-
1651 
-
1652 #if defined(JSON_HEDLEY_EMPTY_BASES)
-
1653  #undef JSON_HEDLEY_EMPTY_BASES
-
1654 #endif
-
1655 #if JSON_HEDLEY_MSVC_VERSION_CHECK(19,0,23918) && !JSON_HEDLEY_MSVC_VERSION_CHECK(20,0,0)
-
1656  #define JSON_HEDLEY_EMPTY_BASES __declspec(empty_bases)
-
1657 #else
-
1658  #define JSON_HEDLEY_EMPTY_BASES
-
1659 #endif
-
1660 
-
1661 /* Remaining macros are deprecated. */
-
1662 
-
1663 #if defined(JSON_HEDLEY_GCC_NOT_CLANG_VERSION_CHECK)
-
1664  #undef JSON_HEDLEY_GCC_NOT_CLANG_VERSION_CHECK
-
1665 #endif
-
1666 #if defined(__clang__)
-
1667  #define JSON_HEDLEY_GCC_NOT_CLANG_VERSION_CHECK(major,minor,patch) (0)
-
1668 #else
-
1669  #define JSON_HEDLEY_GCC_NOT_CLANG_VERSION_CHECK(major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch)
-
1670 #endif
-
1671 
-
1672 #if defined(JSON_HEDLEY_CLANG_HAS_ATTRIBUTE)
-
1673  #undef JSON_HEDLEY_CLANG_HAS_ATTRIBUTE
-
1674 #endif
-
1675 #define JSON_HEDLEY_CLANG_HAS_ATTRIBUTE(attribute) JSON_HEDLEY_HAS_ATTRIBUTE(attribute)
-
1676 
-
1677 #if defined(JSON_HEDLEY_CLANG_HAS_CPP_ATTRIBUTE)
-
1678  #undef JSON_HEDLEY_CLANG_HAS_CPP_ATTRIBUTE
-
1679 #endif
-
1680 #define JSON_HEDLEY_CLANG_HAS_CPP_ATTRIBUTE(attribute) JSON_HEDLEY_HAS_CPP_ATTRIBUTE(attribute)
-
1681 
-
1682 #if defined(JSON_HEDLEY_CLANG_HAS_BUILTIN)
-
1683  #undef JSON_HEDLEY_CLANG_HAS_BUILTIN
-
1684 #endif
-
1685 #define JSON_HEDLEY_CLANG_HAS_BUILTIN(builtin) JSON_HEDLEY_HAS_BUILTIN(builtin)
-
1686 
-
1687 #if defined(JSON_HEDLEY_CLANG_HAS_FEATURE)
-
1688  #undef JSON_HEDLEY_CLANG_HAS_FEATURE
-
1689 #endif
-
1690 #define JSON_HEDLEY_CLANG_HAS_FEATURE(feature) JSON_HEDLEY_HAS_FEATURE(feature)
-
1691 
-
1692 #if defined(JSON_HEDLEY_CLANG_HAS_EXTENSION)
-
1693  #undef JSON_HEDLEY_CLANG_HAS_EXTENSION
-
1694 #endif
-
1695 #define JSON_HEDLEY_CLANG_HAS_EXTENSION(extension) JSON_HEDLEY_HAS_EXTENSION(extension)
-
1696 
-
1697 #if defined(JSON_HEDLEY_CLANG_HAS_DECLSPEC_DECLSPEC_ATTRIBUTE)
-
1698  #undef JSON_HEDLEY_CLANG_HAS_DECLSPEC_DECLSPEC_ATTRIBUTE
-
1699 #endif
-
1700 #define JSON_HEDLEY_CLANG_HAS_DECLSPEC_ATTRIBUTE(attribute) JSON_HEDLEY_HAS_DECLSPEC_ATTRIBUTE(attribute)
-
1701 
-
1702 #if defined(JSON_HEDLEY_CLANG_HAS_WARNING)
-
1703  #undef JSON_HEDLEY_CLANG_HAS_WARNING
-
1704 #endif
-
1705 #define JSON_HEDLEY_CLANG_HAS_WARNING(warning) JSON_HEDLEY_HAS_WARNING(warning)
-
1706 
-
1707 #endif /* !defined(JSON_HEDLEY_VERSION) || (JSON_HEDLEY_VERSION < X) */
-
1708 
-
1709 
-
1710 // This file contains all internal macro definitions
-
1711 // You MUST include macro_unscope.hpp at the end of json.hpp to undef all of them
-
1712 
-
1713 // exclude unsupported compilers
-
1714 #if !defined(JSON_SKIP_UNSUPPORTED_COMPILER_CHECK)
-
1715  #if defined(__clang__)
-
1716  #if (__clang_major__ * 10000 + __clang_minor__ * 100 + __clang_patchlevel__) < 30400
-
1717  #error "unsupported Clang version - see https://github.com/nlohmann/json#supported-compilers"
-
1718  #endif
-
1719  #elif defined(__GNUC__) && !(defined(__ICC) || defined(__INTEL_COMPILER))
-
1720  #if (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) < 40800
-
1721  #error "unsupported GCC version - see https://github.com/nlohmann/json#supported-compilers"
-
1722  #endif
-
1723  #endif
-
1724 #endif
-
1725 
-
1726 // C++ language standard detection
-
1727 #if (defined(__cplusplus) && __cplusplus >= 201703L) || (defined(_HAS_CXX17) && _HAS_CXX17 == 1) // fix for issue #464
-
1728  #define JSON_HAS_CPP_17
-
1729  #define JSON_HAS_CPP_14
-
1730 #elif (defined(__cplusplus) && __cplusplus >= 201402L) || (defined(_HAS_CXX14) && _HAS_CXX14 == 1)
-
1731  #define JSON_HAS_CPP_14
-
1732 #endif
-
1733 
-
1734 // disable float-equal warnings on GCC/clang
-
1735 #if defined(__clang__) || defined(__GNUC__) || defined(__GNUG__)
-
1736  #pragma GCC diagnostic push
-
1737  #pragma GCC diagnostic ignored "-Wfloat-equal"
-
1738 #endif
-
1739 
-
1740 // disable documentation warnings on clang
-
1741 #if defined(__clang__)
-
1742  #pragma GCC diagnostic push
-
1743  #pragma GCC diagnostic ignored "-Wdocumentation"
-
1744 #endif
-
1745 
-
1746 // allow to disable exceptions
-
1747 #if (defined(__cpp_exceptions) || defined(__EXCEPTIONS) || defined(_CPPUNWIND)) && !defined(JSON_NOEXCEPTION)
-
1748  #define JSON_THROW(exception) throw exception
-
1749  #define JSON_TRY try
-
1750  #define JSON_CATCH(exception) catch(exception)
-
1751  #define JSON_INTERNAL_CATCH(exception) catch(exception)
-
1752 #else
-
1753  #include <cstdlib>
-
1754  #define JSON_THROW(exception) std::abort()
-
1755  #define JSON_TRY if(true)
-
1756  #define JSON_CATCH(exception) if(false)
-
1757  #define JSON_INTERNAL_CATCH(exception) if(false)
-
1758 #endif
-
1759 
-
1760 // override exception macros
-
1761 #if defined(JSON_THROW_USER)
-
1762  #undef JSON_THROW
-
1763  #define JSON_THROW JSON_THROW_USER
-
1764 #endif
-
1765 #if defined(JSON_TRY_USER)
-
1766  #undef JSON_TRY
-
1767  #define JSON_TRY JSON_TRY_USER
-
1768 #endif
-
1769 #if defined(JSON_CATCH_USER)
-
1770  #undef JSON_CATCH
-
1771  #define JSON_CATCH JSON_CATCH_USER
-
1772  #undef JSON_INTERNAL_CATCH
-
1773  #define JSON_INTERNAL_CATCH JSON_CATCH_USER
-
1774 #endif
-
1775 #if defined(JSON_INTERNAL_CATCH_USER)
-
1776  #undef JSON_INTERNAL_CATCH
-
1777  #define JSON_INTERNAL_CATCH JSON_INTERNAL_CATCH_USER
-
1778 #endif
-
1779 
-
1785 #define NLOHMANN_JSON_SERIALIZE_ENUM(ENUM_TYPE, ...) \
-
1786  template<typename BasicJsonType> \
-
1787  inline void to_json(BasicJsonType& j, const ENUM_TYPE& e) \
-
1788  { \
-
1789  static_assert(std::is_enum<ENUM_TYPE>::value, #ENUM_TYPE " must be an enum!"); \
-
1790  static const std::pair<ENUM_TYPE, BasicJsonType> m[] = __VA_ARGS__; \
-
1791  auto it = std::find_if(std::begin(m), std::end(m), \
-
1792  [e](const std::pair<ENUM_TYPE, BasicJsonType>& ej_pair) -> bool \
-
1793  { \
-
1794  return ej_pair.first == e; \
-
1795  }); \
-
1796  j = ((it != std::end(m)) ? it : std::begin(m))->second; \
-
1797  } \
-
1798  template<typename BasicJsonType> \
-
1799  inline void from_json(const BasicJsonType& j, ENUM_TYPE& e) \
-
1800  { \
-
1801  static_assert(std::is_enum<ENUM_TYPE>::value, #ENUM_TYPE " must be an enum!"); \
-
1802  static const std::pair<ENUM_TYPE, BasicJsonType> m[] = __VA_ARGS__; \
-
1803  auto it = std::find_if(std::begin(m), std::end(m), \
-
1804  [&j](const std::pair<ENUM_TYPE, BasicJsonType>& ej_pair) -> bool \
-
1805  { \
-
1806  return ej_pair.second == j; \
-
1807  }); \
-
1808  e = ((it != std::end(m)) ? it : std::begin(m))->first; \
-
1809  }
-
1810 
-
1811 // Ugly macros to avoid uglier copy-paste when specializing basic_json. They
-
1812 // may be removed in the future once the class is split.
-
1813 
-
1814 #define NLOHMANN_BASIC_JSON_TPL_DECLARATION \
-
1815  template<template<typename, typename, typename...> class ObjectType, \
-
1816  template<typename, typename...> class ArrayType, \
-
1817  class StringType, class BooleanType, class NumberIntegerType, \
-
1818  class NumberUnsignedType, class NumberFloatType, \
-
1819  template<typename> class AllocatorType, \
-
1820  template<typename, typename = void> class JSONSerializer>
-
1821 
-
1822 #define NLOHMANN_BASIC_JSON_TPL \
-
1823  basic_json<ObjectType, ArrayType, StringType, BooleanType, \
-
1824  NumberIntegerType, NumberUnsignedType, NumberFloatType, \
-
1825  AllocatorType, JSONSerializer>
-
1826 
-
1827 
-
1828 namespace nlohmann
-
1829 {
-
1830 namespace detail
-
1831 {
-
1833 // exceptions //
-
1835 
-
1864 class exception : public std::exception
-
1865 {
-
1866  public:
- -
1869  const char* what() const noexcept override
-
1870  {
-
1871  return m.what();
-
1872  }
-
1873 
-
1875  const int id;
-
1876 
-
1877  protected:
- -
1879  exception(int id_, const char* what_arg) : id(id_), m(what_arg) {}
-
1880 
-
1881  static std::string name(const std::string& ename, int id_)
-
1882  {
-
1883  return "[json.exception." + ename + "." + std::to_string(id_) + "] ";
-
1884  }
-
1885 
-
1886  private:
-
1888  std::runtime_error m;
-
1889 };
-
1890 
-
1935 class parse_error : public exception
-
1936 {
-
1937  public:
-
1947  static parse_error create(int id_, const position_t& pos, const std::string& what_arg)
-
1948  {
-
1949  std::string w = exception::name("parse_error", id_) + "parse error" +
-
1950  position_string(pos) + ": " + what_arg;
-
1951  return parse_error(id_, pos.chars_read_total, w.c_str());
-
1952  }
-
1953 
-
1954  static parse_error create(int id_, std::size_t byte_, const std::string& what_arg)
-
1955  {
-
1956  std::string w = exception::name("parse_error", id_) + "parse error" +
-
1957  (byte_ != 0 ? (" at byte " + std::to_string(byte_)) : "") +
-
1958  ": " + what_arg;
-
1959  return parse_error(id_, byte_, w.c_str());
-
1960  }
-
1961 
-
1971  const std::size_t byte;
-
1972 
-
1973  private:
-
1974  parse_error(int id_, std::size_t byte_, const char* what_arg)
-
1975  : exception(id_, what_arg), byte(byte_) {}
-
1976 
-
1977  static std::string position_string(const position_t& pos)
-
1978  {
-
1979  return " at line " + std::to_string(pos.lines_read + 1) +
-
1980  ", column " + std::to_string(pos.chars_read_current_line);
-
1981  }
-
1982 };
-
1983 
- -
2022 {
-
2023  public:
-
2024  static invalid_iterator create(int id_, const std::string& what_arg)
-
2025  {
-
2026  std::string w = exception::name("invalid_iterator", id_) + what_arg;
-
2027  return invalid_iterator(id_, w.c_str());
-
2028  }
-
2029 
-
2030  private:
- -
2032  invalid_iterator(int id_, const char* what_arg)
-
2033  : exception(id_, what_arg) {}
-
2034 };
-
2035 
-
2075 class type_error : public exception
-
2076 {
-
2077  public:
-
2078  static type_error create(int id_, const std::string& what_arg)
-
2079  {
-
2080  std::string w = exception::name("type_error", id_) + what_arg;
-
2081  return type_error(id_, w.c_str());
-
2082  }
-
2083 
-
2084  private:
- -
2086  type_error(int id_, const char* what_arg) : exception(id_, what_arg) {}
-
2087 };
-
2088 
-
2122 class out_of_range : public exception
-
2123 {
-
2124  public:
-
2125  static out_of_range create(int id_, const std::string& what_arg)
-
2126  {
-
2127  std::string w = exception::name("out_of_range", id_) + what_arg;
-
2128  return out_of_range(id_, w.c_str());
-
2129  }
-
2130 
-
2131  private:
- -
2133  out_of_range(int id_, const char* what_arg) : exception(id_, what_arg) {}
-
2134 };
-
2135 
-
2160 class other_error : public exception
-
2161 {
-
2162  public:
-
2163  static other_error create(int id_, const std::string& what_arg)
-
2164  {
-
2165  std::string w = exception::name("other_error", id_) + what_arg;
-
2166  return other_error(id_, w.c_str());
-
2167  }
-
2168 
-
2169  private:
- -
2171  other_error(int id_, const char* what_arg) : exception(id_, what_arg) {}
-
2172 };
-
2173 } // namespace detail
-
2174 } // namespace nlohmann
-
2175 
-
2176 // #include <nlohmann/detail/macro_scope.hpp>
-
2177 
-
2178 // #include <nlohmann/detail/meta/cpp_future.hpp>
-
2179 
-
2180 
-
2181 #include <ciso646> // not
-
2182 #include <cstddef> // size_t
-
2183 #include <type_traits> // conditional, enable_if, false_type, integral_constant, is_constructible, is_integral, is_same, remove_cv, remove_reference, true_type
-
2184 
-
2185 namespace nlohmann
-
2186 {
-
2187 namespace detail
-
2188 {
-
2189 // alias templates to reduce boilerplate
-
2190 template<bool B, typename T = void>
-
2191 using enable_if_t = typename std::enable_if<B, T>::type;
-
2192 
-
2193 template<typename T>
-
2194 using uncvref_t = typename std::remove_cv<typename std::remove_reference<T>::type>::type;
-
2195 
-
2196 // implementation of C++14 index_sequence and affiliates
-
2197 // source: https://stackoverflow.com/a/32223343
-
2198 template<std::size_t... Ints>
- -
2200 {
- -
2202  using value_type = std::size_t;
-
2203  static constexpr std::size_t size() noexcept
-
2204  {
-
2205  return sizeof...(Ints);
-
2206  }
-
2207 };
-
2208 
-
2209 template<class Sequence1, class Sequence2>
- -
2211 
-
2212 template<std::size_t... I1, std::size_t... I2>
- -
2214  : index_sequence < I1..., (sizeof...(I1) + I2)... > {};
-
2215 
-
2216 template<std::size_t N>
- -
2218  : merge_and_renumber < typename make_index_sequence < N / 2 >::type,
-
2219  typename make_index_sequence < N - N / 2 >::type > {};
-
2220 
-
2221 template<> struct make_index_sequence<0> : index_sequence<> {};
-
2222 template<> struct make_index_sequence<1> : index_sequence<0> {};
-
2223 
-
2224 template<typename... Ts>
- -
2226 
-
2227 // dispatch utility (taken from ranges-v3)
-
2228 template<unsigned N> struct priority_tag : priority_tag < N - 1 > {};
-
2229 template<> struct priority_tag<0> {};
-
2230 
-
2231 // taken from ranges-v3
-
2232 template<typename T>
- -
2234 {
-
2235  static constexpr T value{};
-
2236 };
-
2237 
-
2238 template<typename T>
-
2239 constexpr T static_const<T>::value;
-
2240 } // namespace detail
-
2241 } // namespace nlohmann
-
2242 
-
2243 // #include <nlohmann/detail/meta/type_traits.hpp>
-
2244 
-
2245 
-
2246 #include <ciso646> // not
-
2247 #include <limits> // numeric_limits
-
2248 #include <type_traits> // false_type, is_constructible, is_integral, is_same, true_type
-
2249 #include <utility> // declval
-
2250 
-
2251 // #include <nlohmann/detail/iterators/iterator_traits.hpp>
-
2252 
-
2253 
-
2254 #include <iterator> // random_access_iterator_tag
-
2255 
-
2256 // #include <nlohmann/detail/meta/void_t.hpp>
-
2257 
-
2258 
-
2259 namespace nlohmann
-
2260 {
-
2261 namespace detail
-
2262 {
-
2263 template <typename ...Ts> struct make_void
-
2264 {
-
2265  using type = void;
-
2266 };
-
2267 template <typename ...Ts> using void_t = typename make_void<Ts...>::type;
-
2268 } // namespace detail
-
2269 } // namespace nlohmann
-
2270 
-
2271 // #include <nlohmann/detail/meta/cpp_future.hpp>
-
2272 
-
2273 
-
2274 namespace nlohmann
-
2275 {
-
2276 namespace detail
-
2277 {
-
2278 template <typename It, typename = void>
-
2279 struct iterator_types {};
-
2280 
-
2281 template <typename It>
- -
2283  It,
-
2284  void_t<typename It::difference_type, typename It::value_type, typename It::pointer,
-
2285  typename It::reference, typename It::iterator_category >>
-
2286 {
-
2287  using difference_type = typename It::difference_type;
-
2288  using value_type = typename It::value_type;
-
2289  using pointer = typename It::pointer;
-
2290  using reference = typename It::reference;
-
2291  using iterator_category = typename It::iterator_category;
-
2292 };
-
2293 
-
2294 // This is required as some compilers implement std::iterator_traits in a way that
-
2295 // doesn't work with SFINAE. See https://github.com/nlohmann/json/issues/1341.
-
2296 template <typename T, typename = void>
- -
2298 {
-
2299 };
-
2300 
-
2301 template <typename T>
-
2302 struct iterator_traits < T, enable_if_t < !std::is_pointer<T>::value >>
-
2303  : iterator_types<T>
-
2304 {
-
2305 };
-
2306 
-
2307 template <typename T>
- -
2309 {
-
2310  using iterator_category = std::random_access_iterator_tag;
-
2311  using value_type = T;
-
2312  using difference_type = ptrdiff_t;
-
2313  using pointer = T*;
-
2314  using reference = T&;
-
2315 };
-
2316 } // namespace detail
-
2317 } // namespace nlohmann
-
2318 
-
2319 // #include <nlohmann/detail/macro_scope.hpp>
-
2320 
-
2321 // #include <nlohmann/detail/meta/cpp_future.hpp>
-
2322 
-
2323 // #include <nlohmann/detail/meta/detected.hpp>
-
2324 
-
2325 
-
2326 #include <type_traits>
-
2327 
-
2328 // #include <nlohmann/detail/meta/void_t.hpp>
-
2329 
-
2330 
-
2331 // http://en.cppreference.com/w/cpp/experimental/is_detected
-
2332 namespace nlohmann
-
2333 {
-
2334 namespace detail
-
2335 {
-
2336 struct nonesuch
-
2337 {
-
2338  nonesuch() = delete;
-
2339  ~nonesuch() = delete;
-
2340  nonesuch(nonesuch const&) = delete;
-
2341  nonesuch(nonesuch const&&) = delete;
-
2342  void operator=(nonesuch const&) = delete;
-
2343  void operator=(nonesuch&&) = delete;
-
2344 };
-
2345 
-
2346 template <class Default,
-
2347  class AlwaysVoid,
-
2348  template <class...> class Op,
-
2349  class... Args>
-
2350 struct detector
-
2351 {
-
2352  using value_t = std::false_type;
-
2353  using type = Default;
-
2354 };
-
2355 
-
2356 template <class Default, template <class...> class Op, class... Args>
-
2357 struct detector<Default, void_t<Op<Args...>>, Op, Args...>
-
2358 {
-
2359  using value_t = std::true_type;
-
2360  using type = Op<Args...>;
-
2361 };
-
2362 
-
2363 template <template <class...> class Op, class... Args>
-
2364 using is_detected = typename detector<nonesuch, void, Op, Args...>::value_t;
-
2365 
-
2366 template <template <class...> class Op, class... Args>
-
2367 using detected_t = typename detector<nonesuch, void, Op, Args...>::type;
-
2368 
-
2369 template <class Default, template <class...> class Op, class... Args>
-
2370 using detected_or = detector<Default, void, Op, Args...>;
-
2371 
-
2372 template <class Default, template <class...> class Op, class... Args>
-
2373 using detected_or_t = typename detected_or<Default, Op, Args...>::type;
-
2374 
-
2375 template <class Expected, template <class...> class Op, class... Args>
-
2376 using is_detected_exact = std::is_same<Expected, detected_t<Op, Args...>>;
-
2377 
-
2378 template <class To, template <class...> class Op, class... Args>
- -
2380  std::is_convertible<detected_t<Op, Args...>, To>;
-
2381 } // namespace detail
-
2382 } // namespace nlohmann
-
2383 
-
2384 // #include <nlohmann/json_fwd.hpp>
-
2385 #ifndef INCLUDE_NLOHMANN_JSON_FWD_HPP_
-
2386 #define INCLUDE_NLOHMANN_JSON_FWD_HPP_
-
2387 
-
2388 #include <cstdint> // int64_t, uint64_t
-
2389 #include <map> // map
-
2390 #include <memory> // allocator
-
2391 #include <string> // string
-
2392 #include <vector> // vector
-
2393 
-
2399 namespace nlohmann
-
2400 {
-
2408 template<typename T = void, typename SFINAE = void>
- -
2410 
-
2411 template<template<typename U, typename V, typename... Args> class ObjectType =
-
2412  std::map,
-
2413  template<typename U, typename... Args> class ArrayType = std::vector,
-
2414  class StringType = std::string, class BooleanType = bool,
-
2415  class NumberIntegerType = std::int64_t,
-
2416  class NumberUnsignedType = std::uint64_t,
-
2417  class NumberFloatType = double,
-
2418  template<typename U> class AllocatorType = std::allocator,
-
2419  template<typename T, typename SFINAE = void> class JSONSerializer =
- - -
2422 
-
2434 template<typename BasicJsonType>
- -
2436 
- -
2446 } // namespace nlohmann
-
2447 
-
2448 #endif // INCLUDE_NLOHMANN_JSON_FWD_HPP_
-
2449 
-
2450 
-
2451 namespace nlohmann
-
2452 {
-
2461 namespace detail
-
2462 {
-
2464 // helpers //
-
2466 
-
2467 // Note to maintainers:
-
2468 //
-
2469 // Every trait in this file expects a non CV-qualified type.
-
2470 // The only exceptions are in the 'aliases for detected' section
-
2471 // (i.e. those of the form: decltype(T::member_function(std::declval<T>())))
-
2472 //
-
2473 // In this case, T has to be properly CV-qualified to constraint the function arguments
-
2474 // (e.g. to_json(BasicJsonType&, const T&))
-
2475 
-
2476 template<typename> struct is_basic_json : std::false_type {};
-
2477 
- -
2479 struct is_basic_json<NLOHMANN_BASIC_JSON_TPL> : std::true_type {};
-
2480 
-
2482 // aliases for detected //
-
2484 
-
2485 template <typename T>
-
2486 using mapped_type_t = typename T::mapped_type;
-
2487 
-
2488 template <typename T>
-
2489 using key_type_t = typename T::key_type;
-
2490 
-
2491 template <typename T>
-
2492 using value_type_t = typename T::value_type;
-
2493 
-
2494 template <typename T>
-
2495 using difference_type_t = typename T::difference_type;
-
2496 
-
2497 template <typename T>
-
2498 using pointer_t = typename T::pointer;
-
2499 
-
2500 template <typename T>
-
2501 using reference_t = typename T::reference;
-
2502 
-
2503 template <typename T>
-
2504 using iterator_category_t = typename T::iterator_category;
-
2505 
-
2506 template <typename T>
-
2507 using iterator_t = typename T::iterator;
-
2508 
-
2509 template <typename T, typename... Args>
-
2510 using to_json_function = decltype(T::to_json(std::declval<Args>()...));
-
2511 
-
2512 template <typename T, typename... Args>
-
2513 using from_json_function = decltype(T::from_json(std::declval<Args>()...));
-
2514 
-
2515 template <typename T, typename U>
-
2516 using get_template_function = decltype(std::declval<T>().template get<U>());
-
2517 
-
2518 // trait checking if JSONSerializer<T>::from_json(json const&, udt&) exists
-
2519 template <typename BasicJsonType, typename T, typename = void>
-
2520 struct has_from_json : std::false_type {};
-
2521 
-
2522 template <typename BasicJsonType, typename T>
-
2523 struct has_from_json<BasicJsonType, T,
-
2524  enable_if_t<not is_basic_json<T>::value>>
-
2525 {
-
2526  using serializer = typename BasicJsonType::template json_serializer<T, void>;
-
2527 
-
2528  static constexpr bool value =
- -
2530  const BasicJsonType&, T&>::value;
-
2531 };
-
2532 
-
2533 // This trait checks if JSONSerializer<T>::from_json(json const&) exists
-
2534 // this overload is used for non-default-constructible user-defined-types
-
2535 template <typename BasicJsonType, typename T, typename = void>
-
2536 struct has_non_default_from_json : std::false_type {};
-
2537 
-
2538 template<typename BasicJsonType, typename T>
-
2539 struct has_non_default_from_json<BasicJsonType, T, enable_if_t<not is_basic_json<T>::value>>
-
2540 {
-
2541  using serializer = typename BasicJsonType::template json_serializer<T, void>;
-
2542 
-
2543  static constexpr bool value =
- -
2545  const BasicJsonType&>::value;
-
2546 };
-
2547 
-
2548 // This trait checks if BasicJsonType::json_serializer<T>::to_json exists
-
2549 // Do not evaluate the trait when T is a basic_json type, to avoid template instantiation infinite recursion.
-
2550 template <typename BasicJsonType, typename T, typename = void>
-
2551 struct has_to_json : std::false_type {};
-
2552 
-
2553 template <typename BasicJsonType, typename T>
-
2554 struct has_to_json<BasicJsonType, T, enable_if_t<not is_basic_json<T>::value>>
-
2555 {
-
2556  using serializer = typename BasicJsonType::template json_serializer<T, void>;
-
2557 
-
2558  static constexpr bool value =
- -
2560  T>::value;
-
2561 };
-
2562 
-
2563 
-
2565 // is_ functions //
-
2567 
-
2568 template <typename T, typename = void>
-
2569 struct is_iterator_traits : std::false_type {};
-
2570 
-
2571 template <typename T>
- -
2573 {
-
2574  private:
-
2575  using traits = iterator_traits<T>;
-
2576 
-
2577  public:
-
2578  static constexpr auto value =
- - - - - -
2584 };
-
2585 
-
2586 // source: https://stackoverflow.com/a/37193089/4116453
-
2587 
-
2588 template <typename T, typename = void>
-
2589 struct is_complete_type : std::false_type {};
-
2590 
-
2591 template <typename T>
-
2592 struct is_complete_type<T, decltype(void(sizeof(T)))> : std::true_type {};
-
2593 
-
2594 template <typename BasicJsonType, typename CompatibleObjectType,
-
2595  typename = void>
-
2596 struct is_compatible_object_type_impl : std::false_type {};
-
2597 
-
2598 template <typename BasicJsonType, typename CompatibleObjectType>
- -
2600  BasicJsonType, CompatibleObjectType,
-
2601  enable_if_t<is_detected<mapped_type_t, CompatibleObjectType>::value and
-
2602  is_detected<key_type_t, CompatibleObjectType>::value >>
-
2603 {
-
2604 
-
2605  using object_t = typename BasicJsonType::object_t;
-
2606 
-
2607  // macOS's is_constructible does not play well with nonesuch...
-
2608  static constexpr bool value =
-
2609  std::is_constructible<typename object_t::key_type,
-
2610  typename CompatibleObjectType::key_type>::value and
-
2611  std::is_constructible<typename object_t::mapped_type,
-
2612  typename CompatibleObjectType::mapped_type>::value;
-
2613 };
-
2614 
-
2615 template <typename BasicJsonType, typename CompatibleObjectType>
- -
2617  : is_compatible_object_type_impl<BasicJsonType, CompatibleObjectType> {};
-
2618 
-
2619 template <typename BasicJsonType, typename ConstructibleObjectType,
-
2620  typename = void>
-
2621 struct is_constructible_object_type_impl : std::false_type {};
-
2622 
-
2623 template <typename BasicJsonType, typename ConstructibleObjectType>
- -
2625  BasicJsonType, ConstructibleObjectType,
-
2626  enable_if_t<is_detected<mapped_type_t, ConstructibleObjectType>::value and
-
2627  is_detected<key_type_t, ConstructibleObjectType>::value >>
-
2628 {
-
2629  using object_t = typename BasicJsonType::object_t;
-
2630 
-
2631  static constexpr bool value =
-
2632  (std::is_default_constructible<ConstructibleObjectType>::value and
-
2633  (std::is_move_assignable<ConstructibleObjectType>::value or
-
2634  std::is_copy_assignable<ConstructibleObjectType>::value) and
-
2635  (std::is_constructible<typename ConstructibleObjectType::key_type,
-
2636  typename object_t::key_type>::value and
-
2637  std::is_same <
-
2638  typename object_t::mapped_type,
-
2639  typename ConstructibleObjectType::mapped_type >::value)) or
-
2640  (has_from_json<BasicJsonType,
-
2641  typename ConstructibleObjectType::mapped_type>::value or
- -
2643  BasicJsonType,
-
2644  typename ConstructibleObjectType::mapped_type >::value);
-
2645 };
-
2646 
-
2647 template <typename BasicJsonType, typename ConstructibleObjectType>
- -
2649  : is_constructible_object_type_impl<BasicJsonType,
-
2650  ConstructibleObjectType> {};
-
2651 
-
2652 template <typename BasicJsonType, typename CompatibleStringType,
-
2653  typename = void>
-
2654 struct is_compatible_string_type_impl : std::false_type {};
-
2655 
-
2656 template <typename BasicJsonType, typename CompatibleStringType>
- -
2658  BasicJsonType, CompatibleStringType,
-
2659  enable_if_t<is_detected_exact<typename BasicJsonType::string_t::value_type,
-
2660  value_type_t, CompatibleStringType>::value >>
-
2661 {
-
2662  static constexpr auto value =
-
2663  std::is_constructible<typename BasicJsonType::string_t, CompatibleStringType>::value;
-
2664 };
-
2665 
-
2666 template <typename BasicJsonType, typename ConstructibleStringType>
- -
2668  : is_compatible_string_type_impl<BasicJsonType, ConstructibleStringType> {};
-
2669 
-
2670 template <typename BasicJsonType, typename ConstructibleStringType,
-
2671  typename = void>
-
2672 struct is_constructible_string_type_impl : std::false_type {};
-
2673 
-
2674 template <typename BasicJsonType, typename ConstructibleStringType>
- -
2676  BasicJsonType, ConstructibleStringType,
-
2677  enable_if_t<is_detected_exact<typename BasicJsonType::string_t::value_type,
-
2678  value_type_t, ConstructibleStringType>::value >>
-
2679 {
-
2680  static constexpr auto value =
-
2681  std::is_constructible<ConstructibleStringType,
-
2682  typename BasicJsonType::string_t>::value;
-
2683 };
-
2684 
-
2685 template <typename BasicJsonType, typename ConstructibleStringType>
- -
2687  : is_constructible_string_type_impl<BasicJsonType, ConstructibleStringType> {};
-
2688 
-
2689 template <typename BasicJsonType, typename CompatibleArrayType, typename = void>
-
2690 struct is_compatible_array_type_impl : std::false_type {};
-
2691 
-
2692 template <typename BasicJsonType, typename CompatibleArrayType>
- -
2694  BasicJsonType, CompatibleArrayType,
-
2695  enable_if_t<is_detected<value_type_t, CompatibleArrayType>::value and
-
2696  is_detected<iterator_t, CompatibleArrayType>::value and
-
2697 // This is needed because json_reverse_iterator has a ::iterator type...
-
2698 // Therefore it is detected as a CompatibleArrayType.
-
2699 // The real fix would be to have an Iterable concept.
-
2700  not is_iterator_traits<
-
2701  iterator_traits<CompatibleArrayType>>::value >>
-
2702 {
-
2703  static constexpr bool value =
-
2704  std::is_constructible<BasicJsonType,
-
2705  typename CompatibleArrayType::value_type>::value;
-
2706 };
-
2707 
-
2708 template <typename BasicJsonType, typename CompatibleArrayType>
- -
2710  : is_compatible_array_type_impl<BasicJsonType, CompatibleArrayType> {};
-
2711 
-
2712 template <typename BasicJsonType, typename ConstructibleArrayType, typename = void>
-
2713 struct is_constructible_array_type_impl : std::false_type {};
-
2714 
-
2715 template <typename BasicJsonType, typename ConstructibleArrayType>
- -
2717  BasicJsonType, ConstructibleArrayType,
-
2718  enable_if_t<std::is_same<ConstructibleArrayType,
-
2719  typename BasicJsonType::value_type>::value >>
-
2720  : std::true_type {};
-
2721 
-
2722 template <typename BasicJsonType, typename ConstructibleArrayType>
- -
2724  BasicJsonType, ConstructibleArrayType,
-
2725  enable_if_t<not std::is_same<ConstructibleArrayType,
-
2726  typename BasicJsonType::value_type>::value and
-
2727  std::is_default_constructible<ConstructibleArrayType>::value and
-
2728 (std::is_move_assignable<ConstructibleArrayType>::value or
-
2729  std::is_copy_assignable<ConstructibleArrayType>::value) and
-
2730 is_detected<value_type_t, ConstructibleArrayType>::value and
-
2731 is_detected<iterator_t, ConstructibleArrayType>::value and
- -
2733 detected_t<value_type_t, ConstructibleArrayType>>::value >>
-
2734 {
-
2735  static constexpr bool value =
-
2736  // This is needed because json_reverse_iterator has a ::iterator type,
-
2737  // furthermore, std::back_insert_iterator (and other iterators) have a
-
2738  // base class `iterator`... Therefore it is detected as a
-
2739  // ConstructibleArrayType. The real fix would be to have an Iterable
-
2740  // concept.
- -
2742 
-
2743  (std::is_same<typename ConstructibleArrayType::value_type,
-
2744  typename BasicJsonType::array_t::value_type>::value or
-
2745  has_from_json<BasicJsonType,
-
2746  typename ConstructibleArrayType::value_type>::value or
- -
2748  BasicJsonType, typename ConstructibleArrayType::value_type >::value);
-
2749 };
-
2750 
-
2751 template <typename BasicJsonType, typename ConstructibleArrayType>
- -
2753  : is_constructible_array_type_impl<BasicJsonType, ConstructibleArrayType> {};
-
2754 
-
2755 template <typename RealIntegerType, typename CompatibleNumberIntegerType,
-
2756  typename = void>
-
2757 struct is_compatible_integer_type_impl : std::false_type {};
-
2758 
-
2759 template <typename RealIntegerType, typename CompatibleNumberIntegerType>
- -
2761  RealIntegerType, CompatibleNumberIntegerType,
-
2762  enable_if_t<std::is_integral<RealIntegerType>::value and
-
2763  std::is_integral<CompatibleNumberIntegerType>::value and
-
2764  not std::is_same<bool, CompatibleNumberIntegerType>::value >>
-
2765 {
-
2766  // is there an assert somewhere on overflows?
-
2767  using RealLimits = std::numeric_limits<RealIntegerType>;
-
2768  using CompatibleLimits = std::numeric_limits<CompatibleNumberIntegerType>;
-
2769 
-
2770  static constexpr auto value =
-
2771  std::is_constructible<RealIntegerType,
-
2772  CompatibleNumberIntegerType>::value and
-
2773  CompatibleLimits::is_integer and
-
2774  RealLimits::is_signed == CompatibleLimits::is_signed;
-
2775 };
-
2776 
-
2777 template <typename RealIntegerType, typename CompatibleNumberIntegerType>
- -
2779  : is_compatible_integer_type_impl<RealIntegerType,
-
2780  CompatibleNumberIntegerType> {};
-
2781 
-
2782 template <typename BasicJsonType, typename CompatibleType, typename = void>
-
2783 struct is_compatible_type_impl: std::false_type {};
-
2784 
-
2785 template <typename BasicJsonType, typename CompatibleType>
- -
2787  BasicJsonType, CompatibleType,
-
2788  enable_if_t<is_complete_type<CompatibleType>::value >>
-
2789 {
-
2790  static constexpr bool value =
- -
2792 };
-
2793 
-
2794 template <typename BasicJsonType, typename CompatibleType>
- -
2796  : is_compatible_type_impl<BasicJsonType, CompatibleType> {};
-
2797 
-
2798 // https://en.cppreference.com/w/cpp/types/conjunction
-
2799 template<class...> struct conjunction : std::true_type { };
-
2800 template<class B1> struct conjunction<B1> : B1 { };
-
2801 template<class B1, class... Bn>
-
2802 struct conjunction<B1, Bn...>
-
2803 : std::conditional<bool(B1::value), conjunction<Bn...>, B1>::type {};
-
2804 
-
2805 template <typename T1, typename T2>
-
2806 struct is_constructible_tuple : std::false_type {};
-
2807 
-
2808 template <typename T1, typename... Args>
-
2809 struct is_constructible_tuple<T1, std::tuple<Args...>> : conjunction<std::is_constructible<T1, Args>...> {};
-
2810 } // namespace detail
-
2811 } // namespace nlohmann
-
2812 
-
2813 // #include <nlohmann/detail/value_t.hpp>
-
2814 
-
2815 
-
2816 #include <array> // array
-
2817 #include <ciso646> // and
-
2818 #include <cstddef> // size_t
-
2819 #include <cstdint> // uint8_t
-
2820 #include <string> // string
-
2821 
-
2822 namespace nlohmann
-
2823 {
-
2824 namespace detail
-
2825 {
-
2827 // JSON type enumeration //
-
2829 
-
2854 enum class value_t : std::uint8_t
-
2855 {
-
2856  null,
-
2857  object,
-
2858  array,
-
2859  string,
-
2860  boolean,
-
2861  number_integer,
-
2862  number_unsigned,
-
2863  number_float,
-
2864  discarded
-
2865 };
-
2866 
-
2877 inline bool operator<(const value_t lhs, const value_t rhs) noexcept
-
2878 {
-
2879  static constexpr std::array<std::uint8_t, 8> order = {{
-
2880  0 /* null */, 3 /* object */, 4 /* array */, 5 /* string */,
-
2881  1 /* boolean */, 2 /* integer */, 2 /* unsigned */, 2 /* float */
-
2882  }
-
2883  };
-
2884 
-
2885  const auto l_index = static_cast<std::size_t>(lhs);
-
2886  const auto r_index = static_cast<std::size_t>(rhs);
-
2887  return l_index < order.size() and r_index < order.size() and order[l_index] < order[r_index];
-
2888 }
-
2889 } // namespace detail
-
2890 } // namespace nlohmann
-
2891 
-
2892 
-
2893 namespace nlohmann
-
2894 {
-
2895 namespace detail
-
2896 {
-
2897 template<typename BasicJsonType>
-
2898 void from_json(const BasicJsonType& j, typename std::nullptr_t& n)
-
2899 {
-
2900  if (JSON_HEDLEY_UNLIKELY(not j.is_null()))
-
2901  {
-
2902  JSON_THROW(type_error::create(302, "type must be null, but is " + std::string(j.type_name())));
-
2903  }
-
2904  n = nullptr;
-
2905 }
-
2906 
-
2907 // overloads for basic_json template parameters
-
2908 template<typename BasicJsonType, typename ArithmeticType,
-
2909  enable_if_t<std::is_arithmetic<ArithmeticType>::value and
-
2910  not std::is_same<ArithmeticType, typename BasicJsonType::boolean_t>::value,
-
2911  int> = 0>
-
2912 void get_arithmetic_value(const BasicJsonType& j, ArithmeticType& val)
-
2913 {
-
2914  switch (static_cast<value_t>(j))
-
2915  {
- -
2917  {
-
2918  val = static_cast<ArithmeticType>(*j.template get_ptr<const typename BasicJsonType::number_unsigned_t*>());
-
2919  break;
-
2920  }
- -
2922  {
-
2923  val = static_cast<ArithmeticType>(*j.template get_ptr<const typename BasicJsonType::number_integer_t*>());
-
2924  break;
-
2925  }
-
2926  case value_t::number_float:
-
2927  {
-
2928  val = static_cast<ArithmeticType>(*j.template get_ptr<const typename BasicJsonType::number_float_t*>());
-
2929  break;
-
2930  }
-
2931 
-
2932  default:
-
2933  JSON_THROW(type_error::create(302, "type must be number, but is " + std::string(j.type_name())));
-
2934  }
-
2935 }
-
2936 
-
2937 template<typename BasicJsonType>
-
2938 void from_json(const BasicJsonType& j, typename BasicJsonType::boolean_t& b)
-
2939 {
-
2940  if (JSON_HEDLEY_UNLIKELY(not j.is_boolean()))
-
2941  {
-
2942  JSON_THROW(type_error::create(302, "type must be boolean, but is " + std::string(j.type_name())));
-
2943  }
-
2944  b = *j.template get_ptr<const typename BasicJsonType::boolean_t*>();
-
2945 }
-
2946 
-
2947 template<typename BasicJsonType>
-
2948 void from_json(const BasicJsonType& j, typename BasicJsonType::string_t& s)
-
2949 {
-
2950  if (JSON_HEDLEY_UNLIKELY(not j.is_string()))
-
2951  {
-
2952  JSON_THROW(type_error::create(302, "type must be string, but is " + std::string(j.type_name())));
-
2953  }
-
2954  s = *j.template get_ptr<const typename BasicJsonType::string_t*>();
-
2955 }
-
2956 
-
2957 template <
-
2958  typename BasicJsonType, typename ConstructibleStringType,
-
2959  enable_if_t <
-
2960  is_constructible_string_type<BasicJsonType, ConstructibleStringType>::value and
-
2961  not std::is_same<typename BasicJsonType::string_t,
-
2962  ConstructibleStringType>::value,
-
2963  int > = 0 >
-
2964 void from_json(const BasicJsonType& j, ConstructibleStringType& s)
-
2965 {
-
2966  if (JSON_HEDLEY_UNLIKELY(not j.is_string()))
-
2967  {
-
2968  JSON_THROW(type_error::create(302, "type must be string, but is " + std::string(j.type_name())));
-
2969  }
-
2970 
-
2971  s = *j.template get_ptr<const typename BasicJsonType::string_t*>();
-
2972 }
-
2973 
-
2974 template<typename BasicJsonType>
-
2975 void from_json(const BasicJsonType& j, typename BasicJsonType::number_float_t& val)
-
2976 {
-
2977  get_arithmetic_value(j, val);
-
2978 }
-
2979 
-
2980 template<typename BasicJsonType>
-
2981 void from_json(const BasicJsonType& j, typename BasicJsonType::number_unsigned_t& val)
-
2982 {
-
2983  get_arithmetic_value(j, val);
-
2984 }
-
2985 
-
2986 template<typename BasicJsonType>
-
2987 void from_json(const BasicJsonType& j, typename BasicJsonType::number_integer_t& val)
-
2988 {
-
2989  get_arithmetic_value(j, val);
-
2990 }
-
2991 
-
2992 template<typename BasicJsonType, typename EnumType,
-
2993  enable_if_t<std::is_enum<EnumType>::value, int> = 0>
-
2994 void from_json(const BasicJsonType& j, EnumType& e)
-
2995 {
-
2996  typename std::underlying_type<EnumType>::type val;
-
2997  get_arithmetic_value(j, val);
-
2998  e = static_cast<EnumType>(val);
-
2999 }
-
3000 
-
3001 // forward_list doesn't have an insert method
-
3002 template<typename BasicJsonType, typename T, typename Allocator,
-
3003  enable_if_t<std::is_convertible<BasicJsonType, T>::value, int> = 0>
-
3004 void from_json(const BasicJsonType& j, std::forward_list<T, Allocator>& l)
-
3005 {
-
3006  if (JSON_HEDLEY_UNLIKELY(not j.is_array()))
-
3007  {
-
3008  JSON_THROW(type_error::create(302, "type must be array, but is " + std::string(j.type_name())));
-
3009  }
-
3010  l.clear();
-
3011  std::transform(j.rbegin(), j.rend(),
-
3012  std::front_inserter(l), [](const BasicJsonType & i)
-
3013  {
-
3014  return i.template get<T>();
-
3015  });
-
3016 }
-
3017 
-
3018 // valarray doesn't have an insert method
-
3019 template<typename BasicJsonType, typename T,
-
3020  enable_if_t<std::is_convertible<BasicJsonType, T>::value, int> = 0>
-
3021 void from_json(const BasicJsonType& j, std::valarray<T>& l)
-
3022 {
-
3023  if (JSON_HEDLEY_UNLIKELY(not j.is_array()))
-
3024  {
-
3025  JSON_THROW(type_error::create(302, "type must be array, but is " + std::string(j.type_name())));
-
3026  }
-
3027  l.resize(j.size());
-
3028  std::copy(j.begin(), j.end(), std::begin(l));
-
3029 }
-
3030 
-
3031 template <typename BasicJsonType, typename T, std::size_t N>
-
3032 auto from_json(const BasicJsonType& j, T (&arr)[N])
-
3033 -> decltype(j.template get<T>(), void())
-
3034 {
-
3035  for (std::size_t i = 0; i < N; ++i)
-
3036  {
-
3037  arr[i] = j.at(i).template get<T>();
-
3038  }
-
3039 }
-
3040 
-
3041 template<typename BasicJsonType>
-
3042 void from_json_array_impl(const BasicJsonType& j, typename BasicJsonType::array_t& arr, priority_tag<3> /*unused*/)
-
3043 {
-
3044  arr = *j.template get_ptr<const typename BasicJsonType::array_t*>();
-
3045 }
-
3046 
-
3047 template <typename BasicJsonType, typename T, std::size_t N>
-
3048 auto from_json_array_impl(const BasicJsonType& j, std::array<T, N>& arr,
-
3049  priority_tag<2> /*unused*/)
-
3050 -> decltype(j.template get<T>(), void())
-
3051 {
-
3052  for (std::size_t i = 0; i < N; ++i)
-
3053  {
-
3054  arr[i] = j.at(i).template get<T>();
-
3055  }
-
3056 }
-
3057 
-
3058 template<typename BasicJsonType, typename ConstructibleArrayType>
-
3059 auto from_json_array_impl(const BasicJsonType& j, ConstructibleArrayType& arr, priority_tag<1> /*unused*/)
-
3060 -> decltype(
-
3061  arr.reserve(std::declval<typename ConstructibleArrayType::size_type>()),
-
3062  j.template get<typename ConstructibleArrayType::value_type>(),
-
3063  void())
-
3064 {
-
3065  using std::end;
-
3066 
-
3067  ConstructibleArrayType ret;
-
3068  ret.reserve(j.size());
-
3069  std::transform(j.begin(), j.end(),
-
3070  std::inserter(ret, end(ret)), [](const BasicJsonType & i)
-
3071  {
-
3072  // get<BasicJsonType>() returns *this, this won't call a from_json
-
3073  // method when value_type is BasicJsonType
-
3074  return i.template get<typename ConstructibleArrayType::value_type>();
-
3075  });
-
3076  arr = std::move(ret);
-
3077 }
-
3078 
-
3079 template <typename BasicJsonType, typename ConstructibleArrayType>
-
3080 void from_json_array_impl(const BasicJsonType& j, ConstructibleArrayType& arr,
-
3081  priority_tag<0> /*unused*/)
-
3082 {
-
3083  using std::end;
-
3084 
-
3085  ConstructibleArrayType ret;
-
3086  std::transform(
-
3087  j.begin(), j.end(), std::inserter(ret, end(ret)),
-
3088  [](const BasicJsonType & i)
-
3089  {
-
3090  // get<BasicJsonType>() returns *this, this won't call a from_json
-
3091  // method when value_type is BasicJsonType
-
3092  return i.template get<typename ConstructibleArrayType::value_type>();
-
3093  });
-
3094  arr = std::move(ret);
-
3095 }
-
3096 
-
3097 template <typename BasicJsonType, typename ConstructibleArrayType,
-
3098  enable_if_t <
-
3099  is_constructible_array_type<BasicJsonType, ConstructibleArrayType>::value and
-
3100  not is_constructible_object_type<BasicJsonType, ConstructibleArrayType>::value and
-
3101  not is_constructible_string_type<BasicJsonType, ConstructibleArrayType>::value and
-
3102  not is_basic_json<ConstructibleArrayType>::value,
-
3103  int > = 0 >
-
3104 
-
3105 auto from_json(const BasicJsonType& j, ConstructibleArrayType& arr)
-
3106 -> decltype(from_json_array_impl(j, arr, priority_tag<3> {}),
-
3107 j.template get<typename ConstructibleArrayType::value_type>(),
-
3108 void())
-
3109 {
-
3110  if (JSON_HEDLEY_UNLIKELY(not j.is_array()))
-
3111  {
-
3112  JSON_THROW(type_error::create(302, "type must be array, but is " +
-
3113  std::string(j.type_name())));
-
3114  }
-
3115 
- -
3117 }
-
3118 
-
3119 template<typename BasicJsonType, typename ConstructibleObjectType,
-
3120  enable_if_t<is_constructible_object_type<BasicJsonType, ConstructibleObjectType>::value, int> = 0>
-
3121 void from_json(const BasicJsonType& j, ConstructibleObjectType& obj)
-
3122 {
-
3123  if (JSON_HEDLEY_UNLIKELY(not j.is_object()))
-
3124  {
-
3125  JSON_THROW(type_error::create(302, "type must be object, but is " + std::string(j.type_name())));
-
3126  }
-
3127 
-
3128  ConstructibleObjectType ret;
-
3129  auto inner_object = j.template get_ptr<const typename BasicJsonType::object_t*>();
-
3130  using value_type = typename ConstructibleObjectType::value_type;
-
3131  std::transform(
-
3132  inner_object->begin(), inner_object->end(),
-
3133  std::inserter(ret, ret.begin()),
-
3134  [](typename BasicJsonType::object_t::value_type const & p)
-
3135  {
-
3136  return value_type(p.first, p.second.template get<typename ConstructibleObjectType::mapped_type>());
-
3137  });
-
3138  obj = std::move(ret);
-
3139 }
-
3140 
-
3141 // overload for arithmetic types, not chosen for basic_json template arguments
-
3142 // (BooleanType, etc..); note: Is it really necessary to provide explicit
-
3143 // overloads for boolean_t etc. in case of a custom BooleanType which is not
-
3144 // an arithmetic type?
-
3145 template<typename BasicJsonType, typename ArithmeticType,
-
3146  enable_if_t <
-
3147  std::is_arithmetic<ArithmeticType>::value and
-
3148  not std::is_same<ArithmeticType, typename BasicJsonType::number_unsigned_t>::value and
-
3149  not std::is_same<ArithmeticType, typename BasicJsonType::number_integer_t>::value and
-
3150  not std::is_same<ArithmeticType, typename BasicJsonType::number_float_t>::value and
-
3151  not std::is_same<ArithmeticType, typename BasicJsonType::boolean_t>::value,
-
3152  int> = 0>
-
3153 void from_json(const BasicJsonType& j, ArithmeticType& val)
-
3154 {
-
3155  switch (static_cast<value_t>(j))
-
3156  {
- -
3158  {
-
3159  val = static_cast<ArithmeticType>(*j.template get_ptr<const typename BasicJsonType::number_unsigned_t*>());
-
3160  break;
-
3161  }
- -
3163  {
-
3164  val = static_cast<ArithmeticType>(*j.template get_ptr<const typename BasicJsonType::number_integer_t*>());
-
3165  break;
-
3166  }
-
3167  case value_t::number_float:
-
3168  {
-
3169  val = static_cast<ArithmeticType>(*j.template get_ptr<const typename BasicJsonType::number_float_t*>());
-
3170  break;
-
3171  }
-
3172  case value_t::boolean:
-
3173  {
-
3174  val = static_cast<ArithmeticType>(*j.template get_ptr<const typename BasicJsonType::boolean_t*>());
-
3175  break;
-
3176  }
-
3177 
-
3178  default:
-
3179  JSON_THROW(type_error::create(302, "type must be number, but is " + std::string(j.type_name())));
-
3180  }
-
3181 }
-
3182 
-
3183 template<typename BasicJsonType, typename A1, typename A2>
-
3184 void from_json(const BasicJsonType& j, std::pair<A1, A2>& p)
-
3185 {
-
3186  p = {j.at(0).template get<A1>(), j.at(1).template get<A2>()};
-
3187 }
-
3188 
-
3189 template<typename BasicJsonType, typename Tuple, std::size_t... Idx>
-
3190 void from_json_tuple_impl(const BasicJsonType& j, Tuple& t, index_sequence<Idx...> /*unused*/)
-
3191 {
-
3192  t = std::make_tuple(j.at(Idx).template get<typename std::tuple_element<Idx, Tuple>::type>()...);
-
3193 }
-
3194 
-
3195 template<typename BasicJsonType, typename... Args>
-
3196 void from_json(const BasicJsonType& j, std::tuple<Args...>& t)
-
3197 {
- -
3199 }
-
3200 
-
3201 template <typename BasicJsonType, typename Key, typename Value, typename Compare, typename Allocator,
-
3202  typename = enable_if_t<not std::is_constructible<
-
3203  typename BasicJsonType::string_t, Key>::value>>
-
3204 void from_json(const BasicJsonType& j, std::map<Key, Value, Compare, Allocator>& m)
-
3205 {
-
3206  if (JSON_HEDLEY_UNLIKELY(not j.is_array()))
-
3207  {
-
3208  JSON_THROW(type_error::create(302, "type must be array, but is " + std::string(j.type_name())));
-
3209  }
-
3210  m.clear();
-
3211  for (const auto& p : j)
-
3212  {
-
3213  if (JSON_HEDLEY_UNLIKELY(not p.is_array()))
-
3214  {
-
3215  JSON_THROW(type_error::create(302, "type must be array, but is " + std::string(p.type_name())));
-
3216  }
-
3217  m.emplace(p.at(0).template get<Key>(), p.at(1).template get<Value>());
-
3218  }
-
3219 }
-
3220 
-
3221 template <typename BasicJsonType, typename Key, typename Value, typename Hash, typename KeyEqual, typename Allocator,
-
3222  typename = enable_if_t<not std::is_constructible<
-
3223  typename BasicJsonType::string_t, Key>::value>>
-
3224 void from_json(const BasicJsonType& j, std::unordered_map<Key, Value, Hash, KeyEqual, Allocator>& m)
-
3225 {
-
3226  if (JSON_HEDLEY_UNLIKELY(not j.is_array()))
-
3227  {
-
3228  JSON_THROW(type_error::create(302, "type must be array, but is " + std::string(j.type_name())));
-
3229  }
-
3230  m.clear();
-
3231  for (const auto& p : j)
-
3232  {
-
3233  if (JSON_HEDLEY_UNLIKELY(not p.is_array()))
-
3234  {
-
3235  JSON_THROW(type_error::create(302, "type must be array, but is " + std::string(p.type_name())));
-
3236  }
-
3237  m.emplace(p.at(0).template get<Key>(), p.at(1).template get<Value>());
-
3238  }
-
3239 }
-
3240 
- -
3242 {
-
3243  template<typename BasicJsonType, typename T>
-
3244  auto operator()(const BasicJsonType& j, T& val) const
-
3245  noexcept(noexcept(from_json(j, val)))
-
3246  -> decltype(from_json(j, val), void())
-
3247  {
-
3248  return from_json(j, val);
-
3249  }
-
3250 };
-
3251 } // namespace detail
-
3252 
-
3256 namespace
-
3257 {
- -
3259 } // namespace
-
3260 } // namespace nlohmann
-
3261 
-
3262 // #include <nlohmann/detail/conversions/to_json.hpp>
-
3263 
-
3264 
-
3265 #include <algorithm> // copy
-
3266 #include <ciso646> // or, and, not
-
3267 #include <iterator> // begin, end
-
3268 #include <string> // string
-
3269 #include <tuple> // tuple, get
-
3270 #include <type_traits> // is_same, is_constructible, is_floating_point, is_enum, underlying_type
-
3271 #include <utility> // move, forward, declval, pair
-
3272 #include <valarray> // valarray
-
3273 #include <vector> // vector
-
3274 
-
3275 // #include <nlohmann/detail/iterators/iteration_proxy.hpp>
-
3276 
-
3277 
-
3278 #include <cstddef> // size_t
-
3279 #include <iterator> // input_iterator_tag
-
3280 #include <string> // string, to_string
-
3281 #include <tuple> // tuple_size, get, tuple_element
-
3282 
-
3283 // #include <nlohmann/detail/meta/type_traits.hpp>
-
3284 
-
3285 // #include <nlohmann/detail/value_t.hpp>
-
3286 
-
3287 
-
3288 namespace nlohmann
-
3289 {
-
3290 namespace detail
-
3291 {
-
3292 template<typename string_type>
-
3293 void int_to_string( string_type& target, std::size_t value )
-
3294 {
-
3295  target = std::to_string(value);
-
3296 }
-
3297 template <typename IteratorType> class iteration_proxy_value
-
3298 {
-
3299  public:
-
3300  using difference_type = std::ptrdiff_t;
- -
3302  using pointer = value_type * ;
-
3303  using reference = value_type & ;
-
3304  using iterator_category = std::input_iterator_tag;
-
3305  using string_type = typename std::remove_cv< typename std::remove_reference<decltype( std::declval<IteratorType>().key() ) >::type >::type;
-
3306 
-
3307  private:
-
3309  IteratorType anchor;
-
3311  std::size_t array_index = 0;
-
3313  mutable std::size_t array_index_last = 0;
-
3315  mutable string_type array_index_str = "0";
-
3317  const string_type empty_str = "";
-
3318 
-
3319  public:
-
3320  explicit iteration_proxy_value(IteratorType it) noexcept : anchor(it) {}
-
3321 
- -
3324  {
-
3325  return *this;
-
3326  }
-
3327 
- -
3330  {
-
3331  ++anchor;
-
3332  ++array_index;
-
3333 
-
3334  return *this;
-
3335  }
-
3336 
-
3338  bool operator==(const iteration_proxy_value& o) const
-
3339  {
-
3340  return anchor == o.anchor;
-
3341  }
-
3342 
-
3344  bool operator!=(const iteration_proxy_value& o) const
-
3345  {
-
3346  return anchor != o.anchor;
-
3347  }
-
3348 
-
3350  const string_type& key() const
-
3351  {
-
3352  assert(anchor.m_object != nullptr);
-
3353 
-
3354  switch (anchor.m_object->type())
-
3355  {
-
3356  // use integer array index as key
-
3357  case value_t::array:
-
3358  {
-
3359  if (array_index != array_index_last)
-
3360  {
-
3361  int_to_string( array_index_str, array_index );
-
3362  array_index_last = array_index;
-
3363  }
-
3364  return array_index_str;
-
3365  }
-
3366 
-
3367  // use key from the object
-
3368  case value_t::object:
-
3369  return anchor.key();
-
3370 
-
3371  // use an empty key for all primitive types
-
3372  default:
-
3373  return empty_str;
-
3374  }
-
3375  }
-
3376 
-
3378  typename IteratorType::reference value() const
-
3379  {
-
3380  return anchor.value();
-
3381  }
-
3382 };
-
3383 
-
3385 template<typename IteratorType> class iteration_proxy
-
3386 {
-
3387  private:
-
3389  typename IteratorType::reference container;
-
3390 
-
3391  public:
-
3393  explicit iteration_proxy(typename IteratorType::reference cont) noexcept
-
3394  : container(cont) {}
-
3395 
- -
3398  {
-
3399  return iteration_proxy_value<IteratorType>(container.begin());
-
3400  }
-
3401 
- -
3404  {
-
3405  return iteration_proxy_value<IteratorType>(container.end());
-
3406  }
-
3407 };
-
3408 // Structured Bindings Support
-
3409 // For further reference see https://blog.tartanllama.xyz/structured-bindings/
-
3410 // And see https://github.com/nlohmann/json/pull/1391
-
3411 template <std::size_t N, typename IteratorType, enable_if_t<N == 0, int> = 0>
- -
3413 {
-
3414  return i.key();
-
3415 }
-
3416 // Structured Bindings Support
-
3417 // For further reference see https://blog.tartanllama.xyz/structured-bindings/
-
3418 // And see https://github.com/nlohmann/json/pull/1391
-
3419 template <std::size_t N, typename IteratorType, enable_if_t<N == 1, int> = 0>
-
3420 auto get(const nlohmann::detail::iteration_proxy_value<IteratorType>& i) -> decltype(i.value())
-
3421 {
-
3422  return i.value();
-
3423 }
-
3424 } // namespace detail
-
3425 } // namespace nlohmann
-
3426 
-
3427 // The Addition to the STD Namespace is required to add
-
3428 // Structured Bindings Support to the iteration_proxy_value class
-
3429 // For further reference see https://blog.tartanllama.xyz/structured-bindings/
-
3430 // And see https://github.com/nlohmann/json/pull/1391
-
3431 namespace std
-
3432 {
-
3433 #if defined(__clang__)
-
3434  // Fix: https://github.com/nlohmann/json/issues/1401
-
3435  #pragma clang diagnostic push
-
3436  #pragma clang diagnostic ignored "-Wmismatched-tags"
-
3437 #endif
-
3438 template <typename IteratorType>
-
3439 class tuple_size<::nlohmann::detail::iteration_proxy_value<IteratorType>>
-
3440  : public std::integral_constant<std::size_t, 2> {};
-
3441 
-
3442 template <std::size_t N, typename IteratorType>
-
3443 class tuple_element<N, ::nlohmann::detail::iteration_proxy_value<IteratorType >>
-
3444 {
-
3445  public:
-
3446  using type = decltype(
-
3447  get<N>(std::declval <
- -
3449 };
-
3450 #if defined(__clang__)
-
3451  #pragma clang diagnostic pop
-
3452 #endif
-
3453 } // namespace std
-
3454 
-
3455 // #include <nlohmann/detail/meta/cpp_future.hpp>
-
3456 
-
3457 // #include <nlohmann/detail/meta/type_traits.hpp>
-
3458 
-
3459 // #include <nlohmann/detail/value_t.hpp>
-
3460 
-
3461 
-
3462 namespace nlohmann
-
3463 {
-
3464 namespace detail
-
3465 {
-
3467 // constructors //
-
3469 
-
3470 template<value_t> struct external_constructor;
-
3471 
-
3472 template<>
- -
3474 {
-
3475  template<typename BasicJsonType>
-
3476  static void construct(BasicJsonType& j, typename BasicJsonType::boolean_t b) noexcept
-
3477  {
-
3478  j.m_type = value_t::boolean;
-
3479  j.m_value = b;
-
3480  j.assert_invariant();
-
3481  }
-
3482 };
-
3483 
-
3484 template<>
- -
3486 {
-
3487  template<typename BasicJsonType>
-
3488  static void construct(BasicJsonType& j, const typename BasicJsonType::string_t& s)
-
3489  {
-
3490  j.m_type = value_t::string;
-
3491  j.m_value = s;
-
3492  j.assert_invariant();
-
3493  }
-
3494 
-
3495  template<typename BasicJsonType>
-
3496  static void construct(BasicJsonType& j, typename BasicJsonType::string_t&& s)
-
3497  {
-
3498  j.m_type = value_t::string;
-
3499  j.m_value = std::move(s);
-
3500  j.assert_invariant();
-
3501  }
-
3502 
-
3503  template<typename BasicJsonType, typename CompatibleStringType,
- -
3505  int> = 0>
-
3506  static void construct(BasicJsonType& j, const CompatibleStringType& str)
-
3507  {
-
3508  j.m_type = value_t::string;
-
3509  j.m_value.string = j.template create<typename BasicJsonType::string_t>(str);
-
3510  j.assert_invariant();
-
3511  }
-
3512 };
-
3513 
-
3514 template<>
- -
3516 {
-
3517  template<typename BasicJsonType>
-
3518  static void construct(BasicJsonType& j, typename BasicJsonType::number_float_t val) noexcept
-
3519  {
-
3520  j.m_type = value_t::number_float;
-
3521  j.m_value = val;
-
3522  j.assert_invariant();
-
3523  }
-
3524 };
-
3525 
-
3526 template<>
- -
3528 {
-
3529  template<typename BasicJsonType>
-
3530  static void construct(BasicJsonType& j, typename BasicJsonType::number_unsigned_t val) noexcept
-
3531  {
-
3532  j.m_type = value_t::number_unsigned;
-
3533  j.m_value = val;
-
3534  j.assert_invariant();
-
3535  }
-
3536 };
-
3537 
-
3538 template<>
- -
3540 {
-
3541  template<typename BasicJsonType>
-
3542  static void construct(BasicJsonType& j, typename BasicJsonType::number_integer_t val) noexcept
-
3543  {
-
3544  j.m_type = value_t::number_integer;
-
3545  j.m_value = val;
-
3546  j.assert_invariant();
-
3547  }
-
3548 };
-
3549 
-
3550 template<>
- -
3552 {
-
3553  template<typename BasicJsonType>
-
3554  static void construct(BasicJsonType& j, const typename BasicJsonType::array_t& arr)
-
3555  {
-
3556  j.m_type = value_t::array;
-
3557  j.m_value = arr;
-
3558  j.assert_invariant();
-
3559  }
-
3560 
-
3561  template<typename BasicJsonType>
-
3562  static void construct(BasicJsonType& j, typename BasicJsonType::array_t&& arr)
-
3563  {
-
3564  j.m_type = value_t::array;
-
3565  j.m_value = std::move(arr);
-
3566  j.assert_invariant();
-
3567  }
-
3568 
-
3569  template<typename BasicJsonType, typename CompatibleArrayType,
- -
3571  int> = 0>
-
3572  static void construct(BasicJsonType& j, const CompatibleArrayType& arr)
-
3573  {
-
3574  using std::begin;
-
3575  using std::end;
-
3576  j.m_type = value_t::array;
-
3577  j.m_value.array = j.template create<typename BasicJsonType::array_t>(begin(arr), end(arr));
-
3578  j.assert_invariant();
-
3579  }
-
3580 
-
3581  template<typename BasicJsonType>
-
3582  static void construct(BasicJsonType& j, const std::vector<bool>& arr)
-
3583  {
-
3584  j.m_type = value_t::array;
-
3585  j.m_value = value_t::array;
-
3586  j.m_value.array->reserve(arr.size());
-
3587  for (const bool x : arr)
-
3588  {
-
3589  j.m_value.array->push_back(x);
-
3590  }
-
3591  j.assert_invariant();
-
3592  }
-
3593 
-
3594  template<typename BasicJsonType, typename T,
- -
3596  static void construct(BasicJsonType& j, const std::valarray<T>& arr)
-
3597  {
-
3598  j.m_type = value_t::array;
-
3599  j.m_value = value_t::array;
-
3600  j.m_value.array->resize(arr.size());
-
3601  if (arr.size() > 0)
-
3602  {
-
3603  std::copy(std::begin(arr), std::end(arr), j.m_value.array->begin());
-
3604  }
-
3605  j.assert_invariant();
-
3606  }
-
3607 };
-
3608 
-
3609 template<>
- -
3611 {
-
3612  template<typename BasicJsonType>
-
3613  static void construct(BasicJsonType& j, const typename BasicJsonType::object_t& obj)
-
3614  {
-
3615  j.m_type = value_t::object;
-
3616  j.m_value = obj;
-
3617  j.assert_invariant();
-
3618  }
-
3619 
-
3620  template<typename BasicJsonType>
-
3621  static void construct(BasicJsonType& j, typename BasicJsonType::object_t&& obj)
-
3622  {
-
3623  j.m_type = value_t::object;
-
3624  j.m_value = std::move(obj);
-
3625  j.assert_invariant();
-
3626  }
-
3627 
-
3628  template<typename BasicJsonType, typename CompatibleObjectType,
- -
3630  static void construct(BasicJsonType& j, const CompatibleObjectType& obj)
-
3631  {
-
3632  using std::begin;
-
3633  using std::end;
-
3634 
-
3635  j.m_type = value_t::object;
-
3636  j.m_value.object = j.template create<typename BasicJsonType::object_t>(begin(obj), end(obj));
-
3637  j.assert_invariant();
-
3638  }
-
3639 };
-
3640 
-
3642 // to_json //
-
3644 
-
3645 template<typename BasicJsonType, typename T,
-
3646  enable_if_t<std::is_same<T, typename BasicJsonType::boolean_t>::value, int> = 0>
-
3647 void to_json(BasicJsonType& j, T b) noexcept
-
3648 {
- -
3650 }
-
3651 
-
3652 template<typename BasicJsonType, typename CompatibleString,
-
3653  enable_if_t<std::is_constructible<typename BasicJsonType::string_t, CompatibleString>::value, int> = 0>
-
3654 void to_json(BasicJsonType& j, const CompatibleString& s)
-
3655 {
- -
3657 }
-
3658 
-
3659 template<typename BasicJsonType>
-
3660 void to_json(BasicJsonType& j, typename BasicJsonType::string_t&& s)
-
3661 {
- -
3663 }
-
3664 
-
3665 template<typename BasicJsonType, typename FloatType,
-
3666  enable_if_t<std::is_floating_point<FloatType>::value, int> = 0>
-
3667 void to_json(BasicJsonType& j, FloatType val) noexcept
-
3668 {
-
3669  external_constructor<value_t::number_float>::construct(j, static_cast<typename BasicJsonType::number_float_t>(val));
-
3670 }
-
3671 
-
3672 template<typename BasicJsonType, typename CompatibleNumberUnsignedType,
-
3673  enable_if_t<is_compatible_integer_type<typename BasicJsonType::number_unsigned_t, CompatibleNumberUnsignedType>::value, int> = 0>
-
3674 void to_json(BasicJsonType& j, CompatibleNumberUnsignedType val) noexcept
-
3675 {
-
3676  external_constructor<value_t::number_unsigned>::construct(j, static_cast<typename BasicJsonType::number_unsigned_t>(val));
-
3677 }
-
3678 
-
3679 template<typename BasicJsonType, typename CompatibleNumberIntegerType,
-
3680  enable_if_t<is_compatible_integer_type<typename BasicJsonType::number_integer_t, CompatibleNumberIntegerType>::value, int> = 0>
-
3681 void to_json(BasicJsonType& j, CompatibleNumberIntegerType val) noexcept
-
3682 {
-
3683  external_constructor<value_t::number_integer>::construct(j, static_cast<typename BasicJsonType::number_integer_t>(val));
-
3684 }
-
3685 
-
3686 template<typename BasicJsonType, typename EnumType,
-
3687  enable_if_t<std::is_enum<EnumType>::value, int> = 0>
-
3688 void to_json(BasicJsonType& j, EnumType e) noexcept
-
3689 {
-
3690  using underlying_type = typename std::underlying_type<EnumType>::type;
-
3691  external_constructor<value_t::number_integer>::construct(j, static_cast<underlying_type>(e));
-
3692 }
-
3693 
-
3694 template<typename BasicJsonType>
-
3695 void to_json(BasicJsonType& j, const std::vector<bool>& e)
-
3696 {
- -
3698 }
-
3699 
-
3700 template <typename BasicJsonType, typename CompatibleArrayType,
-
3701  enable_if_t<is_compatible_array_type<BasicJsonType,
-
3702  CompatibleArrayType>::value and
-
3703  not is_compatible_object_type<
-
3704  BasicJsonType, CompatibleArrayType>::value and
-
3705  not is_compatible_string_type<BasicJsonType, CompatibleArrayType>::value and
-
3706  not is_basic_json<CompatibleArrayType>::value,
-
3707  int> = 0>
-
3708 void to_json(BasicJsonType& j, const CompatibleArrayType& arr)
-
3709 {
- -
3711 }
-
3712 
-
3713 template<typename BasicJsonType, typename T,
-
3714  enable_if_t<std::is_convertible<T, BasicJsonType>::value, int> = 0>
-
3715 void to_json(BasicJsonType& j, const std::valarray<T>& arr)
-
3716 {
- -
3718 }
-
3719 
-
3720 template<typename BasicJsonType>
-
3721 void to_json(BasicJsonType& j, typename BasicJsonType::array_t&& arr)
-
3722 {
- -
3724 }
-
3725 
-
3726 template<typename BasicJsonType, typename CompatibleObjectType,
-
3727  enable_if_t<is_compatible_object_type<BasicJsonType, CompatibleObjectType>::value and not is_basic_json<CompatibleObjectType>::value, int> = 0>
-
3728 void to_json(BasicJsonType& j, const CompatibleObjectType& obj)
-
3729 {
- -
3731 }
-
3732 
-
3733 template<typename BasicJsonType>
-
3734 void to_json(BasicJsonType& j, typename BasicJsonType::object_t&& obj)
-
3735 {
- -
3737 }
-
3738 
-
3739 template <
-
3740  typename BasicJsonType, typename T, std::size_t N,
-
3741  enable_if_t<not std::is_constructible<typename BasicJsonType::string_t,
-
3742  const T(&)[N]>::value,
-
3743  int> = 0 >
-
3744 void to_json(BasicJsonType& j, const T(&arr)[N])
-
3745 {
- -
3747 }
-
3748 
-
3749 template < typename BasicJsonType, typename T1, typename T2, enable_if_t < std::is_constructible<BasicJsonType, T1>::value&& std::is_constructible<BasicJsonType, T2>::value, int > = 0 >
-
3750 void to_json(BasicJsonType& j, const std::pair<T1, T2>& p)
-
3751 {
-
3752  j = { p.first, p.second };
-
3753 }
-
3754 
-
3755 // for https://github.com/nlohmann/json/pull/1134
-
3756 template < typename BasicJsonType, typename T,
-
3757  enable_if_t<std::is_same<T, iteration_proxy_value<typename BasicJsonType::iterator>>::value, int> = 0>
-
3758 void to_json(BasicJsonType& j, const T& b)
-
3759 {
-
3760  j = { {b.key(), b.value()} };
-
3761 }
-
3762 
-
3763 template<typename BasicJsonType, typename Tuple, std::size_t... Idx>
-
3764 void to_json_tuple_impl(BasicJsonType& j, const Tuple& t, index_sequence<Idx...> /*unused*/)
-
3765 {
-
3766  j = { std::get<Idx>(t)... };
-
3767 }
-
3768 
-
3769 template<typename BasicJsonType, typename T, enable_if_t<is_constructible_tuple<BasicJsonType, T>::value, int > = 0>
-
3770 void to_json(BasicJsonType& j, const T& t)
-
3771 {
-
3772  to_json_tuple_impl(j, t, make_index_sequence<std::tuple_size<T>::value> {});
-
3773 }
-
3774 
- -
3776 {
-
3777  template<typename BasicJsonType, typename T>
-
3778  auto operator()(BasicJsonType& j, T&& val) const noexcept(noexcept(to_json(j, std::forward<T>(val))))
-
3779  -> decltype(to_json(j, std::forward<T>(val)), void())
-
3780  {
-
3781  return to_json(j, std::forward<T>(val));
-
3782  }
-
3783 };
-
3784 } // namespace detail
-
3785 
-
3787 namespace
-
3788 {
- -
3790 } // namespace
-
3791 } // namespace nlohmann
-
3792 
-
3793 
-
3794 namespace nlohmann
-
3795 {
-
3796 
-
3797 template<typename, typename>
-
3798 struct adl_serializer
-
3799 {
-
3809  template<typename BasicJsonType, typename ValueType>
-
3810  static auto from_json(BasicJsonType&& j, ValueType& val) noexcept(
-
3811  noexcept(::nlohmann::from_json(std::forward<BasicJsonType>(j), val)))
-
3812  -> decltype(::nlohmann::from_json(std::forward<BasicJsonType>(j), val), void())
-
3813  {
-
3814  ::nlohmann::from_json(std::forward<BasicJsonType>(j), val);
-
3815  }
-
3816 
-
3826  template <typename BasicJsonType, typename ValueType>
-
3827  static auto to_json(BasicJsonType& j, ValueType&& val) noexcept(
-
3828  noexcept(::nlohmann::to_json(j, std::forward<ValueType>(val))))
-
3829  -> decltype(::nlohmann::to_json(j, std::forward<ValueType>(val)), void())
-
3830  {
-
3831  ::nlohmann::to_json(j, std::forward<ValueType>(val));
-
3832  }
-
3833 };
-
3834 
-
3835 } // namespace nlohmann
-
3836 
-
3837 // #include <nlohmann/detail/conversions/from_json.hpp>
-
3838 
-
3839 // #include <nlohmann/detail/conversions/to_json.hpp>
-
3840 
-
3841 // #include <nlohmann/detail/exceptions.hpp>
-
3842 
-
3843 // #include <nlohmann/detail/input/binary_reader.hpp>
-
3844 
-
3845 
-
3846 #include <algorithm> // generate_n
-
3847 #include <array> // array
-
3848 #include <cassert> // assert
-
3849 #include <cmath> // ldexp
-
3850 #include <cstddef> // size_t
-
3851 #include <cstdint> // uint8_t, uint16_t, uint32_t, uint64_t
-
3852 #include <cstdio> // snprintf
-
3853 #include <cstring> // memcpy
-
3854 #include <iterator> // back_inserter
-
3855 #include <limits> // numeric_limits
-
3856 #include <string> // char_traits, string
-
3857 #include <utility> // make_pair, move
-
3858 
-
3859 // #include <nlohmann/detail/exceptions.hpp>
-
3860 
-
3861 // #include <nlohmann/detail/input/input_adapters.hpp>
-
3862 
-
3863 
-
3864 #include <array> // array
-
3865 #include <cassert> // assert
-
3866 #include <cstddef> // size_t
-
3867 #include <cstdio> //FILE *
-
3868 #include <cstring> // strlen
-
3869 #include <istream> // istream
-
3870 #include <iterator> // begin, end, iterator_traits, random_access_iterator_tag, distance, next
-
3871 #include <memory> // shared_ptr, make_shared, addressof
-
3872 #include <numeric> // accumulate
-
3873 #include <string> // string, char_traits
-
3874 #include <type_traits> // enable_if, is_base_of, is_pointer, is_integral, remove_pointer
-
3875 #include <utility> // pair, declval
-
3876 
-
3877 // #include <nlohmann/detail/iterators/iterator_traits.hpp>
-
3878 
-
3879 // #include <nlohmann/detail/macro_scope.hpp>
-
3880 
-
3881 
-
3882 namespace nlohmann
-
3883 {
-
3884 namespace detail
-
3885 {
- -
3888 
-
3890 // input adapters //
-
3892 
- -
3905 {
-
3907  virtual std::char_traits<char>::int_type get_character() = 0;
-
3908  virtual ~input_adapter_protocol() = default;
-
3909 };
-
3910 
-
3912 using input_adapter_t = std::shared_ptr<input_adapter_protocol>;
-
3913 
- -
3919 {
-
3920  public:
- -
3922  explicit file_input_adapter(std::FILE* f) noexcept
-
3923  : m_file(f)
-
3924  {}
-
3925 
-
3926  // make class move-only
-
3927  file_input_adapter(const file_input_adapter&) = delete;
- - - -
3931  ~file_input_adapter() override = default;
-
3932 
-
3933  std::char_traits<char>::int_type get_character() noexcept override
-
3934  {
-
3935  return std::fgetc(m_file);
-
3936  }
-
3937 
-
3938  private:
-
3940  std::FILE* m_file;
-
3941 };
-
3942 
-
3943 
- -
3954 {
-
3955  public:
- -
3957  {
-
3958  // clear stream flags; we use underlying streambuf I/O, do not
-
3959  // maintain ifstream flags, except eof
-
3960  is.clear(is.rdstate() & std::ios::eofbit);
-
3961  }
-
3962 
-
3963  explicit input_stream_adapter(std::istream& i)
-
3964  : is(i), sb(*i.rdbuf())
-
3965  {}
-
3966 
-
3967  // delete because of pointer members
-
3968  input_stream_adapter(const input_stream_adapter&) = delete;
- - - -
3972 
-
3973  // std::istream/std::streambuf use std::char_traits<char>::to_int_type, to
-
3974  // ensure that std::char_traits<char>::eof() and the character 0xFF do not
-
3975  // end up as the same value, eg. 0xFFFFFFFF.
-
3976  std::char_traits<char>::int_type get_character() override
-
3977  {
-
3978  auto res = sb.sbumpc();
-
3979  // set eof manually, as we don't use the istream interface.
-
3980  if (res == EOF)
-
3981  {
-
3982  is.clear(is.rdstate() | std::ios::eofbit);
-
3983  }
-
3984  return res;
-
3985  }
-
3986 
-
3987  private:
-
3989  std::istream& is;
-
3990  std::streambuf& sb;
-
3991 };
-
3992 
- -
3995 {
-
3996  public:
-
3997  input_buffer_adapter(const char* b, const std::size_t l) noexcept
-
3998  : cursor(b), limit(b == nullptr ? nullptr : (b + l))
-
3999  {}
-
4000 
-
4001  // delete because of pointer members
-
4002  input_buffer_adapter(const input_buffer_adapter&) = delete;
- - - -
4006  ~input_buffer_adapter() override = default;
-
4007 
-
4008  std::char_traits<char>::int_type get_character() noexcept override
-
4009  {
-
4010  if (JSON_HEDLEY_LIKELY(cursor < limit))
-
4011  {
-
4012  assert(cursor != nullptr and limit != nullptr);
-
4013  return std::char_traits<char>::to_int_type(*(cursor++));
-
4014  }
-
4015 
-
4016  return std::char_traits<char>::eof();
-
4017  }
-
4018 
-
4019  private:
-
4021  const char* cursor;
-
4023  const char* const limit;
-
4024 };
-
4025 
-
4026 template<typename WideStringType, size_t T>
- -
4028 {
-
4029  // UTF-32
-
4030  static void fill_buffer(const WideStringType& str,
-
4031  size_t& current_wchar,
-
4032  std::array<std::char_traits<char>::int_type, 4>& utf8_bytes,
-
4033  size_t& utf8_bytes_index,
-
4034  size_t& utf8_bytes_filled)
-
4035  {
-
4036  utf8_bytes_index = 0;
-
4037 
-
4038  if (current_wchar == str.size())
-
4039  {
-
4040  utf8_bytes[0] = std::char_traits<char>::eof();
-
4041  utf8_bytes_filled = 1;
-
4042  }
-
4043  else
-
4044  {
-
4045  // get the current character
-
4046  const auto wc = static_cast<unsigned int>(str[current_wchar++]);
-
4047 
-
4048  // UTF-32 to UTF-8 encoding
-
4049  if (wc < 0x80)
-
4050  {
-
4051  utf8_bytes[0] = static_cast<std::char_traits<char>::int_type>(wc);
-
4052  utf8_bytes_filled = 1;
-
4053  }
-
4054  else if (wc <= 0x7FF)
-
4055  {
-
4056  utf8_bytes[0] = static_cast<std::char_traits<char>::int_type>(0xC0u | ((wc >> 6u) & 0x1Fu));
-
4057  utf8_bytes[1] = static_cast<std::char_traits<char>::int_type>(0x80u | (wc & 0x3Fu));
-
4058  utf8_bytes_filled = 2;
-
4059  }
-
4060  else if (wc <= 0xFFFF)
-
4061  {
-
4062  utf8_bytes[0] = static_cast<std::char_traits<char>::int_type>(0xE0u | ((wc >> 12u) & 0x0Fu));
-
4063  utf8_bytes[1] = static_cast<std::char_traits<char>::int_type>(0x80u | ((wc >> 6u) & 0x3Fu));
-
4064  utf8_bytes[2] = static_cast<std::char_traits<char>::int_type>(0x80u | (wc & 0x3Fu));
-
4065  utf8_bytes_filled = 3;
-
4066  }
-
4067  else if (wc <= 0x10FFFF)
-
4068  {
-
4069  utf8_bytes[0] = static_cast<std::char_traits<char>::int_type>(0xF0u | ((wc >> 18u) & 0x07u));
-
4070  utf8_bytes[1] = static_cast<std::char_traits<char>::int_type>(0x80u | ((wc >> 12u) & 0x3Fu));
-
4071  utf8_bytes[2] = static_cast<std::char_traits<char>::int_type>(0x80u | ((wc >> 6u) & 0x3Fu));
-
4072  utf8_bytes[3] = static_cast<std::char_traits<char>::int_type>(0x80u | (wc & 0x3Fu));
-
4073  utf8_bytes_filled = 4;
-
4074  }
-
4075  else
-
4076  {
-
4077  // unknown character
-
4078  utf8_bytes[0] = static_cast<std::char_traits<char>::int_type>(wc);
-
4079  utf8_bytes_filled = 1;
-
4080  }
-
4081  }
-
4082  }
-
4083 };
-
4084 
-
4085 template<typename WideStringType>
-
4086 struct wide_string_input_helper<WideStringType, 2>
-
4087 {
-
4088  // UTF-16
-
4089  static void fill_buffer(const WideStringType& str,
-
4090  size_t& current_wchar,
-
4091  std::array<std::char_traits<char>::int_type, 4>& utf8_bytes,
-
4092  size_t& utf8_bytes_index,
-
4093  size_t& utf8_bytes_filled)
-
4094  {
-
4095  utf8_bytes_index = 0;
-
4096 
-
4097  if (current_wchar == str.size())
-
4098  {
-
4099  utf8_bytes[0] = std::char_traits<char>::eof();
-
4100  utf8_bytes_filled = 1;
-
4101  }
-
4102  else
-
4103  {
-
4104  // get the current character
-
4105  const auto wc = static_cast<unsigned int>(str[current_wchar++]);
-
4106 
-
4107  // UTF-16 to UTF-8 encoding
-
4108  if (wc < 0x80)
-
4109  {
-
4110  utf8_bytes[0] = static_cast<std::char_traits<char>::int_type>(wc);
-
4111  utf8_bytes_filled = 1;
-
4112  }
-
4113  else if (wc <= 0x7FF)
-
4114  {
-
4115  utf8_bytes[0] = static_cast<std::char_traits<char>::int_type>(0xC0u | ((wc >> 6u)));
-
4116  utf8_bytes[1] = static_cast<std::char_traits<char>::int_type>(0x80u | (wc & 0x3Fu));
-
4117  utf8_bytes_filled = 2;
-
4118  }
-
4119  else if (0xD800 > wc or wc >= 0xE000)
-
4120  {
-
4121  utf8_bytes[0] = static_cast<std::char_traits<char>::int_type>(0xE0u | ((wc >> 12u)));
-
4122  utf8_bytes[1] = static_cast<std::char_traits<char>::int_type>(0x80u | ((wc >> 6u) & 0x3Fu));
-
4123  utf8_bytes[2] = static_cast<std::char_traits<char>::int_type>(0x80u | (wc & 0x3Fu));
-
4124  utf8_bytes_filled = 3;
-
4125  }
-
4126  else
-
4127  {
-
4128  if (current_wchar < str.size())
-
4129  {
-
4130  const auto wc2 = static_cast<unsigned int>(str[current_wchar++]);
-
4131  const auto charcode = 0x10000u + (((wc & 0x3FFu) << 10u) | (wc2 & 0x3FFu));
-
4132  utf8_bytes[0] = static_cast<std::char_traits<char>::int_type>(0xF0u | (charcode >> 18u));
-
4133  utf8_bytes[1] = static_cast<std::char_traits<char>::int_type>(0x80u | ((charcode >> 12u) & 0x3Fu));
-
4134  utf8_bytes[2] = static_cast<std::char_traits<char>::int_type>(0x80u | ((charcode >> 6u) & 0x3Fu));
-
4135  utf8_bytes[3] = static_cast<std::char_traits<char>::int_type>(0x80u | (charcode & 0x3Fu));
-
4136  utf8_bytes_filled = 4;
-
4137  }
-
4138  else
-
4139  {
-
4140  // unknown character
-
4141  ++current_wchar;
-
4142  utf8_bytes[0] = static_cast<std::char_traits<char>::int_type>(wc);
-
4143  utf8_bytes_filled = 1;
-
4144  }
-
4145  }
-
4146  }
-
4147  }
-
4148 };
-
4149 
-
4150 template<typename WideStringType>
- -
4152 {
-
4153  public:
-
4154  explicit wide_string_input_adapter(const WideStringType& w) noexcept
-
4155  : str(w)
-
4156  {}
-
4157 
-
4158  std::char_traits<char>::int_type get_character() noexcept override
-
4159  {
-
4160  // check if buffer needs to be filled
-
4161  if (utf8_bytes_index == utf8_bytes_filled)
-
4162  {
-
4163  fill_buffer<sizeof(typename WideStringType::value_type)>();
-
4164 
-
4165  assert(utf8_bytes_filled > 0);
-
4166  assert(utf8_bytes_index == 0);
-
4167  }
-
4168 
-
4169  // use buffer
-
4170  assert(utf8_bytes_filled > 0);
-
4171  assert(utf8_bytes_index < utf8_bytes_filled);
-
4172  return utf8_bytes[utf8_bytes_index++];
-
4173  }
-
4174 
-
4175  private:
-
4176  template<size_t T>
-
4177  void fill_buffer()
-
4178  {
-
4179  wide_string_input_helper<WideStringType, T>::fill_buffer(str, current_wchar, utf8_bytes, utf8_bytes_index, utf8_bytes_filled);
-
4180  }
-
4181 
-
4183  const WideStringType& str;
-
4184 
-
4186  std::size_t current_wchar = 0;
-
4187 
-
4189  std::array<std::char_traits<char>::int_type, 4> utf8_bytes = {{0, 0, 0, 0}};
-
4190 
-
4192  std::size_t utf8_bytes_index = 0;
-
4194  std::size_t utf8_bytes_filled = 0;
-
4195 };
-
4196 
- -
4198 {
-
4199  public:
-
4200  // native support
- -
4202  input_adapter(std::FILE* file)
-
4203  : ia(std::make_shared<file_input_adapter>(file)) {}
-
4205  input_adapter(std::istream& i)
-
4206  : ia(std::make_shared<input_stream_adapter>(i)) {}
-
4207 
-
4209  input_adapter(std::istream&& i)
-
4210  : ia(std::make_shared<input_stream_adapter>(i)) {}
-
4211 
-
4212  input_adapter(const std::wstring& ws)
-
4213  : ia(std::make_shared<wide_string_input_adapter<std::wstring>>(ws)) {}
-
4214 
-
4215  input_adapter(const std::u16string& ws)
-
4216  : ia(std::make_shared<wide_string_input_adapter<std::u16string>>(ws)) {}
-
4217 
-
4218  input_adapter(const std::u32string& ws)
-
4219  : ia(std::make_shared<wide_string_input_adapter<std::u32string>>(ws)) {}
-
4220 
-
4222  template<typename CharT,
-
4223  typename std::enable_if<
-
4224  std::is_pointer<CharT>::value and
-
4225  std::is_integral<typename std::remove_pointer<CharT>::type>::value and
-
4226  sizeof(typename std::remove_pointer<CharT>::type) == 1,
-
4227  int>::type = 0>
-
4228  input_adapter(CharT b, std::size_t l)
-
4229  : ia(std::make_shared<input_buffer_adapter>(reinterpret_cast<const char*>(b), l)) {}
-
4230 
-
4231  // derived support
-
4232 
-
4234  template<typename CharT,
-
4235  typename std::enable_if<
-
4236  std::is_pointer<CharT>::value and
-
4237  std::is_integral<typename std::remove_pointer<CharT>::type>::value and
-
4238  sizeof(typename std::remove_pointer<CharT>::type) == 1,
-
4239  int>::type = 0>
-
4240  input_adapter(CharT b)
-
4241  : input_adapter(reinterpret_cast<const char*>(b),
-
4242  std::strlen(reinterpret_cast<const char*>(b))) {}
-
4243 
-
4245  template<class IteratorType,
-
4246  typename std::enable_if<
-
4247  std::is_same<typename iterator_traits<IteratorType>::iterator_category, std::random_access_iterator_tag>::value,
-
4248  int>::type = 0>
-
4249  input_adapter(IteratorType first, IteratorType last)
-
4250  {
-
4251 #ifndef NDEBUG
-
4252  // assertion to check that the iterator range is indeed contiguous,
-
4253  // see http://stackoverflow.com/a/35008842/266378 for more discussion
-
4254  const auto is_contiguous = std::accumulate(
-
4255  first, last, std::pair<bool, int>(true, 0),
-
4256  [&first](std::pair<bool, int> res, decltype(*first) val)
-
4257  {
-
4258  res.first &= (val == *(std::next(std::addressof(*first), res.second++)));
-
4259  return res;
-
4260  }).first;
-
4261  assert(is_contiguous);
-
4262 #endif
-
4263 
-
4264  // assertion to check that each element is 1 byte long
-
4265  static_assert(
-
4266  sizeof(typename iterator_traits<IteratorType>::value_type) == 1,
-
4267  "each element in the iterator range must have the size of 1 byte");
-
4268 
-
4269  const auto len = static_cast<size_t>(std::distance(first, last));
-
4270  if (JSON_HEDLEY_LIKELY(len > 0))
-
4271  {
-
4272  // there is at least one element: use the address of first
-
4273  ia = std::make_shared<input_buffer_adapter>(reinterpret_cast<const char*>(&(*first)), len);
-
4274  }
-
4275  else
-
4276  {
-
4277  // the address of first cannot be used: use nullptr
-
4278  ia = std::make_shared<input_buffer_adapter>(nullptr, len);
-
4279  }
-
4280  }
-
4281 
-
4283  template<class T, std::size_t N>
-
4284  input_adapter(T (&array)[N])
-
4285  : input_adapter(std::begin(array), std::end(array)) {}
-
4286 
-
4288  template<class ContiguousContainer, typename
-
4289  std::enable_if<not std::is_pointer<ContiguousContainer>::value and
-
4290  std::is_base_of<std::random_access_iterator_tag, typename iterator_traits<decltype(std::begin(std::declval<ContiguousContainer const>()))>::iterator_category>::value,
-
4291  int>::type = 0>
-
4292  input_adapter(const ContiguousContainer& c)
-
4293  : input_adapter(std::begin(c), std::end(c)) {}
-
4294 
-
4295  operator input_adapter_t()
-
4296  {
-
4297  return ia;
-
4298  }
-
4299 
-
4300  private:
-
4302  input_adapter_t ia = nullptr;
-
4303 };
-
4304 } // namespace detail
-
4305 } // namespace nlohmann
-
4306 
-
4307 // #include <nlohmann/detail/input/json_sax.hpp>
-
4308 
-
4309 
-
4310 #include <cassert> // assert
-
4311 #include <cstddef>
-
4312 #include <string> // string
-
4313 #include <utility> // move
-
4314 #include <vector> // vector
-
4315 
-
4316 // #include <nlohmann/detail/exceptions.hpp>
-
4317 
-
4318 // #include <nlohmann/detail/macro_scope.hpp>
-
4319 
-
4320 
-
4321 namespace nlohmann
-
4322 {
-
4323 
-
4332 template<typename BasicJsonType>
-
4333 struct json_sax
-
4334 {
-
4336  using number_integer_t = typename BasicJsonType::number_integer_t;
-
4338  using number_unsigned_t = typename BasicJsonType::number_unsigned_t;
-
4340  using number_float_t = typename BasicJsonType::number_float_t;
-
4342  using string_t = typename BasicJsonType::string_t;
-
4343 
-
4348  virtual bool null() = 0;
-
4349 
-
4355  virtual bool boolean(bool val) = 0;
-
4356 
-
4362  virtual bool number_integer(number_integer_t val) = 0;
-
4363 
-
4369  virtual bool number_unsigned(number_unsigned_t val) = 0;
-
4370 
-
4377  virtual bool number_float(number_float_t val, const string_t& s) = 0;
-
4378 
-
4385  virtual bool string(string_t& val) = 0;
-
4386 
-
4393  virtual bool start_object(std::size_t elements) = 0;
-
4394 
-
4401  virtual bool key(string_t& val) = 0;
-
4402 
-
4407  virtual bool end_object() = 0;
-
4408 
-
4415  virtual bool start_array(std::size_t elements) = 0;
-
4416 
-
4421  virtual bool end_array() = 0;
-
4422 
-
4430  virtual bool parse_error(std::size_t position,
-
4431  const std::string& last_token,
-
4432  const detail::exception& ex) = 0;
-
4433 
-
4434  virtual ~json_sax() = default;
-
4435 };
-
4436 
-
4437 
-
4438 namespace detail
-
4439 {
-
4453 template<typename BasicJsonType>
- -
4455 {
-
4456  public:
-
4457  using number_integer_t = typename BasicJsonType::number_integer_t;
-
4458  using number_unsigned_t = typename BasicJsonType::number_unsigned_t;
-
4459  using number_float_t = typename BasicJsonType::number_float_t;
-
4460  using string_t = typename BasicJsonType::string_t;
-
4461 
-
4467  explicit json_sax_dom_parser(BasicJsonType& r, const bool allow_exceptions_ = true)
-
4468  : root(r), allow_exceptions(allow_exceptions_)
-
4469  {}
-
4470 
-
4471  // make class move-only
-
4472  json_sax_dom_parser(const json_sax_dom_parser&) = delete;
- - - -
4476  ~json_sax_dom_parser() = default;
-
4477 
-
4478  bool null()
-
4479  {
-
4480  handle_value(nullptr);
-
4481  return true;
-
4482  }
-
4483 
-
4484  bool boolean(bool val)
-
4485  {
-
4486  handle_value(val);
-
4487  return true;
-
4488  }
-
4489 
- -
4491  {
-
4492  handle_value(val);
-
4493  return true;
-
4494  }
-
4495 
- -
4497  {
-
4498  handle_value(val);
-
4499  return true;
-
4500  }
-
4501 
-
4502  bool number_float(number_float_t val, const string_t& /*unused*/)
-
4503  {
-
4504  handle_value(val);
-
4505  return true;
-
4506  }
-
4507 
-
4508  bool string(string_t& val)
-
4509  {
-
4510  handle_value(val);
-
4511  return true;
-
4512  }
-
4513 
-
4514  bool start_object(std::size_t len)
-
4515  {
-
4516  ref_stack.push_back(handle_value(BasicJsonType::value_t::object));
-
4517 
-
4518  if (JSON_HEDLEY_UNLIKELY(len != std::size_t(-1) and len > ref_stack.back()->max_size()))
-
4519  {
- -
4521  "excessive object size: " + std::to_string(len)));
-
4522  }
-
4523 
-
4524  return true;
-
4525  }
-
4526 
-
4527  bool key(string_t& val)
-
4528  {
-
4529  // add null at given key and store the reference for later
-
4530  object_element = &(ref_stack.back()->m_value.object->operator[](val));
-
4531  return true;
-
4532  }
-
4533 
-
4534  bool end_object()
-
4535  {
-
4536  ref_stack.pop_back();
-
4537  return true;
-
4538  }
-
4539 
-
4540  bool start_array(std::size_t len)
-
4541  {
-
4542  ref_stack.push_back(handle_value(BasicJsonType::value_t::array));
-
4543 
-
4544  if (JSON_HEDLEY_UNLIKELY(len != std::size_t(-1) and len > ref_stack.back()->max_size()))
-
4545  {
- -
4547  "excessive array size: " + std::to_string(len)));
-
4548  }
-
4549 
-
4550  return true;
-
4551  }
-
4552 
-
4553  bool end_array()
-
4554  {
-
4555  ref_stack.pop_back();
-
4556  return true;
-
4557  }
-
4558 
-
4559  bool parse_error(std::size_t /*unused*/, const std::string& /*unused*/,
-
4560  const detail::exception& ex)
-
4561  {
-
4562  errored = true;
-
4563  if (allow_exceptions)
-
4564  {
-
4565  // determine the proper exception type from the id
-
4566  switch ((ex.id / 100) % 100)
-
4567  {
-
4568  case 1:
-
4569  JSON_THROW(*static_cast<const detail::parse_error*>(&ex));
-
4570  case 4:
-
4571  JSON_THROW(*static_cast<const detail::out_of_range*>(&ex));
-
4572  // LCOV_EXCL_START
-
4573  case 2:
-
4574  JSON_THROW(*static_cast<const detail::invalid_iterator*>(&ex));
-
4575  case 3:
-
4576  JSON_THROW(*static_cast<const detail::type_error*>(&ex));
-
4577  case 5:
-
4578  JSON_THROW(*static_cast<const detail::other_error*>(&ex));
-
4579  default:
-
4580  assert(false);
-
4581  // LCOV_EXCL_STOP
-
4582  }
-
4583  }
-
4584  return false;
-
4585  }
-
4586 
-
4587  constexpr bool is_errored() const
-
4588  {
-
4589  return errored;
-
4590  }
-
4591 
-
4592  private:
-
4599  template<typename Value>
- -
4601  BasicJsonType* handle_value(Value&& v)
-
4602  {
-
4603  if (ref_stack.empty())
-
4604  {
-
4605  root = BasicJsonType(std::forward<Value>(v));
-
4606  return &root;
-
4607  }
-
4608 
-
4609  assert(ref_stack.back()->is_array() or ref_stack.back()->is_object());
-
4610 
-
4611  if (ref_stack.back()->is_array())
-
4612  {
-
4613  ref_stack.back()->m_value.array->emplace_back(std::forward<Value>(v));
-
4614  return &(ref_stack.back()->m_value.array->back());
-
4615  }
-
4616 
-
4617  assert(ref_stack.back()->is_object());
-
4618  assert(object_element);
-
4619  *object_element = BasicJsonType(std::forward<Value>(v));
-
4620  return object_element;
-
4621  }
-
4622 
-
4624  BasicJsonType& root;
-
4626  std::vector<BasicJsonType*> ref_stack {};
-
4628  BasicJsonType* object_element = nullptr;
-
4630  bool errored = false;
-
4632  const bool allow_exceptions = true;
-
4633 };
-
4634 
-
4635 template<typename BasicJsonType>
- -
4637 {
-
4638  public:
-
4639  using number_integer_t = typename BasicJsonType::number_integer_t;
-
4640  using number_unsigned_t = typename BasicJsonType::number_unsigned_t;
-
4641  using number_float_t = typename BasicJsonType::number_float_t;
-
4642  using string_t = typename BasicJsonType::string_t;
- - -
4645 
- -
4647  const parser_callback_t cb,
-
4648  const bool allow_exceptions_ = true)
-
4649  : root(r), callback(cb), allow_exceptions(allow_exceptions_)
-
4650  {
-
4651  keep_stack.push_back(true);
-
4652  }
-
4653 
-
4654  // make class move-only
- - - - -
4659  ~json_sax_dom_callback_parser() = default;
-
4660 
-
4661  bool null()
-
4662  {
-
4663  handle_value(nullptr);
-
4664  return true;
-
4665  }
-
4666 
-
4667  bool boolean(bool val)
-
4668  {
-
4669  handle_value(val);
-
4670  return true;
-
4671  }
-
4672 
- -
4674  {
-
4675  handle_value(val);
-
4676  return true;
-
4677  }
-
4678 
- -
4680  {
-
4681  handle_value(val);
-
4682  return true;
-
4683  }
-
4684 
-
4685  bool number_float(number_float_t val, const string_t& /*unused*/)
-
4686  {
-
4687  handle_value(val);
-
4688  return true;
-
4689  }
-
4690 
-
4691  bool string(string_t& val)
-
4692  {
-
4693  handle_value(val);
-
4694  return true;
-
4695  }
-
4696 
-
4697  bool start_object(std::size_t len)
-
4698  {
-
4699  // check callback for object start
-
4700  const bool keep = callback(static_cast<int>(ref_stack.size()), parse_event_t::object_start, discarded);
-
4701  keep_stack.push_back(keep);
-
4702 
-
4703  auto val = handle_value(BasicJsonType::value_t::object, true);
-
4704  ref_stack.push_back(val.second);
-
4705 
-
4706  // check object limit
-
4707  if (ref_stack.back() and JSON_HEDLEY_UNLIKELY(len != std::size_t(-1) and len > ref_stack.back()->max_size()))
-
4708  {
-
4709  JSON_THROW(out_of_range::create(408, "excessive object size: " + std::to_string(len)));
-
4710  }
-
4711 
-
4712  return true;
-
4713  }
-
4714 
-
4715  bool key(string_t& val)
-
4716  {
-
4717  BasicJsonType k = BasicJsonType(val);
-
4718 
-
4719  // check callback for key
-
4720  const bool keep = callback(static_cast<int>(ref_stack.size()), parse_event_t::key, k);
-
4721  key_keep_stack.push_back(keep);
-
4722 
-
4723  // add discarded value at given key and store the reference for later
-
4724  if (keep and ref_stack.back())
-
4725  {
-
4726  object_element = &(ref_stack.back()->m_value.object->operator[](val) = discarded);
-
4727  }
-
4728 
-
4729  return true;
-
4730  }
-
4731 
-
4732  bool end_object()
-
4733  {
-
4734  if (ref_stack.back() and not callback(static_cast<int>(ref_stack.size()) - 1, parse_event_t::object_end, *ref_stack.back()))
-
4735  {
-
4736  // discard object
-
4737  *ref_stack.back() = discarded;
-
4738  }
-
4739 
-
4740  assert(not ref_stack.empty());
-
4741  assert(not keep_stack.empty());
-
4742  ref_stack.pop_back();
-
4743  keep_stack.pop_back();
-
4744 
-
4745  if (not ref_stack.empty() and ref_stack.back() and ref_stack.back()->is_object())
-
4746  {
-
4747  // remove discarded value
-
4748  for (auto it = ref_stack.back()->begin(); it != ref_stack.back()->end(); ++it)
-
4749  {
-
4750  if (it->is_discarded())
-
4751  {
-
4752  ref_stack.back()->erase(it);
-
4753  break;
-
4754  }
-
4755  }
-
4756  }
-
4757 
-
4758  return true;
-
4759  }
-
4760 
-
4761  bool start_array(std::size_t len)
-
4762  {
-
4763  const bool keep = callback(static_cast<int>(ref_stack.size()), parse_event_t::array_start, discarded);
-
4764  keep_stack.push_back(keep);
-
4765 
-
4766  auto val = handle_value(BasicJsonType::value_t::array, true);
-
4767  ref_stack.push_back(val.second);
-
4768 
-
4769  // check array limit
-
4770  if (ref_stack.back() and JSON_HEDLEY_UNLIKELY(len != std::size_t(-1) and len > ref_stack.back()->max_size()))
-
4771  {
-
4772  JSON_THROW(out_of_range::create(408, "excessive array size: " + std::to_string(len)));
-
4773  }
-
4774 
-
4775  return true;
-
4776  }
-
4777 
-
4778  bool end_array()
-
4779  {
-
4780  bool keep = true;
-
4781 
-
4782  if (ref_stack.back())
-
4783  {
-
4784  keep = callback(static_cast<int>(ref_stack.size()) - 1, parse_event_t::array_end, *ref_stack.back());
-
4785  if (not keep)
-
4786  {
-
4787  // discard array
-
4788  *ref_stack.back() = discarded;
-
4789  }
-
4790  }
-
4791 
-
4792  assert(not ref_stack.empty());
-
4793  assert(not keep_stack.empty());
-
4794  ref_stack.pop_back();
-
4795  keep_stack.pop_back();
-
4796 
-
4797  // remove discarded value
-
4798  if (not keep and not ref_stack.empty() and ref_stack.back()->is_array())
-
4799  {
-
4800  ref_stack.back()->m_value.array->pop_back();
-
4801  }
-
4802 
-
4803  return true;
-
4804  }
-
4805 
-
4806  bool parse_error(std::size_t /*unused*/, const std::string& /*unused*/,
-
4807  const detail::exception& ex)
-
4808  {
-
4809  errored = true;
-
4810  if (allow_exceptions)
-
4811  {
-
4812  // determine the proper exception type from the id
-
4813  switch ((ex.id / 100) % 100)
-
4814  {
-
4815  case 1:
-
4816  JSON_THROW(*static_cast<const detail::parse_error*>(&ex));
-
4817  case 4:
-
4818  JSON_THROW(*static_cast<const detail::out_of_range*>(&ex));
-
4819  // LCOV_EXCL_START
-
4820  case 2:
-
4821  JSON_THROW(*static_cast<const detail::invalid_iterator*>(&ex));
-
4822  case 3:
-
4823  JSON_THROW(*static_cast<const detail::type_error*>(&ex));
-
4824  case 5:
-
4825  JSON_THROW(*static_cast<const detail::other_error*>(&ex));
-
4826  default:
-
4827  assert(false);
-
4828  // LCOV_EXCL_STOP
-
4829  }
-
4830  }
-
4831  return false;
-
4832  }
-
4833 
-
4834  constexpr bool is_errored() const
-
4835  {
-
4836  return errored;
-
4837  }
-
4838 
-
4839  private:
-
4855  template<typename Value>
-
4856  std::pair<bool, BasicJsonType*> handle_value(Value&& v, const bool skip_callback = false)
-
4857  {
-
4858  assert(not keep_stack.empty());
-
4859 
-
4860  // do not handle this value if we know it would be added to a discarded
-
4861  // container
-
4862  if (not keep_stack.back())
-
4863  {
-
4864  return {false, nullptr};
-
4865  }
-
4866 
-
4867  // create value
-
4868  auto value = BasicJsonType(std::forward<Value>(v));
-
4869 
-
4870  // check callback
-
4871  const bool keep = skip_callback or callback(static_cast<int>(ref_stack.size()), parse_event_t::value, value);
-
4872 
-
4873  // do not handle this value if we just learnt it shall be discarded
-
4874  if (not keep)
-
4875  {
-
4876  return {false, nullptr};
-
4877  }
-
4878 
-
4879  if (ref_stack.empty())
-
4880  {
-
4881  root = std::move(value);
-
4882  return {true, &root};
-
4883  }
-
4884 
-
4885  // skip this value if we already decided to skip the parent
-
4886  // (https://github.com/nlohmann/json/issues/971#issuecomment-413678360)
-
4887  if (not ref_stack.back())
-
4888  {
-
4889  return {false, nullptr};
-
4890  }
-
4891 
-
4892  // we now only expect arrays and objects
-
4893  assert(ref_stack.back()->is_array() or ref_stack.back()->is_object());
-
4894 
-
4895  // array
-
4896  if (ref_stack.back()->is_array())
-
4897  {
-
4898  ref_stack.back()->m_value.array->push_back(std::move(value));
-
4899  return {true, &(ref_stack.back()->m_value.array->back())};
-
4900  }
-
4901 
-
4902  // object
-
4903  assert(ref_stack.back()->is_object());
-
4904  // check if we should store an element for the current key
-
4905  assert(not key_keep_stack.empty());
-
4906  const bool store_element = key_keep_stack.back();
-
4907  key_keep_stack.pop_back();
-
4908 
-
4909  if (not store_element)
-
4910  {
-
4911  return {false, nullptr};
-
4912  }
-
4913 
-
4914  assert(object_element);
-
4915  *object_element = std::move(value);
-
4916  return {true, object_element};
-
4917  }
-
4918 
-
4920  BasicJsonType& root;
-
4922  std::vector<BasicJsonType*> ref_stack {};
-
4924  std::vector<bool> keep_stack {};
-
4926  std::vector<bool> key_keep_stack {};
-
4928  BasicJsonType* object_element = nullptr;
-
4930  bool errored = false;
-
4932  const parser_callback_t callback = nullptr;
-
4934  const bool allow_exceptions = true;
-
4936  BasicJsonType discarded = BasicJsonType::value_t::discarded;
-
4937 };
-
4938 
-
4939 template<typename BasicJsonType>
- -
4941 {
-
4942  public:
-
4943  using number_integer_t = typename BasicJsonType::number_integer_t;
-
4944  using number_unsigned_t = typename BasicJsonType::number_unsigned_t;
-
4945  using number_float_t = typename BasicJsonType::number_float_t;
-
4946  using string_t = typename BasicJsonType::string_t;
-
4947 
-
4948  bool null()
-
4949  {
-
4950  return true;
-
4951  }
-
4952 
-
4953  bool boolean(bool /*unused*/)
-
4954  {
-
4955  return true;
-
4956  }
-
4957 
- -
4959  {
-
4960  return true;
-
4961  }
-
4962 
- -
4964  {
-
4965  return true;
-
4966  }
-
4967 
-
4968  bool number_float(number_float_t /*unused*/, const string_t& /*unused*/)
-
4969  {
-
4970  return true;
-
4971  }
-
4972 
-
4973  bool string(string_t& /*unused*/)
-
4974  {
-
4975  return true;
-
4976  }
-
4977 
-
4978  bool start_object(std::size_t /*unused*/ = std::size_t(-1))
-
4979  {
-
4980  return true;
-
4981  }
-
4982 
-
4983  bool key(string_t& /*unused*/)
-
4984  {
-
4985  return true;
-
4986  }
-
4987 
-
4988  bool end_object()
-
4989  {
-
4990  return true;
-
4991  }
-
4992 
-
4993  bool start_array(std::size_t /*unused*/ = std::size_t(-1))
-
4994  {
-
4995  return true;
-
4996  }
-
4997 
-
4998  bool end_array()
-
4999  {
-
5000  return true;
-
5001  }
-
5002 
-
5003  bool parse_error(std::size_t /*unused*/, const std::string& /*unused*/, const detail::exception& /*unused*/)
-
5004  {
-
5005  return false;
-
5006  }
-
5007 };
-
5008 } // namespace detail
-
5009 
-
5010 } // namespace nlohmann
-
5011 
-
5012 // #include <nlohmann/detail/macro_scope.hpp>
-
5013 
-
5014 // #include <nlohmann/detail/meta/is_sax.hpp>
-
5015 
-
5016 
-
5017 #include <cstdint> // size_t
-
5018 #include <utility> // declval
-
5019 #include <string> // string
-
5020 
-
5021 // #include <nlohmann/detail/meta/detected.hpp>
-
5022 
-
5023 // #include <nlohmann/detail/meta/type_traits.hpp>
-
5024 
-
5025 
-
5026 namespace nlohmann
-
5027 {
-
5028 namespace detail
-
5029 {
-
5030 template <typename T>
-
5031 using null_function_t = decltype(std::declval<T&>().null());
-
5032 
-
5033 template <typename T>
-
5034 using boolean_function_t =
-
5035  decltype(std::declval<T&>().boolean(std::declval<bool>()));
-
5036 
-
5037 template <typename T, typename Integer>
- -
5039  decltype(std::declval<T&>().number_integer(std::declval<Integer>()));
-
5040 
-
5041 template <typename T, typename Unsigned>
- -
5043  decltype(std::declval<T&>().number_unsigned(std::declval<Unsigned>()));
-
5044 
-
5045 template <typename T, typename Float, typename String>
-
5046 using number_float_function_t = decltype(std::declval<T&>().number_float(
-
5047  std::declval<Float>(), std::declval<const String&>()));
-
5048 
-
5049 template <typename T, typename String>
-
5050 using string_function_t =
-
5051  decltype(std::declval<T&>().string(std::declval<String&>()));
-
5052 
-
5053 template <typename T>
- -
5055  decltype(std::declval<T&>().start_object(std::declval<std::size_t>()));
-
5056 
-
5057 template <typename T, typename String>
-
5058 using key_function_t =
-
5059  decltype(std::declval<T&>().key(std::declval<String&>()));
-
5060 
-
5061 template <typename T>
-
5062 using end_object_function_t = decltype(std::declval<T&>().end_object());
-
5063 
-
5064 template <typename T>
-
5065 using start_array_function_t =
-
5066  decltype(std::declval<T&>().start_array(std::declval<std::size_t>()));
-
5067 
-
5068 template <typename T>
-
5069 using end_array_function_t = decltype(std::declval<T&>().end_array());
-
5070 
-
5071 template <typename T, typename Exception>
-
5072 using parse_error_function_t = decltype(std::declval<T&>().parse_error(
-
5073  std::declval<std::size_t>(), std::declval<const std::string&>(),
-
5074  std::declval<const Exception&>()));
-
5075 
-
5076 template <typename SAX, typename BasicJsonType>
-
5077 struct is_sax
-
5078 {
-
5079  private:
- -
5081  "BasicJsonType must be of type basic_json<...>");
-
5082 
-
5083  using number_integer_t = typename BasicJsonType::number_integer_t;
-
5084  using number_unsigned_t = typename BasicJsonType::number_unsigned_t;
-
5085  using number_float_t = typename BasicJsonType::number_float_t;
-
5086  using string_t = typename BasicJsonType::string_t;
-
5087  using exception_t = typename BasicJsonType::exception;
-
5088 
-
5089  public:
-
5090  static constexpr bool value =
- - - -
5094  number_integer_t>::value &&
- -
5096  number_unsigned_t>::value &&
-
5097  is_detected_exact<bool, number_float_function_t, SAX, number_float_t,
-
5098  string_t>::value &&
- - - - - - - -
5106 };
-
5107 
-
5108 template <typename SAX, typename BasicJsonType>
- -
5110 {
-
5111  private:
- -
5113  "BasicJsonType must be of type basic_json<...>");
-
5114 
-
5115  using number_integer_t = typename BasicJsonType::number_integer_t;
-
5116  using number_unsigned_t = typename BasicJsonType::number_unsigned_t;
-
5117  using number_float_t = typename BasicJsonType::number_float_t;
-
5118  using string_t = typename BasicJsonType::string_t;
-
5119  using exception_t = typename BasicJsonType::exception;
-
5120 
-
5121  public:
- -
5123  "Missing/invalid function: bool null()");
- -
5125  "Missing/invalid function: bool boolean(bool)");
- -
5127  "Missing/invalid function: bool boolean(bool)");
-
5128  static_assert(
- -
5130  number_integer_t>::value,
-
5131  "Missing/invalid function: bool number_integer(number_integer_t)");
-
5132  static_assert(
- -
5134  number_unsigned_t>::value,
-
5135  "Missing/invalid function: bool number_unsigned(number_unsigned_t)");
-
5136  static_assert(is_detected_exact<bool, number_float_function_t, SAX,
-
5137  number_float_t, string_t>::value,
-
5138  "Missing/invalid function: bool number_float(number_float_t, const string_t&)");
-
5139  static_assert(
- -
5141  "Missing/invalid function: bool string(string_t&)");
- -
5143  "Missing/invalid function: bool start_object(std::size_t)");
- -
5145  "Missing/invalid function: bool key(string_t&)");
- -
5147  "Missing/invalid function: bool end_object()");
- -
5149  "Missing/invalid function: bool start_array(std::size_t)");
- -
5151  "Missing/invalid function: bool end_array()");
-
5152  static_assert(
- -
5154  "Missing/invalid function: bool parse_error(std::size_t, const "
-
5155  "std::string&, const exception&)");
-
5156 };
-
5157 } // namespace detail
-
5158 } // namespace nlohmann
-
5159 
-
5160 // #include <nlohmann/detail/value_t.hpp>
-
5161 
-
5162 
-
5163 namespace nlohmann
-
5164 {
-
5165 namespace detail
-
5166 {
-
5168 // binary reader //
-
5170 
-
5174 template<typename BasicJsonType, typename SAX = json_sax_dom_parser<BasicJsonType>>
- -
5176 {
-
5177  using number_integer_t = typename BasicJsonType::number_integer_t;
-
5178  using number_unsigned_t = typename BasicJsonType::number_unsigned_t;
-
5179  using number_float_t = typename BasicJsonType::number_float_t;
-
5180  using string_t = typename BasicJsonType::string_t;
-
5181  using json_sax_t = SAX;
-
5182 
-
5183  public:
-
5189  explicit binary_reader(input_adapter_t adapter) : ia(std::move(adapter))
-
5190  {
- -
5192  assert(ia);
-
5193  }
-
5194 
-
5195  // make class move-only
-
5196  binary_reader(const binary_reader&) = delete;
-
5197  binary_reader(binary_reader&&) = default;
-
5198  binary_reader& operator=(const binary_reader&) = delete;
-
5199  binary_reader& operator=(binary_reader&&) = default;
-
5200  ~binary_reader() = default;
-
5201 
- -
5210  bool sax_parse(const input_format_t format,
-
5211  json_sax_t* sax_,
-
5212  const bool strict = true)
-
5213  {
-
5214  sax = sax_;
-
5215  bool result = false;
-
5216 
-
5217  switch (format)
-
5218  {
-
5219  case input_format_t::bson:
-
5220  result = parse_bson_internal();
-
5221  break;
-
5222 
-
5223  case input_format_t::cbor:
-
5224  result = parse_cbor_internal();
-
5225  break;
-
5226 
- -
5228  result = parse_msgpack_internal();
-
5229  break;
-
5230 
- -
5232  result = parse_ubjson_internal();
-
5233  break;
-
5234 
-
5235  default: // LCOV_EXCL_LINE
-
5236  assert(false); // LCOV_EXCL_LINE
-
5237  }
-
5238 
-
5239  // strict mode: next byte must be EOF
-
5240  if (result and strict)
-
5241  {
-
5242  if (format == input_format_t::ubjson)
-
5243  {
-
5244  get_ignore_noop();
-
5245  }
-
5246  else
-
5247  {
-
5248  get();
-
5249  }
-
5250 
-
5251  if (JSON_HEDLEY_UNLIKELY(current != std::char_traits<char>::eof()))
-
5252  {
-
5253  return sax->parse_error(chars_read, get_token_string(),
-
5254  parse_error::create(110, chars_read, exception_message(format, "expected end of input; last byte: 0x" + get_token_string(), "value")));
-
5255  }
-
5256  }
-
5257 
-
5258  return result;
-
5259  }
-
5260 
-
5268  static constexpr bool little_endianess(int num = 1) noexcept
-
5269  {
-
5270  return *reinterpret_cast<char*>(&num) == 1;
-
5271  }
-
5272 
-
5273  private:
-
5275  // BSON //
-
5277 
-
5282  bool parse_bson_internal()
-
5283  {
-
5284  std::int32_t document_size;
-
5285  get_number<std::int32_t, true>(input_format_t::bson, document_size);
-
5286 
-
5287  if (JSON_HEDLEY_UNLIKELY(not sax->start_object(std::size_t(-1))))
-
5288  {
-
5289  return false;
-
5290  }
-
5291 
-
5292  if (JSON_HEDLEY_UNLIKELY(not parse_bson_element_list(/*is_array*/false)))
-
5293  {
-
5294  return false;
-
5295  }
-
5296 
-
5297  return sax->end_object();
-
5298  }
-
5299 
-
5307  bool get_bson_cstr(string_t& result)
-
5308  {
-
5309  auto out = std::back_inserter(result);
-
5310  while (true)
-
5311  {
-
5312  get();
-
5313  if (JSON_HEDLEY_UNLIKELY(not unexpect_eof(input_format_t::bson, "cstring")))
-
5314  {
-
5315  return false;
-
5316  }
-
5317  if (current == 0x00)
-
5318  {
-
5319  return true;
-
5320  }
-
5321  *out++ = static_cast<char>(current);
-
5322  }
-
5323 
-
5324  return true;
-
5325  }
-
5326 
-
5338  template<typename NumberType>
-
5339  bool get_bson_string(const NumberType len, string_t& result)
-
5340  {
-
5341  if (JSON_HEDLEY_UNLIKELY(len < 1))
-
5342  {
-
5343  auto last_token = get_token_string();
-
5344  return sax->parse_error(chars_read, last_token, parse_error::create(112, chars_read, exception_message(input_format_t::bson, "string length must be at least 1, is " + std::to_string(len), "string")));
-
5345  }
-
5346 
-
5347  return get_string(input_format_t::bson, len - static_cast<NumberType>(1), result) and get() != std::char_traits<char>::eof();
-
5348  }
-
5349 
-
5360  bool parse_bson_element_internal(const int element_type,
-
5361  const std::size_t element_type_parse_position)
-
5362  {
-
5363  switch (element_type)
-
5364  {
-
5365  case 0x01: // double
-
5366  {
-
5367  double number;
-
5368  return get_number<double, true>(input_format_t::bson, number) and sax->number_float(static_cast<number_float_t>(number), "");
-
5369  }
-
5370 
-
5371  case 0x02: // string
-
5372  {
-
5373  std::int32_t len;
-
5374  string_t value;
-
5375  return get_number<std::int32_t, true>(input_format_t::bson, len) and get_bson_string(len, value) and sax->string(value);
-
5376  }
-
5377 
-
5378  case 0x03: // object
-
5379  {
-
5380  return parse_bson_internal();
-
5381  }
-
5382 
-
5383  case 0x04: // array
-
5384  {
-
5385  return parse_bson_array();
-
5386  }
-
5387 
-
5388  case 0x08: // boolean
-
5389  {
-
5390  return sax->boolean(get() != 0);
-
5391  }
-
5392 
-
5393  case 0x0A: // null
-
5394  {
-
5395  return sax->null();
-
5396  }
-
5397 
-
5398  case 0x10: // int32
-
5399  {
-
5400  std::int32_t value;
-
5401  return get_number<std::int32_t, true>(input_format_t::bson, value) and sax->number_integer(value);
-
5402  }
-
5403 
-
5404  case 0x12: // int64
-
5405  {
-
5406  std::int64_t value;
-
5407  return get_number<std::int64_t, true>(input_format_t::bson, value) and sax->number_integer(value);
-
5408  }
-
5409 
-
5410  default: // anything else not supported (yet)
-
5411  {
-
5412  std::array<char, 3> cr{{}};
-
5413  (std::snprintf)(cr.data(), cr.size(), "%.2hhX", static_cast<unsigned char>(element_type));
-
5414  return sax->parse_error(element_type_parse_position, std::string(cr.data()), parse_error::create(114, element_type_parse_position, "Unsupported BSON record type 0x" + std::string(cr.data())));
-
5415  }
-
5416  }
-
5417  }
-
5418 
-
5431  bool parse_bson_element_list(const bool is_array)
-
5432  {
-
5433  string_t key;
-
5434  while (int element_type = get())
-
5435  {
-
5436  if (JSON_HEDLEY_UNLIKELY(not unexpect_eof(input_format_t::bson, "element list")))
-
5437  {
-
5438  return false;
-
5439  }
-
5440 
-
5441  const std::size_t element_type_parse_position = chars_read;
-
5442  if (JSON_HEDLEY_UNLIKELY(not get_bson_cstr(key)))
-
5443  {
-
5444  return false;
-
5445  }
-
5446 
-
5447  if (not is_array and not sax->key(key))
-
5448  {
-
5449  return false;
-
5450  }
-
5451 
-
5452  if (JSON_HEDLEY_UNLIKELY(not parse_bson_element_internal(element_type, element_type_parse_position)))
-
5453  {
-
5454  return false;
-
5455  }
-
5456 
-
5457  // get_bson_cstr only appends
-
5458  key.clear();
-
5459  }
-
5460 
-
5461  return true;
-
5462  }
-
5463 
-
5468  bool parse_bson_array()
-
5469  {
-
5470  std::int32_t document_size;
-
5471  get_number<std::int32_t, true>(input_format_t::bson, document_size);
-
5472 
-
5473  if (JSON_HEDLEY_UNLIKELY(not sax->start_array(std::size_t(-1))))
-
5474  {
-
5475  return false;
-
5476  }
-
5477 
-
5478  if (JSON_HEDLEY_UNLIKELY(not parse_bson_element_list(/*is_array*/true)))
-
5479  {
-
5480  return false;
-
5481  }
-
5482 
-
5483  return sax->end_array();
-
5484  }
-
5485 
-
5487  // CBOR //
-
5489 
-
5497  bool parse_cbor_internal(const bool get_char = true)
-
5498  {
-
5499  switch (get_char ? get() : current)
-
5500  {
-
5501  // EOF
-
5502  case std::char_traits<char>::eof():
-
5503  return unexpect_eof(input_format_t::cbor, "value");
-
5504 
-
5505  // Integer 0x00..0x17 (0..23)
-
5506  case 0x00:
-
5507  case 0x01:
-
5508  case 0x02:
-
5509  case 0x03:
-
5510  case 0x04:
-
5511  case 0x05:
-
5512  case 0x06:
-
5513  case 0x07:
-
5514  case 0x08:
-
5515  case 0x09:
-
5516  case 0x0A:
-
5517  case 0x0B:
-
5518  case 0x0C:
-
5519  case 0x0D:
-
5520  case 0x0E:
-
5521  case 0x0F:
-
5522  case 0x10:
-
5523  case 0x11:
-
5524  case 0x12:
-
5525  case 0x13:
-
5526  case 0x14:
-
5527  case 0x15:
-
5528  case 0x16:
-
5529  case 0x17:
-
5530  return sax->number_unsigned(static_cast<number_unsigned_t>(current));
-
5531 
-
5532  case 0x18: // Unsigned integer (one-byte uint8_t follows)
-
5533  {
-
5534  std::uint8_t number;
-
5535  return get_number(input_format_t::cbor, number) and sax->number_unsigned(number);
-
5536  }
-
5537 
-
5538  case 0x19: // Unsigned integer (two-byte uint16_t follows)
-
5539  {
-
5540  std::uint16_t number;
-
5541  return get_number(input_format_t::cbor, number) and sax->number_unsigned(number);
-
5542  }
-
5543 
-
5544  case 0x1A: // Unsigned integer (four-byte uint32_t follows)
-
5545  {
-
5546  std::uint32_t number;
-
5547  return get_number(input_format_t::cbor, number) and sax->number_unsigned(number);
-
5548  }
-
5549 
-
5550  case 0x1B: // Unsigned integer (eight-byte uint64_t follows)
-
5551  {
-
5552  std::uint64_t number;
-
5553  return get_number(input_format_t::cbor, number) and sax->number_unsigned(number);
-
5554  }
-
5555 
-
5556  // Negative integer -1-0x00..-1-0x17 (-1..-24)
-
5557  case 0x20:
-
5558  case 0x21:
-
5559  case 0x22:
-
5560  case 0x23:
-
5561  case 0x24:
-
5562  case 0x25:
-
5563  case 0x26:
-
5564  case 0x27:
-
5565  case 0x28:
-
5566  case 0x29:
-
5567  case 0x2A:
-
5568  case 0x2B:
-
5569  case 0x2C:
-
5570  case 0x2D:
-
5571  case 0x2E:
-
5572  case 0x2F:
-
5573  case 0x30:
-
5574  case 0x31:
-
5575  case 0x32:
-
5576  case 0x33:
-
5577  case 0x34:
-
5578  case 0x35:
-
5579  case 0x36:
-
5580  case 0x37:
-
5581  return sax->number_integer(static_cast<std::int8_t>(0x20 - 1 - current));
-
5582 
-
5583  case 0x38: // Negative integer (one-byte uint8_t follows)
-
5584  {
-
5585  std::uint8_t number;
-
5586  return get_number(input_format_t::cbor, number) and sax->number_integer(static_cast<number_integer_t>(-1) - number);
-
5587  }
-
5588 
-
5589  case 0x39: // Negative integer -1-n (two-byte uint16_t follows)
-
5590  {
-
5591  std::uint16_t number;
-
5592  return get_number(input_format_t::cbor, number) and sax->number_integer(static_cast<number_integer_t>(-1) - number);
-
5593  }
-
5594 
-
5595  case 0x3A: // Negative integer -1-n (four-byte uint32_t follows)
-
5596  {
-
5597  std::uint32_t number;
-
5598  return get_number(input_format_t::cbor, number) and sax->number_integer(static_cast<number_integer_t>(-1) - number);
-
5599  }
-
5600 
-
5601  case 0x3B: // Negative integer -1-n (eight-byte uint64_t follows)
-
5602  {
-
5603  std::uint64_t number;
-
5604  return get_number(input_format_t::cbor, number) and sax->number_integer(static_cast<number_integer_t>(-1)
-
5605  - static_cast<number_integer_t>(number));
-
5606  }
-
5607 
-
5608  // UTF-8 string (0x00..0x17 bytes follow)
-
5609  case 0x60:
-
5610  case 0x61:
-
5611  case 0x62:
-
5612  case 0x63:
-
5613  case 0x64:
-
5614  case 0x65:
-
5615  case 0x66:
-
5616  case 0x67:
-
5617  case 0x68:
-
5618  case 0x69:
-
5619  case 0x6A:
-
5620  case 0x6B:
-
5621  case 0x6C:
-
5622  case 0x6D:
-
5623  case 0x6E:
-
5624  case 0x6F:
-
5625  case 0x70:
-
5626  case 0x71:
-
5627  case 0x72:
-
5628  case 0x73:
-
5629  case 0x74:
-
5630  case 0x75:
-
5631  case 0x76:
-
5632  case 0x77:
-
5633  case 0x78: // UTF-8 string (one-byte uint8_t for n follows)
-
5634  case 0x79: // UTF-8 string (two-byte uint16_t for n follow)
-
5635  case 0x7A: // UTF-8 string (four-byte uint32_t for n follow)
-
5636  case 0x7B: // UTF-8 string (eight-byte uint64_t for n follow)
-
5637  case 0x7F: // UTF-8 string (indefinite length)
-
5638  {
-
5639  string_t s;
-
5640  return get_cbor_string(s) and sax->string(s);
-
5641  }
-
5642 
-
5643  // array (0x00..0x17 data items follow)
-
5644  case 0x80:
-
5645  case 0x81:
-
5646  case 0x82:
-
5647  case 0x83:
-
5648  case 0x84:
-
5649  case 0x85:
-
5650  case 0x86:
-
5651  case 0x87:
-
5652  case 0x88:
-
5653  case 0x89:
-
5654  case 0x8A:
-
5655  case 0x8B:
-
5656  case 0x8C:
-
5657  case 0x8D:
-
5658  case 0x8E:
-
5659  case 0x8F:
-
5660  case 0x90:
-
5661  case 0x91:
-
5662  case 0x92:
-
5663  case 0x93:
-
5664  case 0x94:
-
5665  case 0x95:
-
5666  case 0x96:
-
5667  case 0x97:
-
5668  return get_cbor_array(static_cast<std::size_t>(static_cast<unsigned int>(current) & 0x1Fu));
-
5669 
-
5670  case 0x98: // array (one-byte uint8_t for n follows)
-
5671  {
-
5672  std::uint8_t len;
-
5673  return get_number(input_format_t::cbor, len) and get_cbor_array(static_cast<std::size_t>(len));
-
5674  }
-
5675 
-
5676  case 0x99: // array (two-byte uint16_t for n follow)
-
5677  {
-
5678  std::uint16_t len;
-
5679  return get_number(input_format_t::cbor, len) and get_cbor_array(static_cast<std::size_t>(len));
-
5680  }
-
5681 
-
5682  case 0x9A: // array (four-byte uint32_t for n follow)
-
5683  {
-
5684  std::uint32_t len;
-
5685  return get_number(input_format_t::cbor, len) and get_cbor_array(static_cast<std::size_t>(len));
-
5686  }
-
5687 
-
5688  case 0x9B: // array (eight-byte uint64_t for n follow)
-
5689  {
-
5690  std::uint64_t len;
-
5691  return get_number(input_format_t::cbor, len) and get_cbor_array(static_cast<std::size_t>(len));
-
5692  }
-
5693 
-
5694  case 0x9F: // array (indefinite length)
-
5695  return get_cbor_array(std::size_t(-1));
-
5696 
-
5697  // map (0x00..0x17 pairs of data items follow)
-
5698  case 0xA0:
-
5699  case 0xA1:
-
5700  case 0xA2:
-
5701  case 0xA3:
-
5702  case 0xA4:
-
5703  case 0xA5:
-
5704  case 0xA6:
-
5705  case 0xA7:
-
5706  case 0xA8:
-
5707  case 0xA9:
-
5708  case 0xAA:
-
5709  case 0xAB:
-
5710  case 0xAC:
-
5711  case 0xAD:
-
5712  case 0xAE:
-
5713  case 0xAF:
-
5714  case 0xB0:
-
5715  case 0xB1:
-
5716  case 0xB2:
-
5717  case 0xB3:
-
5718  case 0xB4:
-
5719  case 0xB5:
-
5720  case 0xB6:
-
5721  case 0xB7:
-
5722  return get_cbor_object(static_cast<std::size_t>(static_cast<unsigned int>(current) & 0x1Fu));
-
5723 
-
5724  case 0xB8: // map (one-byte uint8_t for n follows)
-
5725  {
-
5726  std::uint8_t len;
-
5727  return get_number(input_format_t::cbor, len) and get_cbor_object(static_cast<std::size_t>(len));
-
5728  }
-
5729 
-
5730  case 0xB9: // map (two-byte uint16_t for n follow)
-
5731  {
-
5732  std::uint16_t len;
-
5733  return get_number(input_format_t::cbor, len) and get_cbor_object(static_cast<std::size_t>(len));
-
5734  }
-
5735 
-
5736  case 0xBA: // map (four-byte uint32_t for n follow)
-
5737  {
-
5738  std::uint32_t len;
-
5739  return get_number(input_format_t::cbor, len) and get_cbor_object(static_cast<std::size_t>(len));
-
5740  }
-
5741 
-
5742  case 0xBB: // map (eight-byte uint64_t for n follow)
-
5743  {
-
5744  std::uint64_t len;
-
5745  return get_number(input_format_t::cbor, len) and get_cbor_object(static_cast<std::size_t>(len));
-
5746  }
-
5747 
-
5748  case 0xBF: // map (indefinite length)
-
5749  return get_cbor_object(std::size_t(-1));
-
5750 
-
5751  case 0xF4: // false
-
5752  return sax->boolean(false);
-
5753 
-
5754  case 0xF5: // true
-
5755  return sax->boolean(true);
-
5756 
-
5757  case 0xF6: // null
-
5758  return sax->null();
-
5759 
-
5760  case 0xF9: // Half-Precision Float (two-byte IEEE 754)
-
5761  {
-
5762  const int byte1_raw = get();
-
5763  if (JSON_HEDLEY_UNLIKELY(not unexpect_eof(input_format_t::cbor, "number")))
-
5764  {
-
5765  return false;
-
5766  }
-
5767  const int byte2_raw = get();
-
5768  if (JSON_HEDLEY_UNLIKELY(not unexpect_eof(input_format_t::cbor, "number")))
-
5769  {
-
5770  return false;
-
5771  }
-
5772 
-
5773  const auto byte1 = static_cast<unsigned char>(byte1_raw);
-
5774  const auto byte2 = static_cast<unsigned char>(byte2_raw);
-
5775 
-
5776  // code from RFC 7049, Appendix D, Figure 3:
-
5777  // As half-precision floating-point numbers were only added
-
5778  // to IEEE 754 in 2008, today's programming platforms often
-
5779  // still only have limited support for them. It is very
-
5780  // easy to include at least decoding support for them even
-
5781  // without such support. An example of a small decoder for
-
5782  // half-precision floating-point numbers in the C language
-
5783  // is shown in Fig. 3.
-
5784  const auto half = static_cast<unsigned int>((byte1 << 8u) + byte2);
-
5785  const double val = [&half]
-
5786  {
-
5787  const int exp = (half >> 10u) & 0x1Fu;
-
5788  const unsigned int mant = half & 0x3FFu;
-
5789  assert(0 <= exp and exp <= 32);
-
5790  assert(mant <= 1024);
-
5791  switch (exp)
-
5792  {
-
5793  case 0:
-
5794  return std::ldexp(mant, -24);
-
5795  case 31:
-
5796  return (mant == 0)
-
5797  ? std::numeric_limits<double>::infinity()
-
5798  : std::numeric_limits<double>::quiet_NaN();
-
5799  default:
-
5800  return std::ldexp(mant + 1024, exp - 25);
-
5801  }
-
5802  }();
-
5803  return sax->number_float((half & 0x8000u) != 0
-
5804  ? static_cast<number_float_t>(-val)
-
5805  : static_cast<number_float_t>(val), "");
-
5806  }
-
5807 
-
5808  case 0xFA: // Single-Precision Float (four-byte IEEE 754)
-
5809  {
-
5810  float number;
-
5811  return get_number(input_format_t::cbor, number) and sax->number_float(static_cast<number_float_t>(number), "");
-
5812  }
-
5813 
-
5814  case 0xFB: // Double-Precision Float (eight-byte IEEE 754)
-
5815  {
-
5816  double number;
-
5817  return get_number(input_format_t::cbor, number) and sax->number_float(static_cast<number_float_t>(number), "");
-
5818  }
-
5819 
-
5820  default: // anything else (0xFF is handled inside the other types)
-
5821  {
-
5822  auto last_token = get_token_string();
-
5823  return sax->parse_error(chars_read, last_token, parse_error::create(112, chars_read, exception_message(input_format_t::cbor, "invalid byte: 0x" + last_token, "value")));
-
5824  }
-
5825  }
-
5826  }
-
5827 
-
5839  bool get_cbor_string(string_t& result)
-
5840  {
-
5841  if (JSON_HEDLEY_UNLIKELY(not unexpect_eof(input_format_t::cbor, "string")))
-
5842  {
-
5843  return false;
-
5844  }
-
5845 
-
5846  switch (current)
-
5847  {
-
5848  // UTF-8 string (0x00..0x17 bytes follow)
-
5849  case 0x60:
-
5850  case 0x61:
-
5851  case 0x62:
-
5852  case 0x63:
-
5853  case 0x64:
-
5854  case 0x65:
-
5855  case 0x66:
-
5856  case 0x67:
-
5857  case 0x68:
-
5858  case 0x69:
-
5859  case 0x6A:
-
5860  case 0x6B:
-
5861  case 0x6C:
-
5862  case 0x6D:
-
5863  case 0x6E:
-
5864  case 0x6F:
-
5865  case 0x70:
-
5866  case 0x71:
-
5867  case 0x72:
-
5868  case 0x73:
-
5869  case 0x74:
-
5870  case 0x75:
-
5871  case 0x76:
-
5872  case 0x77:
-
5873  {
-
5874  return get_string(input_format_t::cbor, static_cast<unsigned int>(current) & 0x1Fu, result);
-
5875  }
-
5876 
-
5877  case 0x78: // UTF-8 string (one-byte uint8_t for n follows)
-
5878  {
-
5879  std::uint8_t len;
-
5880  return get_number(input_format_t::cbor, len) and get_string(input_format_t::cbor, len, result);
-
5881  }
-
5882 
-
5883  case 0x79: // UTF-8 string (two-byte uint16_t for n follow)
-
5884  {
-
5885  std::uint16_t len;
-
5886  return get_number(input_format_t::cbor, len) and get_string(input_format_t::cbor, len, result);
-
5887  }
-
5888 
-
5889  case 0x7A: // UTF-8 string (four-byte uint32_t for n follow)
-
5890  {
-
5891  std::uint32_t len;
-
5892  return get_number(input_format_t::cbor, len) and get_string(input_format_t::cbor, len, result);
-
5893  }
-
5894 
-
5895  case 0x7B: // UTF-8 string (eight-byte uint64_t for n follow)
-
5896  {
-
5897  std::uint64_t len;
-
5898  return get_number(input_format_t::cbor, len) and get_string(input_format_t::cbor, len, result);
-
5899  }
-
5900 
-
5901  case 0x7F: // UTF-8 string (indefinite length)
-
5902  {
-
5903  while (get() != 0xFF)
-
5904  {
-
5905  string_t chunk;
-
5906  if (not get_cbor_string(chunk))
-
5907  {
-
5908  return false;
-
5909  }
-
5910  result.append(chunk);
-
5911  }
-
5912  return true;
-
5913  }
-
5914 
-
5915  default:
-
5916  {
-
5917  auto last_token = get_token_string();
-
5918  return sax->parse_error(chars_read, last_token, parse_error::create(113, chars_read, exception_message(input_format_t::cbor, "expected length specification (0x60-0x7B) or indefinite string type (0x7F); last byte: 0x" + last_token, "string")));
-
5919  }
-
5920  }
-
5921  }
-
5922 
-
5928  bool get_cbor_array(const std::size_t len)
-
5929  {
-
5930  if (JSON_HEDLEY_UNLIKELY(not sax->start_array(len)))
-
5931  {
-
5932  return false;
-
5933  }
-
5934 
-
5935  if (len != std::size_t(-1))
-
5936  {
-
5937  for (std::size_t i = 0; i < len; ++i)
-
5938  {
-
5939  if (JSON_HEDLEY_UNLIKELY(not parse_cbor_internal()))
-
5940  {
-
5941  return false;
-
5942  }
-
5943  }
-
5944  }
-
5945  else
-
5946  {
-
5947  while (get() != 0xFF)
-
5948  {
-
5949  if (JSON_HEDLEY_UNLIKELY(not parse_cbor_internal(false)))
-
5950  {
-
5951  return false;
-
5952  }
-
5953  }
-
5954  }
-
5955 
-
5956  return sax->end_array();
-
5957  }
-
5958 
-
5964  bool get_cbor_object(const std::size_t len)
-
5965  {
-
5966  if (JSON_HEDLEY_UNLIKELY(not sax->start_object(len)))
-
5967  {
-
5968  return false;
-
5969  }
-
5970 
-
5971  string_t key;
-
5972  if (len != std::size_t(-1))
-
5973  {
-
5974  for (std::size_t i = 0; i < len; ++i)
-
5975  {
-
5976  get();
-
5977  if (JSON_HEDLEY_UNLIKELY(not get_cbor_string(key) or not sax->key(key)))
-
5978  {
-
5979  return false;
-
5980  }
-
5981 
-
5982  if (JSON_HEDLEY_UNLIKELY(not parse_cbor_internal()))
-
5983  {
-
5984  return false;
-
5985  }
-
5986  key.clear();
-
5987  }
-
5988  }
-
5989  else
-
5990  {
-
5991  while (get() != 0xFF)
-
5992  {
-
5993  if (JSON_HEDLEY_UNLIKELY(not get_cbor_string(key) or not sax->key(key)))
-
5994  {
-
5995  return false;
-
5996  }
-
5997 
-
5998  if (JSON_HEDLEY_UNLIKELY(not parse_cbor_internal()))
-
5999  {
-
6000  return false;
-
6001  }
-
6002  key.clear();
-
6003  }
-
6004  }
-
6005 
-
6006  return sax->end_object();
-
6007  }
-
6008 
-
6010  // MsgPack //
-
6012 
-
6016  bool parse_msgpack_internal()
-
6017  {
-
6018  switch (get())
-
6019  {
-
6020  // EOF
-
6021  case std::char_traits<char>::eof():
-
6022  return unexpect_eof(input_format_t::msgpack, "value");
-
6023 
-
6024  // positive fixint
-
6025  case 0x00:
-
6026  case 0x01:
-
6027  case 0x02:
-
6028  case 0x03:
-
6029  case 0x04:
-
6030  case 0x05:
-
6031  case 0x06:
-
6032  case 0x07:
-
6033  case 0x08:
-
6034  case 0x09:
-
6035  case 0x0A:
-
6036  case 0x0B:
-
6037  case 0x0C:
-
6038  case 0x0D:
-
6039  case 0x0E:
-
6040  case 0x0F:
-
6041  case 0x10:
-
6042  case 0x11:
-
6043  case 0x12:
-
6044  case 0x13:
-
6045  case 0x14:
-
6046  case 0x15:
-
6047  case 0x16:
-
6048  case 0x17:
-
6049  case 0x18:
-
6050  case 0x19:
-
6051  case 0x1A:
-
6052  case 0x1B:
-
6053  case 0x1C:
-
6054  case 0x1D:
-
6055  case 0x1E:
-
6056  case 0x1F:
-
6057  case 0x20:
-
6058  case 0x21:
-
6059  case 0x22:
-
6060  case 0x23:
-
6061  case 0x24:
-
6062  case 0x25:
-
6063  case 0x26:
-
6064  case 0x27:
-
6065  case 0x28:
-
6066  case 0x29:
-
6067  case 0x2A:
-
6068  case 0x2B:
-
6069  case 0x2C:
-
6070  case 0x2D:
-
6071  case 0x2E:
-
6072  case 0x2F:
-
6073  case 0x30:
-
6074  case 0x31:
-
6075  case 0x32:
-
6076  case 0x33:
-
6077  case 0x34:
-
6078  case 0x35:
-
6079  case 0x36:
-
6080  case 0x37:
-
6081  case 0x38:
-
6082  case 0x39:
-
6083  case 0x3A:
-
6084  case 0x3B:
-
6085  case 0x3C:
-
6086  case 0x3D:
-
6087  case 0x3E:
-
6088  case 0x3F:
-
6089  case 0x40:
-
6090  case 0x41:
-
6091  case 0x42:
-
6092  case 0x43:
-
6093  case 0x44:
-
6094  case 0x45:
-
6095  case 0x46:
-
6096  case 0x47:
-
6097  case 0x48:
-
6098  case 0x49:
-
6099  case 0x4A:
-
6100  case 0x4B:
-
6101  case 0x4C:
-
6102  case 0x4D:
-
6103  case 0x4E:
-
6104  case 0x4F:
-
6105  case 0x50:
-
6106  case 0x51:
-
6107  case 0x52:
-
6108  case 0x53:
-
6109  case 0x54:
-
6110  case 0x55:
-
6111  case 0x56:
-
6112  case 0x57:
-
6113  case 0x58:
-
6114  case 0x59:
-
6115  case 0x5A:
-
6116  case 0x5B:
-
6117  case 0x5C:
-
6118  case 0x5D:
-
6119  case 0x5E:
-
6120  case 0x5F:
-
6121  case 0x60:
-
6122  case 0x61:
-
6123  case 0x62:
-
6124  case 0x63:
-
6125  case 0x64:
-
6126  case 0x65:
-
6127  case 0x66:
-
6128  case 0x67:
-
6129  case 0x68:
-
6130  case 0x69:
-
6131  case 0x6A:
-
6132  case 0x6B:
-
6133  case 0x6C:
-
6134  case 0x6D:
-
6135  case 0x6E:
-
6136  case 0x6F:
-
6137  case 0x70:
-
6138  case 0x71:
-
6139  case 0x72:
-
6140  case 0x73:
-
6141  case 0x74:
-
6142  case 0x75:
-
6143  case 0x76:
-
6144  case 0x77:
-
6145  case 0x78:
-
6146  case 0x79:
-
6147  case 0x7A:
-
6148  case 0x7B:
-
6149  case 0x7C:
-
6150  case 0x7D:
-
6151  case 0x7E:
-
6152  case 0x7F:
-
6153  return sax->number_unsigned(static_cast<number_unsigned_t>(current));
-
6154 
-
6155  // fixmap
-
6156  case 0x80:
-
6157  case 0x81:
-
6158  case 0x82:
-
6159  case 0x83:
-
6160  case 0x84:
-
6161  case 0x85:
-
6162  case 0x86:
-
6163  case 0x87:
-
6164  case 0x88:
-
6165  case 0x89:
-
6166  case 0x8A:
-
6167  case 0x8B:
-
6168  case 0x8C:
-
6169  case 0x8D:
-
6170  case 0x8E:
-
6171  case 0x8F:
-
6172  return get_msgpack_object(static_cast<std::size_t>(static_cast<unsigned int>(current) & 0x0Fu));
-
6173 
-
6174  // fixarray
-
6175  case 0x90:
-
6176  case 0x91:
-
6177  case 0x92:
-
6178  case 0x93:
-
6179  case 0x94:
-
6180  case 0x95:
-
6181  case 0x96:
-
6182  case 0x97:
-
6183  case 0x98:
-
6184  case 0x99:
-
6185  case 0x9A:
-
6186  case 0x9B:
-
6187  case 0x9C:
-
6188  case 0x9D:
-
6189  case 0x9E:
-
6190  case 0x9F:
-
6191  return get_msgpack_array(static_cast<std::size_t>(static_cast<unsigned int>(current) & 0x0Fu));
-
6192 
-
6193  // fixstr
-
6194  case 0xA0:
-
6195  case 0xA1:
-
6196  case 0xA2:
-
6197  case 0xA3:
-
6198  case 0xA4:
-
6199  case 0xA5:
-
6200  case 0xA6:
-
6201  case 0xA7:
-
6202  case 0xA8:
-
6203  case 0xA9:
-
6204  case 0xAA:
-
6205  case 0xAB:
-
6206  case 0xAC:
-
6207  case 0xAD:
-
6208  case 0xAE:
-
6209  case 0xAF:
-
6210  case 0xB0:
-
6211  case 0xB1:
-
6212  case 0xB2:
-
6213  case 0xB3:
-
6214  case 0xB4:
-
6215  case 0xB5:
-
6216  case 0xB6:
-
6217  case 0xB7:
-
6218  case 0xB8:
-
6219  case 0xB9:
-
6220  case 0xBA:
-
6221  case 0xBB:
-
6222  case 0xBC:
-
6223  case 0xBD:
-
6224  case 0xBE:
-
6225  case 0xBF:
-
6226  case 0xD9: // str 8
-
6227  case 0xDA: // str 16
-
6228  case 0xDB: // str 32
-
6229  {
-
6230  string_t s;
-
6231  return get_msgpack_string(s) and sax->string(s);
-
6232  }
-
6233 
-
6234  case 0xC0: // nil
-
6235  return sax->null();
-
6236 
-
6237  case 0xC2: // false
-
6238  return sax->boolean(false);
-
6239 
-
6240  case 0xC3: // true
-
6241  return sax->boolean(true);
-
6242 
-
6243  case 0xCA: // float 32
-
6244  {
-
6245  float number;
-
6246  return get_number(input_format_t::msgpack, number) and sax->number_float(static_cast<number_float_t>(number), "");
-
6247  }
-
6248 
-
6249  case 0xCB: // float 64
-
6250  {
-
6251  double number;
-
6252  return get_number(input_format_t::msgpack, number) and sax->number_float(static_cast<number_float_t>(number), "");
-
6253  }
-
6254 
-
6255  case 0xCC: // uint 8
-
6256  {
-
6257  std::uint8_t number;
-
6258  return get_number(input_format_t::msgpack, number) and sax->number_unsigned(number);
-
6259  }
-
6260 
-
6261  case 0xCD: // uint 16
-
6262  {
-
6263  std::uint16_t number;
-
6264  return get_number(input_format_t::msgpack, number) and sax->number_unsigned(number);
-
6265  }
-
6266 
-
6267  case 0xCE: // uint 32
-
6268  {
-
6269  std::uint32_t number;
-
6270  return get_number(input_format_t::msgpack, number) and sax->number_unsigned(number);
-
6271  }
-
6272 
-
6273  case 0xCF: // uint 64
-
6274  {
-
6275  std::uint64_t number;
-
6276  return get_number(input_format_t::msgpack, number) and sax->number_unsigned(number);
-
6277  }
-
6278 
-
6279  case 0xD0: // int 8
-
6280  {
-
6281  std::int8_t number;
-
6282  return get_number(input_format_t::msgpack, number) and sax->number_integer(number);
-
6283  }
-
6284 
-
6285  case 0xD1: // int 16
-
6286  {
-
6287  std::int16_t number;
-
6288  return get_number(input_format_t::msgpack, number) and sax->number_integer(number);
-
6289  }
-
6290 
-
6291  case 0xD2: // int 32
-
6292  {
-
6293  std::int32_t number;
-
6294  return get_number(input_format_t::msgpack, number) and sax->number_integer(number);
-
6295  }
-
6296 
-
6297  case 0xD3: // int 64
-
6298  {
-
6299  std::int64_t number;
-
6300  return get_number(input_format_t::msgpack, number) and sax->number_integer(number);
-
6301  }
-
6302 
-
6303  case 0xDC: // array 16
-
6304  {
-
6305  std::uint16_t len;
-
6306  return get_number(input_format_t::msgpack, len) and get_msgpack_array(static_cast<std::size_t>(len));
-
6307  }
-
6308 
-
6309  case 0xDD: // array 32
-
6310  {
-
6311  std::uint32_t len;
-
6312  return get_number(input_format_t::msgpack, len) and get_msgpack_array(static_cast<std::size_t>(len));
-
6313  }
-
6314 
-
6315  case 0xDE: // map 16
-
6316  {
-
6317  std::uint16_t len;
-
6318  return get_number(input_format_t::msgpack, len) and get_msgpack_object(static_cast<std::size_t>(len));
-
6319  }
-
6320 
-
6321  case 0xDF: // map 32
-
6322  {
-
6323  std::uint32_t len;
-
6324  return get_number(input_format_t::msgpack, len) and get_msgpack_object(static_cast<std::size_t>(len));
-
6325  }
-
6326 
-
6327  // negative fixint
-
6328  case 0xE0:
-
6329  case 0xE1:
-
6330  case 0xE2:
-
6331  case 0xE3:
-
6332  case 0xE4:
-
6333  case 0xE5:
-
6334  case 0xE6:
-
6335  case 0xE7:
-
6336  case 0xE8:
-
6337  case 0xE9:
-
6338  case 0xEA:
-
6339  case 0xEB:
-
6340  case 0xEC:
-
6341  case 0xED:
-
6342  case 0xEE:
-
6343  case 0xEF:
-
6344  case 0xF0:
-
6345  case 0xF1:
-
6346  case 0xF2:
-
6347  case 0xF3:
-
6348  case 0xF4:
-
6349  case 0xF5:
-
6350  case 0xF6:
-
6351  case 0xF7:
-
6352  case 0xF8:
-
6353  case 0xF9:
-
6354  case 0xFA:
-
6355  case 0xFB:
-
6356  case 0xFC:
-
6357  case 0xFD:
-
6358  case 0xFE:
-
6359  case 0xFF:
-
6360  return sax->number_integer(static_cast<std::int8_t>(current));
-
6361 
-
6362  default: // anything else
-
6363  {
-
6364  auto last_token = get_token_string();
-
6365  return sax->parse_error(chars_read, last_token, parse_error::create(112, chars_read, exception_message(input_format_t::msgpack, "invalid byte: 0x" + last_token, "value")));
-
6366  }
-
6367  }
-
6368  }
-
6369 
-
6380  bool get_msgpack_string(string_t& result)
-
6381  {
-
6382  if (JSON_HEDLEY_UNLIKELY(not unexpect_eof(input_format_t::msgpack, "string")))
-
6383  {
-
6384  return false;
-
6385  }
-
6386 
-
6387  switch (current)
-
6388  {
-
6389  // fixstr
-
6390  case 0xA0:
-
6391  case 0xA1:
-
6392  case 0xA2:
-
6393  case 0xA3:
-
6394  case 0xA4:
-
6395  case 0xA5:
-
6396  case 0xA6:
-
6397  case 0xA7:
-
6398  case 0xA8:
-
6399  case 0xA9:
-
6400  case 0xAA:
-
6401  case 0xAB:
-
6402  case 0xAC:
-
6403  case 0xAD:
-
6404  case 0xAE:
-
6405  case 0xAF:
-
6406  case 0xB0:
-
6407  case 0xB1:
-
6408  case 0xB2:
-
6409  case 0xB3:
-
6410  case 0xB4:
-
6411  case 0xB5:
-
6412  case 0xB6:
-
6413  case 0xB7:
-
6414  case 0xB8:
-
6415  case 0xB9:
-
6416  case 0xBA:
-
6417  case 0xBB:
-
6418  case 0xBC:
-
6419  case 0xBD:
-
6420  case 0xBE:
-
6421  case 0xBF:
-
6422  {
-
6423  return get_string(input_format_t::msgpack, static_cast<unsigned int>(current) & 0x1Fu, result);
-
6424  }
-
6425 
-
6426  case 0xD9: // str 8
-
6427  {
-
6428  std::uint8_t len;
-
6429  return get_number(input_format_t::msgpack, len) and get_string(input_format_t::msgpack, len, result);
-
6430  }
-
6431 
-
6432  case 0xDA: // str 16
-
6433  {
-
6434  std::uint16_t len;
-
6435  return get_number(input_format_t::msgpack, len) and get_string(input_format_t::msgpack, len, result);
-
6436  }
-
6437 
-
6438  case 0xDB: // str 32
-
6439  {
-
6440  std::uint32_t len;
-
6441  return get_number(input_format_t::msgpack, len) and get_string(input_format_t::msgpack, len, result);
-
6442  }
-
6443 
-
6444  default:
-
6445  {
-
6446  auto last_token = get_token_string();
-
6447  return sax->parse_error(chars_read, last_token, parse_error::create(113, chars_read, exception_message(input_format_t::msgpack, "expected length specification (0xA0-0xBF, 0xD9-0xDB); last byte: 0x" + last_token, "string")));
-
6448  }
-
6449  }
-
6450  }
-
6451 
-
6456  bool get_msgpack_array(const std::size_t len)
-
6457  {
-
6458  if (JSON_HEDLEY_UNLIKELY(not sax->start_array(len)))
-
6459  {
-
6460  return false;
-
6461  }
-
6462 
-
6463  for (std::size_t i = 0; i < len; ++i)
-
6464  {
-
6465  if (JSON_HEDLEY_UNLIKELY(not parse_msgpack_internal()))
-
6466  {
-
6467  return false;
-
6468  }
-
6469  }
-
6470 
-
6471  return sax->end_array();
-
6472  }
-
6473 
-
6478  bool get_msgpack_object(const std::size_t len)
-
6479  {
-
6480  if (JSON_HEDLEY_UNLIKELY(not sax->start_object(len)))
-
6481  {
-
6482  return false;
-
6483  }
-
6484 
-
6485  string_t key;
-
6486  for (std::size_t i = 0; i < len; ++i)
-
6487  {
-
6488  get();
-
6489  if (JSON_HEDLEY_UNLIKELY(not get_msgpack_string(key) or not sax->key(key)))
-
6490  {
-
6491  return false;
-
6492  }
-
6493 
-
6494  if (JSON_HEDLEY_UNLIKELY(not parse_msgpack_internal()))
-
6495  {
-
6496  return false;
-
6497  }
-
6498  key.clear();
-
6499  }
-
6500 
-
6501  return sax->end_object();
-
6502  }
-
6503 
-
6505  // UBJSON //
-
6507 
-
6515  bool parse_ubjson_internal(const bool get_char = true)
-
6516  {
-
6517  return get_ubjson_value(get_char ? get_ignore_noop() : current);
-
6518  }
-
6519 
-
6534  bool get_ubjson_string(string_t& result, const bool get_char = true)
-
6535  {
-
6536  if (get_char)
-
6537  {
-
6538  get(); // TODO(niels): may we ignore N here?
-
6539  }
-
6540 
-
6541  if (JSON_HEDLEY_UNLIKELY(not unexpect_eof(input_format_t::ubjson, "value")))
-
6542  {
-
6543  return false;
-
6544  }
-
6545 
-
6546  switch (current)
-
6547  {
-
6548  case 'U':
-
6549  {
-
6550  std::uint8_t len;
-
6551  return get_number(input_format_t::ubjson, len) and get_string(input_format_t::ubjson, len, result);
-
6552  }
-
6553 
-
6554  case 'i':
-
6555  {
-
6556  std::int8_t len;
-
6557  return get_number(input_format_t::ubjson, len) and get_string(input_format_t::ubjson, len, result);
-
6558  }
-
6559 
-
6560  case 'I':
-
6561  {
-
6562  std::int16_t len;
-
6563  return get_number(input_format_t::ubjson, len) and get_string(input_format_t::ubjson, len, result);
-
6564  }
-
6565 
-
6566  case 'l':
-
6567  {
-
6568  std::int32_t len;
-
6569  return get_number(input_format_t::ubjson, len) and get_string(input_format_t::ubjson, len, result);
-
6570  }
-
6571 
-
6572  case 'L':
-
6573  {
-
6574  std::int64_t len;
-
6575  return get_number(input_format_t::ubjson, len) and get_string(input_format_t::ubjson, len, result);
-
6576  }
-
6577 
-
6578  default:
-
6579  auto last_token = get_token_string();
-
6580  return sax->parse_error(chars_read, last_token, parse_error::create(113, chars_read, exception_message(input_format_t::ubjson, "expected length type specification (U, i, I, l, L); last byte: 0x" + last_token, "string")));
-
6581  }
-
6582  }
-
6583 
-
6588  bool get_ubjson_size_value(std::size_t& result)
-
6589  {
-
6590  switch (get_ignore_noop())
-
6591  {
-
6592  case 'U':
-
6593  {
-
6594  std::uint8_t number;
-
6595  if (JSON_HEDLEY_UNLIKELY(not get_number(input_format_t::ubjson, number)))
-
6596  {
-
6597  return false;
-
6598  }
-
6599  result = static_cast<std::size_t>(number);
-
6600  return true;
-
6601  }
-
6602 
-
6603  case 'i':
-
6604  {
-
6605  std::int8_t number;
-
6606  if (JSON_HEDLEY_UNLIKELY(not get_number(input_format_t::ubjson, number)))
-
6607  {
-
6608  return false;
-
6609  }
-
6610  result = static_cast<std::size_t>(number);
-
6611  return true;
-
6612  }
-
6613 
-
6614  case 'I':
-
6615  {
-
6616  std::int16_t number;
-
6617  if (JSON_HEDLEY_UNLIKELY(not get_number(input_format_t::ubjson, number)))
-
6618  {
-
6619  return false;
-
6620  }
-
6621  result = static_cast<std::size_t>(number);
-
6622  return true;
-
6623  }
-
6624 
-
6625  case 'l':
-
6626  {
-
6627  std::int32_t number;
-
6628  if (JSON_HEDLEY_UNLIKELY(not get_number(input_format_t::ubjson, number)))
-
6629  {
-
6630  return false;
-
6631  }
-
6632  result = static_cast<std::size_t>(number);
-
6633  return true;
-
6634  }
-
6635 
-
6636  case 'L':
-
6637  {
-
6638  std::int64_t number;
-
6639  if (JSON_HEDLEY_UNLIKELY(not get_number(input_format_t::ubjson, number)))
-
6640  {
-
6641  return false;
-
6642  }
-
6643  result = static_cast<std::size_t>(number);
-
6644  return true;
-
6645  }
-
6646 
-
6647  default:
-
6648  {
-
6649  auto last_token = get_token_string();
-
6650  return sax->parse_error(chars_read, last_token, parse_error::create(113, chars_read, exception_message(input_format_t::ubjson, "expected length type specification (U, i, I, l, L) after '#'; last byte: 0x" + last_token, "size")));
-
6651  }
-
6652  }
-
6653  }
-
6654 
-
6665  bool get_ubjson_size_type(std::pair<std::size_t, int>& result)
-
6666  {
-
6667  result.first = string_t::npos; // size
-
6668  result.second = 0; // type
-
6669 
-
6670  get_ignore_noop();
-
6671 
-
6672  if (current == '$')
-
6673  {
-
6674  result.second = get(); // must not ignore 'N', because 'N' maybe the type
-
6675  if (JSON_HEDLEY_UNLIKELY(not unexpect_eof(input_format_t::ubjson, "type")))
-
6676  {
-
6677  return false;
-
6678  }
-
6679 
-
6680  get_ignore_noop();
-
6681  if (JSON_HEDLEY_UNLIKELY(current != '#'))
-
6682  {
-
6683  if (JSON_HEDLEY_UNLIKELY(not unexpect_eof(input_format_t::ubjson, "value")))
-
6684  {
-
6685  return false;
-
6686  }
-
6687  auto last_token = get_token_string();
-
6688  return sax->parse_error(chars_read, last_token, parse_error::create(112, chars_read, exception_message(input_format_t::ubjson, "expected '#' after type information; last byte: 0x" + last_token, "size")));
-
6689  }
-
6690 
-
6691  return get_ubjson_size_value(result.first);
-
6692  }
-
6693 
-
6694  if (current == '#')
-
6695  {
-
6696  return get_ubjson_size_value(result.first);
-
6697  }
-
6698 
-
6699  return true;
-
6700  }
-
6701 
-
6706  bool get_ubjson_value(const int prefix)
-
6707  {
-
6708  switch (prefix)
-
6709  {
-
6710  case std::char_traits<char>::eof(): // EOF
-
6711  return unexpect_eof(input_format_t::ubjson, "value");
-
6712 
-
6713  case 'T': // true
-
6714  return sax->boolean(true);
-
6715  case 'F': // false
-
6716  return sax->boolean(false);
-
6717 
-
6718  case 'Z': // null
-
6719  return sax->null();
-
6720 
-
6721  case 'U':
-
6722  {
-
6723  std::uint8_t number;
-
6724  return get_number(input_format_t::ubjson, number) and sax->number_unsigned(number);
-
6725  }
-
6726 
-
6727  case 'i':
-
6728  {
-
6729  std::int8_t number;
-
6730  return get_number(input_format_t::ubjson, number) and sax->number_integer(number);
-
6731  }
-
6732 
-
6733  case 'I':
-
6734  {
-
6735  std::int16_t number;
-
6736  return get_number(input_format_t::ubjson, number) and sax->number_integer(number);
-
6737  }
-
6738 
-
6739  case 'l':
-
6740  {
-
6741  std::int32_t number;
-
6742  return get_number(input_format_t::ubjson, number) and sax->number_integer(number);
-
6743  }
-
6744 
-
6745  case 'L':
-
6746  {
-
6747  std::int64_t number;
-
6748  return get_number(input_format_t::ubjson, number) and sax->number_integer(number);
-
6749  }
-
6750 
-
6751  case 'd':
-
6752  {
-
6753  float number;
-
6754  return get_number(input_format_t::ubjson, number) and sax->number_float(static_cast<number_float_t>(number), "");
-
6755  }
-
6756 
-
6757  case 'D':
-
6758  {
-
6759  double number;
-
6760  return get_number(input_format_t::ubjson, number) and sax->number_float(static_cast<number_float_t>(number), "");
-
6761  }
-
6762 
-
6763  case 'C': // char
-
6764  {
-
6765  get();
-
6766  if (JSON_HEDLEY_UNLIKELY(not unexpect_eof(input_format_t::ubjson, "char")))
-
6767  {
-
6768  return false;
-
6769  }
-
6770  if (JSON_HEDLEY_UNLIKELY(current > 127))
-
6771  {
-
6772  auto last_token = get_token_string();
-
6773  return sax->parse_error(chars_read, last_token, parse_error::create(113, chars_read, exception_message(input_format_t::ubjson, "byte after 'C' must be in range 0x00..0x7F; last byte: 0x" + last_token, "char")));
-
6774  }
-
6775  string_t s(1, static_cast<char>(current));
-
6776  return sax->string(s);
-
6777  }
-
6778 
-
6779  case 'S': // string
-
6780  {
-
6781  string_t s;
-
6782  return get_ubjson_string(s) and sax->string(s);
-
6783  }
-
6784 
-
6785  case '[': // array
-
6786  return get_ubjson_array();
-
6787 
-
6788  case '{': // object
-
6789  return get_ubjson_object();
-
6790 
-
6791  default: // anything else
-
6792  {
-
6793  auto last_token = get_token_string();
-
6794  return sax->parse_error(chars_read, last_token, parse_error::create(112, chars_read, exception_message(input_format_t::ubjson, "invalid byte: 0x" + last_token, "value")));
-
6795  }
-
6796  }
-
6797  }
-
6798 
-
6802  bool get_ubjson_array()
-
6803  {
-
6804  std::pair<std::size_t, int> size_and_type;
-
6805  if (JSON_HEDLEY_UNLIKELY(not get_ubjson_size_type(size_and_type)))
-
6806  {
-
6807  return false;
-
6808  }
-
6809 
-
6810  if (size_and_type.first != string_t::npos)
-
6811  {
-
6812  if (JSON_HEDLEY_UNLIKELY(not sax->start_array(size_and_type.first)))
-
6813  {
-
6814  return false;
-
6815  }
-
6816 
-
6817  if (size_and_type.second != 0)
-
6818  {
-
6819  if (size_and_type.second != 'N')
-
6820  {
-
6821  for (std::size_t i = 0; i < size_and_type.first; ++i)
-
6822  {
-
6823  if (JSON_HEDLEY_UNLIKELY(not get_ubjson_value(size_and_type.second)))
-
6824  {
-
6825  return false;
-
6826  }
-
6827  }
-
6828  }
-
6829  }
-
6830  else
-
6831  {
-
6832  for (std::size_t i = 0; i < size_and_type.first; ++i)
-
6833  {
-
6834  if (JSON_HEDLEY_UNLIKELY(not parse_ubjson_internal()))
-
6835  {
-
6836  return false;
-
6837  }
-
6838  }
-
6839  }
-
6840  }
-
6841  else
-
6842  {
-
6843  if (JSON_HEDLEY_UNLIKELY(not sax->start_array(std::size_t(-1))))
-
6844  {
-
6845  return false;
-
6846  }
-
6847 
-
6848  while (current != ']')
-
6849  {
-
6850  if (JSON_HEDLEY_UNLIKELY(not parse_ubjson_internal(false)))
-
6851  {
-
6852  return false;
-
6853  }
-
6854  get_ignore_noop();
-
6855  }
-
6856  }
-
6857 
-
6858  return sax->end_array();
-
6859  }
-
6860 
-
6864  bool get_ubjson_object()
-
6865  {
-
6866  std::pair<std::size_t, int> size_and_type;
-
6867  if (JSON_HEDLEY_UNLIKELY(not get_ubjson_size_type(size_and_type)))
-
6868  {
-
6869  return false;
-
6870  }
-
6871 
-
6872  string_t key;
-
6873  if (size_and_type.first != string_t::npos)
-
6874  {
-
6875  if (JSON_HEDLEY_UNLIKELY(not sax->start_object(size_and_type.first)))
-
6876  {
-
6877  return false;
-
6878  }
-
6879 
-
6880  if (size_and_type.second != 0)
-
6881  {
-
6882  for (std::size_t i = 0; i < size_and_type.first; ++i)
-
6883  {
-
6884  if (JSON_HEDLEY_UNLIKELY(not get_ubjson_string(key) or not sax->key(key)))
-
6885  {
-
6886  return false;
-
6887  }
-
6888  if (JSON_HEDLEY_UNLIKELY(not get_ubjson_value(size_and_type.second)))
-
6889  {
-
6890  return false;
-
6891  }
-
6892  key.clear();
-
6893  }
-
6894  }
-
6895  else
-
6896  {
-
6897  for (std::size_t i = 0; i < size_and_type.first; ++i)
-
6898  {
-
6899  if (JSON_HEDLEY_UNLIKELY(not get_ubjson_string(key) or not sax->key(key)))
-
6900  {
-
6901  return false;
-
6902  }
-
6903  if (JSON_HEDLEY_UNLIKELY(not parse_ubjson_internal()))
-
6904  {
-
6905  return false;
-
6906  }
-
6907  key.clear();
-
6908  }
-
6909  }
-
6910  }
-
6911  else
-
6912  {
-
6913  if (JSON_HEDLEY_UNLIKELY(not sax->start_object(std::size_t(-1))))
-
6914  {
-
6915  return false;
-
6916  }
-
6917 
-
6918  while (current != '}')
-
6919  {
-
6920  if (JSON_HEDLEY_UNLIKELY(not get_ubjson_string(key, false) or not sax->key(key)))
-
6921  {
-
6922  return false;
-
6923  }
-
6924  if (JSON_HEDLEY_UNLIKELY(not parse_ubjson_internal()))
-
6925  {
-
6926  return false;
-
6927  }
-
6928  get_ignore_noop();
-
6929  key.clear();
-
6930  }
-
6931  }
-
6932 
-
6933  return sax->end_object();
-
6934  }
-
6935 
-
6937  // Utility functions //
-
6939 
-
6949  int get()
-
6950  {
-
6951  ++chars_read;
-
6952  return current = ia->get_character();
-
6953  }
-
6954 
-
6958  int get_ignore_noop()
-
6959  {
-
6960  do
-
6961  {
-
6962  get();
-
6963  }
-
6964  while (current == 'N');
-
6965 
-
6966  return current;
-
6967  }
-
6968 
-
6969  /*
-
6970  @brief read a number from the input
-
6971 
-
6972  @tparam NumberType the type of the number
-
6973  @param[in] format the current format (for diagnostics)
-
6974  @param[out] result number of type @a NumberType
-
6975 
-
6976  @return whether conversion completed
-
6977 
-
6978  @note This function needs to respect the system's endianess, because
-
6979  bytes in CBOR, MessagePack, and UBJSON are stored in network order
-
6980  (big endian) and therefore need reordering on little endian systems.
-
6981  */
-
6982  template<typename NumberType, bool InputIsLittleEndian = false>
-
6983  bool get_number(const input_format_t format, NumberType& result)
-
6984  {
-
6985  // step 1: read input into array with system's byte order
-
6986  std::array<std::uint8_t, sizeof(NumberType)> vec;
-
6987  for (std::size_t i = 0; i < sizeof(NumberType); ++i)
-
6988  {
-
6989  get();
-
6990  if (JSON_HEDLEY_UNLIKELY(not unexpect_eof(format, "number")))
-
6991  {
-
6992  return false;
-
6993  }
-
6994 
-
6995  // reverse byte order prior to conversion if necessary
-
6996  if (is_little_endian != InputIsLittleEndian)
-
6997  {
-
6998  vec[sizeof(NumberType) - i - 1] = static_cast<std::uint8_t>(current);
-
6999  }
-
7000  else
-
7001  {
-
7002  vec[i] = static_cast<std::uint8_t>(current); // LCOV_EXCL_LINE
-
7003  }
-
7004  }
-
7005 
-
7006  // step 2: convert array into number of type T and return
-
7007  std::memcpy(&result, vec.data(), sizeof(NumberType));
-
7008  return true;
-
7009  }
-
7010 
-
7025  template<typename NumberType>
-
7026  bool get_string(const input_format_t format,
-
7027  const NumberType len,
-
7028  string_t& result)
-
7029  {
-
7030  bool success = true;
-
7031  std::generate_n(std::back_inserter(result), len, [this, &success, &format]()
-
7032  {
-
7033  get();
-
7034  if (JSON_HEDLEY_UNLIKELY(not unexpect_eof(format, "string")))
-
7035  {
-
7036  success = false;
-
7037  }
-
7038  return static_cast<char>(current);
-
7039  });
-
7040  return success;
-
7041  }
-
7042 
- -
7049  bool unexpect_eof(const input_format_t format, const char* context) const
-
7050  {
-
7051  if (JSON_HEDLEY_UNLIKELY(current == std::char_traits<char>::eof()))
-
7052  {
-
7053  return sax->parse_error(chars_read, "<end of file>",
-
7054  parse_error::create(110, chars_read, exception_message(format, "unexpected end of input", context)));
-
7055  }
-
7056  return true;
-
7057  }
-
7058 
-
7062  std::string get_token_string() const
-
7063  {
-
7064  std::array<char, 3> cr{{}};
-
7065  (std::snprintf)(cr.data(), cr.size(), "%.2hhX", static_cast<unsigned char>(current));
-
7066  return std::string{cr.data()};
-
7067  }
-
7068 
-
7075  std::string exception_message(const input_format_t format,
-
7076  const std::string& detail,
-
7077  const std::string& context) const
-
7078  {
-
7079  std::string error_msg = "syntax error while parsing ";
-
7080 
-
7081  switch (format)
-
7082  {
-
7083  case input_format_t::cbor:
-
7084  error_msg += "CBOR";
-
7085  break;
-
7086 
- -
7088  error_msg += "MessagePack";
-
7089  break;
-
7090 
- -
7092  error_msg += "UBJSON";
-
7093  break;
-
7094 
-
7095  case input_format_t::bson:
-
7096  error_msg += "BSON";
-
7097  break;
-
7098 
-
7099  default: // LCOV_EXCL_LINE
-
7100  assert(false); // LCOV_EXCL_LINE
-
7101  }
-
7102 
-
7103  return error_msg + " " + context + ": " + detail;
-
7104  }
-
7105 
-
7106  private:
-
7108  input_adapter_t ia = nullptr;
-
7109 
-
7111  int current = std::char_traits<char>::eof();
-
7112 
-
7114  std::size_t chars_read = 0;
-
7115 
-
7117  const bool is_little_endian = little_endianess();
-
7118 
-
7120  json_sax_t* sax = nullptr;
-
7121 };
-
7122 } // namespace detail
-
7123 } // namespace nlohmann
-
7124 
-
7125 // #include <nlohmann/detail/input/input_adapters.hpp>
-
7126 
-
7127 // #include <nlohmann/detail/input/lexer.hpp>
-
7128 
-
7129 
-
7130 #include <array> // array
-
7131 #include <clocale> // localeconv
-
7132 #include <cstddef> // size_t
-
7133 #include <cstdio> // snprintf
-
7134 #include <cstdlib> // strtof, strtod, strtold, strtoll, strtoull
-
7135 #include <initializer_list> // initializer_list
-
7136 #include <string> // char_traits, string
-
7137 #include <utility> // move
-
7138 #include <vector> // vector
-
7139 
-
7140 // #include <nlohmann/detail/input/input_adapters.hpp>
-
7141 
-
7142 // #include <nlohmann/detail/input/position_t.hpp>
-
7143 
-
7144 // #include <nlohmann/detail/macro_scope.hpp>
-
7145 
-
7146 
-
7147 namespace nlohmann
-
7148 {
-
7149 namespace detail
-
7150 {
-
7152 // lexer //
-
7154 
-
7160 template<typename BasicJsonType>
-
7161 class lexer
-
7162 {
-
7163  using number_integer_t = typename BasicJsonType::number_integer_t;
-
7164  using number_unsigned_t = typename BasicJsonType::number_unsigned_t;
-
7165  using number_float_t = typename BasicJsonType::number_float_t;
-
7166  using string_t = typename BasicJsonType::string_t;
-
7167 
-
7168  public:
-
7170  enum class token_type
-
7171  {
-
7172  uninitialized,
-
7173  literal_true,
-
7174  literal_false,
-
7175  literal_null,
-
7176  value_string,
-
7177  value_unsigned,
-
7178  value_integer,
-
7179  value_float,
-
7180  begin_array,
-
7181  begin_object,
-
7182  end_array,
-
7183  end_object,
-
7184  name_separator,
-
7185  value_separator,
-
7186  parse_error,
-
7187  end_of_input,
- -
7189  };
-
7190 
- - -
7194  static const char* token_type_name(const token_type t) noexcept
-
7195  {
-
7196  switch (t)
-
7197  {
- -
7199  return "<uninitialized>";
- -
7201  return "true literal";
- -
7203  return "false literal";
- -
7205  return "null literal";
- -
7207  return "string literal";
- - - -
7211  return "number literal";
- -
7213  return "'['";
- -
7215  return "'{'";
-
7216  case token_type::end_array:
-
7217  return "']'";
- -
7219  return "'}'";
- -
7221  return "':'";
- -
7223  return "','";
- -
7225  return "<parse error>";
- -
7227  return "end of input";
- -
7229  return "'[', '{', or a literal";
-
7230  // LCOV_EXCL_START
-
7231  default: // catch non-enum values
-
7232  return "unknown token";
-
7233  // LCOV_EXCL_STOP
-
7234  }
-
7235  }
-
7236 
-
7237  explicit lexer(detail::input_adapter_t&& adapter)
-
7238  : ia(std::move(adapter)), decimal_point_char(get_decimal_point()) {}
-
7239 
-
7240  // delete because of pointer members
-
7241  lexer(const lexer&) = delete;
-
7242  lexer(lexer&&) = delete;
-
7243  lexer& operator=(lexer&) = delete;
-
7244  lexer& operator=(lexer&&) = delete;
-
7245  ~lexer() = default;
-
7246 
-
7247  private:
-
7249  // locales
-
7251 
- -
7254  static char get_decimal_point() noexcept
-
7255  {
-
7256  const auto loc = localeconv();
-
7257  assert(loc != nullptr);
-
7258  return (loc->decimal_point == nullptr) ? '.' : *(loc->decimal_point);
-
7259  }
-
7260 
-
7262  // scan functions
-
7264 
-
7280  int get_codepoint()
-
7281  {
-
7282  // this function only makes sense after reading `\u`
-
7283  assert(current == 'u');
-
7284  int codepoint = 0;
-
7285 
-
7286  const auto factors = { 12u, 8u, 4u, 0u };
-
7287  for (const auto factor : factors)
-
7288  {
-
7289  get();
-
7290 
-
7291  if (current >= '0' and current <= '9')
-
7292  {
-
7293  codepoint += static_cast<int>((static_cast<unsigned int>(current) - 0x30u) << factor);
-
7294  }
-
7295  else if (current >= 'A' and current <= 'F')
-
7296  {
-
7297  codepoint += static_cast<int>((static_cast<unsigned int>(current) - 0x37u) << factor);
-
7298  }
-
7299  else if (current >= 'a' and current <= 'f')
-
7300  {
-
7301  codepoint += static_cast<int>((static_cast<unsigned int>(current) - 0x57u) << factor);
-
7302  }
-
7303  else
-
7304  {
-
7305  return -1;
-
7306  }
-
7307  }
-
7308 
-
7309  assert(0x0000 <= codepoint and codepoint <= 0xFFFF);
-
7310  return codepoint;
-
7311  }
-
7312 
-
7328  bool next_byte_in_range(std::initializer_list<int> ranges)
-
7329  {
-
7330  assert(ranges.size() == 2 or ranges.size() == 4 or ranges.size() == 6);
-
7331  add(current);
-
7332 
-
7333  for (auto range = ranges.begin(); range != ranges.end(); ++range)
-
7334  {
-
7335  get();
-
7336  if (JSON_HEDLEY_LIKELY(*range <= current and current <= *(++range)))
-
7337  {
-
7338  add(current);
-
7339  }
-
7340  else
-
7341  {
-
7342  error_message = "invalid string: ill-formed UTF-8 byte";
-
7343  return false;
-
7344  }
-
7345  }
-
7346 
-
7347  return true;
-
7348  }
-
7349 
-
7365  token_type scan_string()
-
7366  {
-
7367  // reset token_buffer (ignore opening quote)
-
7368  reset();
-
7369 
-
7370  // we entered the function by reading an open quote
-
7371  assert(current == '\"');
-
7372 
-
7373  while (true)
-
7374  {
-
7375  // get next character
-
7376  switch (get())
-
7377  {
-
7378  // end of file while parsing string
-
7379  case std::char_traits<char>::eof():
-
7380  {
-
7381  error_message = "invalid string: missing closing quote";
-
7382  return token_type::parse_error;
-
7383  }
-
7384 
-
7385  // closing quote
-
7386  case '\"':
-
7387  {
-
7388  return token_type::value_string;
-
7389  }
-
7390 
-
7391  // escapes
-
7392  case '\\':
-
7393  {
-
7394  switch (get())
-
7395  {
-
7396  // quotation mark
-
7397  case '\"':
-
7398  add('\"');
-
7399  break;
-
7400  // reverse solidus
-
7401  case '\\':
-
7402  add('\\');
-
7403  break;
-
7404  // solidus
-
7405  case '/':
-
7406  add('/');
-
7407  break;
-
7408  // backspace
-
7409  case 'b':
-
7410  add('\b');
-
7411  break;
-
7412  // form feed
-
7413  case 'f':
-
7414  add('\f');
-
7415  break;
-
7416  // line feed
-
7417  case 'n':
-
7418  add('\n');
-
7419  break;
-
7420  // carriage return
-
7421  case 'r':
-
7422  add('\r');
-
7423  break;
-
7424  // tab
-
7425  case 't':
-
7426  add('\t');
-
7427  break;
-
7428 
-
7429  // unicode escapes
-
7430  case 'u':
-
7431  {
-
7432  const int codepoint1 = get_codepoint();
-
7433  int codepoint = codepoint1; // start with codepoint1
-
7434 
-
7435  if (JSON_HEDLEY_UNLIKELY(codepoint1 == -1))
-
7436  {
-
7437  error_message = "invalid string: '\\u' must be followed by 4 hex digits";
-
7438  return token_type::parse_error;
-
7439  }
-
7440 
-
7441  // check if code point is a high surrogate
-
7442  if (0xD800 <= codepoint1 and codepoint1 <= 0xDBFF)
-
7443  {
-
7444  // expect next \uxxxx entry
-
7445  if (JSON_HEDLEY_LIKELY(get() == '\\' and get() == 'u'))
-
7446  {
-
7447  const int codepoint2 = get_codepoint();
-
7448 
-
7449  if (JSON_HEDLEY_UNLIKELY(codepoint2 == -1))
-
7450  {
-
7451  error_message = "invalid string: '\\u' must be followed by 4 hex digits";
-
7452  return token_type::parse_error;
-
7453  }
-
7454 
-
7455  // check if codepoint2 is a low surrogate
-
7456  if (JSON_HEDLEY_LIKELY(0xDC00 <= codepoint2 and codepoint2 <= 0xDFFF))
-
7457  {
-
7458  // overwrite codepoint
-
7459  codepoint = static_cast<int>(
-
7460  // high surrogate occupies the most significant 22 bits
-
7461  (static_cast<unsigned int>(codepoint1) << 10u)
-
7462  // low surrogate occupies the least significant 15 bits
-
7463  + static_cast<unsigned int>(codepoint2)
-
7464  // there is still the 0xD800, 0xDC00 and 0x10000 noise
-
7465  // in the result so we have to subtract with:
-
7466  // (0xD800 << 10) + DC00 - 0x10000 = 0x35FDC00
-
7467  - 0x35FDC00u);
-
7468  }
-
7469  else
-
7470  {
-
7471  error_message = "invalid string: surrogate U+DC00..U+DFFF must be followed by U+DC00..U+DFFF";
-
7472  return token_type::parse_error;
-
7473  }
-
7474  }
-
7475  else
-
7476  {
-
7477  error_message = "invalid string: surrogate U+DC00..U+DFFF must be followed by U+DC00..U+DFFF";
-
7478  return token_type::parse_error;
-
7479  }
-
7480  }
-
7481  else
-
7482  {
-
7483  if (JSON_HEDLEY_UNLIKELY(0xDC00 <= codepoint1 and codepoint1 <= 0xDFFF))
-
7484  {
-
7485  error_message = "invalid string: surrogate U+DC00..U+DFFF must follow U+D800..U+DBFF";
-
7486  return token_type::parse_error;
-
7487  }
-
7488  }
-
7489 
-
7490  // result of the above calculation yields a proper codepoint
-
7491  assert(0x00 <= codepoint and codepoint <= 0x10FFFF);
-
7492 
-
7493  // translate codepoint into bytes
-
7494  if (codepoint < 0x80)
-
7495  {
-
7496  // 1-byte characters: 0xxxxxxx (ASCII)
-
7497  add(codepoint);
-
7498  }
-
7499  else if (codepoint <= 0x7FF)
-
7500  {
-
7501  // 2-byte characters: 110xxxxx 10xxxxxx
-
7502  add(static_cast<int>(0xC0u | (static_cast<unsigned int>(codepoint) >> 6u)));
-
7503  add(static_cast<int>(0x80u | (static_cast<unsigned int>(codepoint) & 0x3Fu)));
-
7504  }
-
7505  else if (codepoint <= 0xFFFF)
-
7506  {
-
7507  // 3-byte characters: 1110xxxx 10xxxxxx 10xxxxxx
-
7508  add(static_cast<int>(0xE0u | (static_cast<unsigned int>(codepoint) >> 12u)));
-
7509  add(static_cast<int>(0x80u | ((static_cast<unsigned int>(codepoint) >> 6u) & 0x3Fu)));
-
7510  add(static_cast<int>(0x80u | (static_cast<unsigned int>(codepoint) & 0x3Fu)));
-
7511  }
-
7512  else
-
7513  {
-
7514  // 4-byte characters: 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
-
7515  add(static_cast<int>(0xF0u | (static_cast<unsigned int>(codepoint) >> 18u)));
-
7516  add(static_cast<int>(0x80u | ((static_cast<unsigned int>(codepoint) >> 12u) & 0x3Fu)));
-
7517  add(static_cast<int>(0x80u | ((static_cast<unsigned int>(codepoint) >> 6u) & 0x3Fu)));
-
7518  add(static_cast<int>(0x80u | (static_cast<unsigned int>(codepoint) & 0x3Fu)));
-
7519  }
-
7520 
-
7521  break;
-
7522  }
-
7523 
-
7524  // other characters after escape
-
7525  default:
-
7526  error_message = "invalid string: forbidden character after backslash";
-
7527  return token_type::parse_error;
-
7528  }
-
7529 
-
7530  break;
-
7531  }
-
7532 
-
7533  // invalid control characters
-
7534  case 0x00:
-
7535  {
-
7536  error_message = "invalid string: control character U+0000 (NUL) must be escaped to \\u0000";
-
7537  return token_type::parse_error;
-
7538  }
-
7539 
-
7540  case 0x01:
-
7541  {
-
7542  error_message = "invalid string: control character U+0001 (SOH) must be escaped to \\u0001";
-
7543  return token_type::parse_error;
-
7544  }
-
7545 
-
7546  case 0x02:
-
7547  {
-
7548  error_message = "invalid string: control character U+0002 (STX) must be escaped to \\u0002";
-
7549  return token_type::parse_error;
-
7550  }
-
7551 
-
7552  case 0x03:
-
7553  {
-
7554  error_message = "invalid string: control character U+0003 (ETX) must be escaped to \\u0003";
-
7555  return token_type::parse_error;
-
7556  }
-
7557 
-
7558  case 0x04:
-
7559  {
-
7560  error_message = "invalid string: control character U+0004 (EOT) must be escaped to \\u0004";
-
7561  return token_type::parse_error;
-
7562  }
-
7563 
-
7564  case 0x05:
-
7565  {
-
7566  error_message = "invalid string: control character U+0005 (ENQ) must be escaped to \\u0005";
-
7567  return token_type::parse_error;
-
7568  }
-
7569 
-
7570  case 0x06:
-
7571  {
-
7572  error_message = "invalid string: control character U+0006 (ACK) must be escaped to \\u0006";
-
7573  return token_type::parse_error;
-
7574  }
-
7575 
-
7576  case 0x07:
-
7577  {
-
7578  error_message = "invalid string: control character U+0007 (BEL) must be escaped to \\u0007";
-
7579  return token_type::parse_error;
-
7580  }
-
7581 
-
7582  case 0x08:
-
7583  {
-
7584  error_message = "invalid string: control character U+0008 (BS) must be escaped to \\u0008 or \\b";
-
7585  return token_type::parse_error;
-
7586  }
-
7587 
-
7588  case 0x09:
-
7589  {
-
7590  error_message = "invalid string: control character U+0009 (HT) must be escaped to \\u0009 or \\t";
-
7591  return token_type::parse_error;
-
7592  }
-
7593 
-
7594  case 0x0A:
-
7595  {
-
7596  error_message = "invalid string: control character U+000A (LF) must be escaped to \\u000A or \\n";
-
7597  return token_type::parse_error;
-
7598  }
-
7599 
-
7600  case 0x0B:
-
7601  {
-
7602  error_message = "invalid string: control character U+000B (VT) must be escaped to \\u000B";
-
7603  return token_type::parse_error;
-
7604  }
-
7605 
-
7606  case 0x0C:
-
7607  {
-
7608  error_message = "invalid string: control character U+000C (FF) must be escaped to \\u000C or \\f";
-
7609  return token_type::parse_error;
-
7610  }
-
7611 
-
7612  case 0x0D:
-
7613  {
-
7614  error_message = "invalid string: control character U+000D (CR) must be escaped to \\u000D or \\r";
-
7615  return token_type::parse_error;
-
7616  }
-
7617 
-
7618  case 0x0E:
-
7619  {
-
7620  error_message = "invalid string: control character U+000E (SO) must be escaped to \\u000E";
-
7621  return token_type::parse_error;
-
7622  }
-
7623 
-
7624  case 0x0F:
-
7625  {
-
7626  error_message = "invalid string: control character U+000F (SI) must be escaped to \\u000F";
-
7627  return token_type::parse_error;
-
7628  }
-
7629 
-
7630  case 0x10:
-
7631  {
-
7632  error_message = "invalid string: control character U+0010 (DLE) must be escaped to \\u0010";
-
7633  return token_type::parse_error;
-
7634  }
-
7635 
-
7636  case 0x11:
-
7637  {
-
7638  error_message = "invalid string: control character U+0011 (DC1) must be escaped to \\u0011";
-
7639  return token_type::parse_error;
-
7640  }
-
7641 
-
7642  case 0x12:
-
7643  {
-
7644  error_message = "invalid string: control character U+0012 (DC2) must be escaped to \\u0012";
-
7645  return token_type::parse_error;
-
7646  }
-
7647 
-
7648  case 0x13:
-
7649  {
-
7650  error_message = "invalid string: control character U+0013 (DC3) must be escaped to \\u0013";
-
7651  return token_type::parse_error;
-
7652  }
-
7653 
-
7654  case 0x14:
-
7655  {
-
7656  error_message = "invalid string: control character U+0014 (DC4) must be escaped to \\u0014";
-
7657  return token_type::parse_error;
-
7658  }
-
7659 
-
7660  case 0x15:
-
7661  {
-
7662  error_message = "invalid string: control character U+0015 (NAK) must be escaped to \\u0015";
-
7663  return token_type::parse_error;
-
7664  }
-
7665 
-
7666  case 0x16:
-
7667  {
-
7668  error_message = "invalid string: control character U+0016 (SYN) must be escaped to \\u0016";
-
7669  return token_type::parse_error;
-
7670  }
-
7671 
-
7672  case 0x17:
-
7673  {
-
7674  error_message = "invalid string: control character U+0017 (ETB) must be escaped to \\u0017";
-
7675  return token_type::parse_error;
-
7676  }
-
7677 
-
7678  case 0x18:
-
7679  {
-
7680  error_message = "invalid string: control character U+0018 (CAN) must be escaped to \\u0018";
-
7681  return token_type::parse_error;
-
7682  }
-
7683 
-
7684  case 0x19:
-
7685  {
-
7686  error_message = "invalid string: control character U+0019 (EM) must be escaped to \\u0019";
-
7687  return token_type::parse_error;
-
7688  }
-
7689 
-
7690  case 0x1A:
-
7691  {
-
7692  error_message = "invalid string: control character U+001A (SUB) must be escaped to \\u001A";
-
7693  return token_type::parse_error;
-
7694  }
-
7695 
-
7696  case 0x1B:
-
7697  {
-
7698  error_message = "invalid string: control character U+001B (ESC) must be escaped to \\u001B";
-
7699  return token_type::parse_error;
-
7700  }
-
7701 
-
7702  case 0x1C:
-
7703  {
-
7704  error_message = "invalid string: control character U+001C (FS) must be escaped to \\u001C";
-
7705  return token_type::parse_error;
-
7706  }
-
7707 
-
7708  case 0x1D:
-
7709  {
-
7710  error_message = "invalid string: control character U+001D (GS) must be escaped to \\u001D";
-
7711  return token_type::parse_error;
-
7712  }
-
7713 
-
7714  case 0x1E:
-
7715  {
-
7716  error_message = "invalid string: control character U+001E (RS) must be escaped to \\u001E";
-
7717  return token_type::parse_error;
-
7718  }
-
7719 
-
7720  case 0x1F:
-
7721  {
-
7722  error_message = "invalid string: control character U+001F (US) must be escaped to \\u001F";
-
7723  return token_type::parse_error;
-
7724  }
-
7725 
-
7726  // U+0020..U+007F (except U+0022 (quote) and U+005C (backspace))
-
7727  case 0x20:
-
7728  case 0x21:
-
7729  case 0x23:
-
7730  case 0x24:
-
7731  case 0x25:
-
7732  case 0x26:
-
7733  case 0x27:
-
7734  case 0x28:
-
7735  case 0x29:
-
7736  case 0x2A:
-
7737  case 0x2B:
-
7738  case 0x2C:
-
7739  case 0x2D:
-
7740  case 0x2E:
-
7741  case 0x2F:
-
7742  case 0x30:
-
7743  case 0x31:
-
7744  case 0x32:
-
7745  case 0x33:
-
7746  case 0x34:
-
7747  case 0x35:
-
7748  case 0x36:
-
7749  case 0x37:
-
7750  case 0x38:
-
7751  case 0x39:
-
7752  case 0x3A:
-
7753  case 0x3B:
-
7754  case 0x3C:
-
7755  case 0x3D:
-
7756  case 0x3E:
-
7757  case 0x3F:
-
7758  case 0x40:
-
7759  case 0x41:
-
7760  case 0x42:
-
7761  case 0x43:
-
7762  case 0x44:
-
7763  case 0x45:
-
7764  case 0x46:
-
7765  case 0x47:
-
7766  case 0x48:
-
7767  case 0x49:
-
7768  case 0x4A:
-
7769  case 0x4B:
-
7770  case 0x4C:
-
7771  case 0x4D:
-
7772  case 0x4E:
-
7773  case 0x4F:
-
7774  case 0x50:
-
7775  case 0x51:
-
7776  case 0x52:
-
7777  case 0x53:
-
7778  case 0x54:
-
7779  case 0x55:
-
7780  case 0x56:
-
7781  case 0x57:
-
7782  case 0x58:
-
7783  case 0x59:
-
7784  case 0x5A:
-
7785  case 0x5B:
-
7786  case 0x5D:
-
7787  case 0x5E:
-
7788  case 0x5F:
-
7789  case 0x60:
-
7790  case 0x61:
-
7791  case 0x62:
-
7792  case 0x63:
-
7793  case 0x64:
-
7794  case 0x65:
-
7795  case 0x66:
-
7796  case 0x67:
-
7797  case 0x68:
-
7798  case 0x69:
-
7799  case 0x6A:
-
7800  case 0x6B:
-
7801  case 0x6C:
-
7802  case 0x6D:
-
7803  case 0x6E:
-
7804  case 0x6F:
-
7805  case 0x70:
-
7806  case 0x71:
-
7807  case 0x72:
-
7808  case 0x73:
-
7809  case 0x74:
-
7810  case 0x75:
-
7811  case 0x76:
-
7812  case 0x77:
-
7813  case 0x78:
-
7814  case 0x79:
-
7815  case 0x7A:
-
7816  case 0x7B:
-
7817  case 0x7C:
-
7818  case 0x7D:
-
7819  case 0x7E:
-
7820  case 0x7F:
-
7821  {
-
7822  add(current);
-
7823  break;
-
7824  }
-
7825 
-
7826  // U+0080..U+07FF: bytes C2..DF 80..BF
-
7827  case 0xC2:
-
7828  case 0xC3:
-
7829  case 0xC4:
-
7830  case 0xC5:
-
7831  case 0xC6:
-
7832  case 0xC7:
-
7833  case 0xC8:
-
7834  case 0xC9:
-
7835  case 0xCA:
-
7836  case 0xCB:
-
7837  case 0xCC:
-
7838  case 0xCD:
-
7839  case 0xCE:
-
7840  case 0xCF:
-
7841  case 0xD0:
-
7842  case 0xD1:
-
7843  case 0xD2:
-
7844  case 0xD3:
-
7845  case 0xD4:
-
7846  case 0xD5:
-
7847  case 0xD6:
-
7848  case 0xD7:
-
7849  case 0xD8:
-
7850  case 0xD9:
-
7851  case 0xDA:
-
7852  case 0xDB:
-
7853  case 0xDC:
-
7854  case 0xDD:
-
7855  case 0xDE:
-
7856  case 0xDF:
-
7857  {
-
7858  if (JSON_HEDLEY_UNLIKELY(not next_byte_in_range({0x80, 0xBF})))
-
7859  {
-
7860  return token_type::parse_error;
-
7861  }
-
7862  break;
-
7863  }
-
7864 
-
7865  // U+0800..U+0FFF: bytes E0 A0..BF 80..BF
-
7866  case 0xE0:
-
7867  {
-
7868  if (JSON_HEDLEY_UNLIKELY(not (next_byte_in_range({0xA0, 0xBF, 0x80, 0xBF}))))
-
7869  {
-
7870  return token_type::parse_error;
-
7871  }
-
7872  break;
-
7873  }
-
7874 
-
7875  // U+1000..U+CFFF: bytes E1..EC 80..BF 80..BF
-
7876  // U+E000..U+FFFF: bytes EE..EF 80..BF 80..BF
-
7877  case 0xE1:
-
7878  case 0xE2:
-
7879  case 0xE3:
-
7880  case 0xE4:
-
7881  case 0xE5:
-
7882  case 0xE6:
-
7883  case 0xE7:
-
7884  case 0xE8:
-
7885  case 0xE9:
-
7886  case 0xEA:
-
7887  case 0xEB:
-
7888  case 0xEC:
-
7889  case 0xEE:
-
7890  case 0xEF:
-
7891  {
-
7892  if (JSON_HEDLEY_UNLIKELY(not (next_byte_in_range({0x80, 0xBF, 0x80, 0xBF}))))
-
7893  {
-
7894  return token_type::parse_error;
-
7895  }
-
7896  break;
-
7897  }
-
7898 
-
7899  // U+D000..U+D7FF: bytes ED 80..9F 80..BF
-
7900  case 0xED:
-
7901  {
-
7902  if (JSON_HEDLEY_UNLIKELY(not (next_byte_in_range({0x80, 0x9F, 0x80, 0xBF}))))
-
7903  {
-
7904  return token_type::parse_error;
-
7905  }
-
7906  break;
-
7907  }
-
7908 
-
7909  // U+10000..U+3FFFF F0 90..BF 80..BF 80..BF
-
7910  case 0xF0:
-
7911  {
-
7912  if (JSON_HEDLEY_UNLIKELY(not (next_byte_in_range({0x90, 0xBF, 0x80, 0xBF, 0x80, 0xBF}))))
-
7913  {
-
7914  return token_type::parse_error;
-
7915  }
-
7916  break;
-
7917  }
-
7918 
-
7919  // U+40000..U+FFFFF F1..F3 80..BF 80..BF 80..BF
-
7920  case 0xF1:
-
7921  case 0xF2:
-
7922  case 0xF3:
-
7923  {
-
7924  if (JSON_HEDLEY_UNLIKELY(not (next_byte_in_range({0x80, 0xBF, 0x80, 0xBF, 0x80, 0xBF}))))
-
7925  {
-
7926  return token_type::parse_error;
-
7927  }
-
7928  break;
-
7929  }
-
7930 
-
7931  // U+100000..U+10FFFF F4 80..8F 80..BF 80..BF
-
7932  case 0xF4:
-
7933  {
-
7934  if (JSON_HEDLEY_UNLIKELY(not (next_byte_in_range({0x80, 0x8F, 0x80, 0xBF, 0x80, 0xBF}))))
-
7935  {
-
7936  return token_type::parse_error;
-
7937  }
-
7938  break;
-
7939  }
-
7940 
-
7941  // remaining bytes (80..C1 and F5..FF) are ill-formed
-
7942  default:
-
7943  {
-
7944  error_message = "invalid string: ill-formed UTF-8 byte";
-
7945  return token_type::parse_error;
-
7946  }
-
7947  }
-
7948  }
-
7949  }
-
7950 
- -
7952  static void strtof(float& f, const char* str, char** endptr) noexcept
-
7953  {
-
7954  f = std::strtof(str, endptr);
-
7955  }
-
7956 
- -
7958  static void strtof(double& f, const char* str, char** endptr) noexcept
-
7959  {
-
7960  f = std::strtod(str, endptr);
-
7961  }
-
7962 
- -
7964  static void strtof(long double& f, const char* str, char** endptr) noexcept
-
7965  {
-
7966  f = std::strtold(str, endptr);
-
7967  }
-
7968 
-
8009  token_type scan_number() // lgtm [cpp/use-of-goto]
-
8010  {
-
8011  // reset token_buffer to store the number's bytes
-
8012  reset();
-
8013 
-
8014  // the type of the parsed number; initially set to unsigned; will be
-
8015  // changed if minus sign, decimal point or exponent is read
-
8016  token_type number_type = token_type::value_unsigned;
-
8017 
-
8018  // state (init): we just found out we need to scan a number
-
8019  switch (current)
-
8020  {
-
8021  case '-':
-
8022  {
-
8023  add(current);
-
8024  goto scan_number_minus;
-
8025  }
-
8026 
-
8027  case '0':
-
8028  {
-
8029  add(current);
-
8030  goto scan_number_zero;
-
8031  }
-
8032 
-
8033  case '1':
-
8034  case '2':
-
8035  case '3':
-
8036  case '4':
-
8037  case '5':
-
8038  case '6':
-
8039  case '7':
-
8040  case '8':
-
8041  case '9':
-
8042  {
-
8043  add(current);
-
8044  goto scan_number_any1;
-
8045  }
-
8046 
-
8047  // all other characters are rejected outside scan_number()
-
8048  default: // LCOV_EXCL_LINE
-
8049  assert(false); // LCOV_EXCL_LINE
-
8050  }
-
8051 
-
8052 scan_number_minus:
-
8053  // state: we just parsed a leading minus sign
-
8054  number_type = token_type::value_integer;
-
8055  switch (get())
-
8056  {
-
8057  case '0':
-
8058  {
-
8059  add(current);
-
8060  goto scan_number_zero;
-
8061  }
-
8062 
-
8063  case '1':
-
8064  case '2':
-
8065  case '3':
-
8066  case '4':
-
8067  case '5':
-
8068  case '6':
-
8069  case '7':
-
8070  case '8':
-
8071  case '9':
-
8072  {
-
8073  add(current);
-
8074  goto scan_number_any1;
-
8075  }
-
8076 
-
8077  default:
-
8078  {
-
8079  error_message = "invalid number; expected digit after '-'";
-
8080  return token_type::parse_error;
-
8081  }
-
8082  }
-
8083 
-
8084 scan_number_zero:
-
8085  // state: we just parse a zero (maybe with a leading minus sign)
-
8086  switch (get())
-
8087  {
-
8088  case '.':
-
8089  {
-
8090  add(decimal_point_char);
-
8091  goto scan_number_decimal1;
-
8092  }
-
8093 
-
8094  case 'e':
-
8095  case 'E':
-
8096  {
-
8097  add(current);
-
8098  goto scan_number_exponent;
-
8099  }
-
8100 
-
8101  default:
-
8102  goto scan_number_done;
-
8103  }
-
8104 
-
8105 scan_number_any1:
-
8106  // state: we just parsed a number 0-9 (maybe with a leading minus sign)
-
8107  switch (get())
-
8108  {
-
8109  case '0':
-
8110  case '1':
-
8111  case '2':
-
8112  case '3':
-
8113  case '4':
-
8114  case '5':
-
8115  case '6':
-
8116  case '7':
-
8117  case '8':
-
8118  case '9':
-
8119  {
-
8120  add(current);
-
8121  goto scan_number_any1;
-
8122  }
-
8123 
-
8124  case '.':
-
8125  {
-
8126  add(decimal_point_char);
-
8127  goto scan_number_decimal1;
-
8128  }
-
8129 
-
8130  case 'e':
-
8131  case 'E':
-
8132  {
-
8133  add(current);
-
8134  goto scan_number_exponent;
-
8135  }
-
8136 
-
8137  default:
-
8138  goto scan_number_done;
-
8139  }
-
8140 
-
8141 scan_number_decimal1:
-
8142  // state: we just parsed a decimal point
-
8143  number_type = token_type::value_float;
-
8144  switch (get())
-
8145  {
-
8146  case '0':
-
8147  case '1':
-
8148  case '2':
-
8149  case '3':
-
8150  case '4':
-
8151  case '5':
-
8152  case '6':
-
8153  case '7':
-
8154  case '8':
-
8155  case '9':
-
8156  {
-
8157  add(current);
-
8158  goto scan_number_decimal2;
-
8159  }
-
8160 
-
8161  default:
-
8162  {
-
8163  error_message = "invalid number; expected digit after '.'";
-
8164  return token_type::parse_error;
-
8165  }
-
8166  }
-
8167 
-
8168 scan_number_decimal2:
-
8169  // we just parsed at least one number after a decimal point
-
8170  switch (get())
-
8171  {
-
8172  case '0':
-
8173  case '1':
-
8174  case '2':
-
8175  case '3':
-
8176  case '4':
-
8177  case '5':
-
8178  case '6':
-
8179  case '7':
-
8180  case '8':
-
8181  case '9':
-
8182  {
-
8183  add(current);
-
8184  goto scan_number_decimal2;
-
8185  }
-
8186 
-
8187  case 'e':
-
8188  case 'E':
-
8189  {
-
8190  add(current);
-
8191  goto scan_number_exponent;
-
8192  }
-
8193 
-
8194  default:
-
8195  goto scan_number_done;
-
8196  }
-
8197 
-
8198 scan_number_exponent:
-
8199  // we just parsed an exponent
-
8200  number_type = token_type::value_float;
-
8201  switch (get())
-
8202  {
-
8203  case '+':
-
8204  case '-':
-
8205  {
-
8206  add(current);
-
8207  goto scan_number_sign;
-
8208  }
-
8209 
-
8210  case '0':
-
8211  case '1':
-
8212  case '2':
-
8213  case '3':
-
8214  case '4':
-
8215  case '5':
-
8216  case '6':
-
8217  case '7':
-
8218  case '8':
-
8219  case '9':
-
8220  {
-
8221  add(current);
-
8222  goto scan_number_any2;
-
8223  }
-
8224 
-
8225  default:
-
8226  {
-
8227  error_message =
-
8228  "invalid number; expected '+', '-', or digit after exponent";
-
8229  return token_type::parse_error;
-
8230  }
-
8231  }
-
8232 
-
8233 scan_number_sign:
-
8234  // we just parsed an exponent sign
-
8235  switch (get())
-
8236  {
-
8237  case '0':
-
8238  case '1':
-
8239  case '2':
-
8240  case '3':
-
8241  case '4':
-
8242  case '5':
-
8243  case '6':
-
8244  case '7':
-
8245  case '8':
-
8246  case '9':
-
8247  {
-
8248  add(current);
-
8249  goto scan_number_any2;
-
8250  }
-
8251 
-
8252  default:
-
8253  {
-
8254  error_message = "invalid number; expected digit after exponent sign";
-
8255  return token_type::parse_error;
-
8256  }
-
8257  }
-
8258 
-
8259 scan_number_any2:
-
8260  // we just parsed a number after the exponent or exponent sign
-
8261  switch (get())
-
8262  {
-
8263  case '0':
-
8264  case '1':
-
8265  case '2':
-
8266  case '3':
-
8267  case '4':
-
8268  case '5':
-
8269  case '6':
-
8270  case '7':
-
8271  case '8':
-
8272  case '9':
-
8273  {
-
8274  add(current);
-
8275  goto scan_number_any2;
-
8276  }
-
8277 
-
8278  default:
-
8279  goto scan_number_done;
-
8280  }
-
8281 
-
8282 scan_number_done:
-
8283  // unget the character after the number (we only read it to know that
-
8284  // we are done scanning a number)
-
8285  unget();
-
8286 
-
8287  char* endptr = nullptr;
-
8288  errno = 0;
-
8289 
-
8290  // try to parse integers first and fall back to floats
-
8291  if (number_type == token_type::value_unsigned)
-
8292  {
-
8293  const auto x = std::strtoull(token_buffer.data(), &endptr, 10);
-
8294 
-
8295  // we checked the number format before
-
8296  assert(endptr == token_buffer.data() + token_buffer.size());
-
8297 
-
8298  if (errno == 0)
-
8299  {
-
8300  value_unsigned = static_cast<number_unsigned_t>(x);
-
8301  if (value_unsigned == x)
-
8302  {
-
8303  return token_type::value_unsigned;
-
8304  }
-
8305  }
-
8306  }
-
8307  else if (number_type == token_type::value_integer)
-
8308  {
-
8309  const auto x = std::strtoll(token_buffer.data(), &endptr, 10);
-
8310 
-
8311  // we checked the number format before
-
8312  assert(endptr == token_buffer.data() + token_buffer.size());
-
8313 
-
8314  if (errno == 0)
-
8315  {
-
8316  value_integer = static_cast<number_integer_t>(x);
-
8317  if (value_integer == x)
-
8318  {
-
8319  return token_type::value_integer;
-
8320  }
-
8321  }
-
8322  }
-
8323 
-
8324  // this code is reached if we parse a floating-point number or if an
-
8325  // integer conversion above failed
-
8326  strtof(value_float, token_buffer.data(), &endptr);
-
8327 
-
8328  // we checked the number format before
-
8329  assert(endptr == token_buffer.data() + token_buffer.size());
-
8330 
-
8331  return token_type::value_float;
-
8332  }
-
8333 
- -
8340  token_type scan_literal(const char* literal_text, const std::size_t length,
-
8341  token_type return_type)
-
8342  {
-
8343  assert(current == literal_text[0]);
-
8344  for (std::size_t i = 1; i < length; ++i)
-
8345  {
-
8346  if (JSON_HEDLEY_UNLIKELY(get() != literal_text[i]))
-
8347  {
-
8348  error_message = "invalid literal";
-
8349  return token_type::parse_error;
-
8350  }
-
8351  }
-
8352  return return_type;
-
8353  }
-
8354 
-
8356  // input management
-
8358 
-
8360  void reset() noexcept
-
8361  {
-
8362  token_buffer.clear();
-
8363  token_string.clear();
-
8364  token_string.push_back(std::char_traits<char>::to_char_type(current));
-
8365  }
-
8366 
-
8367  /*
-
8368  @brief get next character from the input
-
8369 
-
8370  This function provides the interface to the used input adapter. It does
-
8371  not throw in case the input reached EOF, but returns a
-
8372  `std::char_traits<char>::eof()` in that case. Stores the scanned characters
-
8373  for use in error messages.
-
8374 
-
8375  @return character read from the input
-
8376  */
-
8377  std::char_traits<char>::int_type get()
-
8378  {
-
8379  ++position.chars_read_total;
-
8380  ++position.chars_read_current_line;
-
8381 
-
8382  if (next_unget)
-
8383  {
-
8384  // just reset the next_unget variable and work with current
-
8385  next_unget = false;
-
8386  }
-
8387  else
-
8388  {
-
8389  current = ia->get_character();
-
8390  }
-
8391 
-
8392  if (JSON_HEDLEY_LIKELY(current != std::char_traits<char>::eof()))
-
8393  {
-
8394  token_string.push_back(std::char_traits<char>::to_char_type(current));
-
8395  }
-
8396 
-
8397  if (current == '\n')
-
8398  {
-
8399  ++position.lines_read;
-
8400  position.chars_read_current_line = 0;
-
8401  }
-
8402 
-
8403  return current;
-
8404  }
-
8405 
-
8414  void unget()
-
8415  {
-
8416  next_unget = true;
-
8417 
-
8418  --position.chars_read_total;
-
8419 
-
8420  // in case we "unget" a newline, we have to also decrement the lines_read
-
8421  if (position.chars_read_current_line == 0)
-
8422  {
-
8423  if (position.lines_read > 0)
-
8424  {
-
8425  --position.lines_read;
-
8426  }
-
8427  }
-
8428  else
-
8429  {
-
8430  --position.chars_read_current_line;
-
8431  }
-
8432 
-
8433  if (JSON_HEDLEY_LIKELY(current != std::char_traits<char>::eof()))
-
8434  {
-
8435  assert(not token_string.empty());
-
8436  token_string.pop_back();
-
8437  }
-
8438  }
-
8439 
-
8441  void add(int c)
-
8442  {
-
8443  token_buffer.push_back(std::char_traits<char>::to_char_type(c));
-
8444  }
-
8445 
-
8446  public:
-
8448  // value getters
-
8450 
-
8452  constexpr number_integer_t get_number_integer() const noexcept
-
8453  {
-
8454  return value_integer;
-
8455  }
-
8456 
-
8458  constexpr number_unsigned_t get_number_unsigned() const noexcept
-
8459  {
-
8460  return value_unsigned;
-
8461  }
-
8462 
-
8464  constexpr number_float_t get_number_float() const noexcept
-
8465  {
-
8466  return value_float;
-
8467  }
-
8468 
-
8470  string_t& get_string()
-
8471  {
-
8472  return token_buffer;
-
8473  }
-
8474 
-
8476  // diagnostics
-
8478 
-
8480  constexpr position_t get_position() const noexcept
-
8481  {
-
8482  return position;
-
8483  }
-
8484 
-
8488  std::string get_token_string() const
-
8489  {
-
8490  // escape control characters
-
8491  std::string result;
-
8492  for (const auto c : token_string)
-
8493  {
-
8494  if ('\x00' <= c and c <= '\x1F')
-
8495  {
-
8496  // escape control characters
-
8497  std::array<char, 9> cs{{}};
-
8498  (std::snprintf)(cs.data(), cs.size(), "<U+%.4X>", static_cast<unsigned char>(c));
-
8499  result += cs.data();
-
8500  }
-
8501  else
-
8502  {
-
8503  // add character as is
-
8504  result.push_back(c);
-
8505  }
-
8506  }
-
8507 
-
8508  return result;
-
8509  }
-
8510 
- -
8513  constexpr const char* get_error_message() const noexcept
-
8514  {
-
8515  return error_message;
-
8516  }
-
8517 
-
8519  // actual scanner
-
8521 
-
8526  bool skip_bom()
-
8527  {
-
8528  if (get() == 0xEF)
-
8529  {
-
8530  // check if we completely parse the BOM
-
8531  return get() == 0xBB and get() == 0xBF;
-
8532  }
-
8533 
-
8534  // the first character is not the beginning of the BOM; unget it to
-
8535  // process is later
-
8536  unget();
-
8537  return true;
-
8538  }
-
8539 
- -
8541  {
-
8542  // initially, skip the BOM
-
8543  if (position.chars_read_total == 0 and not skip_bom())
-
8544  {
-
8545  error_message = "invalid BOM; must be 0xEF 0xBB 0xBF if given";
-
8546  return token_type::parse_error;
-
8547  }
-
8548 
-
8549  // read next character and ignore whitespace
-
8550  do
-
8551  {
-
8552  get();
-
8553  }
-
8554  while (current == ' ' or current == '\t' or current == '\n' or current == '\r');
-
8555 
-
8556  switch (current)
-
8557  {
-
8558  // structural characters
-
8559  case '[':
-
8560  return token_type::begin_array;
-
8561  case ']':
-
8562  return token_type::end_array;
-
8563  case '{':
-
8564  return token_type::begin_object;
-
8565  case '}':
-
8566  return token_type::end_object;
-
8567  case ':':
-
8568  return token_type::name_separator;
-
8569  case ',':
-
8570  return token_type::value_separator;
-
8571 
-
8572  // literals
-
8573  case 't':
-
8574  return scan_literal("true", 4, token_type::literal_true);
-
8575  case 'f':
-
8576  return scan_literal("false", 5, token_type::literal_false);
-
8577  case 'n':
-
8578  return scan_literal("null", 4, token_type::literal_null);
-
8579 
-
8580  // string
-
8581  case '\"':
-
8582  return scan_string();
-
8583 
-
8584  // number
-
8585  case '-':
-
8586  case '0':
-
8587  case '1':
-
8588  case '2':
-
8589  case '3':
-
8590  case '4':
-
8591  case '5':
-
8592  case '6':
-
8593  case '7':
-
8594  case '8':
-
8595  case '9':
-
8596  return scan_number();
-
8597 
-
8598  // end of input (the null byte is needed when parsing from
-
8599  // string literals)
-
8600  case '\0':
-
8601  case std::char_traits<char>::eof():
-
8602  return token_type::end_of_input;
-
8603 
-
8604  // error
-
8605  default:
-
8606  error_message = "invalid literal";
-
8607  return token_type::parse_error;
-
8608  }
-
8609  }
-
8610 
-
8611  private:
-
8613  detail::input_adapter_t ia = nullptr;
-
8614 
-
8616  std::char_traits<char>::int_type current = std::char_traits<char>::eof();
-
8617 
-
8619  bool next_unget = false;
-
8620 
-
8622  position_t position {};
-
8623 
-
8625  std::vector<char> token_string {};
-
8626 
-
8628  string_t token_buffer {};
-
8629 
-
8631  const char* error_message = "";
-
8632 
-
8633  // number values
-
8634  number_integer_t value_integer = 0;
-
8635  number_unsigned_t value_unsigned = 0;
-
8636  number_float_t value_float = 0;
-
8637 
-
8639  const char decimal_point_char = '.';
-
8640 };
-
8641 } // namespace detail
-
8642 } // namespace nlohmann
-
8643 
-
8644 // #include <nlohmann/detail/input/parser.hpp>
-
8645 
-
8646 
-
8647 #include <cassert> // assert
-
8648 #include <cmath> // isfinite
-
8649 #include <cstdint> // uint8_t
-
8650 #include <functional> // function
-
8651 #include <string> // string
-
8652 #include <utility> // move
-
8653 #include <vector> // vector
-
8654 
-
8655 // #include <nlohmann/detail/exceptions.hpp>
-
8656 
-
8657 // #include <nlohmann/detail/input/input_adapters.hpp>
-
8658 
-
8659 // #include <nlohmann/detail/input/json_sax.hpp>
-
8660 
-
8661 // #include <nlohmann/detail/input/lexer.hpp>
-
8662 
-
8663 // #include <nlohmann/detail/macro_scope.hpp>
-
8664 
-
8665 // #include <nlohmann/detail/meta/is_sax.hpp>
-
8666 
-
8667 // #include <nlohmann/detail/value_t.hpp>
-
8668 
-
8669 
-
8670 namespace nlohmann
-
8671 {
-
8672 namespace detail
-
8673 {
-
8675 // parser //
-
8677 
-
8683 template<typename BasicJsonType>
-
8684 class parser
-
8685 {
-
8686  using number_integer_t = typename BasicJsonType::number_integer_t;
-
8687  using number_unsigned_t = typename BasicJsonType::number_unsigned_t;
-
8688  using number_float_t = typename BasicJsonType::number_float_t;
-
8689  using string_t = typename BasicJsonType::string_t;
-
8690  using lexer_t = lexer<BasicJsonType>;
-
8691  using token_type = typename lexer_t::token_type;
-
8692 
-
8693  public:
-
8694  enum class parse_event_t : uint8_t
-
8695  {
-
8697  object_start,
-
8699  object_end,
-
8701  array_start,
-
8703  array_end,
-
8705  key,
-
8707  value
-
8708  };
-
8709 
-
8710  using parser_callback_t =
-
8711  std::function<bool(int depth, parse_event_t event, BasicJsonType& parsed)>;
-
8712 
-
8714  explicit parser(detail::input_adapter_t&& adapter,
-
8715  const parser_callback_t cb = nullptr,
-
8716  const bool allow_exceptions_ = true)
-
8717  : callback(cb), m_lexer(std::move(adapter)), allow_exceptions(allow_exceptions_)
-
8718  {
-
8719  // read first token
-
8720  get_token();
-
8721  }
-
8722 
-
8733  void parse(const bool strict, BasicJsonType& result)
-
8734  {
-
8735  if (callback)
-
8736  {
-
8737  json_sax_dom_callback_parser<BasicJsonType> sdp(result, callback, allow_exceptions);
-
8738  sax_parse_internal(&sdp);
-
8739  result.assert_invariant();
-
8740 
-
8741  // in strict mode, input must be completely read
-
8742  if (strict and (get_token() != token_type::end_of_input))
-
8743  {
-
8744  sdp.parse_error(m_lexer.get_position(),
-
8745  m_lexer.get_token_string(),
-
8746  parse_error::create(101, m_lexer.get_position(),
-
8747  exception_message(token_type::end_of_input, "value")));
-
8748  }
-
8749 
-
8750  // in case of an error, return discarded value
-
8751  if (sdp.is_errored())
-
8752  {
-
8753  result = value_t::discarded;
-
8754  return;
-
8755  }
-
8756 
-
8757  // set top-level value to null if it was discarded by the callback
-
8758  // function
-
8759  if (result.is_discarded())
-
8760  {
-
8761  result = nullptr;
-
8762  }
-
8763  }
-
8764  else
-
8765  {
-
8766  json_sax_dom_parser<BasicJsonType> sdp(result, allow_exceptions);
-
8767  sax_parse_internal(&sdp);
-
8768  result.assert_invariant();
-
8769 
-
8770  // in strict mode, input must be completely read
-
8771  if (strict and (get_token() != token_type::end_of_input))
-
8772  {
-
8773  sdp.parse_error(m_lexer.get_position(),
-
8774  m_lexer.get_token_string(),
-
8775  parse_error::create(101, m_lexer.get_position(),
-
8776  exception_message(token_type::end_of_input, "value")));
-
8777  }
-
8778 
-
8779  // in case of an error, return discarded value
-
8780  if (sdp.is_errored())
-
8781  {
-
8782  result = value_t::discarded;
-
8783  return;
-
8784  }
-
8785  }
-
8786  }
-
8787 
-
8794  bool accept(const bool strict = true)
-
8795  {
-
8796  json_sax_acceptor<BasicJsonType> sax_acceptor;
-
8797  return sax_parse(&sax_acceptor, strict);
-
8798  }
-
8799 
-
8800  template <typename SAX>
- -
8802  bool sax_parse(SAX* sax, const bool strict = true)
-
8803  {
- -
8805  const bool result = sax_parse_internal(sax);
-
8806 
-
8807  // strict mode: next byte must be EOF
-
8808  if (result and strict and (get_token() != token_type::end_of_input))
-
8809  {
-
8810  return sax->parse_error(m_lexer.get_position(),
-
8811  m_lexer.get_token_string(),
-
8812  parse_error::create(101, m_lexer.get_position(),
-
8813  exception_message(token_type::end_of_input, "value")));
-
8814  }
-
8815 
-
8816  return result;
-
8817  }
-
8818 
-
8819  private:
-
8820  template <typename SAX>
- -
8822  bool sax_parse_internal(SAX* sax)
-
8823  {
-
8824  // stack to remember the hierarchy of structured values we are parsing
-
8825  // true = array; false = object
-
8826  std::vector<bool> states;
-
8827  // value to avoid a goto (see comment where set to true)
-
8828  bool skip_to_state_evaluation = false;
-
8829 
-
8830  while (true)
-
8831  {
-
8832  if (not skip_to_state_evaluation)
-
8833  {
-
8834  // invariant: get_token() was called before each iteration
-
8835  switch (last_token)
-
8836  {
-
8837  case token_type::begin_object:
-
8838  {
-
8839  if (JSON_HEDLEY_UNLIKELY(not sax->start_object(std::size_t(-1))))
-
8840  {
-
8841  return false;
-
8842  }
-
8843 
-
8844  // closing } -> we are done
-
8845  if (get_token() == token_type::end_object)
-
8846  {
-
8847  if (JSON_HEDLEY_UNLIKELY(not sax->end_object()))
-
8848  {
-
8849  return false;
-
8850  }
-
8851  break;
-
8852  }
-
8853 
-
8854  // parse key
-
8855  if (JSON_HEDLEY_UNLIKELY(last_token != token_type::value_string))
-
8856  {
-
8857  return sax->parse_error(m_lexer.get_position(),
-
8858  m_lexer.get_token_string(),
-
8859  parse_error::create(101, m_lexer.get_position(),
-
8860  exception_message(token_type::value_string, "object key")));
-
8861  }
-
8862  if (JSON_HEDLEY_UNLIKELY(not sax->key(m_lexer.get_string())))
-
8863  {
-
8864  return false;
-
8865  }
-
8866 
-
8867  // parse separator (:)
-
8868  if (JSON_HEDLEY_UNLIKELY(get_token() != token_type::name_separator))
-
8869  {
-
8870  return sax->parse_error(m_lexer.get_position(),
-
8871  m_lexer.get_token_string(),
-
8872  parse_error::create(101, m_lexer.get_position(),
-
8873  exception_message(token_type::name_separator, "object separator")));
-
8874  }
-
8875 
-
8876  // remember we are now inside an object
-
8877  states.push_back(false);
-
8878 
-
8879  // parse values
-
8880  get_token();
-
8881  continue;
-
8882  }
-
8883 
-
8884  case token_type::begin_array:
-
8885  {
-
8886  if (JSON_HEDLEY_UNLIKELY(not sax->start_array(std::size_t(-1))))
-
8887  {
-
8888  return false;
-
8889  }
-
8890 
-
8891  // closing ] -> we are done
-
8892  if (get_token() == token_type::end_array)
-
8893  {
-
8894  if (JSON_HEDLEY_UNLIKELY(not sax->end_array()))
-
8895  {
-
8896  return false;
-
8897  }
-
8898  break;
-
8899  }
-
8900 
-
8901  // remember we are now inside an array
-
8902  states.push_back(true);
-
8903 
-
8904  // parse values (no need to call get_token)
-
8905  continue;
-
8906  }
-
8907 
-
8908  case token_type::value_float:
-
8909  {
-
8910  const auto res = m_lexer.get_number_float();
-
8911 
-
8912  if (JSON_HEDLEY_UNLIKELY(not std::isfinite(res)))
-
8913  {
-
8914  return sax->parse_error(m_lexer.get_position(),
-
8915  m_lexer.get_token_string(),
-
8916  out_of_range::create(406, "number overflow parsing '" + m_lexer.get_token_string() + "'"));
-
8917  }
-
8918 
-
8919  if (JSON_HEDLEY_UNLIKELY(not sax->number_float(res, m_lexer.get_string())))
-
8920  {
-
8921  return false;
-
8922  }
-
8923 
-
8924  break;
-
8925  }
-
8926 
-
8927  case token_type::literal_false:
-
8928  {
-
8929  if (JSON_HEDLEY_UNLIKELY(not sax->boolean(false)))
-
8930  {
-
8931  return false;
-
8932  }
-
8933  break;
-
8934  }
-
8935 
-
8936  case token_type::literal_null:
-
8937  {
-
8938  if (JSON_HEDLEY_UNLIKELY(not sax->null()))
-
8939  {
-
8940  return false;
-
8941  }
-
8942  break;
-
8943  }
-
8944 
-
8945  case token_type::literal_true:
-
8946  {
-
8947  if (JSON_HEDLEY_UNLIKELY(not sax->boolean(true)))
-
8948  {
-
8949  return false;
-
8950  }
-
8951  break;
-
8952  }
-
8953 
-
8954  case token_type::value_integer:
-
8955  {
-
8956  if (JSON_HEDLEY_UNLIKELY(not sax->number_integer(m_lexer.get_number_integer())))
-
8957  {
-
8958  return false;
-
8959  }
-
8960  break;
-
8961  }
-
8962 
-
8963  case token_type::value_string:
-
8964  {
-
8965  if (JSON_HEDLEY_UNLIKELY(not sax->string(m_lexer.get_string())))
-
8966  {
-
8967  return false;
-
8968  }
-
8969  break;
-
8970  }
-
8971 
-
8972  case token_type::value_unsigned:
-
8973  {
-
8974  if (JSON_HEDLEY_UNLIKELY(not sax->number_unsigned(m_lexer.get_number_unsigned())))
-
8975  {
-
8976  return false;
-
8977  }
-
8978  break;
-
8979  }
-
8980 
-
8981  case token_type::parse_error:
-
8982  {
-
8983  // using "uninitialized" to avoid "expected" message
-
8984  return sax->parse_error(m_lexer.get_position(),
-
8985  m_lexer.get_token_string(),
-
8986  parse_error::create(101, m_lexer.get_position(),
-
8987  exception_message(token_type::uninitialized, "value")));
-
8988  }
-
8989 
-
8990  default: // the last token was unexpected
-
8991  {
-
8992  return sax->parse_error(m_lexer.get_position(),
-
8993  m_lexer.get_token_string(),
-
8994  parse_error::create(101, m_lexer.get_position(),
-
8995  exception_message(token_type::literal_or_value, "value")));
-
8996  }
-
8997  }
-
8998  }
-
8999  else
-
9000  {
-
9001  skip_to_state_evaluation = false;
-
9002  }
-
9003 
-
9004  // we reached this line after we successfully parsed a value
-
9005  if (states.empty())
-
9006  {
-
9007  // empty stack: we reached the end of the hierarchy: done
-
9008  return true;
-
9009  }
-
9010 
-
9011  if (states.back()) // array
-
9012  {
-
9013  // comma -> next value
-
9014  if (get_token() == token_type::value_separator)
-
9015  {
-
9016  // parse a new value
-
9017  get_token();
-
9018  continue;
-
9019  }
-
9020 
-
9021  // closing ]
-
9022  if (JSON_HEDLEY_LIKELY(last_token == token_type::end_array))
-
9023  {
-
9024  if (JSON_HEDLEY_UNLIKELY(not sax->end_array()))
-
9025  {
-
9026  return false;
-
9027  }
-
9028 
-
9029  // We are done with this array. Before we can parse a
-
9030  // new value, we need to evaluate the new state first.
-
9031  // By setting skip_to_state_evaluation to false, we
-
9032  // are effectively jumping to the beginning of this if.
-
9033  assert(not states.empty());
-
9034  states.pop_back();
-
9035  skip_to_state_evaluation = true;
-
9036  continue;
-
9037  }
-
9038 
-
9039  return sax->parse_error(m_lexer.get_position(),
-
9040  m_lexer.get_token_string(),
-
9041  parse_error::create(101, m_lexer.get_position(),
-
9042  exception_message(token_type::end_array, "array")));
-
9043  }
-
9044  else // object
-
9045  {
-
9046  // comma -> next value
-
9047  if (get_token() == token_type::value_separator)
-
9048  {
-
9049  // parse key
-
9050  if (JSON_HEDLEY_UNLIKELY(get_token() != token_type::value_string))
-
9051  {
-
9052  return sax->parse_error(m_lexer.get_position(),
-
9053  m_lexer.get_token_string(),
-
9054  parse_error::create(101, m_lexer.get_position(),
-
9055  exception_message(token_type::value_string, "object key")));
-
9056  }
-
9057 
-
9058  if (JSON_HEDLEY_UNLIKELY(not sax->key(m_lexer.get_string())))
-
9059  {
-
9060  return false;
-
9061  }
-
9062 
-
9063  // parse separator (:)
-
9064  if (JSON_HEDLEY_UNLIKELY(get_token() != token_type::name_separator))
-
9065  {
-
9066  return sax->parse_error(m_lexer.get_position(),
-
9067  m_lexer.get_token_string(),
-
9068  parse_error::create(101, m_lexer.get_position(),
-
9069  exception_message(token_type::name_separator, "object separator")));
-
9070  }
-
9071 
-
9072  // parse values
-
9073  get_token();
-
9074  continue;
-
9075  }
-
9076 
-
9077  // closing }
-
9078  if (JSON_HEDLEY_LIKELY(last_token == token_type::end_object))
-
9079  {
-
9080  if (JSON_HEDLEY_UNLIKELY(not sax->end_object()))
-
9081  {
-
9082  return false;
-
9083  }
-
9084 
-
9085  // We are done with this object. Before we can parse a
-
9086  // new value, we need to evaluate the new state first.
-
9087  // By setting skip_to_state_evaluation to false, we
-
9088  // are effectively jumping to the beginning of this if.
-
9089  assert(not states.empty());
-
9090  states.pop_back();
-
9091  skip_to_state_evaluation = true;
-
9092  continue;
-
9093  }
-
9094 
-
9095  return sax->parse_error(m_lexer.get_position(),
-
9096  m_lexer.get_token_string(),
-
9097  parse_error::create(101, m_lexer.get_position(),
-
9098  exception_message(token_type::end_object, "object")));
-
9099  }
-
9100  }
-
9101  }
-
9102 
-
9104  token_type get_token()
-
9105  {
-
9106  return last_token = m_lexer.scan();
-
9107  }
-
9108 
-
9109  std::string exception_message(const token_type expected, const std::string& context)
-
9110  {
-
9111  std::string error_msg = "syntax error ";
-
9112 
-
9113  if (not context.empty())
-
9114  {
-
9115  error_msg += "while parsing " + context + " ";
-
9116  }
-
9117 
-
9118  error_msg += "- ";
-
9119 
-
9120  if (last_token == token_type::parse_error)
-
9121  {
-
9122  error_msg += std::string(m_lexer.get_error_message()) + "; last read: '" +
-
9123  m_lexer.get_token_string() + "'";
-
9124  }
-
9125  else
-
9126  {
-
9127  error_msg += "unexpected " + std::string(lexer_t::token_type_name(last_token));
-
9128  }
-
9129 
-
9130  if (expected != token_type::uninitialized)
-
9131  {
-
9132  error_msg += "; expected " + std::string(lexer_t::token_type_name(expected));
-
9133  }
-
9134 
-
9135  return error_msg;
-
9136  }
-
9137 
-
9138  private:
-
9140  const parser_callback_t callback = nullptr;
-
9142  token_type last_token = token_type::uninitialized;
-
9144  lexer_t m_lexer;
-
9146  const bool allow_exceptions = true;
-
9147 };
-
9148 } // namespace detail
-
9149 } // namespace nlohmann
-
9150 
-
9151 // #include <nlohmann/detail/iterators/internal_iterator.hpp>
-
9152 
-
9153 
-
9154 // #include <nlohmann/detail/iterators/primitive_iterator.hpp>
-
9155 
-
9156 
-
9157 #include <cstddef> // ptrdiff_t
-
9158 #include <limits> // numeric_limits
-
9159 
-
9160 namespace nlohmann
-
9161 {
-
9162 namespace detail
-
9163 {
-
9164 /*
-
9165 @brief an iterator for primitive JSON types
-
9166 
-
9167 This class models an iterator for primitive JSON types (boolean, number,
-
9168 string). It's only purpose is to allow the iterator/const_iterator classes
-
9169 to "iterate" over primitive values. Internally, the iterator is modeled by
-
9170 a `difference_type` variable. Value begin_value (`0`) models the begin,
-
9171 end_value (`1`) models past the end.
-
9172 */
- -
9174 {
-
9175  private:
-
9176  using difference_type = std::ptrdiff_t;
-
9177  static constexpr difference_type begin_value = 0;
-
9178  static constexpr difference_type end_value = begin_value + 1;
-
9179 
-
9181  difference_type m_it = (std::numeric_limits<std::ptrdiff_t>::min)();
-
9182 
-
9183  public:
-
9184  constexpr difference_type get_value() const noexcept
-
9185  {
-
9186  return m_it;
-
9187  }
-
9188 
-
9190  void set_begin() noexcept
-
9191  {
-
9192  m_it = begin_value;
-
9193  }
-
9194 
-
9196  void set_end() noexcept
-
9197  {
-
9198  m_it = end_value;
-
9199  }
-
9200 
-
9202  constexpr bool is_begin() const noexcept
-
9203  {
-
9204  return m_it == begin_value;
-
9205  }
-
9206 
-
9208  constexpr bool is_end() const noexcept
-
9209  {
-
9210  return m_it == end_value;
-
9211  }
-
9212 
-
9213  friend constexpr bool operator==(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept
-
9214  {
-
9215  return lhs.m_it == rhs.m_it;
-
9216  }
-
9217 
-
9218  friend constexpr bool operator<(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept
-
9219  {
-
9220  return lhs.m_it < rhs.m_it;
-
9221  }
-
9222 
-
9223  primitive_iterator_t operator+(difference_type n) noexcept
-
9224  {
-
9225  auto result = *this;
-
9226  result += n;
-
9227  return result;
-
9228  }
-
9229 
-
9230  friend constexpr difference_type operator-(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept
-
9231  {
-
9232  return lhs.m_it - rhs.m_it;
-
9233  }
-
9234 
- -
9236  {
-
9237  ++m_it;
-
9238  return *this;
-
9239  }
-
9240 
-
9241  primitive_iterator_t const operator++(int) noexcept
-
9242  {
-
9243  auto result = *this;
-
9244  ++m_it;
-
9245  return result;
-
9246  }
-
9247 
- -
9249  {
-
9250  --m_it;
-
9251  return *this;
-
9252  }
-
9253 
-
9254  primitive_iterator_t const operator--(int) noexcept
-
9255  {
-
9256  auto result = *this;
-
9257  --m_it;
-
9258  return result;
-
9259  }
-
9260 
-
9261  primitive_iterator_t& operator+=(difference_type n) noexcept
-
9262  {
-
9263  m_it += n;
-
9264  return *this;
-
9265  }
-
9266 
-
9267  primitive_iterator_t& operator-=(difference_type n) noexcept
-
9268  {
-
9269  m_it -= n;
-
9270  return *this;
-
9271  }
-
9272 };
-
9273 } // namespace detail
-
9274 } // namespace nlohmann
-
9275 
-
9276 
-
9277 namespace nlohmann
-
9278 {
-
9279 namespace detail
-
9280 {
-
9287 template<typename BasicJsonType> struct internal_iterator
-
9288 {
-
9290  typename BasicJsonType::object_t::iterator object_iterator {};
-
9292  typename BasicJsonType::array_t::iterator array_iterator {};
- -
9295 };
-
9296 } // namespace detail
-
9297 } // namespace nlohmann
-
9298 
-
9299 // #include <nlohmann/detail/iterators/iter_impl.hpp>
-
9300 
-
9301 
-
9302 #include <ciso646> // not
-
9303 #include <iterator> // iterator, random_access_iterator_tag, bidirectional_iterator_tag, advance, next
-
9304 #include <type_traits> // conditional, is_const, remove_const
-
9305 
-
9306 // #include <nlohmann/detail/exceptions.hpp>
-
9307 
-
9308 // #include <nlohmann/detail/iterators/internal_iterator.hpp>
-
9309 
-
9310 // #include <nlohmann/detail/iterators/primitive_iterator.hpp>
-
9311 
-
9312 // #include <nlohmann/detail/macro_scope.hpp>
-
9313 
-
9314 // #include <nlohmann/detail/meta/cpp_future.hpp>
-
9315 
-
9316 // #include <nlohmann/detail/meta/type_traits.hpp>
-
9317 
-
9318 // #include <nlohmann/detail/value_t.hpp>
-
9319 
-
9320 
-
9321 namespace nlohmann
-
9322 {
-
9323 namespace detail
-
9324 {
-
9325 // forward declare, to be able to friend it later on
-
9326 template<typename IteratorType> class iteration_proxy;
-
9327 template<typename IteratorType> class iteration_proxy_value;
-
9328 
-
9345 template<typename BasicJsonType>
- -
9347 {
-
9349  friend iter_impl<typename std::conditional<std::is_const<BasicJsonType>::value, typename std::remove_const<BasicJsonType>::type, const BasicJsonType>::type>;
-
9350  friend BasicJsonType;
- - -
9353 
-
9354  using object_t = typename BasicJsonType::object_t;
-
9355  using array_t = typename BasicJsonType::array_t;
-
9356  // make sure BasicJsonType is basic_json or const basic_json
-
9357  static_assert(is_basic_json<typename std::remove_const<BasicJsonType>::type>::value,
-
9358  "iter_impl only accepts (const) basic_json");
-
9359 
-
9360  public:
-
9361 
-
9367  using iterator_category = std::bidirectional_iterator_tag;
-
9368 
-
9370  using value_type = typename BasicJsonType::value_type;
-
9372  using difference_type = typename BasicJsonType::difference_type;
-
9374  using pointer = typename std::conditional<std::is_const<BasicJsonType>::value,
-
9375  typename BasicJsonType::const_pointer,
-
9376  typename BasicJsonType::pointer>::type;
-
9378  using reference =
-
9379  typename std::conditional<std::is_const<BasicJsonType>::value,
-
9380  typename BasicJsonType::const_reference,
-
9381  typename BasicJsonType::reference>::type;
-
9382 
-
9384  iter_impl() = default;
-
9385 
-
9392  explicit iter_impl(pointer object) noexcept : m_object(object)
-
9393  {
-
9394  assert(m_object != nullptr);
-
9395 
-
9396  switch (m_object->m_type)
-
9397  {
-
9398  case value_t::object:
-
9399  {
-
9400  m_it.object_iterator = typename object_t::iterator();
-
9401  break;
-
9402  }
-
9403 
-
9404  case value_t::array:
-
9405  {
-
9406  m_it.array_iterator = typename array_t::iterator();
-
9407  break;
-
9408  }
-
9409 
-
9410  default:
-
9411  {
- -
9413  break;
-
9414  }
-
9415  }
-
9416  }
-
9417 
- -
9435  : m_object(other.m_object), m_it(other.m_it)
-
9436  {}
-
9437 
- -
9445  {
-
9446  m_object = other.m_object;
-
9447  m_it = other.m_it;
-
9448  return *this;
-
9449  }
-
9450 
-
9456  iter_impl(const iter_impl<typename std::remove_const<BasicJsonType>::type>& other) noexcept
-
9457  : m_object(other.m_object), m_it(other.m_it)
-
9458  {}
-
9459 
-
9466  iter_impl& operator=(const iter_impl<typename std::remove_const<BasicJsonType>::type>& other) noexcept
-
9467  {
-
9468  m_object = other.m_object;
-
9469  m_it = other.m_it;
-
9470  return *this;
-
9471  }
-
9472 
-
9473  private:
-
9478  void set_begin() noexcept
-
9479  {
-
9480  assert(m_object != nullptr);
-
9481 
-
9482  switch (m_object->m_type)
-
9483  {
-
9484  case value_t::object:
-
9485  {
-
9486  m_it.object_iterator = m_object->m_value.object->begin();
-
9487  break;
-
9488  }
-
9489 
-
9490  case value_t::array:
-
9491  {
-
9492  m_it.array_iterator = m_object->m_value.array->begin();
-
9493  break;
-
9494  }
-
9495 
-
9496  case value_t::null:
-
9497  {
-
9498  // set to end so begin()==end() is true: null is empty
-
9499  m_it.primitive_iterator.set_end();
-
9500  break;
-
9501  }
-
9502 
-
9503  default:
-
9504  {
- -
9506  break;
-
9507  }
-
9508  }
-
9509  }
-
9510 
-
9515  void set_end() noexcept
-
9516  {
-
9517  assert(m_object != nullptr);
-
9518 
-
9519  switch (m_object->m_type)
-
9520  {
-
9521  case value_t::object:
-
9522  {
-
9523  m_it.object_iterator = m_object->m_value.object->end();
-
9524  break;
-
9525  }
-
9526 
-
9527  case value_t::array:
-
9528  {
-
9529  m_it.array_iterator = m_object->m_value.array->end();
-
9530  break;
-
9531  }
-
9532 
-
9533  default:
-
9534  {
-
9535  m_it.primitive_iterator.set_end();
-
9536  break;
-
9537  }
-
9538  }
-
9539  }
-
9540 
-
9541  public:
- -
9547  {
-
9548  assert(m_object != nullptr);
-
9549 
-
9550  switch (m_object->m_type)
-
9551  {
-
9552  case value_t::object:
-
9553  {
-
9554  assert(m_it.object_iterator != m_object->m_value.object->end());
-
9555  return m_it.object_iterator->second;
-
9556  }
-
9557 
-
9558  case value_t::array:
-
9559  {
-
9560  assert(m_it.array_iterator != m_object->m_value.array->end());
-
9561  return *m_it.array_iterator;
-
9562  }
-
9563 
-
9564  case value_t::null:
-
9565  JSON_THROW(invalid_iterator::create(214, "cannot get value"));
-
9566 
-
9567  default:
-
9568  {
- -
9570  {
-
9571  return *m_object;
-
9572  }
-
9573 
-
9574  JSON_THROW(invalid_iterator::create(214, "cannot get value"));
-
9575  }
-
9576  }
-
9577  }
-
9578 
- -
9584  {
-
9585  assert(m_object != nullptr);
-
9586 
-
9587  switch (m_object->m_type)
-
9588  {
-
9589  case value_t::object:
-
9590  {
-
9591  assert(m_it.object_iterator != m_object->m_value.object->end());
-
9592  return &(m_it.object_iterator->second);
-
9593  }
-
9594 
-
9595  case value_t::array:
-
9596  {
-
9597  assert(m_it.array_iterator != m_object->m_value.array->end());
-
9598  return &*m_it.array_iterator;
-
9599  }
-
9600 
-
9601  default:
-
9602  {
- -
9604  {
-
9605  return m_object;
-
9606  }
-
9607 
-
9608  JSON_THROW(invalid_iterator::create(214, "cannot get value"));
-
9609  }
-
9610  }
-
9611  }
-
9612 
- -
9618  {
-
9619  auto result = *this;
-
9620  ++(*this);
-
9621  return result;
-
9622  }
-
9623 
- -
9629  {
-
9630  assert(m_object != nullptr);
-
9631 
-
9632  switch (m_object->m_type)
-
9633  {
-
9634  case value_t::object:
-
9635  {
-
9636  std::advance(m_it.object_iterator, 1);
-
9637  break;
-
9638  }
-
9639 
-
9640  case value_t::array:
-
9641  {
-
9642  std::advance(m_it.array_iterator, 1);
-
9643  break;
-
9644  }
-
9645 
-
9646  default:
-
9647  {
-
9648  ++m_it.primitive_iterator;
-
9649  break;
-
9650  }
-
9651  }
-
9652 
-
9653  return *this;
-
9654  }
-
9655 
- -
9661  {
-
9662  auto result = *this;
-
9663  --(*this);
-
9664  return result;
-
9665  }
-
9666 
- -
9672  {
-
9673  assert(m_object != nullptr);
-
9674 
-
9675  switch (m_object->m_type)
-
9676  {
-
9677  case value_t::object:
-
9678  {
-
9679  std::advance(m_it.object_iterator, -1);
-
9680  break;
-
9681  }
-
9682 
-
9683  case value_t::array:
-
9684  {
-
9685  std::advance(m_it.array_iterator, -1);
-
9686  break;
-
9687  }
-
9688 
-
9689  default:
-
9690  {
-
9691  --m_it.primitive_iterator;
-
9692  break;
-
9693  }
-
9694  }
-
9695 
-
9696  return *this;
-
9697  }
-
9698 
-
9703  bool operator==(const iter_impl& other) const
-
9704  {
-
9705  // if objects are not the same, the comparison is undefined
-
9706  if (JSON_HEDLEY_UNLIKELY(m_object != other.m_object))
-
9707  {
-
9708  JSON_THROW(invalid_iterator::create(212, "cannot compare iterators of different containers"));
-
9709  }
-
9710 
-
9711  assert(m_object != nullptr);
-
9712 
-
9713  switch (m_object->m_type)
-
9714  {
-
9715  case value_t::object:
-
9716  return (m_it.object_iterator == other.m_it.object_iterator);
-
9717 
-
9718  case value_t::array:
-
9719  return (m_it.array_iterator == other.m_it.array_iterator);
-
9720 
-
9721  default:
-
9722  return (m_it.primitive_iterator == other.m_it.primitive_iterator);
-
9723  }
-
9724  }
-
9725 
-
9730  bool operator!=(const iter_impl& other) const
-
9731  {
-
9732  return not operator==(other);
-
9733  }
-
9734 
-
9739  bool operator<(const iter_impl& other) const
-
9740  {
-
9741  // if objects are not the same, the comparison is undefined
-
9742  if (JSON_HEDLEY_UNLIKELY(m_object != other.m_object))
-
9743  {
-
9744  JSON_THROW(invalid_iterator::create(212, "cannot compare iterators of different containers"));
-
9745  }
-
9746 
-
9747  assert(m_object != nullptr);
-
9748 
-
9749  switch (m_object->m_type)
-
9750  {
-
9751  case value_t::object:
-
9752  JSON_THROW(invalid_iterator::create(213, "cannot compare order of object iterators"));
-
9753 
-
9754  case value_t::array:
-
9755  return (m_it.array_iterator < other.m_it.array_iterator);
-
9756 
-
9757  default:
-
9758  return (m_it.primitive_iterator < other.m_it.primitive_iterator);
-
9759  }
-
9760  }
-
9761 
-
9766  bool operator<=(const iter_impl& other) const
-
9767  {
-
9768  return not other.operator < (*this);
-
9769  }
-
9770 
-
9775  bool operator>(const iter_impl& other) const
-
9776  {
-
9777  return not operator<=(other);
-
9778  }
-
9779 
-
9784  bool operator>=(const iter_impl& other) const
-
9785  {
-
9786  return not operator<(other);
-
9787  }
-
9788 
- -
9794  {
-
9795  assert(m_object != nullptr);
-
9796 
-
9797  switch (m_object->m_type)
-
9798  {
-
9799  case value_t::object:
-
9800  JSON_THROW(invalid_iterator::create(209, "cannot use offsets with object iterators"));
-
9801 
-
9802  case value_t::array:
-
9803  {
-
9804  std::advance(m_it.array_iterator, i);
-
9805  break;
-
9806  }
-
9807 
-
9808  default:
-
9809  {
-
9810  m_it.primitive_iterator += i;
-
9811  break;
-
9812  }
-
9813  }
-
9814 
-
9815  return *this;
-
9816  }
-
9817 
- -
9823  {
-
9824  return operator+=(-i);
-
9825  }
-
9826 
- -
9832  {
-
9833  auto result = *this;
-
9834  result += i;
-
9835  return result;
-
9836  }
-
9837 
- -
9843  {
-
9844  auto result = it;
-
9845  result += i;
-
9846  return result;
-
9847  }
-
9848 
- -
9854  {
-
9855  auto result = *this;
-
9856  result -= i;
-
9857  return result;
-
9858  }
-
9859 
- -
9865  {
-
9866  assert(m_object != nullptr);
-
9867 
-
9868  switch (m_object->m_type)
-
9869  {
-
9870  case value_t::object:
-
9871  JSON_THROW(invalid_iterator::create(209, "cannot use offsets with object iterators"));
-
9872 
-
9873  case value_t::array:
-
9874  return m_it.array_iterator - other.m_it.array_iterator;
-
9875 
-
9876  default:
-
9877  return m_it.primitive_iterator - other.m_it.primitive_iterator;
-
9878  }
-
9879  }
-
9880 
- -
9886  {
-
9887  assert(m_object != nullptr);
-
9888 
-
9889  switch (m_object->m_type)
-
9890  {
-
9891  case value_t::object:
-
9892  JSON_THROW(invalid_iterator::create(208, "cannot use operator[] for object iterators"));
-
9893 
-
9894  case value_t::array:
-
9895  return *std::next(m_it.array_iterator, n);
-
9896 
-
9897  case value_t::null:
-
9898  JSON_THROW(invalid_iterator::create(214, "cannot get value"));
-
9899 
-
9900  default:
-
9901  {
- -
9903  {
-
9904  return *m_object;
-
9905  }
-
9906 
-
9907  JSON_THROW(invalid_iterator::create(214, "cannot get value"));
-
9908  }
-
9909  }
-
9910  }
-
9911 
-
9916  const typename object_t::key_type& key() const
-
9917  {
-
9918  assert(m_object != nullptr);
-
9919 
-
9920  if (JSON_HEDLEY_LIKELY(m_object->is_object()))
-
9921  {
-
9922  return m_it.object_iterator->first;
-
9923  }
-
9924 
-
9925  JSON_THROW(invalid_iterator::create(207, "cannot use key() for non-object iterators"));
-
9926  }
-
9927 
- -
9933  {
-
9934  return operator*();
-
9935  }
-
9936 
-
9937  private:
-
9939  pointer m_object = nullptr;
- -
9942 };
-
9943 } // namespace detail
-
9944 } // namespace nlohmann
-
9945 
-
9946 // #include <nlohmann/detail/iterators/iteration_proxy.hpp>
-
9947 
-
9948 // #include <nlohmann/detail/iterators/json_reverse_iterator.hpp>
-
9949 
-
9950 
-
9951 #include <cstddef> // ptrdiff_t
-
9952 #include <iterator> // reverse_iterator
-
9953 #include <utility> // declval
-
9954 
-
9955 namespace nlohmann
-
9956 {
-
9957 namespace detail
-
9958 {
-
9960 // reverse_iterator //
-
9962 
-
9981 template<typename Base>
-
9982 class json_reverse_iterator : public std::reverse_iterator<Base>
-
9983 {
-
9984  public:
-
9985  using difference_type = std::ptrdiff_t;
-
9987  using base_iterator = std::reverse_iterator<Base>;
-
9989  using reference = typename Base::reference;
-
9990 
-
9992  explicit json_reverse_iterator(const typename base_iterator::iterator_type& it) noexcept
-
9993  : base_iterator(it) {}
-
9994 
-
9996  explicit json_reverse_iterator(const base_iterator& it) noexcept : base_iterator(it) {}
-
9997 
- -
10000  {
-
10001  return static_cast<json_reverse_iterator>(base_iterator::operator++(1));
-
10002  }
-
10003 
- -
10006  {
-
10007  return static_cast<json_reverse_iterator&>(base_iterator::operator++());
-
10008  }
-
10009 
- -
10012  {
-
10013  return static_cast<json_reverse_iterator>(base_iterator::operator--(1));
-
10014  }
-
10015 
- -
10018  {
-
10019  return static_cast<json_reverse_iterator&>(base_iterator::operator--());
-
10020  }
-
10021 
- -
10024  {
-
10025  return static_cast<json_reverse_iterator&>(base_iterator::operator+=(i));
-
10026  }
-
10027 
- -
10030  {
-
10031  return static_cast<json_reverse_iterator>(base_iterator::operator+(i));
-
10032  }
-
10033 
- -
10036  {
-
10037  return static_cast<json_reverse_iterator>(base_iterator::operator-(i));
-
10038  }
-
10039 
- -
10042  {
-
10043  return base_iterator(*this) - base_iterator(other);
-
10044  }
-
10045 
- -
10048  {
-
10049  return *(this->operator+(n));
-
10050  }
-
10051 
-
10053  auto key() const -> decltype(std::declval<Base>().key())
-
10054  {
-
10055  auto it = --this->base();
-
10056  return it.key();
-
10057  }
-
10058 
- -
10061  {
-
10062  auto it = --this->base();
-
10063  return it.operator * ();
-
10064  }
-
10065 };
-
10066 } // namespace detail
-
10067 } // namespace nlohmann
-
10068 
-
10069 // #include <nlohmann/detail/iterators/primitive_iterator.hpp>
-
10070 
-
10071 // #include <nlohmann/detail/json_pointer.hpp>
-
10072 
-
10073 
-
10074 #include <algorithm> // all_of
-
10075 #include <cassert> // assert
-
10076 #include <cctype> // isdigit
-
10077 #include <numeric> // accumulate
-
10078 #include <string> // string
-
10079 #include <utility> // move
-
10080 #include <vector> // vector
-
10081 
-
10082 // #include <nlohmann/detail/exceptions.hpp>
-
10083 
-
10084 // #include <nlohmann/detail/macro_scope.hpp>
-
10085 
-
10086 // #include <nlohmann/detail/value_t.hpp>
-
10087 
-
10088 
-
10089 namespace nlohmann
-
10090 {
-
10091 template<typename BasicJsonType>
-
10092 class json_pointer
-
10093 {
-
10094  // allow basic_json to access private members
- -
10096  friend class basic_json;
-
10097 
-
10098  public:
-
10120  explicit json_pointer(const std::string& s = "")
-
10121  : reference_tokens(split(s))
-
10122  {}
-
10123 
-
10138  std::string to_string() const
-
10139  {
-
10140  return std::accumulate(reference_tokens.begin(), reference_tokens.end(),
-
10141  std::string{},
-
10142  [](const std::string & a, const std::string & b)
-
10143  {
-
10144  return a + "/" + escape(b);
-
10145  });
-
10146  }
-
10147 
-
10149  operator std::string() const
-
10150  {
-
10151  return to_string();
-
10152  }
-
10153 
- -
10171  {
-
10172  reference_tokens.insert(reference_tokens.end(),
-
10173  ptr.reference_tokens.begin(),
-
10174  ptr.reference_tokens.end());
-
10175  return *this;
-
10176  }
-
10177 
-
10194  json_pointer& operator/=(std::string token)
-
10195  {
-
10196  push_back(std::move(token));
-
10197  return *this;
-
10198  }
-
10199 
-
10216  json_pointer& operator/=(std::size_t array_index)
-
10217  {
-
10218  return *this /= std::to_string(array_index);
-
10219  }
-
10220 
- -
10237  const json_pointer& rhs)
-
10238  {
-
10239  return json_pointer(lhs) /= rhs;
-
10240  }
-
10241 
-
10257  friend json_pointer operator/(const json_pointer& ptr, std::string token)
-
10258  {
-
10259  return json_pointer(ptr) /= std::move(token);
-
10260  }
-
10261 
-
10277  friend json_pointer operator/(const json_pointer& ptr, std::size_t array_index)
-
10278  {
-
10279  return json_pointer(ptr) /= array_index;
-
10280  }
-
10281 
- -
10296  {
-
10297  if (empty())
-
10298  {
-
10299  return *this;
-
10300  }
-
10301 
-
10302  json_pointer res = *this;
-
10303  res.pop_back();
-
10304  return res;
-
10305  }
-
10306 
-
10320  void pop_back()
-
10321  {
-
10322  if (JSON_HEDLEY_UNLIKELY(empty()))
-
10323  {
-
10324  JSON_THROW(detail::out_of_range::create(405, "JSON pointer has no parent"));
-
10325  }
-
10326 
-
10327  reference_tokens.pop_back();
-
10328  }
-
10329 
-
10344  const std::string& back() const
-
10345  {
-
10346  if (JSON_HEDLEY_UNLIKELY(empty()))
-
10347  {
-
10348  JSON_THROW(detail::out_of_range::create(405, "JSON pointer has no parent"));
-
10349  }
-
10350 
-
10351  return reference_tokens.back();
-
10352  }
-
10353 
-
10366  void push_back(const std::string& token)
-
10367  {
-
10368  reference_tokens.push_back(token);
-
10369  }
-
10370 
-
10372  void push_back(std::string&& token)
-
10373  {
-
10374  reference_tokens.push_back(std::move(token));
-
10375  }
-
10376 
-
10391  bool empty() const noexcept
-
10392  {
-
10393  return reference_tokens.empty();
-
10394  }
-
10395 
-
10396  private:
-
10404  static int array_index(const std::string& s)
-
10405  {
-
10406  std::size_t processed_chars = 0;
-
10407  const int res = std::stoi(s, &processed_chars);
-
10408 
-
10409  // check if the string was completely read
-
10410  if (JSON_HEDLEY_UNLIKELY(processed_chars != s.size()))
-
10411  {
-
10412  JSON_THROW(detail::out_of_range::create(404, "unresolved reference token '" + s + "'"));
-
10413  }
-
10414 
-
10415  return res;
-
10416  }
-
10417 
-
10418  json_pointer top() const
-
10419  {
-
10420  if (JSON_HEDLEY_UNLIKELY(empty()))
-
10421  {
-
10422  JSON_THROW(detail::out_of_range::create(405, "JSON pointer has no parent"));
-
10423  }
-
10424 
-
10425  json_pointer result = *this;
-
10426  result.reference_tokens = {reference_tokens[0]};
-
10427  return result;
-
10428  }
-
10429 
-
10438  BasicJsonType& get_and_create(BasicJsonType& j) const
-
10439  {
-
10440  using size_type = typename BasicJsonType::size_type;
-
10441  auto result = &j;
-
10442 
-
10443  // in case no reference tokens exist, return a reference to the JSON value
-
10444  // j which will be overwritten by a primitive value
-
10445  for (const auto& reference_token : reference_tokens)
-
10446  {
-
10447  switch (result->type())
-
10448  {
-
10449  case detail::value_t::null:
-
10450  {
-
10451  if (reference_token == "0")
-
10452  {
-
10453  // start a new array if reference token is 0
-
10454  result = &result->operator[](0);
-
10455  }
-
10456  else
-
10457  {
-
10458  // start a new object otherwise
-
10459  result = &result->operator[](reference_token);
-
10460  }
-
10461  break;
-
10462  }
-
10463 
- -
10465  {
-
10466  // create an entry in the object
-
10467  result = &result->operator[](reference_token);
-
10468  break;
-
10469  }
-
10470 
- -
10472  {
-
10473  // create an entry in the array
-
10474  JSON_TRY
-
10475  {
-
10476  result = &result->operator[](static_cast<size_type>(array_index(reference_token)));
-
10477  }
-
10478  JSON_CATCH(std::invalid_argument&)
-
10479  {
-
10480  JSON_THROW(detail::parse_error::create(109, 0, "array index '" + reference_token + "' is not a number"));
-
10481  }
-
10482  break;
-
10483  }
-
10484 
-
10485  /*
-
10486  The following code is only reached if there exists a reference
-
10487  token _and_ the current value is primitive. In this case, we have
-
10488  an error situation, because primitive values may only occur as
-
10489  single value; that is, with an empty list of reference tokens.
-
10490  */
-
10491  default:
-
10492  JSON_THROW(detail::type_error::create(313, "invalid value to unflatten"));
-
10493  }
-
10494  }
-
10495 
-
10496  return *result;
-
10497  }
-
10498 
-
10518  BasicJsonType& get_unchecked(BasicJsonType* ptr) const
-
10519  {
-
10520  using size_type = typename BasicJsonType::size_type;
-
10521  for (const auto& reference_token : reference_tokens)
-
10522  {
-
10523  // convert null values to arrays or objects before continuing
-
10524  if (ptr->is_null())
-
10525  {
-
10526  // check if reference token is a number
-
10527  const bool nums =
-
10528  std::all_of(reference_token.begin(), reference_token.end(),
-
10529  [](const unsigned char x)
-
10530  {
-
10531  return std::isdigit(x);
-
10532  });
-
10533 
-
10534  // change value to array for numbers or "-" or to object otherwise
-
10535  *ptr = (nums or reference_token == "-")
- - -
10538  }
-
10539 
-
10540  switch (ptr->type())
-
10541  {
- -
10543  {
-
10544  // use unchecked object access
-
10545  ptr = &ptr->operator[](reference_token);
-
10546  break;
-
10547  }
-
10548 
- -
10550  {
-
10551  // error condition (cf. RFC 6901, Sect. 4)
-
10552  if (JSON_HEDLEY_UNLIKELY(reference_token.size() > 1 and reference_token[0] == '0'))
-
10553  {
- -
10555  "array index '" + reference_token +
-
10556  "' must not begin with '0'"));
-
10557  }
-
10558 
-
10559  if (reference_token == "-")
-
10560  {
-
10561  // explicitly treat "-" as index beyond the end
-
10562  ptr = &ptr->operator[](ptr->m_value.array->size());
-
10563  }
-
10564  else
-
10565  {
-
10566  // convert array index to number; unchecked access
-
10567  JSON_TRY
-
10568  {
-
10569  ptr = &ptr->operator[](
-
10570  static_cast<size_type>(array_index(reference_token)));
-
10571  }
-
10572  JSON_CATCH(std::invalid_argument&)
-
10573  {
-
10574  JSON_THROW(detail::parse_error::create(109, 0, "array index '" + reference_token + "' is not a number"));
-
10575  }
-
10576  }
-
10577  break;
-
10578  }
-
10579 
-
10580  default:
-
10581  JSON_THROW(detail::out_of_range::create(404, "unresolved reference token '" + reference_token + "'"));
-
10582  }
-
10583  }
-
10584 
-
10585  return *ptr;
-
10586  }
-
10587 
-
10594  BasicJsonType& get_checked(BasicJsonType* ptr) const
-
10595  {
-
10596  using size_type = typename BasicJsonType::size_type;
-
10597  for (const auto& reference_token : reference_tokens)
-
10598  {
-
10599  switch (ptr->type())
-
10600  {
- -
10602  {
-
10603  // note: at performs range check
-
10604  ptr = &ptr->at(reference_token);
-
10605  break;
-
10606  }
-
10607 
- -
10609  {
-
10610  if (JSON_HEDLEY_UNLIKELY(reference_token == "-"))
-
10611  {
-
10612  // "-" always fails the range check
- -
10614  "array index '-' (" + std::to_string(ptr->m_value.array->size()) +
-
10615  ") is out of range"));
-
10616  }
-
10617 
-
10618  // error condition (cf. RFC 6901, Sect. 4)
-
10619  if (JSON_HEDLEY_UNLIKELY(reference_token.size() > 1 and reference_token[0] == '0'))
-
10620  {
- -
10622  "array index '" + reference_token +
-
10623  "' must not begin with '0'"));
-
10624  }
-
10625 
-
10626  // note: at performs range check
-
10627  JSON_TRY
-
10628  {
-
10629  ptr = &ptr->at(static_cast<size_type>(array_index(reference_token)));
-
10630  }
-
10631  JSON_CATCH(std::invalid_argument&)
-
10632  {
-
10633  JSON_THROW(detail::parse_error::create(109, 0, "array index '" + reference_token + "' is not a number"));
-
10634  }
-
10635  break;
-
10636  }
-
10637 
-
10638  default:
-
10639  JSON_THROW(detail::out_of_range::create(404, "unresolved reference token '" + reference_token + "'"));
-
10640  }
-
10641  }
-
10642 
-
10643  return *ptr;
-
10644  }
-
10645 
-
10659  const BasicJsonType& get_unchecked(const BasicJsonType* ptr) const
-
10660  {
-
10661  using size_type = typename BasicJsonType::size_type;
-
10662  for (const auto& reference_token : reference_tokens)
-
10663  {
-
10664  switch (ptr->type())
-
10665  {
- -
10667  {
-
10668  // use unchecked object access
-
10669  ptr = &ptr->operator[](reference_token);
-
10670  break;
-
10671  }
-
10672 
- -
10674  {
-
10675  if (JSON_HEDLEY_UNLIKELY(reference_token == "-"))
-
10676  {
-
10677  // "-" cannot be used for const access
- -
10679  "array index '-' (" + std::to_string(ptr->m_value.array->size()) +
-
10680  ") is out of range"));
-
10681  }
-
10682 
-
10683  // error condition (cf. RFC 6901, Sect. 4)
-
10684  if (JSON_HEDLEY_UNLIKELY(reference_token.size() > 1 and reference_token[0] == '0'))
-
10685  {
- -
10687  "array index '" + reference_token +
-
10688  "' must not begin with '0'"));
-
10689  }
-
10690 
-
10691  // use unchecked array access
-
10692  JSON_TRY
-
10693  {
-
10694  ptr = &ptr->operator[](
-
10695  static_cast<size_type>(array_index(reference_token)));
-
10696  }
-
10697  JSON_CATCH(std::invalid_argument&)
-
10698  {
-
10699  JSON_THROW(detail::parse_error::create(109, 0, "array index '" + reference_token + "' is not a number"));
-
10700  }
-
10701  break;
-
10702  }
-
10703 
-
10704  default:
-
10705  JSON_THROW(detail::out_of_range::create(404, "unresolved reference token '" + reference_token + "'"));
-
10706  }
-
10707  }
-
10708 
-
10709  return *ptr;
-
10710  }
-
10711 
-
10718  const BasicJsonType& get_checked(const BasicJsonType* ptr) const
-
10719  {
-
10720  using size_type = typename BasicJsonType::size_type;
-
10721  for (const auto& reference_token : reference_tokens)
-
10722  {
-
10723  switch (ptr->type())
-
10724  {
- -
10726  {
-
10727  // note: at performs range check
-
10728  ptr = &ptr->at(reference_token);
-
10729  break;
-
10730  }
-
10731 
- -
10733  {
-
10734  if (JSON_HEDLEY_UNLIKELY(reference_token == "-"))
-
10735  {
-
10736  // "-" always fails the range check
- -
10738  "array index '-' (" + std::to_string(ptr->m_value.array->size()) +
-
10739  ") is out of range"));
-
10740  }
-
10741 
-
10742  // error condition (cf. RFC 6901, Sect. 4)
-
10743  if (JSON_HEDLEY_UNLIKELY(reference_token.size() > 1 and reference_token[0] == '0'))
-
10744  {
- -
10746  "array index '" + reference_token +
-
10747  "' must not begin with '0'"));
-
10748  }
-
10749 
-
10750  // note: at performs range check
-
10751  JSON_TRY
-
10752  {
-
10753  ptr = &ptr->at(static_cast<size_type>(array_index(reference_token)));
-
10754  }
-
10755  JSON_CATCH(std::invalid_argument&)
-
10756  {
-
10757  JSON_THROW(detail::parse_error::create(109, 0, "array index '" + reference_token + "' is not a number"));
-
10758  }
-
10759  break;
-
10760  }
-
10761 
-
10762  default:
-
10763  JSON_THROW(detail::out_of_range::create(404, "unresolved reference token '" + reference_token + "'"));
-
10764  }
-
10765  }
-
10766 
-
10767  return *ptr;
-
10768  }
-
10769 
-
10774  bool contains(const BasicJsonType* ptr) const
-
10775  {
-
10776  using size_type = typename BasicJsonType::size_type;
-
10777  for (const auto& reference_token : reference_tokens)
-
10778  {
-
10779  switch (ptr->type())
-
10780  {
- -
10782  {
-
10783  if (not ptr->contains(reference_token))
-
10784  {
-
10785  // we did not find the key in the object
-
10786  return false;
-
10787  }
-
10788 
-
10789  ptr = &ptr->operator[](reference_token);
-
10790  break;
-
10791  }
-
10792 
- -
10794  {
-
10795  if (JSON_HEDLEY_UNLIKELY(reference_token == "-"))
-
10796  {
-
10797  // "-" always fails the range check
-
10798  return false;
-
10799  }
-
10800 
-
10801  // error condition (cf. RFC 6901, Sect. 4)
-
10802  if (JSON_HEDLEY_UNLIKELY(reference_token.size() > 1 and reference_token[0] == '0'))
-
10803  {
- -
10805  "array index '" + reference_token +
-
10806  "' must not begin with '0'"));
-
10807  }
-
10808 
-
10809  JSON_TRY
-
10810  {
-
10811  const auto idx = static_cast<size_type>(array_index(reference_token));
-
10812  if (idx >= ptr->size())
-
10813  {
-
10814  // index out of range
-
10815  return false;
-
10816  }
-
10817 
-
10818  ptr = &ptr->operator[](idx);
-
10819  break;
-
10820  }
-
10821  JSON_CATCH(std::invalid_argument&)
-
10822  {
-
10823  JSON_THROW(detail::parse_error::create(109, 0, "array index '" + reference_token + "' is not a number"));
-
10824  }
-
10825  break;
-
10826  }
-
10827 
-
10828  default:
-
10829  {
-
10830  // we do not expect primitive values if there is still a
-
10831  // reference token to process
-
10832  return false;
-
10833  }
-
10834  }
-
10835  }
-
10836 
-
10837  // no reference token left means we found a primitive value
-
10838  return true;
-
10839  }
-
10840 
-
10850  static std::vector<std::string> split(const std::string& reference_string)
-
10851  {
-
10852  std::vector<std::string> result;
-
10853 
-
10854  // special case: empty reference string -> no reference tokens
-
10855  if (reference_string.empty())
-
10856  {
-
10857  return result;
-
10858  }
-
10859 
-
10860  // check if nonempty reference string begins with slash
-
10861  if (JSON_HEDLEY_UNLIKELY(reference_string[0] != '/'))
-
10862  {
- -
10864  "JSON pointer must be empty or begin with '/' - was: '" +
-
10865  reference_string + "'"));
-
10866  }
-
10867 
-
10868  // extract the reference tokens:
-
10869  // - slash: position of the last read slash (or end of string)
-
10870  // - start: position after the previous slash
-
10871  for (
-
10872  // search for the first slash after the first character
-
10873  std::size_t slash = reference_string.find_first_of('/', 1),
-
10874  // set the beginning of the first reference token
-
10875  start = 1;
-
10876  // we can stop if start == 0 (if slash == std::string::npos)
-
10877  start != 0;
-
10878  // set the beginning of the next reference token
-
10879  // (will eventually be 0 if slash == std::string::npos)
-
10880  start = (slash == std::string::npos) ? 0 : slash + 1,
-
10881  // find next slash
-
10882  slash = reference_string.find_first_of('/', start))
-
10883  {
-
10884  // use the text between the beginning of the reference token
-
10885  // (start) and the last slash (slash).
-
10886  auto reference_token = reference_string.substr(start, slash - start);
-
10887 
-
10888  // check reference tokens are properly escaped
-
10889  for (std::size_t pos = reference_token.find_first_of('~');
-
10890  pos != std::string::npos;
-
10891  pos = reference_token.find_first_of('~', pos + 1))
-
10892  {
-
10893  assert(reference_token[pos] == '~');
-
10894 
-
10895  // ~ must be followed by 0 or 1
-
10896  if (JSON_HEDLEY_UNLIKELY(pos == reference_token.size() - 1 or
-
10897  (reference_token[pos + 1] != '0' and
-
10898  reference_token[pos + 1] != '1')))
-
10899  {
-
10900  JSON_THROW(detail::parse_error::create(108, 0, "escape character '~' must be followed with '0' or '1'"));
-
10901  }
-
10902  }
-
10903 
-
10904  // finally, store the reference token
-
10905  unescape(reference_token);
-
10906  result.push_back(reference_token);
-
10907  }
-
10908 
-
10909  return result;
-
10910  }
-
10911 
-
10925  static void replace_substring(std::string& s, const std::string& f,
-
10926  const std::string& t)
-
10927  {
-
10928  assert(not f.empty());
-
10929  for (auto pos = s.find(f); // find first occurrence of f
-
10930  pos != std::string::npos; // make sure f was found
-
10931  s.replace(pos, f.size(), t), // replace with t, and
-
10932  pos = s.find(f, pos + t.size())) // find next occurrence of f
-
10933  {}
-
10934  }
-
10935 
-
10937  static std::string escape(std::string s)
-
10938  {
-
10939  replace_substring(s, "~", "~0");
-
10940  replace_substring(s, "/", "~1");
-
10941  return s;
-
10942  }
-
10943 
-
10945  static void unescape(std::string& s)
-
10946  {
-
10947  replace_substring(s, "~1", "/");
-
10948  replace_substring(s, "~0", "~");
-
10949  }
-
10950 
-
10958  static void flatten(const std::string& reference_string,
-
10959  const BasicJsonType& value,
-
10960  BasicJsonType& result)
-
10961  {
-
10962  switch (value.type())
-
10963  {
- -
10965  {
-
10966  if (value.m_value.array->empty())
-
10967  {
-
10968  // flatten empty array as null
-
10969  result[reference_string] = nullptr;
-
10970  }
-
10971  else
-
10972  {
-
10973  // iterate array and use index as reference string
-
10974  for (std::size_t i = 0; i < value.m_value.array->size(); ++i)
-
10975  {
-
10976  flatten(reference_string + "/" + std::to_string(i),
-
10977  value.m_value.array->operator[](i), result);
-
10978  }
-
10979  }
-
10980  break;
-
10981  }
-
10982 
- -
10984  {
-
10985  if (value.m_value.object->empty())
-
10986  {
-
10987  // flatten empty object as null
-
10988  result[reference_string] = nullptr;
-
10989  }
-
10990  else
-
10991  {
-
10992  // iterate object and use keys as reference string
-
10993  for (const auto& element : *value.m_value.object)
-
10994  {
-
10995  flatten(reference_string + "/" + escape(element.first), element.second, result);
-
10996  }
-
10997  }
-
10998  break;
-
10999  }
-
11000 
-
11001  default:
-
11002  {
-
11003  // add primitive value with its reference string
-
11004  result[reference_string] = value;
-
11005  break;
-
11006  }
-
11007  }
-
11008  }
-
11009 
-
11020  static BasicJsonType
-
11021  unflatten(const BasicJsonType& value)
-
11022  {
-
11023  if (JSON_HEDLEY_UNLIKELY(not value.is_object()))
-
11024  {
-
11025  JSON_THROW(detail::type_error::create(314, "only objects can be unflattened"));
-
11026  }
-
11027 
-
11028  BasicJsonType result;
-
11029 
-
11030  // iterate the JSON object values
-
11031  for (const auto& element : *value.m_value.object)
-
11032  {
-
11033  if (JSON_HEDLEY_UNLIKELY(not element.second.is_primitive()))
-
11034  {
-
11035  JSON_THROW(detail::type_error::create(315, "values in object must be primitive"));
-
11036  }
-
11037 
-
11038  // assign value to reference pointed to by JSON pointer; Note that if
-
11039  // the JSON pointer is "" (i.e., points to the whole value), function
-
11040  // get_and_create returns a reference to result itself. An assignment
-
11041  // will then create a primitive value.
-
11042  json_pointer(element.first).get_and_create(result) = element.second;
-
11043  }
-
11044 
-
11045  return result;
-
11046  }
-
11047 
-
11059  friend bool operator==(json_pointer const& lhs,
-
11060  json_pointer const& rhs) noexcept
-
11061  {
-
11062  return lhs.reference_tokens == rhs.reference_tokens;
-
11063  }
-
11064 
-
11076  friend bool operator!=(json_pointer const& lhs,
-
11077  json_pointer const& rhs) noexcept
-
11078  {
-
11079  return not (lhs == rhs);
-
11080  }
-
11081 
-
11083  std::vector<std::string> reference_tokens;
-
11084 };
-
11085 } // namespace nlohmann
-
11086 
-
11087 // #include <nlohmann/detail/json_ref.hpp>
-
11088 
-
11089 
-
11090 #include <initializer_list>
-
11091 #include <utility>
-
11092 
-
11093 // #include <nlohmann/detail/meta/type_traits.hpp>
-
11094 
-
11095 
-
11096 namespace nlohmann
-
11097 {
-
11098 namespace detail
-
11099 {
-
11100 template<typename BasicJsonType>
- -
11102 {
-
11103  public:
-
11104  using value_type = BasicJsonType;
-
11105 
- -
11107  : owned_value(std::move(value)), value_ref(&owned_value), is_rvalue(true)
-
11108  {}
-
11109 
-
11110  json_ref(const value_type& value)
-
11111  : value_ref(const_cast<value_type*>(&value)), is_rvalue(false)
-
11112  {}
-
11113 
-
11114  json_ref(std::initializer_list<json_ref> init)
-
11115  : owned_value(init), value_ref(&owned_value), is_rvalue(true)
-
11116  {}
-
11117 
-
11118  template <
-
11119  class... Args,
-
11120  enable_if_t<std::is_constructible<value_type, Args...>::value, int> = 0 >
-
11121  json_ref(Args && ... args)
-
11122  : owned_value(std::forward<Args>(args)...), value_ref(&owned_value),
-
11123  is_rvalue(true) {}
-
11124 
-
11125  // class should be movable only
-
11126  json_ref(json_ref&&) = default;
-
11127  json_ref(const json_ref&) = delete;
-
11128  json_ref& operator=(const json_ref&) = delete;
-
11129  json_ref& operator=(json_ref&&) = delete;
-
11130  ~json_ref() = default;
-
11131 
- -
11133  {
-
11134  if (is_rvalue)
-
11135  {
-
11136  return std::move(*value_ref);
-
11137  }
-
11138  return *value_ref;
-
11139  }
-
11140 
-
11141  value_type const& operator*() const
-
11142  {
-
11143  return *static_cast<value_type const*>(value_ref);
-
11144  }
-
11145 
-
11146  value_type const* operator->() const
-
11147  {
-
11148  return static_cast<value_type const*>(value_ref);
-
11149  }
-
11150 
-
11151  private:
-
11152  mutable value_type owned_value = nullptr;
-
11153  value_type* value_ref = nullptr;
-
11154  const bool is_rvalue;
-
11155 };
-
11156 } // namespace detail
-
11157 } // namespace nlohmann
-
11158 
-
11159 // #include <nlohmann/detail/macro_scope.hpp>
-
11160 
-
11161 // #include <nlohmann/detail/meta/cpp_future.hpp>
-
11162 
-
11163 // #include <nlohmann/detail/meta/type_traits.hpp>
-
11164 
-
11165 // #include <nlohmann/detail/output/binary_writer.hpp>
-
11166 
-
11167 
-
11168 #include <algorithm> // reverse
-
11169 #include <array> // array
-
11170 #include <cstdint> // uint8_t, uint16_t, uint32_t, uint64_t
-
11171 #include <cstring> // memcpy
-
11172 #include <limits> // numeric_limits
-
11173 #include <string> // string
-
11174 
-
11175 // #include <nlohmann/detail/input/binary_reader.hpp>
-
11176 
-
11177 // #include <nlohmann/detail/macro_scope.hpp>
-
11178 
-
11179 // #include <nlohmann/detail/output/output_adapters.hpp>
-
11180 
-
11181 
-
11182 #include <algorithm> // copy
-
11183 #include <cstddef> // size_t
-
11184 #include <ios> // streamsize
-
11185 #include <iterator> // back_inserter
-
11186 #include <memory> // shared_ptr, make_shared
-
11187 #include <ostream> // basic_ostream
-
11188 #include <string> // basic_string
-
11189 #include <vector> // vector
-
11190 // #include <nlohmann/detail/macro_scope.hpp>
-
11191 
-
11192 
-
11193 namespace nlohmann
-
11194 {
-
11195 namespace detail
-
11196 {
-
11198 template<typename CharType> struct output_adapter_protocol
-
11199 {
-
11200  virtual void write_character(CharType c) = 0;
-
11201  virtual void write_characters(const CharType* s, std::size_t length) = 0;
-
11202  virtual ~output_adapter_protocol() = default;
-
11203 };
-
11204 
-
11206 template<typename CharType>
-
11207 using output_adapter_t = std::shared_ptr<output_adapter_protocol<CharType>>;
-
11208 
-
11210 template<typename CharType>
- -
11212 {
-
11213  public:
-
11214  explicit output_vector_adapter(std::vector<CharType>& vec) noexcept
-
11215  : v(vec)
-
11216  {}
-
11217 
-
11218  void write_character(CharType c) override
-
11219  {
-
11220  v.push_back(c);
-
11221  }
-
11222 
- -
11224  void write_characters(const CharType* s, std::size_t length) override
-
11225  {
-
11226  std::copy(s, s + length, std::back_inserter(v));
-
11227  }
-
11228 
-
11229  private:
-
11230  std::vector<CharType>& v;
-
11231 };
-
11232 
-
11234 template<typename CharType>
- -
11236 {
-
11237  public:
-
11238  explicit output_stream_adapter(std::basic_ostream<CharType>& s) noexcept
-
11239  : stream(s)
-
11240  {}
-
11241 
-
11242  void write_character(CharType c) override
-
11243  {
-
11244  stream.put(c);
-
11245  }
-
11246 
- -
11248  void write_characters(const CharType* s, std::size_t length) override
-
11249  {
-
11250  stream.write(s, static_cast<std::streamsize>(length));
-
11251  }
-
11252 
-
11253  private:
-
11254  std::basic_ostream<CharType>& stream;
-
11255 };
-
11256 
-
11258 template<typename CharType, typename StringType = std::basic_string<CharType>>
- -
11260 {
-
11261  public:
-
11262  explicit output_string_adapter(StringType& s) noexcept
-
11263  : str(s)
-
11264  {}
-
11265 
-
11266  void write_character(CharType c) override
-
11267  {
-
11268  str.push_back(c);
-
11269  }
-
11270 
- -
11272  void write_characters(const CharType* s, std::size_t length) override
-
11273  {
-
11274  str.append(s, length);
-
11275  }
-
11276 
-
11277  private:
-
11278  StringType& str;
-
11279 };
-
11280 
-
11281 template<typename CharType, typename StringType = std::basic_string<CharType>>
- -
11283 {
-
11284  public:
-
11285  output_adapter(std::vector<CharType>& vec)
-
11286  : oa(std::make_shared<output_vector_adapter<CharType>>(vec)) {}
-
11287 
-
11288  output_adapter(std::basic_ostream<CharType>& s)
-
11289  : oa(std::make_shared<output_stream_adapter<CharType>>(s)) {}
-
11290 
-
11291  output_adapter(StringType& s)
-
11292  : oa(std::make_shared<output_string_adapter<CharType, StringType>>(s)) {}
-
11293 
- -
11295  {
-
11296  return oa;
-
11297  }
-
11298 
-
11299  private:
-
11300  output_adapter_t<CharType> oa = nullptr;
-
11301 };
-
11302 } // namespace detail
-
11303 } // namespace nlohmann
-
11304 
-
11305 
-
11306 namespace nlohmann
-
11307 {
-
11308 namespace detail
-
11309 {
-
11311 // binary writer //
-
11313 
-
11317 template<typename BasicJsonType, typename CharType>
- -
11319 {
-
11320  using string_t = typename BasicJsonType::string_t;
-
11321 
-
11322  public:
-
11328  explicit binary_writer(output_adapter_t<CharType> adapter) : oa(adapter)
-
11329  {
-
11330  assert(oa);
-
11331  }
-
11332 
-
11337  void write_bson(const BasicJsonType& j)
-
11338  {
-
11339  switch (j.type())
-
11340  {
-
11341  case value_t::object:
-
11342  {
-
11343  write_bson_object(*j.m_value.object);
-
11344  break;
-
11345  }
-
11346 
-
11347  default:
-
11348  {
-
11349  JSON_THROW(type_error::create(317, "to serialize to BSON, top-level type must be object, but is " + std::string(j.type_name())));
-
11350  }
-
11351  }
-
11352  }
-
11353 
-
11357  void write_cbor(const BasicJsonType& j)
-
11358  {
-
11359  switch (j.type())
-
11360  {
-
11361  case value_t::null:
-
11362  {
-
11363  oa->write_character(to_char_type(0xF6));
-
11364  break;
-
11365  }
-
11366 
-
11367  case value_t::boolean:
-
11368  {
-
11369  oa->write_character(j.m_value.boolean
-
11370  ? to_char_type(0xF5)
-
11371  : to_char_type(0xF4));
-
11372  break;
-
11373  }
-
11374 
- -
11376  {
-
11377  if (j.m_value.number_integer >= 0)
-
11378  {
-
11379  // CBOR does not differentiate between positive signed
-
11380  // integers and unsigned integers. Therefore, we used the
-
11381  // code from the value_t::number_unsigned case here.
-
11382  if (j.m_value.number_integer <= 0x17)
-
11383  {
-
11384  write_number(static_cast<std::uint8_t>(j.m_value.number_integer));
-
11385  }
-
11386  else if (j.m_value.number_integer <= (std::numeric_limits<std::uint8_t>::max)())
-
11387  {
-
11388  oa->write_character(to_char_type(0x18));
-
11389  write_number(static_cast<std::uint8_t>(j.m_value.number_integer));
-
11390  }
-
11391  else if (j.m_value.number_integer <= (std::numeric_limits<std::uint16_t>::max)())
-
11392  {
-
11393  oa->write_character(to_char_type(0x19));
-
11394  write_number(static_cast<std::uint16_t>(j.m_value.number_integer));
-
11395  }
-
11396  else if (j.m_value.number_integer <= (std::numeric_limits<std::uint32_t>::max)())
-
11397  {
-
11398  oa->write_character(to_char_type(0x1A));
-
11399  write_number(static_cast<std::uint32_t>(j.m_value.number_integer));
-
11400  }
-
11401  else
-
11402  {
-
11403  oa->write_character(to_char_type(0x1B));
-
11404  write_number(static_cast<std::uint64_t>(j.m_value.number_integer));
-
11405  }
-
11406  }
-
11407  else
-
11408  {
-
11409  // The conversions below encode the sign in the first
-
11410  // byte, and the value is converted to a positive number.
-
11411  const auto positive_number = -1 - j.m_value.number_integer;
-
11412  if (j.m_value.number_integer >= -24)
-
11413  {
-
11414  write_number(static_cast<std::uint8_t>(0x20 + positive_number));
-
11415  }
-
11416  else if (positive_number <= (std::numeric_limits<std::uint8_t>::max)())
-
11417  {
-
11418  oa->write_character(to_char_type(0x38));
-
11419  write_number(static_cast<std::uint8_t>(positive_number));
-
11420  }
-
11421  else if (positive_number <= (std::numeric_limits<std::uint16_t>::max)())
-
11422  {
-
11423  oa->write_character(to_char_type(0x39));
-
11424  write_number(static_cast<std::uint16_t>(positive_number));
-
11425  }
-
11426  else if (positive_number <= (std::numeric_limits<std::uint32_t>::max)())
-
11427  {
-
11428  oa->write_character(to_char_type(0x3A));
-
11429  write_number(static_cast<std::uint32_t>(positive_number));
-
11430  }
-
11431  else
-
11432  {
-
11433  oa->write_character(to_char_type(0x3B));
-
11434  write_number(static_cast<std::uint64_t>(positive_number));
-
11435  }
-
11436  }
-
11437  break;
-
11438  }
-
11439 
- -
11441  {
-
11442  if (j.m_value.number_unsigned <= 0x17)
-
11443  {
-
11444  write_number(static_cast<std::uint8_t>(j.m_value.number_unsigned));
-
11445  }
-
11446  else if (j.m_value.number_unsigned <= (std::numeric_limits<std::uint8_t>::max)())
-
11447  {
-
11448  oa->write_character(to_char_type(0x18));
-
11449  write_number(static_cast<std::uint8_t>(j.m_value.number_unsigned));
-
11450  }
-
11451  else if (j.m_value.number_unsigned <= (std::numeric_limits<std::uint16_t>::max)())
-
11452  {
-
11453  oa->write_character(to_char_type(0x19));
-
11454  write_number(static_cast<std::uint16_t>(j.m_value.number_unsigned));
-
11455  }
-
11456  else if (j.m_value.number_unsigned <= (std::numeric_limits<std::uint32_t>::max)())
-
11457  {
-
11458  oa->write_character(to_char_type(0x1A));
-
11459  write_number(static_cast<std::uint32_t>(j.m_value.number_unsigned));
-
11460  }
-
11461  else
-
11462  {
-
11463  oa->write_character(to_char_type(0x1B));
-
11464  write_number(static_cast<std::uint64_t>(j.m_value.number_unsigned));
-
11465  }
-
11466  break;
-
11467  }
-
11468 
-
11469  case value_t::number_float:
-
11470  {
-
11471  oa->write_character(get_cbor_float_prefix(j.m_value.number_float));
-
11472  write_number(j.m_value.number_float);
-
11473  break;
-
11474  }
-
11475 
-
11476  case value_t::string:
-
11477  {
-
11478  // step 1: write control byte and the string length
-
11479  const auto N = j.m_value.string->size();
-
11480  if (N <= 0x17)
-
11481  {
-
11482  write_number(static_cast<std::uint8_t>(0x60 + N));
-
11483  }
-
11484  else if (N <= (std::numeric_limits<std::uint8_t>::max)())
-
11485  {
-
11486  oa->write_character(to_char_type(0x78));
-
11487  write_number(static_cast<std::uint8_t>(N));
-
11488  }
-
11489  else if (N <= (std::numeric_limits<std::uint16_t>::max)())
-
11490  {
-
11491  oa->write_character(to_char_type(0x79));
-
11492  write_number(static_cast<std::uint16_t>(N));
-
11493  }
-
11494  else if (N <= (std::numeric_limits<std::uint32_t>::max)())
-
11495  {
-
11496  oa->write_character(to_char_type(0x7A));
-
11497  write_number(static_cast<std::uint32_t>(N));
-
11498  }
-
11499  // LCOV_EXCL_START
-
11500  else if (N <= (std::numeric_limits<std::uint64_t>::max)())
-
11501  {
-
11502  oa->write_character(to_char_type(0x7B));
-
11503  write_number(static_cast<std::uint64_t>(N));
-
11504  }
-
11505  // LCOV_EXCL_STOP
-
11506 
-
11507  // step 2: write the string
-
11508  oa->write_characters(
-
11509  reinterpret_cast<const CharType*>(j.m_value.string->c_str()),
-
11510  j.m_value.string->size());
-
11511  break;
-
11512  }
-
11513 
-
11514  case value_t::array:
-
11515  {
-
11516  // step 1: write control byte and the array size
-
11517  const auto N = j.m_value.array->size();
-
11518  if (N <= 0x17)
-
11519  {
-
11520  write_number(static_cast<std::uint8_t>(0x80 + N));
-
11521  }
-
11522  else if (N <= (std::numeric_limits<std::uint8_t>::max)())
-
11523  {
-
11524  oa->write_character(to_char_type(0x98));
-
11525  write_number(static_cast<std::uint8_t>(N));
-
11526  }
-
11527  else if (N <= (std::numeric_limits<std::uint16_t>::max)())
-
11528  {
-
11529  oa->write_character(to_char_type(0x99));
-
11530  write_number(static_cast<std::uint16_t>(N));
-
11531  }
-
11532  else if (N <= (std::numeric_limits<std::uint32_t>::max)())
-
11533  {
-
11534  oa->write_character(to_char_type(0x9A));
-
11535  write_number(static_cast<std::uint32_t>(N));
-
11536  }
-
11537  // LCOV_EXCL_START
-
11538  else if (N <= (std::numeric_limits<std::uint64_t>::max)())
-
11539  {
-
11540  oa->write_character(to_char_type(0x9B));
-
11541  write_number(static_cast<std::uint64_t>(N));
-
11542  }
-
11543  // LCOV_EXCL_STOP
-
11544 
-
11545  // step 2: write each element
-
11546  for (const auto& el : *j.m_value.array)
-
11547  {
-
11548  write_cbor(el);
-
11549  }
-
11550  break;
-
11551  }
-
11552 
-
11553  case value_t::object:
-
11554  {
-
11555  // step 1: write control byte and the object size
-
11556  const auto N = j.m_value.object->size();
-
11557  if (N <= 0x17)
-
11558  {
-
11559  write_number(static_cast<std::uint8_t>(0xA0 + N));
-
11560  }
-
11561  else if (N <= (std::numeric_limits<std::uint8_t>::max)())
-
11562  {
-
11563  oa->write_character(to_char_type(0xB8));
-
11564  write_number(static_cast<std::uint8_t>(N));
-
11565  }
-
11566  else if (N <= (std::numeric_limits<std::uint16_t>::max)())
-
11567  {
-
11568  oa->write_character(to_char_type(0xB9));
-
11569  write_number(static_cast<std::uint16_t>(N));
-
11570  }
-
11571  else if (N <= (std::numeric_limits<std::uint32_t>::max)())
-
11572  {
-
11573  oa->write_character(to_char_type(0xBA));
-
11574  write_number(static_cast<std::uint32_t>(N));
-
11575  }
-
11576  // LCOV_EXCL_START
-
11577  else if (N <= (std::numeric_limits<std::uint64_t>::max)())
-
11578  {
-
11579  oa->write_character(to_char_type(0xBB));
-
11580  write_number(static_cast<std::uint64_t>(N));
-
11581  }
-
11582  // LCOV_EXCL_STOP
-
11583 
-
11584  // step 2: write each element
-
11585  for (const auto& el : *j.m_value.object)
-
11586  {
-
11587  write_cbor(el.first);
-
11588  write_cbor(el.second);
-
11589  }
-
11590  break;
-
11591  }
-
11592 
-
11593  default:
-
11594  break;
-
11595  }
-
11596  }
-
11597 
-
11601  void write_msgpack(const BasicJsonType& j)
-
11602  {
-
11603  switch (j.type())
-
11604  {
-
11605  case value_t::null: // nil
-
11606  {
-
11607  oa->write_character(to_char_type(0xC0));
-
11608  break;
-
11609  }
-
11610 
-
11611  case value_t::boolean: // true and false
-
11612  {
-
11613  oa->write_character(j.m_value.boolean
-
11614  ? to_char_type(0xC3)
-
11615  : to_char_type(0xC2));
-
11616  break;
-
11617  }
-
11618 
- -
11620  {
-
11621  if (j.m_value.number_integer >= 0)
-
11622  {
-
11623  // MessagePack does not differentiate between positive
-
11624  // signed integers and unsigned integers. Therefore, we used
-
11625  // the code from the value_t::number_unsigned case here.
-
11626  if (j.m_value.number_unsigned < 128)
-
11627  {
-
11628  // positive fixnum
-
11629  write_number(static_cast<std::uint8_t>(j.m_value.number_integer));
-
11630  }
-
11631  else if (j.m_value.number_unsigned <= (std::numeric_limits<std::uint8_t>::max)())
-
11632  {
-
11633  // uint 8
-
11634  oa->write_character(to_char_type(0xCC));
-
11635  write_number(static_cast<std::uint8_t>(j.m_value.number_integer));
-
11636  }
-
11637  else if (j.m_value.number_unsigned <= (std::numeric_limits<std::uint16_t>::max)())
-
11638  {
-
11639  // uint 16
-
11640  oa->write_character(to_char_type(0xCD));
-
11641  write_number(static_cast<std::uint16_t>(j.m_value.number_integer));
-
11642  }
-
11643  else if (j.m_value.number_unsigned <= (std::numeric_limits<std::uint32_t>::max)())
-
11644  {
-
11645  // uint 32
-
11646  oa->write_character(to_char_type(0xCE));
-
11647  write_number(static_cast<std::uint32_t>(j.m_value.number_integer));
-
11648  }
-
11649  else if (j.m_value.number_unsigned <= (std::numeric_limits<std::uint64_t>::max)())
-
11650  {
-
11651  // uint 64
-
11652  oa->write_character(to_char_type(0xCF));
-
11653  write_number(static_cast<std::uint64_t>(j.m_value.number_integer));
-
11654  }
-
11655  }
-
11656  else
-
11657  {
-
11658  if (j.m_value.number_integer >= -32)
-
11659  {
-
11660  // negative fixnum
-
11661  write_number(static_cast<std::int8_t>(j.m_value.number_integer));
-
11662  }
-
11663  else if (j.m_value.number_integer >= (std::numeric_limits<std::int8_t>::min)() and
-
11664  j.m_value.number_integer <= (std::numeric_limits<std::int8_t>::max)())
-
11665  {
-
11666  // int 8
-
11667  oa->write_character(to_char_type(0xD0));
-
11668  write_number(static_cast<std::int8_t>(j.m_value.number_integer));
-
11669  }
-
11670  else if (j.m_value.number_integer >= (std::numeric_limits<std::int16_t>::min)() and
-
11671  j.m_value.number_integer <= (std::numeric_limits<std::int16_t>::max)())
-
11672  {
-
11673  // int 16
-
11674  oa->write_character(to_char_type(0xD1));
-
11675  write_number(static_cast<std::int16_t>(j.m_value.number_integer));
-
11676  }
-
11677  else if (j.m_value.number_integer >= (std::numeric_limits<std::int32_t>::min)() and
-
11678  j.m_value.number_integer <= (std::numeric_limits<std::int32_t>::max)())
-
11679  {
-
11680  // int 32
-
11681  oa->write_character(to_char_type(0xD2));
-
11682  write_number(static_cast<std::int32_t>(j.m_value.number_integer));
-
11683  }
-
11684  else if (j.m_value.number_integer >= (std::numeric_limits<std::int64_t>::min)() and
-
11685  j.m_value.number_integer <= (std::numeric_limits<std::int64_t>::max)())
-
11686  {
-
11687  // int 64
-
11688  oa->write_character(to_char_type(0xD3));
-
11689  write_number(static_cast<std::int64_t>(j.m_value.number_integer));
-
11690  }
-
11691  }
-
11692  break;
-
11693  }
-
11694 
- -
11696  {
-
11697  if (j.m_value.number_unsigned < 128)
-
11698  {
-
11699  // positive fixnum
-
11700  write_number(static_cast<std::uint8_t>(j.m_value.number_integer));
-
11701  }
-
11702  else if (j.m_value.number_unsigned <= (std::numeric_limits<std::uint8_t>::max)())
-
11703  {
-
11704  // uint 8
-
11705  oa->write_character(to_char_type(0xCC));
-
11706  write_number(static_cast<std::uint8_t>(j.m_value.number_integer));
-
11707  }
-
11708  else if (j.m_value.number_unsigned <= (std::numeric_limits<std::uint16_t>::max)())
-
11709  {
-
11710  // uint 16
-
11711  oa->write_character(to_char_type(0xCD));
-
11712  write_number(static_cast<std::uint16_t>(j.m_value.number_integer));
-
11713  }
-
11714  else if (j.m_value.number_unsigned <= (std::numeric_limits<std::uint32_t>::max)())
-
11715  {
-
11716  // uint 32
-
11717  oa->write_character(to_char_type(0xCE));
-
11718  write_number(static_cast<std::uint32_t>(j.m_value.number_integer));
-
11719  }
-
11720  else if (j.m_value.number_unsigned <= (std::numeric_limits<std::uint64_t>::max)())
-
11721  {
-
11722  // uint 64
-
11723  oa->write_character(to_char_type(0xCF));
-
11724  write_number(static_cast<std::uint64_t>(j.m_value.number_integer));
-
11725  }
-
11726  break;
-
11727  }
-
11728 
-
11729  case value_t::number_float:
-
11730  {
-
11731  oa->write_character(get_msgpack_float_prefix(j.m_value.number_float));
-
11732  write_number(j.m_value.number_float);
-
11733  break;
-
11734  }
-
11735 
-
11736  case value_t::string:
-
11737  {
-
11738  // step 1: write control byte and the string length
-
11739  const auto N = j.m_value.string->size();
-
11740  if (N <= 31)
-
11741  {
-
11742  // fixstr
-
11743  write_number(static_cast<std::uint8_t>(0xA0 | N));
-
11744  }
-
11745  else if (N <= (std::numeric_limits<std::uint8_t>::max)())
-
11746  {
-
11747  // str 8
-
11748  oa->write_character(to_char_type(0xD9));
-
11749  write_number(static_cast<std::uint8_t>(N));
-
11750  }
-
11751  else if (N <= (std::numeric_limits<std::uint16_t>::max)())
-
11752  {
-
11753  // str 16
-
11754  oa->write_character(to_char_type(0xDA));
-
11755  write_number(static_cast<std::uint16_t>(N));
-
11756  }
-
11757  else if (N <= (std::numeric_limits<std::uint32_t>::max)())
-
11758  {
-
11759  // str 32
-
11760  oa->write_character(to_char_type(0xDB));
-
11761  write_number(static_cast<std::uint32_t>(N));
-
11762  }
-
11763 
-
11764  // step 2: write the string
-
11765  oa->write_characters(
-
11766  reinterpret_cast<const CharType*>(j.m_value.string->c_str()),
-
11767  j.m_value.string->size());
-
11768  break;
-
11769  }
-
11770 
-
11771  case value_t::array:
-
11772  {
-
11773  // step 1: write control byte and the array size
-
11774  const auto N = j.m_value.array->size();
-
11775  if (N <= 15)
-
11776  {
-
11777  // fixarray
-
11778  write_number(static_cast<std::uint8_t>(0x90 | N));
-
11779  }
-
11780  else if (N <= (std::numeric_limits<std::uint16_t>::max)())
-
11781  {
-
11782  // array 16
-
11783  oa->write_character(to_char_type(0xDC));
-
11784  write_number(static_cast<std::uint16_t>(N));
-
11785  }
-
11786  else if (N <= (std::numeric_limits<std::uint32_t>::max)())
-
11787  {
-
11788  // array 32
-
11789  oa->write_character(to_char_type(0xDD));
-
11790  write_number(static_cast<std::uint32_t>(N));
-
11791  }
-
11792 
-
11793  // step 2: write each element
-
11794  for (const auto& el : *j.m_value.array)
-
11795  {
-
11796  write_msgpack(el);
-
11797  }
-
11798  break;
-
11799  }
-
11800 
-
11801  case value_t::object:
-
11802  {
-
11803  // step 1: write control byte and the object size
-
11804  const auto N = j.m_value.object->size();
-
11805  if (N <= 15)
-
11806  {
-
11807  // fixmap
-
11808  write_number(static_cast<std::uint8_t>(0x80 | (N & 0xF)));
-
11809  }
-
11810  else if (N <= (std::numeric_limits<std::uint16_t>::max)())
-
11811  {
-
11812  // map 16
-
11813  oa->write_character(to_char_type(0xDE));
-
11814  write_number(static_cast<std::uint16_t>(N));
-
11815  }
-
11816  else if (N <= (std::numeric_limits<std::uint32_t>::max)())
-
11817  {
-
11818  // map 32
-
11819  oa->write_character(to_char_type(0xDF));
-
11820  write_number(static_cast<std::uint32_t>(N));
-
11821  }
-
11822 
-
11823  // step 2: write each element
-
11824  for (const auto& el : *j.m_value.object)
-
11825  {
-
11826  write_msgpack(el.first);
-
11827  write_msgpack(el.second);
-
11828  }
-
11829  break;
-
11830  }
-
11831 
-
11832  default:
-
11833  break;
-
11834  }
-
11835  }
-
11836 
-
11843  void write_ubjson(const BasicJsonType& j, const bool use_count,
-
11844  const bool use_type, const bool add_prefix = true)
-
11845  {
-
11846  switch (j.type())
-
11847  {
-
11848  case value_t::null:
-
11849  {
-
11850  if (add_prefix)
-
11851  {
-
11852  oa->write_character(to_char_type('Z'));
-
11853  }
-
11854  break;
-
11855  }
-
11856 
-
11857  case value_t::boolean:
-
11858  {
-
11859  if (add_prefix)
-
11860  {
-
11861  oa->write_character(j.m_value.boolean
-
11862  ? to_char_type('T')
-
11863  : to_char_type('F'));
-
11864  }
-
11865  break;
-
11866  }
-
11867 
- -
11869  {
-
11870  write_number_with_ubjson_prefix(j.m_value.number_integer, add_prefix);
-
11871  break;
-
11872  }
-
11873 
- -
11875  {
-
11876  write_number_with_ubjson_prefix(j.m_value.number_unsigned, add_prefix);
-
11877  break;
-
11878  }
-
11879 
-
11880  case value_t::number_float:
-
11881  {
-
11882  write_number_with_ubjson_prefix(j.m_value.number_float, add_prefix);
-
11883  break;
-
11884  }
-
11885 
-
11886  case value_t::string:
-
11887  {
-
11888  if (add_prefix)
-
11889  {
-
11890  oa->write_character(to_char_type('S'));
-
11891  }
-
11892  write_number_with_ubjson_prefix(j.m_value.string->size(), true);
-
11893  oa->write_characters(
-
11894  reinterpret_cast<const CharType*>(j.m_value.string->c_str()),
-
11895  j.m_value.string->size());
-
11896  break;
-
11897  }
-
11898 
-
11899  case value_t::array:
-
11900  {
-
11901  if (add_prefix)
-
11902  {
-
11903  oa->write_character(to_char_type('['));
-
11904  }
-
11905 
-
11906  bool prefix_required = true;
-
11907  if (use_type and not j.m_value.array->empty())
-
11908  {
-
11909  assert(use_count);
-
11910  const CharType first_prefix = ubjson_prefix(j.front());
-
11911  const bool same_prefix = std::all_of(j.begin() + 1, j.end(),
-
11912  [this, first_prefix](const BasicJsonType & v)
-
11913  {
-
11914  return ubjson_prefix(v) == first_prefix;
-
11915  });
-
11916 
-
11917  if (same_prefix)
-
11918  {
-
11919  prefix_required = false;
-
11920  oa->write_character(to_char_type('$'));
-
11921  oa->write_character(first_prefix);
-
11922  }
-
11923  }
-
11924 
-
11925  if (use_count)
-
11926  {
-
11927  oa->write_character(to_char_type('#'));
-
11928  write_number_with_ubjson_prefix(j.m_value.array->size(), true);
-
11929  }
-
11930 
-
11931  for (const auto& el : *j.m_value.array)
-
11932  {
-
11933  write_ubjson(el, use_count, use_type, prefix_required);
-
11934  }
-
11935 
-
11936  if (not use_count)
-
11937  {
-
11938  oa->write_character(to_char_type(']'));
-
11939  }
-
11940 
-
11941  break;
-
11942  }
-
11943 
-
11944  case value_t::object:
-
11945  {
-
11946  if (add_prefix)
-
11947  {
-
11948  oa->write_character(to_char_type('{'));
-
11949  }
-
11950 
-
11951  bool prefix_required = true;
-
11952  if (use_type and not j.m_value.object->empty())
-
11953  {
-
11954  assert(use_count);
-
11955  const CharType first_prefix = ubjson_prefix(j.front());
-
11956  const bool same_prefix = std::all_of(j.begin(), j.end(),
-
11957  [this, first_prefix](const BasicJsonType & v)
-
11958  {
-
11959  return ubjson_prefix(v) == first_prefix;
-
11960  });
-
11961 
-
11962  if (same_prefix)
-
11963  {
-
11964  prefix_required = false;
-
11965  oa->write_character(to_char_type('$'));
-
11966  oa->write_character(first_prefix);
-
11967  }
-
11968  }
-
11969 
-
11970  if (use_count)
-
11971  {
-
11972  oa->write_character(to_char_type('#'));
-
11973  write_number_with_ubjson_prefix(j.m_value.object->size(), true);
-
11974  }
-
11975 
-
11976  for (const auto& el : *j.m_value.object)
-
11977  {
-
11978  write_number_with_ubjson_prefix(el.first.size(), true);
-
11979  oa->write_characters(
-
11980  reinterpret_cast<const CharType*>(el.first.c_str()),
-
11981  el.first.size());
-
11982  write_ubjson(el.second, use_count, use_type, prefix_required);
-
11983  }
-
11984 
-
11985  if (not use_count)
-
11986  {
-
11987  oa->write_character(to_char_type('}'));
-
11988  }
-
11989 
-
11990  break;
-
11991  }
-
11992 
-
11993  default:
-
11994  break;
-
11995  }
-
11996  }
-
11997 
-
11998  private:
-
12000  // BSON //
-
12002 
-
12007  static std::size_t calc_bson_entry_header_size(const string_t& name)
-
12008  {
-
12009  const auto it = name.find(static_cast<typename string_t::value_type>(0));
-
12010  if (JSON_HEDLEY_UNLIKELY(it != BasicJsonType::string_t::npos))
-
12011  {
- -
12013  "BSON key cannot contain code point U+0000 (at byte " + std::to_string(it) + ")"));
-
12014  }
-
12015 
-
12016  return /*id*/ 1ul + name.size() + /*zero-terminator*/1u;
-
12017  }
-
12018 
-
12022  void write_bson_entry_header(const string_t& name,
-
12023  const std::uint8_t element_type)
-
12024  {
-
12025  oa->write_character(to_char_type(element_type)); // boolean
-
12026  oa->write_characters(
-
12027  reinterpret_cast<const CharType*>(name.c_str()),
-
12028  name.size() + 1u);
-
12029  }
-
12030 
-
12034  void write_bson_boolean(const string_t& name,
-
12035  const bool value)
-
12036  {
-
12037  write_bson_entry_header(name, 0x08);
-
12038  oa->write_character(value ? to_char_type(0x01) : to_char_type(0x00));
-
12039  }
-
12040 
-
12044  void write_bson_double(const string_t& name,
-
12045  const double value)
-
12046  {
-
12047  write_bson_entry_header(name, 0x01);
-
12048  write_number<double, true>(value);
-
12049  }
-
12050 
-
12054  static std::size_t calc_bson_string_size(const string_t& value)
-
12055  {
-
12056  return sizeof(std::int32_t) + value.size() + 1ul;
-
12057  }
-
12058 
-
12062  void write_bson_string(const string_t& name,
-
12063  const string_t& value)
-
12064  {
-
12065  write_bson_entry_header(name, 0x02);
-
12066 
-
12067  write_number<std::int32_t, true>(static_cast<std::int32_t>(value.size() + 1ul));
-
12068  oa->write_characters(
-
12069  reinterpret_cast<const CharType*>(value.c_str()),
-
12070  value.size() + 1);
-
12071  }
-
12072 
-
12076  void write_bson_null(const string_t& name)
-
12077  {
-
12078  write_bson_entry_header(name, 0x0A);
-
12079  }
-
12080 
-
12084  static std::size_t calc_bson_integer_size(const std::int64_t value)
-
12085  {
-
12086  return (std::numeric_limits<std::int32_t>::min)() <= value and value <= (std::numeric_limits<std::int32_t>::max)()
-
12087  ? sizeof(std::int32_t)
-
12088  : sizeof(std::int64_t);
-
12089  }
-
12090 
-
12094  void write_bson_integer(const string_t& name,
-
12095  const std::int64_t value)
-
12096  {
-
12097  if ((std::numeric_limits<std::int32_t>::min)() <= value and value <= (std::numeric_limits<std::int32_t>::max)())
-
12098  {
-
12099  write_bson_entry_header(name, 0x10); // int32
-
12100  write_number<std::int32_t, true>(static_cast<std::int32_t>(value));
-
12101  }
-
12102  else
-
12103  {
-
12104  write_bson_entry_header(name, 0x12); // int64
-
12105  write_number<std::int64_t, true>(static_cast<std::int64_t>(value));
-
12106  }
-
12107  }
-
12108 
-
12112  static constexpr std::size_t calc_bson_unsigned_size(const std::uint64_t value) noexcept
-
12113  {
-
12114  return (value <= static_cast<std::uint64_t>((std::numeric_limits<std::int32_t>::max)()))
-
12115  ? sizeof(std::int32_t)
-
12116  : sizeof(std::int64_t);
-
12117  }
-
12118 
-
12122  void write_bson_unsigned(const string_t& name,
-
12123  const std::uint64_t value)
-
12124  {
-
12125  if (value <= static_cast<std::uint64_t>((std::numeric_limits<std::int32_t>::max)()))
-
12126  {
-
12127  write_bson_entry_header(name, 0x10 /* int32 */);
-
12128  write_number<std::int32_t, true>(static_cast<std::int32_t>(value));
-
12129  }
-
12130  else if (value <= static_cast<std::uint64_t>((std::numeric_limits<std::int64_t>::max)()))
-
12131  {
-
12132  write_bson_entry_header(name, 0x12 /* int64 */);
-
12133  write_number<std::int64_t, true>(static_cast<std::int64_t>(value));
-
12134  }
-
12135  else
-
12136  {
-
12137  JSON_THROW(out_of_range::create(407, "integer number " + std::to_string(value) + " cannot be represented by BSON as it does not fit int64"));
-
12138  }
-
12139  }
-
12140 
-
12144  void write_bson_object_entry(const string_t& name,
-
12145  const typename BasicJsonType::object_t& value)
-
12146  {
-
12147  write_bson_entry_header(name, 0x03); // object
-
12148  write_bson_object(value);
-
12149  }
-
12150 
-
12154  static std::size_t calc_bson_array_size(const typename BasicJsonType::array_t& value)
-
12155  {
-
12156  std::size_t array_index = 0ul;
-
12157 
-
12158  const std::size_t embedded_document_size = std::accumulate(std::begin(value), std::end(value), 0ul, [&array_index](std::size_t result, const typename BasicJsonType::array_t::value_type & el)
-
12159  {
-
12160  return result + calc_bson_element_size(std::to_string(array_index++), el);
-
12161  });
-
12162 
-
12163  return sizeof(std::int32_t) + embedded_document_size + 1ul;
-
12164  }
-
12165 
-
12169  void write_bson_array(const string_t& name,
-
12170  const typename BasicJsonType::array_t& value)
-
12171  {
-
12172  write_bson_entry_header(name, 0x04); // array
-
12173  write_number<std::int32_t, true>(static_cast<std::int32_t>(calc_bson_array_size(value)));
-
12174 
-
12175  std::size_t array_index = 0ul;
-
12176 
-
12177  for (const auto& el : value)
-
12178  {
-
12179  write_bson_element(std::to_string(array_index++), el);
-
12180  }
-
12181 
-
12182  oa->write_character(to_char_type(0x00));
-
12183  }
-
12184 
-
12189  static std::size_t calc_bson_element_size(const string_t& name,
-
12190  const BasicJsonType& j)
-
12191  {
-
12192  const auto header_size = calc_bson_entry_header_size(name);
-
12193  switch (j.type())
-
12194  {
-
12195  case value_t::object:
-
12196  return header_size + calc_bson_object_size(*j.m_value.object);
-
12197 
-
12198  case value_t::array:
-
12199  return header_size + calc_bson_array_size(*j.m_value.array);
-
12200 
-
12201  case value_t::boolean:
-
12202  return header_size + 1ul;
-
12203 
-
12204  case value_t::number_float:
-
12205  return header_size + 8ul;
-
12206 
- -
12208  return header_size + calc_bson_integer_size(j.m_value.number_integer);
-
12209 
- -
12211  return header_size + calc_bson_unsigned_size(j.m_value.number_unsigned);
-
12212 
-
12213  case value_t::string:
-
12214  return header_size + calc_bson_string_size(*j.m_value.string);
-
12215 
-
12216  case value_t::null:
-
12217  return header_size + 0ul;
-
12218 
-
12219  // LCOV_EXCL_START
-
12220  default:
-
12221  assert(false);
-
12222  return 0ul;
-
12223  // LCOV_EXCL_STOP
-
12224  }
-
12225  }
-
12226 
-
12234  void write_bson_element(const string_t& name,
-
12235  const BasicJsonType& j)
-
12236  {
-
12237  switch (j.type())
-
12238  {
-
12239  case value_t::object:
-
12240  return write_bson_object_entry(name, *j.m_value.object);
-
12241 
-
12242  case value_t::array:
-
12243  return write_bson_array(name, *j.m_value.array);
-
12244 
-
12245  case value_t::boolean:
-
12246  return write_bson_boolean(name, j.m_value.boolean);
-
12247 
-
12248  case value_t::number_float:
-
12249  return write_bson_double(name, j.m_value.number_float);
-
12250 
- -
12252  return write_bson_integer(name, j.m_value.number_integer);
-
12253 
- -
12255  return write_bson_unsigned(name, j.m_value.number_unsigned);
-
12256 
-
12257  case value_t::string:
-
12258  return write_bson_string(name, *j.m_value.string);
-
12259 
-
12260  case value_t::null:
-
12261  return write_bson_null(name);
-
12262 
-
12263  // LCOV_EXCL_START
-
12264  default:
-
12265  assert(false);
-
12266  return;
-
12267  // LCOV_EXCL_STOP
-
12268  }
-
12269  }
-
12270 
-
12277  static std::size_t calc_bson_object_size(const typename BasicJsonType::object_t& value)
-
12278  {
-
12279  std::size_t document_size = std::accumulate(value.begin(), value.end(), 0ul,
-
12280  [](size_t result, const typename BasicJsonType::object_t::value_type & el)
-
12281  {
-
12282  return result += calc_bson_element_size(el.first, el.second);
-
12283  });
-
12284 
-
12285  return sizeof(std::int32_t) + document_size + 1ul;
-
12286  }
-
12287 
-
12292  void write_bson_object(const typename BasicJsonType::object_t& value)
-
12293  {
-
12294  write_number<std::int32_t, true>(static_cast<std::int32_t>(calc_bson_object_size(value)));
-
12295 
-
12296  for (const auto& el : value)
-
12297  {
-
12298  write_bson_element(el.first, el.second);
-
12299  }
-
12300 
-
12301  oa->write_character(to_char_type(0x00));
-
12302  }
-
12303 
-
12305  // CBOR //
-
12307 
-
12308  static constexpr CharType get_cbor_float_prefix(float /*unused*/)
-
12309  {
-
12310  return to_char_type(0xFA); // Single-Precision Float
-
12311  }
-
12312 
-
12313  static constexpr CharType get_cbor_float_prefix(double /*unused*/)
-
12314  {
-
12315  return to_char_type(0xFB); // Double-Precision Float
-
12316  }
-
12317 
-
12319  // MsgPack //
-
12321 
-
12322  static constexpr CharType get_msgpack_float_prefix(float /*unused*/)
-
12323  {
-
12324  return to_char_type(0xCA); // float 32
-
12325  }
-
12326 
-
12327  static constexpr CharType get_msgpack_float_prefix(double /*unused*/)
-
12328  {
-
12329  return to_char_type(0xCB); // float 64
-
12330  }
-
12331 
-
12333  // UBJSON //
-
12335 
-
12336  // UBJSON: write number (floating point)
-
12337  template<typename NumberType, typename std::enable_if<
-
12338  std::is_floating_point<NumberType>::value, int>::type = 0>
-
12339  void write_number_with_ubjson_prefix(const NumberType n,
-
12340  const bool add_prefix)
-
12341  {
-
12342  if (add_prefix)
-
12343  {
-
12344  oa->write_character(get_ubjson_float_prefix(n));
-
12345  }
-
12346  write_number(n);
-
12347  }
-
12348 
-
12349  // UBJSON: write number (unsigned integer)
-
12350  template<typename NumberType, typename std::enable_if<
-
12351  std::is_unsigned<NumberType>::value, int>::type = 0>
-
12352  void write_number_with_ubjson_prefix(const NumberType n,
-
12353  const bool add_prefix)
-
12354  {
-
12355  if (n <= static_cast<std::uint64_t>((std::numeric_limits<std::int8_t>::max)()))
-
12356  {
-
12357  if (add_prefix)
-
12358  {
-
12359  oa->write_character(to_char_type('i')); // int8
-
12360  }
-
12361  write_number(static_cast<std::uint8_t>(n));
-
12362  }
-
12363  else if (n <= (std::numeric_limits<std::uint8_t>::max)())
-
12364  {
-
12365  if (add_prefix)
-
12366  {
-
12367  oa->write_character(to_char_type('U')); // uint8
-
12368  }
-
12369  write_number(static_cast<std::uint8_t>(n));
-
12370  }
-
12371  else if (n <= static_cast<std::uint64_t>((std::numeric_limits<std::int16_t>::max)()))
-
12372  {
-
12373  if (add_prefix)
-
12374  {
-
12375  oa->write_character(to_char_type('I')); // int16
-
12376  }
-
12377  write_number(static_cast<std::int16_t>(n));
-
12378  }
-
12379  else if (n <= static_cast<std::uint64_t>((std::numeric_limits<std::int32_t>::max)()))
-
12380  {
-
12381  if (add_prefix)
-
12382  {
-
12383  oa->write_character(to_char_type('l')); // int32
-
12384  }
-
12385  write_number(static_cast<std::int32_t>(n));
-
12386  }
-
12387  else if (n <= static_cast<std::uint64_t>((std::numeric_limits<std::int64_t>::max)()))
-
12388  {
-
12389  if (add_prefix)
-
12390  {
-
12391  oa->write_character(to_char_type('L')); // int64
-
12392  }
-
12393  write_number(static_cast<std::int64_t>(n));
-
12394  }
-
12395  else
-
12396  {
-
12397  JSON_THROW(out_of_range::create(407, "integer number " + std::to_string(n) + " cannot be represented by UBJSON as it does not fit int64"));
-
12398  }
-
12399  }
-
12400 
-
12401  // UBJSON: write number (signed integer)
-
12402  template<typename NumberType, typename std::enable_if<
-
12403  std::is_signed<NumberType>::value and
-
12404  not std::is_floating_point<NumberType>::value, int>::type = 0>
-
12405  void write_number_with_ubjson_prefix(const NumberType n,
-
12406  const bool add_prefix)
-
12407  {
-
12408  if ((std::numeric_limits<std::int8_t>::min)() <= n and n <= (std::numeric_limits<std::int8_t>::max)())
-
12409  {
-
12410  if (add_prefix)
-
12411  {
-
12412  oa->write_character(to_char_type('i')); // int8
-
12413  }
-
12414  write_number(static_cast<std::int8_t>(n));
-
12415  }
-
12416  else if (static_cast<std::int64_t>((std::numeric_limits<std::uint8_t>::min)()) <= n and n <= static_cast<std::int64_t>((std::numeric_limits<std::uint8_t>::max)()))
-
12417  {
-
12418  if (add_prefix)
-
12419  {
-
12420  oa->write_character(to_char_type('U')); // uint8
-
12421  }
-
12422  write_number(static_cast<std::uint8_t>(n));
-
12423  }
-
12424  else if ((std::numeric_limits<std::int16_t>::min)() <= n and n <= (std::numeric_limits<std::int16_t>::max)())
-
12425  {
-
12426  if (add_prefix)
-
12427  {
-
12428  oa->write_character(to_char_type('I')); // int16
-
12429  }
-
12430  write_number(static_cast<std::int16_t>(n));
-
12431  }
-
12432  else if ((std::numeric_limits<std::int32_t>::min)() <= n and n <= (std::numeric_limits<std::int32_t>::max)())
-
12433  {
-
12434  if (add_prefix)
-
12435  {
-
12436  oa->write_character(to_char_type('l')); // int32
-
12437  }
-
12438  write_number(static_cast<std::int32_t>(n));
-
12439  }
-
12440  else if ((std::numeric_limits<std::int64_t>::min)() <= n and n <= (std::numeric_limits<std::int64_t>::max)())
-
12441  {
-
12442  if (add_prefix)
-
12443  {
-
12444  oa->write_character(to_char_type('L')); // int64
-
12445  }
-
12446  write_number(static_cast<std::int64_t>(n));
-
12447  }
-
12448  // LCOV_EXCL_START
-
12449  else
-
12450  {
-
12451  JSON_THROW(out_of_range::create(407, "integer number " + std::to_string(n) + " cannot be represented by UBJSON as it does not fit int64"));
-
12452  }
-
12453  // LCOV_EXCL_STOP
-
12454  }
-
12455 
-
12465  CharType ubjson_prefix(const BasicJsonType& j) const noexcept
-
12466  {
-
12467  switch (j.type())
-
12468  {
-
12469  case value_t::null:
-
12470  return 'Z';
-
12471 
-
12472  case value_t::boolean:
-
12473  return j.m_value.boolean ? 'T' : 'F';
-
12474 
- -
12476  {
-
12477  if ((std::numeric_limits<std::int8_t>::min)() <= j.m_value.number_integer and j.m_value.number_integer <= (std::numeric_limits<std::int8_t>::max)())
-
12478  {
-
12479  return 'i';
-
12480  }
-
12481  if ((std::numeric_limits<std::uint8_t>::min)() <= j.m_value.number_integer and j.m_value.number_integer <= (std::numeric_limits<std::uint8_t>::max)())
-
12482  {
-
12483  return 'U';
-
12484  }
-
12485  if ((std::numeric_limits<std::int16_t>::min)() <= j.m_value.number_integer and j.m_value.number_integer <= (std::numeric_limits<std::int16_t>::max)())
-
12486  {
-
12487  return 'I';
-
12488  }
-
12489  if ((std::numeric_limits<std::int32_t>::min)() <= j.m_value.number_integer and j.m_value.number_integer <= (std::numeric_limits<std::int32_t>::max)())
-
12490  {
-
12491  return 'l';
-
12492  }
-
12493  // no check and assume int64_t (see note above)
-
12494  return 'L';
-
12495  }
-
12496 
- -
12498  {
-
12499  if (j.m_value.number_unsigned <= static_cast<std::uint64_t>((std::numeric_limits<std::int8_t>::max)()))
-
12500  {
-
12501  return 'i';
-
12502  }
-
12503  if (j.m_value.number_unsigned <= static_cast<std::uint64_t>((std::numeric_limits<std::uint8_t>::max)()))
-
12504  {
-
12505  return 'U';
-
12506  }
-
12507  if (j.m_value.number_unsigned <= static_cast<std::uint64_t>((std::numeric_limits<std::int16_t>::max)()))
-
12508  {
-
12509  return 'I';
-
12510  }
-
12511  if (j.m_value.number_unsigned <= static_cast<std::uint64_t>((std::numeric_limits<std::int32_t>::max)()))
-
12512  {
-
12513  return 'l';
-
12514  }
-
12515  // no check and assume int64_t (see note above)
-
12516  return 'L';
-
12517  }
-
12518 
-
12519  case value_t::number_float:
-
12520  return get_ubjson_float_prefix(j.m_value.number_float);
-
12521 
-
12522  case value_t::string:
-
12523  return 'S';
-
12524 
-
12525  case value_t::array:
-
12526  return '[';
-
12527 
-
12528  case value_t::object:
-
12529  return '{';
-
12530 
-
12531  default: // discarded values
-
12532  return 'N';
-
12533  }
-
12534  }
-
12535 
-
12536  static constexpr CharType get_ubjson_float_prefix(float /*unused*/)
-
12537  {
-
12538  return 'd'; // float 32
-
12539  }
-
12540 
-
12541  static constexpr CharType get_ubjson_float_prefix(double /*unused*/)
-
12542  {
-
12543  return 'D'; // float 64
-
12544  }
-
12545 
-
12547  // Utility functions //
-
12549 
-
12550  /*
-
12551  @brief write a number to output input
-
12552  @param[in] n number of type @a NumberType
-
12553  @tparam NumberType the type of the number
-
12554  @tparam OutputIsLittleEndian Set to true if output data is
-
12555  required to be little endian
-
12556 
-
12557  @note This function needs to respect the system's endianess, because bytes
-
12558  in CBOR, MessagePack, and UBJSON are stored in network order (big
-
12559  endian) and therefore need reordering on little endian systems.
-
12560  */
-
12561  template<typename NumberType, bool OutputIsLittleEndian = false>
-
12562  void write_number(const NumberType n)
-
12563  {
-
12564  // step 1: write number to array of length NumberType
-
12565  std::array<CharType, sizeof(NumberType)> vec;
-
12566  std::memcpy(vec.data(), &n, sizeof(NumberType));
-
12567 
-
12568  // step 2: write array to output (with possible reordering)
-
12569  if (is_little_endian != OutputIsLittleEndian)
-
12570  {
-
12571  // reverse byte order prior to conversion if necessary
-
12572  std::reverse(vec.begin(), vec.end());
-
12573  }
-
12574 
-
12575  oa->write_characters(vec.data(), sizeof(NumberType));
-
12576  }
-
12577 
-
12578  public:
-
12579  // The following to_char_type functions are implement the conversion
-
12580  // between uint8_t and CharType. In case CharType is not unsigned,
-
12581  // such a conversion is required to allow values greater than 128.
-
12582  // See <https://github.com/nlohmann/json/issues/1286> for a discussion.
-
12583  template < typename C = CharType,
-
12584  enable_if_t < std::is_signed<C>::value and std::is_signed<char>::value > * = nullptr >
-
12585  static constexpr CharType to_char_type(std::uint8_t x) noexcept
-
12586  {
-
12587  return *reinterpret_cast<char*>(&x);
-
12588  }
-
12589 
-
12590  template < typename C = CharType,
-
12591  enable_if_t < std::is_signed<C>::value and std::is_unsigned<char>::value > * = nullptr >
-
12592  static CharType to_char_type(std::uint8_t x) noexcept
-
12593  {
-
12594  static_assert(sizeof(std::uint8_t) == sizeof(CharType), "size of CharType must be equal to std::uint8_t");
-
12595  static_assert(std::is_pod<CharType>::value, "CharType must be POD");
-
12596  CharType result;
-
12597  std::memcpy(&result, &x, sizeof(x));
-
12598  return result;
-
12599  }
-
12600 
-
12601  template<typename C = CharType,
- -
12603  static constexpr CharType to_char_type(std::uint8_t x) noexcept
-
12604  {
-
12605  return x;
-
12606  }
-
12607 
-
12608  template < typename InputCharType, typename C = CharType,
-
12609  enable_if_t <
-
12610  std::is_signed<C>::value and
-
12611  std::is_signed<char>::value and
-
12612  std::is_same<char, typename std::remove_cv<InputCharType>::type>::value
-
12613  > * = nullptr >
-
12614  static constexpr CharType to_char_type(InputCharType x) noexcept
-
12615  {
-
12616  return x;
-
12617  }
-
12618 
-
12619  private:
-
12621  const bool is_little_endian = binary_reader<BasicJsonType>::little_endianess();
-
12622 
-
12624  output_adapter_t<CharType> oa = nullptr;
-
12625 };
-
12626 } // namespace detail
-
12627 } // namespace nlohmann
-
12628 
-
12629 // #include <nlohmann/detail/output/output_adapters.hpp>
-
12630 
-
12631 // #include <nlohmann/detail/output/serializer.hpp>
-
12632 
-
12633 
-
12634 #include <algorithm> // reverse, remove, fill, find, none_of
-
12635 #include <array> // array
-
12636 #include <cassert> // assert
-
12637 #include <ciso646> // and, or
-
12638 #include <clocale> // localeconv, lconv
-
12639 #include <cmath> // labs, isfinite, isnan, signbit
-
12640 #include <cstddef> // size_t, ptrdiff_t
-
12641 #include <cstdint> // uint8_t
-
12642 #include <cstdio> // snprintf
-
12643 #include <limits> // numeric_limits
-
12644 #include <string> // string
-
12645 #include <type_traits> // is_same
-
12646 #include <utility> // move
-
12647 
-
12648 // #include <nlohmann/detail/conversions/to_chars.hpp>
-
12649 
-
12650 
-
12651 #include <array> // array
-
12652 #include <cassert> // assert
-
12653 #include <ciso646> // or, and, not
-
12654 #include <cmath> // signbit, isfinite
-
12655 #include <cstdint> // intN_t, uintN_t
-
12656 #include <cstring> // memcpy, memmove
-
12657 #include <limits> // numeric_limits
-
12658 #include <type_traits> // conditional
-
12659 // #include <nlohmann/detail/macro_scope.hpp>
-
12660 
-
12661 
-
12662 namespace nlohmann
-
12663 {
-
12664 namespace detail
-
12665 {
-
12666 
-
12686 namespace dtoa_impl
-
12687 {
-
12688 
-
12689 template <typename Target, typename Source>
-
12690 Target reinterpret_bits(const Source source)
-
12691 {
-
12692  static_assert(sizeof(Target) == sizeof(Source), "size mismatch");
-
12693 
-
12694  Target target;
-
12695  std::memcpy(&target, &source, sizeof(Source));
-
12696  return target;
-
12697 }
-
12698 
-
12699 struct diyfp // f * 2^e
-
12700 {
-
12701  static constexpr int kPrecision = 64; // = q
-
12702 
-
12703  std::uint64_t f = 0;
-
12704  int e = 0;
-
12705 
-
12706  constexpr diyfp(std::uint64_t f_, int e_) noexcept : f(f_), e(e_) {}
-
12707 
-
12712  static diyfp sub(const diyfp& x, const diyfp& y) noexcept
-
12713  {
-
12714  assert(x.e == y.e);
-
12715  assert(x.f >= y.f);
-
12716 
-
12717  return {x.f - y.f, x.e};
-
12718  }
-
12719 
-
12724  static diyfp mul(const diyfp& x, const diyfp& y) noexcept
-
12725  {
-
12726  static_assert(kPrecision == 64, "internal error");
-
12727 
-
12728  // Computes:
-
12729  // f = round((x.f * y.f) / 2^q)
-
12730  // e = x.e + y.e + q
-
12731 
-
12732  // Emulate the 64-bit * 64-bit multiplication:
-
12733  //
-
12734  // p = u * v
-
12735  // = (u_lo + 2^32 u_hi) (v_lo + 2^32 v_hi)
-
12736  // = (u_lo v_lo ) + 2^32 ((u_lo v_hi ) + (u_hi v_lo )) + 2^64 (u_hi v_hi )
-
12737  // = (p0 ) + 2^32 ((p1 ) + (p2 )) + 2^64 (p3 )
-
12738  // = (p0_lo + 2^32 p0_hi) + 2^32 ((p1_lo + 2^32 p1_hi) + (p2_lo + 2^32 p2_hi)) + 2^64 (p3 )
-
12739  // = (p0_lo ) + 2^32 (p0_hi + p1_lo + p2_lo ) + 2^64 (p1_hi + p2_hi + p3)
-
12740  // = (p0_lo ) + 2^32 (Q ) + 2^64 (H )
-
12741  // = (p0_lo ) + 2^32 (Q_lo + 2^32 Q_hi ) + 2^64 (H )
-
12742  //
-
12743  // (Since Q might be larger than 2^32 - 1)
-
12744  //
-
12745  // = (p0_lo + 2^32 Q_lo) + 2^64 (Q_hi + H)
-
12746  //
-
12747  // (Q_hi + H does not overflow a 64-bit int)
-
12748  //
-
12749  // = p_lo + 2^64 p_hi
-
12750 
-
12751  const std::uint64_t u_lo = x.f & 0xFFFFFFFFu;
-
12752  const std::uint64_t u_hi = x.f >> 32u;
-
12753  const std::uint64_t v_lo = y.f & 0xFFFFFFFFu;
-
12754  const std::uint64_t v_hi = y.f >> 32u;
-
12755 
-
12756  const std::uint64_t p0 = u_lo * v_lo;
-
12757  const std::uint64_t p1 = u_lo * v_hi;
-
12758  const std::uint64_t p2 = u_hi * v_lo;
-
12759  const std::uint64_t p3 = u_hi * v_hi;
-
12760 
-
12761  const std::uint64_t p0_hi = p0 >> 32u;
-
12762  const std::uint64_t p1_lo = p1 & 0xFFFFFFFFu;
-
12763  const std::uint64_t p1_hi = p1 >> 32u;
-
12764  const std::uint64_t p2_lo = p2 & 0xFFFFFFFFu;
-
12765  const std::uint64_t p2_hi = p2 >> 32u;
-
12766 
-
12767  std::uint64_t Q = p0_hi + p1_lo + p2_lo;
-
12768 
-
12769  // The full product might now be computed as
-
12770  //
-
12771  // p_hi = p3 + p2_hi + p1_hi + (Q >> 32)
-
12772  // p_lo = p0_lo + (Q << 32)
-
12773  //
-
12774  // But in this particular case here, the full p_lo is not required.
-
12775  // Effectively we only need to add the highest bit in p_lo to p_hi (and
-
12776  // Q_hi + 1 does not overflow).
-
12777 
-
12778  Q += std::uint64_t{1} << (64u - 32u - 1u); // round, ties up
-
12779 
-
12780  const std::uint64_t h = p3 + p2_hi + p1_hi + (Q >> 32u);
-
12781 
-
12782  return {h, x.e + y.e + 64};
-
12783  }
-
12784 
-
12789  static diyfp normalize(diyfp x) noexcept
-
12790  {
-
12791  assert(x.f != 0);
-
12792 
-
12793  while ((x.f >> 63u) == 0)
-
12794  {
-
12795  x.f <<= 1u;
-
12796  x.e--;
-
12797  }
-
12798 
-
12799  return x;
-
12800  }
-
12801 
-
12806  static diyfp normalize_to(const diyfp& x, const int target_exponent) noexcept
-
12807  {
-
12808  const int delta = x.e - target_exponent;
-
12809 
-
12810  assert(delta >= 0);
-
12811  assert(((x.f << delta) >> delta) == x.f);
-
12812 
-
12813  return {x.f << delta, target_exponent};
-
12814  }
-
12815 };
-
12816 
- -
12818 {
- - - -
12822 };
-
12823 
-
12830 template <typename FloatType>
- -
12832 {
-
12833  assert(std::isfinite(value));
-
12834  assert(value > 0);
-
12835 
-
12836  // Convert the IEEE representation into a diyfp.
-
12837  //
-
12838  // If v is denormal:
-
12839  // value = 0.F * 2^(1 - bias) = ( F) * 2^(1 - bias - (p-1))
-
12840  // If v is normalized:
-
12841  // value = 1.F * 2^(E - bias) = (2^(p-1) + F) * 2^(E - bias - (p-1))
-
12842 
-
12843  static_assert(std::numeric_limits<FloatType>::is_iec559,
-
12844  "internal error: dtoa_short requires an IEEE-754 floating-point implementation");
-
12845 
-
12846  constexpr int kPrecision = std::numeric_limits<FloatType>::digits; // = p (includes the hidden bit)
-
12847  constexpr int kBias = std::numeric_limits<FloatType>::max_exponent - 1 + (kPrecision - 1);
-
12848  constexpr int kMinExp = 1 - kBias;
-
12849  constexpr std::uint64_t kHiddenBit = std::uint64_t{1} << (kPrecision - 1); // = 2^(p-1)
-
12850 
-
12851  using bits_type = typename std::conditional<kPrecision == 24, std::uint32_t, std::uint64_t >::type;
-
12852 
-
12853  const std::uint64_t bits = reinterpret_bits<bits_type>(value);
-
12854  const std::uint64_t E = bits >> (kPrecision - 1);
-
12855  const std::uint64_t F = bits & (kHiddenBit - 1);
-
12856 
-
12857  const bool is_denormal = E == 0;
-
12858  const diyfp v = is_denormal
-
12859  ? diyfp(F, kMinExp)
-
12860  : diyfp(F + kHiddenBit, static_cast<int>(E) - kBias);
-
12861 
-
12862  // Compute the boundaries m- and m+ of the floating-point value
-
12863  // v = f * 2^e.
-
12864  //
-
12865  // Determine v- and v+, the floating-point predecessor and successor if v,
-
12866  // respectively.
-
12867  //
-
12868  // v- = v - 2^e if f != 2^(p-1) or e == e_min (A)
-
12869  // = v - 2^(e-1) if f == 2^(p-1) and e > e_min (B)
-
12870  //
-
12871  // v+ = v + 2^e
-
12872  //
-
12873  // Let m- = (v- + v) / 2 and m+ = (v + v+) / 2. All real numbers _strictly_
-
12874  // between m- and m+ round to v, regardless of how the input rounding
-
12875  // algorithm breaks ties.
-
12876  //
-
12877  // ---+-------------+-------------+-------------+-------------+--- (A)
-
12878  // v- m- v m+ v+
-
12879  //
-
12880  // -----------------+------+------+-------------+-------------+--- (B)
-
12881  // v- m- v m+ v+
-
12882 
-
12883  const bool lower_boundary_is_closer = F == 0 and E > 1;
-
12884  const diyfp m_plus = diyfp(2 * v.f + 1, v.e - 1);
-
12885  const diyfp m_minus = lower_boundary_is_closer
-
12886  ? diyfp(4 * v.f - 1, v.e - 2) // (B)
-
12887  : diyfp(2 * v.f - 1, v.e - 1); // (A)
-
12888 
-
12889  // Determine the normalized w+ = m+.
-
12890  const diyfp w_plus = diyfp::normalize(m_plus);
-
12891 
-
12892  // Determine w- = m- such that e_(w-) = e_(w+).
-
12893  const diyfp w_minus = diyfp::normalize_to(m_minus, w_plus.e);
-
12894 
-
12895  return {diyfp::normalize(v), w_minus, w_plus};
-
12896 }
-
12897 
-
12898 // Given normalized diyfp w, Grisu needs to find a (normalized) cached
-
12899 // power-of-ten c, such that the exponent of the product c * w = f * 2^e lies
-
12900 // within a certain range [alpha, gamma] (Definition 3.2 from [1])
-
12901 //
-
12902 // alpha <= e = e_c + e_w + q <= gamma
-
12903 //
-
12904 // or
-
12905 //
-
12906 // f_c * f_w * 2^alpha <= f_c 2^(e_c) * f_w 2^(e_w) * 2^q
-
12907 // <= f_c * f_w * 2^gamma
-
12908 //
-
12909 // Since c and w are normalized, i.e. 2^(q-1) <= f < 2^q, this implies
-
12910 //
-
12911 // 2^(q-1) * 2^(q-1) * 2^alpha <= c * w * 2^q < 2^q * 2^q * 2^gamma
-
12912 //
-
12913 // or
-
12914 //
-
12915 // 2^(q - 2 + alpha) <= c * w < 2^(q + gamma)
-
12916 //
-
12917 // The choice of (alpha,gamma) determines the size of the table and the form of
-
12918 // the digit generation procedure. Using (alpha,gamma)=(-60,-32) works out well
-
12919 // in practice:
-
12920 //
-
12921 // The idea is to cut the number c * w = f * 2^e into two parts, which can be
-
12922 // processed independently: An integral part p1, and a fractional part p2:
-
12923 //
-
12924 // f * 2^e = ( (f div 2^-e) * 2^-e + (f mod 2^-e) ) * 2^e
-
12925 // = (f div 2^-e) + (f mod 2^-e) * 2^e
-
12926 // = p1 + p2 * 2^e
-
12927 //
-
12928 // The conversion of p1 into decimal form requires a series of divisions and
-
12929 // modulos by (a power of) 10. These operations are faster for 32-bit than for
-
12930 // 64-bit integers, so p1 should ideally fit into a 32-bit integer. This can be
-
12931 // achieved by choosing
-
12932 //
-
12933 // -e >= 32 or e <= -32 := gamma
-
12934 //
-
12935 // In order to convert the fractional part
-
12936 //
-
12937 // p2 * 2^e = p2 / 2^-e = d[-1] / 10^1 + d[-2] / 10^2 + ...
-
12938 //
-
12939 // into decimal form, the fraction is repeatedly multiplied by 10 and the digits
-
12940 // d[-i] are extracted in order:
-
12941 //
-
12942 // (10 * p2) div 2^-e = d[-1]
-
12943 // (10 * p2) mod 2^-e = d[-2] / 10^1 + ...
-
12944 //
-
12945 // The multiplication by 10 must not overflow. It is sufficient to choose
-
12946 //
-
12947 // 10 * p2 < 16 * p2 = 2^4 * p2 <= 2^64.
-
12948 //
-
12949 // Since p2 = f mod 2^-e < 2^-e,
-
12950 //
-
12951 // -e <= 60 or e >= -60 := alpha
-
12952 
-
12953 constexpr int kAlpha = -60;
-
12954 constexpr int kGamma = -32;
-
12955 
-
12956 struct cached_power // c = f * 2^e ~= 10^k
-
12957 {
-
12958  std::uint64_t f;
-
12959  int e;
-
12960  int k;
-
12961 };
-
12962 
- -
12971 {
-
12972  // Now
-
12973  //
-
12974  // alpha <= e_c + e + q <= gamma (1)
-
12975  // ==> f_c * 2^alpha <= c * 2^e * 2^q
-
12976  //
-
12977  // and since the c's are normalized, 2^(q-1) <= f_c,
-
12978  //
-
12979  // ==> 2^(q - 1 + alpha) <= c * 2^(e + q)
-
12980  // ==> 2^(alpha - e - 1) <= c
-
12981  //
-
12982  // If c were an exact power of ten, i.e. c = 10^k, one may determine k as
-
12983  //
-
12984  // k = ceil( log_10( 2^(alpha - e - 1) ) )
-
12985  // = ceil( (alpha - e - 1) * log_10(2) )
-
12986  //
-
12987  // From the paper:
-
12988  // "In theory the result of the procedure could be wrong since c is rounded,
-
12989  // and the computation itself is approximated [...]. In practice, however,
-
12990  // this simple function is sufficient."
-
12991  //
-
12992  // For IEEE double precision floating-point numbers converted into
-
12993  // normalized diyfp's w = f * 2^e, with q = 64,
-
12994  //
-
12995  // e >= -1022 (min IEEE exponent)
-
12996  // -52 (p - 1)
-
12997  // -52 (p - 1, possibly normalize denormal IEEE numbers)
-
12998  // -11 (normalize the diyfp)
-
12999  // = -1137
-
13000  //
-
13001  // and
-
13002  //
-
13003  // e <= +1023 (max IEEE exponent)
-
13004  // -52 (p - 1)
-
13005  // -11 (normalize the diyfp)
-
13006  // = 960
-
13007  //
-
13008  // This binary exponent range [-1137,960] results in a decimal exponent
-
13009  // range [-307,324]. One does not need to store a cached power for each
-
13010  // k in this range. For each such k it suffices to find a cached power
-
13011  // such that the exponent of the product lies in [alpha,gamma].
-
13012  // This implies that the difference of the decimal exponents of adjacent
-
13013  // table entries must be less than or equal to
-
13014  //
-
13015  // floor( (gamma - alpha) * log_10(2) ) = 8.
-
13016  //
-
13017  // (A smaller distance gamma-alpha would require a larger table.)
-
13018 
-
13019  // NB:
-
13020  // Actually this function returns c, such that -60 <= e_c + e + 64 <= -34.
-
13021 
-
13022  constexpr int kCachedPowersMinDecExp = -300;
-
13023  constexpr int kCachedPowersDecStep = 8;
-
13024 
-
13025  static constexpr std::array<cached_power, 79> kCachedPowers =
-
13026  {
-
13027  {
-
13028  { 0xAB70FE17C79AC6CA, -1060, -300 },
-
13029  { 0xFF77B1FCBEBCDC4F, -1034, -292 },
-
13030  { 0xBE5691EF416BD60C, -1007, -284 },
-
13031  { 0x8DD01FAD907FFC3C, -980, -276 },
-
13032  { 0xD3515C2831559A83, -954, -268 },
-
13033  { 0x9D71AC8FADA6C9B5, -927, -260 },
-
13034  { 0xEA9C227723EE8BCB, -901, -252 },
-
13035  { 0xAECC49914078536D, -874, -244 },
-
13036  { 0x823C12795DB6CE57, -847, -236 },
-
13037  { 0xC21094364DFB5637, -821, -228 },
-
13038  { 0x9096EA6F3848984F, -794, -220 },
-
13039  { 0xD77485CB25823AC7, -768, -212 },
-
13040  { 0xA086CFCD97BF97F4, -741, -204 },
-
13041  { 0xEF340A98172AACE5, -715, -196 },
-
13042  { 0xB23867FB2A35B28E, -688, -188 },
-
13043  { 0x84C8D4DFD2C63F3B, -661, -180 },
-
13044  { 0xC5DD44271AD3CDBA, -635, -172 },
-
13045  { 0x936B9FCEBB25C996, -608, -164 },
-
13046  { 0xDBAC6C247D62A584, -582, -156 },
-
13047  { 0xA3AB66580D5FDAF6, -555, -148 },
-
13048  { 0xF3E2F893DEC3F126, -529, -140 },
-
13049  { 0xB5B5ADA8AAFF80B8, -502, -132 },
-
13050  { 0x87625F056C7C4A8B, -475, -124 },
-
13051  { 0xC9BCFF6034C13053, -449, -116 },
-
13052  { 0x964E858C91BA2655, -422, -108 },
-
13053  { 0xDFF9772470297EBD, -396, -100 },
-
13054  { 0xA6DFBD9FB8E5B88F, -369, -92 },
-
13055  { 0xF8A95FCF88747D94, -343, -84 },
-
13056  { 0xB94470938FA89BCF, -316, -76 },
-
13057  { 0x8A08F0F8BF0F156B, -289, -68 },
-
13058  { 0xCDB02555653131B6, -263, -60 },
-
13059  { 0x993FE2C6D07B7FAC, -236, -52 },
-
13060  { 0xE45C10C42A2B3B06, -210, -44 },
-
13061  { 0xAA242499697392D3, -183, -36 },
-
13062  { 0xFD87B5F28300CA0E, -157, -28 },
-
13063  { 0xBCE5086492111AEB, -130, -20 },
-
13064  { 0x8CBCCC096F5088CC, -103, -12 },
-
13065  { 0xD1B71758E219652C, -77, -4 },
-
13066  { 0x9C40000000000000, -50, 4 },
-
13067  { 0xE8D4A51000000000, -24, 12 },
-
13068  { 0xAD78EBC5AC620000, 3, 20 },
-
13069  { 0x813F3978F8940984, 30, 28 },
-
13070  { 0xC097CE7BC90715B3, 56, 36 },
-
13071  { 0x8F7E32CE7BEA5C70, 83, 44 },
-
13072  { 0xD5D238A4ABE98068, 109, 52 },
-
13073  { 0x9F4F2726179A2245, 136, 60 },
-
13074  { 0xED63A231D4C4FB27, 162, 68 },
-
13075  { 0xB0DE65388CC8ADA8, 189, 76 },
-
13076  { 0x83C7088E1AAB65DB, 216, 84 },
-
13077  { 0xC45D1DF942711D9A, 242, 92 },
-
13078  { 0x924D692CA61BE758, 269, 100 },
-
13079  { 0xDA01EE641A708DEA, 295, 108 },
-
13080  { 0xA26DA3999AEF774A, 322, 116 },
-
13081  { 0xF209787BB47D6B85, 348, 124 },
-
13082  { 0xB454E4A179DD1877, 375, 132 },
-
13083  { 0x865B86925B9BC5C2, 402, 140 },
-
13084  { 0xC83553C5C8965D3D, 428, 148 },
-
13085  { 0x952AB45CFA97A0B3, 455, 156 },
-
13086  { 0xDE469FBD99A05FE3, 481, 164 },
-
13087  { 0xA59BC234DB398C25, 508, 172 },
-
13088  { 0xF6C69A72A3989F5C, 534, 180 },
-
13089  { 0xB7DCBF5354E9BECE, 561, 188 },
-
13090  { 0x88FCF317F22241E2, 588, 196 },
-
13091  { 0xCC20CE9BD35C78A5, 614, 204 },
-
13092  { 0x98165AF37B2153DF, 641, 212 },
-
13093  { 0xE2A0B5DC971F303A, 667, 220 },
-
13094  { 0xA8D9D1535CE3B396, 694, 228 },
-
13095  { 0xFB9B7CD9A4A7443C, 720, 236 },
-
13096  { 0xBB764C4CA7A44410, 747, 244 },
-
13097  { 0x8BAB8EEFB6409C1A, 774, 252 },
-
13098  { 0xD01FEF10A657842C, 800, 260 },
-
13099  { 0x9B10A4E5E9913129, 827, 268 },
-
13100  { 0xE7109BFBA19C0C9D, 853, 276 },
-
13101  { 0xAC2820D9623BF429, 880, 284 },
-
13102  { 0x80444B5E7AA7CF85, 907, 292 },
-
13103  { 0xBF21E44003ACDD2D, 933, 300 },
-
13104  { 0x8E679C2F5E44FF8F, 960, 308 },
-
13105  { 0xD433179D9C8CB841, 986, 316 },
-
13106  { 0x9E19DB92B4E31BA9, 1013, 324 },
-
13107  }
-
13108  };
-
13109 
-
13110  // This computation gives exactly the same results for k as
-
13111  // k = ceil((kAlpha - e - 1) * 0.30102999566398114)
-
13112  // for |e| <= 1500, but doesn't require floating-point operations.
-
13113  // NB: log_10(2) ~= 78913 / 2^18
-
13114  assert(e >= -1500);
-
13115  assert(e <= 1500);
-
13116  const int f = kAlpha - e - 1;
-
13117  const int k = (f * 78913) / (1 << 18) + static_cast<int>(f > 0);
-
13118 
-
13119  const int index = (-kCachedPowersMinDecExp + k + (kCachedPowersDecStep - 1)) / kCachedPowersDecStep;
-
13120  assert(index >= 0);
-
13121  assert(static_cast<std::size_t>(index) < kCachedPowers.size());
-
13122 
-
13123  const cached_power cached = kCachedPowers[static_cast<std::size_t>(index)];
-
13124  assert(kAlpha <= cached.e + e + 64);
-
13125  assert(kGamma >= cached.e + e + 64);
-
13126 
-
13127  return cached;
-
13128 }
-
13129 
-
13134 inline int find_largest_pow10(const std::uint32_t n, std::uint32_t& pow10)
-
13135 {
-
13136  // LCOV_EXCL_START
-
13137  if (n >= 1000000000)
-
13138  {
-
13139  pow10 = 1000000000;
-
13140  return 10;
-
13141  }
-
13142  // LCOV_EXCL_STOP
-
13143  else if (n >= 100000000)
-
13144  {
-
13145  pow10 = 100000000;
-
13146  return 9;
-
13147  }
-
13148  else if (n >= 10000000)
-
13149  {
-
13150  pow10 = 10000000;
-
13151  return 8;
-
13152  }
-
13153  else if (n >= 1000000)
-
13154  {
-
13155  pow10 = 1000000;
-
13156  return 7;
-
13157  }
-
13158  else if (n >= 100000)
-
13159  {
-
13160  pow10 = 100000;
-
13161  return 6;
-
13162  }
-
13163  else if (n >= 10000)
-
13164  {
-
13165  pow10 = 10000;
-
13166  return 5;
-
13167  }
-
13168  else if (n >= 1000)
-
13169  {
-
13170  pow10 = 1000;
-
13171  return 4;
-
13172  }
-
13173  else if (n >= 100)
-
13174  {
-
13175  pow10 = 100;
-
13176  return 3;
-
13177  }
-
13178  else if (n >= 10)
-
13179  {
-
13180  pow10 = 10;
-
13181  return 2;
-
13182  }
-
13183  else
-
13184  {
-
13185  pow10 = 1;
-
13186  return 1;
-
13187  }
-
13188 }
-
13189 
-
13190 inline void grisu2_round(char* buf, int len, std::uint64_t dist, std::uint64_t delta,
-
13191  std::uint64_t rest, std::uint64_t ten_k)
-
13192 {
-
13193  assert(len >= 1);
-
13194  assert(dist <= delta);
-
13195  assert(rest <= delta);
-
13196  assert(ten_k > 0);
-
13197 
-
13198  // <--------------------------- delta ---->
-
13199  // <---- dist --------->
-
13200  // --------------[------------------+-------------------]--------------
-
13201  // M- w M+
-
13202  //
-
13203  // ten_k
-
13204  // <------>
-
13205  // <---- rest ---->
-
13206  // --------------[------------------+----+--------------]--------------
-
13207  // w V
-
13208  // = buf * 10^k
-
13209  //
-
13210  // ten_k represents a unit-in-the-last-place in the decimal representation
-
13211  // stored in buf.
-
13212  // Decrement buf by ten_k while this takes buf closer to w.
-
13213 
-
13214  // The tests are written in this order to avoid overflow in unsigned
-
13215  // integer arithmetic.
-
13216 
-
13217  while (rest < dist
-
13218  and delta - rest >= ten_k
-
13219  and (rest + ten_k < dist or dist - rest > rest + ten_k - dist))
-
13220  {
-
13221  assert(buf[len - 1] != '0');
-
13222  buf[len - 1]--;
-
13223  rest += ten_k;
-
13224  }
-
13225 }
-
13226 
-
13231 inline void grisu2_digit_gen(char* buffer, int& length, int& decimal_exponent,
-
13232  diyfp M_minus, diyfp w, diyfp M_plus)
-
13233 {
-
13234  static_assert(kAlpha >= -60, "internal error");
-
13235  static_assert(kGamma <= -32, "internal error");
-
13236 
-
13237  // Generates the digits (and the exponent) of a decimal floating-point
-
13238  // number V = buffer * 10^decimal_exponent in the range [M-, M+]. The diyfp's
-
13239  // w, M- and M+ share the same exponent e, which satisfies alpha <= e <= gamma.
-
13240  //
-
13241  // <--------------------------- delta ---->
-
13242  // <---- dist --------->
-
13243  // --------------[------------------+-------------------]--------------
-
13244  // M- w M+
-
13245  //
-
13246  // Grisu2 generates the digits of M+ from left to right and stops as soon as
-
13247  // V is in [M-,M+].
-
13248 
-
13249  assert(M_plus.e >= kAlpha);
-
13250  assert(M_plus.e <= kGamma);
-
13251 
-
13252  std::uint64_t delta = diyfp::sub(M_plus, M_minus).f; // (significand of (M+ - M-), implicit exponent is e)
-
13253  std::uint64_t dist = diyfp::sub(M_plus, w ).f; // (significand of (M+ - w ), implicit exponent is e)
-
13254 
-
13255  // Split M+ = f * 2^e into two parts p1 and p2 (note: e < 0):
-
13256  //
-
13257  // M+ = f * 2^e
-
13258  // = ((f div 2^-e) * 2^-e + (f mod 2^-e)) * 2^e
-
13259  // = ((p1 ) * 2^-e + (p2 )) * 2^e
-
13260  // = p1 + p2 * 2^e
-
13261 
-
13262  const diyfp one(std::uint64_t{1} << -M_plus.e, M_plus.e);
-
13263 
-
13264  auto p1 = static_cast<std::uint32_t>(M_plus.f >> -one.e); // p1 = f div 2^-e (Since -e >= 32, p1 fits into a 32-bit int.)
-
13265  std::uint64_t p2 = M_plus.f & (one.f - 1); // p2 = f mod 2^-e
-
13266 
-
13267  // 1)
-
13268  //
-
13269  // Generate the digits of the integral part p1 = d[n-1]...d[1]d[0]
-
13270 
-
13271  assert(p1 > 0);
-
13272 
-
13273  std::uint32_t pow10;
-
13274  const int k = find_largest_pow10(p1, pow10);
-
13275 
-
13276  // 10^(k-1) <= p1 < 10^k, pow10 = 10^(k-1)
-
13277  //
-
13278  // p1 = (p1 div 10^(k-1)) * 10^(k-1) + (p1 mod 10^(k-1))
-
13279  // = (d[k-1] ) * 10^(k-1) + (p1 mod 10^(k-1))
-
13280  //
-
13281  // M+ = p1 + p2 * 2^e
-
13282  // = d[k-1] * 10^(k-1) + (p1 mod 10^(k-1)) + p2 * 2^e
-
13283  // = d[k-1] * 10^(k-1) + ((p1 mod 10^(k-1)) * 2^-e + p2) * 2^e
-
13284  // = d[k-1] * 10^(k-1) + ( rest) * 2^e
-
13285  //
-
13286  // Now generate the digits d[n] of p1 from left to right (n = k-1,...,0)
-
13287  //
-
13288  // p1 = d[k-1]...d[n] * 10^n + d[n-1]...d[0]
-
13289  //
-
13290  // but stop as soon as
-
13291  //
-
13292  // rest * 2^e = (d[n-1]...d[0] * 2^-e + p2) * 2^e <= delta * 2^e
-
13293 
-
13294  int n = k;
-
13295  while (n > 0)
-
13296  {
-
13297  // Invariants:
-
13298  // M+ = buffer * 10^n + (p1 + p2 * 2^e) (buffer = 0 for n = k)
-
13299  // pow10 = 10^(n-1) <= p1 < 10^n
-
13300  //
-
13301  const std::uint32_t d = p1 / pow10; // d = p1 div 10^(n-1)
-
13302  const std::uint32_t r = p1 % pow10; // r = p1 mod 10^(n-1)
-
13303  //
-
13304  // M+ = buffer * 10^n + (d * 10^(n-1) + r) + p2 * 2^e
-
13305  // = (buffer * 10 + d) * 10^(n-1) + (r + p2 * 2^e)
-
13306  //
-
13307  assert(d <= 9);
-
13308  buffer[length++] = static_cast<char>('0' + d); // buffer := buffer * 10 + d
-
13309  //
-
13310  // M+ = buffer * 10^(n-1) + (r + p2 * 2^e)
-
13311  //
-
13312  p1 = r;
-
13313  n--;
-
13314  //
-
13315  // M+ = buffer * 10^n + (p1 + p2 * 2^e)
-
13316  // pow10 = 10^n
-
13317  //
-
13318 
-
13319  // Now check if enough digits have been generated.
-
13320  // Compute
-
13321  //
-
13322  // p1 + p2 * 2^e = (p1 * 2^-e + p2) * 2^e = rest * 2^e
-
13323  //
-
13324  // Note:
-
13325  // Since rest and delta share the same exponent e, it suffices to
-
13326  // compare the significands.
-
13327  const std::uint64_t rest = (std::uint64_t{p1} << -one.e) + p2;
-
13328  if (rest <= delta)
-
13329  {
-
13330  // V = buffer * 10^n, with M- <= V <= M+.
-
13331 
-
13332  decimal_exponent += n;
-
13333 
-
13334  // We may now just stop. But instead look if the buffer could be
-
13335  // decremented to bring V closer to w.
-
13336  //
-
13337  // pow10 = 10^n is now 1 ulp in the decimal representation V.
-
13338  // The rounding procedure works with diyfp's with an implicit
-
13339  // exponent of e.
-
13340  //
-
13341  // 10^n = (10^n * 2^-e) * 2^e = ulp * 2^e
-
13342  //
-
13343  const std::uint64_t ten_n = std::uint64_t{pow10} << -one.e;
-
13344  grisu2_round(buffer, length, dist, delta, rest, ten_n);
-
13345 
-
13346  return;
-
13347  }
-
13348 
-
13349  pow10 /= 10;
-
13350  //
-
13351  // pow10 = 10^(n-1) <= p1 < 10^n
-
13352  // Invariants restored.
-
13353  }
-
13354 
-
13355  // 2)
-
13356  //
-
13357  // The digits of the integral part have been generated:
-
13358  //
-
13359  // M+ = d[k-1]...d[1]d[0] + p2 * 2^e
-
13360  // = buffer + p2 * 2^e
-
13361  //
-
13362  // Now generate the digits of the fractional part p2 * 2^e.
-
13363  //
-
13364  // Note:
-
13365  // No decimal point is generated: the exponent is adjusted instead.
-
13366  //
-
13367  // p2 actually represents the fraction
-
13368  //
-
13369  // p2 * 2^e
-
13370  // = p2 / 2^-e
-
13371  // = d[-1] / 10^1 + d[-2] / 10^2 + ...
-
13372  //
-
13373  // Now generate the digits d[-m] of p1 from left to right (m = 1,2,...)
-
13374  //
-
13375  // p2 * 2^e = d[-1]d[-2]...d[-m] * 10^-m
-
13376  // + 10^-m * (d[-m-1] / 10^1 + d[-m-2] / 10^2 + ...)
-
13377  //
-
13378  // using
-
13379  //
-
13380  // 10^m * p2 = ((10^m * p2) div 2^-e) * 2^-e + ((10^m * p2) mod 2^-e)
-
13381  // = ( d) * 2^-e + ( r)
-
13382  //
-
13383  // or
-
13384  // 10^m * p2 * 2^e = d + r * 2^e
-
13385  //
-
13386  // i.e.
-
13387  //
-
13388  // M+ = buffer + p2 * 2^e
-
13389  // = buffer + 10^-m * (d + r * 2^e)
-
13390  // = (buffer * 10^m + d) * 10^-m + 10^-m * r * 2^e
-
13391  //
-
13392  // and stop as soon as 10^-m * r * 2^e <= delta * 2^e
-
13393 
-
13394  assert(p2 > delta);
-
13395 
-
13396  int m = 0;
-
13397  for (;;)
-
13398  {
-
13399  // Invariant:
-
13400  // M+ = buffer * 10^-m + 10^-m * (d[-m-1] / 10 + d[-m-2] / 10^2 + ...) * 2^e
-
13401  // = buffer * 10^-m + 10^-m * (p2 ) * 2^e
-
13402  // = buffer * 10^-m + 10^-m * (1/10 * (10 * p2) ) * 2^e
-
13403  // = buffer * 10^-m + 10^-m * (1/10 * ((10*p2 div 2^-e) * 2^-e + (10*p2 mod 2^-e)) * 2^e
-
13404  //
-
13405  assert(p2 <= (std::numeric_limits<std::uint64_t>::max)() / 10);
-
13406  p2 *= 10;
-
13407  const std::uint64_t d = p2 >> -one.e; // d = (10 * p2) div 2^-e
-
13408  const std::uint64_t r = p2 & (one.f - 1); // r = (10 * p2) mod 2^-e
-
13409  //
-
13410  // M+ = buffer * 10^-m + 10^-m * (1/10 * (d * 2^-e + r) * 2^e
-
13411  // = buffer * 10^-m + 10^-m * (1/10 * (d + r * 2^e))
-
13412  // = (buffer * 10 + d) * 10^(-m-1) + 10^(-m-1) * r * 2^e
-
13413  //
-
13414  assert(d <= 9);
-
13415  buffer[length++] = static_cast<char>('0' + d); // buffer := buffer * 10 + d
-
13416  //
-
13417  // M+ = buffer * 10^(-m-1) + 10^(-m-1) * r * 2^e
-
13418  //
-
13419  p2 = r;
-
13420  m++;
-
13421  //
-
13422  // M+ = buffer * 10^-m + 10^-m * p2 * 2^e
-
13423  // Invariant restored.
-
13424 
-
13425  // Check if enough digits have been generated.
-
13426  //
-
13427  // 10^-m * p2 * 2^e <= delta * 2^e
-
13428  // p2 * 2^e <= 10^m * delta * 2^e
-
13429  // p2 <= 10^m * delta
-
13430  delta *= 10;
-
13431  dist *= 10;
-
13432  if (p2 <= delta)
-
13433  {
-
13434  break;
-
13435  }
-
13436  }
-
13437 
-
13438  // V = buffer * 10^-m, with M- <= V <= M+.
-
13439 
-
13440  decimal_exponent -= m;
-
13441 
-
13442  // 1 ulp in the decimal representation is now 10^-m.
-
13443  // Since delta and dist are now scaled by 10^m, we need to do the
-
13444  // same with ulp in order to keep the units in sync.
-
13445  //
-
13446  // 10^m * 10^-m = 1 = 2^-e * 2^e = ten_m * 2^e
-
13447  //
-
13448  const std::uint64_t ten_m = one.f;
-
13449  grisu2_round(buffer, length, dist, delta, p2, ten_m);
-
13450 
-
13451  // By construction this algorithm generates the shortest possible decimal
-
13452  // number (Loitsch, Theorem 6.2) which rounds back to w.
-
13453  // For an input number of precision p, at least
-
13454  //
-
13455  // N = 1 + ceil(p * log_10(2))
-
13456  //
-
13457  // decimal digits are sufficient to identify all binary floating-point
-
13458  // numbers (Matula, "In-and-Out conversions").
-
13459  // This implies that the algorithm does not produce more than N decimal
-
13460  // digits.
-
13461  //
-
13462  // N = 17 for p = 53 (IEEE double precision)
-
13463  // N = 9 for p = 24 (IEEE single precision)
-
13464 }
-
13465 
- -
13472 inline void grisu2(char* buf, int& len, int& decimal_exponent,
-
13473  diyfp m_minus, diyfp v, diyfp m_plus)
-
13474 {
-
13475  assert(m_plus.e == m_minus.e);
-
13476  assert(m_plus.e == v.e);
-
13477 
-
13478  // --------(-----------------------+-----------------------)-------- (A)
-
13479  // m- v m+
-
13480  //
-
13481  // --------------------(-----------+-----------------------)-------- (B)
-
13482  // m- v m+
-
13483  //
-
13484  // First scale v (and m- and m+) such that the exponent is in the range
-
13485  // [alpha, gamma].
-
13486 
-
13487  const cached_power cached = get_cached_power_for_binary_exponent(m_plus.e);
-
13488 
-
13489  const diyfp c_minus_k(cached.f, cached.e); // = c ~= 10^-k
-
13490 
-
13491  // The exponent of the products is = v.e + c_minus_k.e + q and is in the range [alpha,gamma]
-
13492  const diyfp w = diyfp::mul(v, c_minus_k);
-
13493  const diyfp w_minus = diyfp::mul(m_minus, c_minus_k);
-
13494  const diyfp w_plus = diyfp::mul(m_plus, c_minus_k);
-
13495 
-
13496  // ----(---+---)---------------(---+---)---------------(---+---)----
-
13497  // w- w w+
-
13498  // = c*m- = c*v = c*m+
-
13499  //
-
13500  // diyfp::mul rounds its result and c_minus_k is approximated too. w, w- and
-
13501  // w+ are now off by a small amount.
-
13502  // In fact:
-
13503  //
-
13504  // w - v * 10^k < 1 ulp
-
13505  //
-
13506  // To account for this inaccuracy, add resp. subtract 1 ulp.
-
13507  //
-
13508  // --------+---[---------------(---+---)---------------]---+--------
-
13509  // w- M- w M+ w+
-
13510  //
-
13511  // Now any number in [M-, M+] (bounds included) will round to w when input,
-
13512  // regardless of how the input rounding algorithm breaks ties.
-
13513  //
-
13514  // And digit_gen generates the shortest possible such number in [M-, M+].
-
13515  // Note that this does not mean that Grisu2 always generates the shortest
-
13516  // possible number in the interval (m-, m+).
-
13517  const diyfp M_minus(w_minus.f + 1, w_minus.e);
-
13518  const diyfp M_plus (w_plus.f - 1, w_plus.e );
-
13519 
-
13520  decimal_exponent = -cached.k; // = -(-k) = k
-
13521 
-
13522  grisu2_digit_gen(buf, len, decimal_exponent, M_minus, w, M_plus);
-
13523 }
-
13524 
-
13530 template <typename FloatType>
- -
13532 void grisu2(char* buf, int& len, int& decimal_exponent, FloatType value)
-
13533 {
-
13534  static_assert(diyfp::kPrecision >= std::numeric_limits<FloatType>::digits + 3,
-
13535  "internal error: not enough precision");
-
13536 
-
13537  assert(std::isfinite(value));
-
13538  assert(value > 0);
-
13539 
-
13540  // If the neighbors (and boundaries) of 'value' are always computed for double-precision
-
13541  // numbers, all float's can be recovered using strtod (and strtof). However, the resulting
-
13542  // decimal representations are not exactly "short".
-
13543  //
-
13544  // The documentation for 'std::to_chars' (https://en.cppreference.com/w/cpp/utility/to_chars)
-
13545  // says "value is converted to a string as if by std::sprintf in the default ("C") locale"
-
13546  // and since sprintf promotes float's to double's, I think this is exactly what 'std::to_chars'
-
13547  // does.
-
13548  // On the other hand, the documentation for 'std::to_chars' requires that "parsing the
-
13549  // representation using the corresponding std::from_chars function recovers value exactly". That
-
13550  // indicates that single precision floating-point numbers should be recovered using
-
13551  // 'std::strtof'.
-
13552  //
-
13553  // NB: If the neighbors are computed for single-precision numbers, there is a single float
-
13554  // (7.0385307e-26f) which can't be recovered using strtod. The resulting double precision
-
13555  // value is off by 1 ulp.
-
13556 #if 0
-
13557  const boundaries w = compute_boundaries(static_cast<double>(value));
-
13558 #else
-
13559  const boundaries w = compute_boundaries(value);
-
13560 #endif
-
13561 
-
13562  grisu2(buf, len, decimal_exponent, w.minus, w.w, w.plus);
-
13563 }
-
13564 
- - -
13572 inline char* append_exponent(char* buf, int e)
-
13573 {
-
13574  assert(e > -1000);
-
13575  assert(e < 1000);
-
13576 
-
13577  if (e < 0)
-
13578  {
-
13579  e = -e;
-
13580  *buf++ = '-';
-
13581  }
-
13582  else
-
13583  {
-
13584  *buf++ = '+';
-
13585  }
-
13586 
-
13587  auto k = static_cast<std::uint32_t>(e);
-
13588  if (k < 10)
-
13589  {
-
13590  // Always print at least two digits in the exponent.
-
13591  // This is for compatibility with printf("%g").
-
13592  *buf++ = '0';
-
13593  *buf++ = static_cast<char>('0' + k);
-
13594  }
-
13595  else if (k < 100)
-
13596  {
-
13597  *buf++ = static_cast<char>('0' + k / 10);
-
13598  k %= 10;
-
13599  *buf++ = static_cast<char>('0' + k);
-
13600  }
-
13601  else
-
13602  {
-
13603  *buf++ = static_cast<char>('0' + k / 100);
-
13604  k %= 100;
-
13605  *buf++ = static_cast<char>('0' + k / 10);
-
13606  k %= 10;
-
13607  *buf++ = static_cast<char>('0' + k);
-
13608  }
-
13609 
-
13610  return buf;
-
13611 }
-
13612 
- - -
13624 inline char* format_buffer(char* buf, int len, int decimal_exponent,
-
13625  int min_exp, int max_exp)
-
13626 {
-
13627  assert(min_exp < 0);
-
13628  assert(max_exp > 0);
-
13629 
-
13630  const int k = len;
-
13631  const int n = len + decimal_exponent;
-
13632 
-
13633  // v = buf * 10^(n-k)
-
13634  // k is the length of the buffer (number of decimal digits)
-
13635  // n is the position of the decimal point relative to the start of the buffer.
-
13636 
-
13637  if (k <= n and n <= max_exp)
-
13638  {
-
13639  // digits[000]
-
13640  // len <= max_exp + 2
-
13641 
-
13642  std::memset(buf + k, '0', static_cast<size_t>(n - k));
-
13643  // Make it look like a floating-point number (#362, #378)
-
13644  buf[n + 0] = '.';
-
13645  buf[n + 1] = '0';
-
13646  return buf + (n + 2);
-
13647  }
-
13648 
-
13649  if (0 < n and n <= max_exp)
-
13650  {
-
13651  // dig.its
-
13652  // len <= max_digits10 + 1
-
13653 
-
13654  assert(k > n);
-
13655 
-
13656  std::memmove(buf + (n + 1), buf + n, static_cast<size_t>(k - n));
-
13657  buf[n] = '.';
-
13658  return buf + (k + 1);
-
13659  }
-
13660 
-
13661  if (min_exp < n and n <= 0)
-
13662  {
-
13663  // 0.[000]digits
-
13664  // len <= 2 + (-min_exp - 1) + max_digits10
-
13665 
-
13666  std::memmove(buf + (2 + -n), buf, static_cast<size_t>(k));
-
13667  buf[0] = '0';
-
13668  buf[1] = '.';
-
13669  std::memset(buf + 2, '0', static_cast<size_t>(-n));
-
13670  return buf + (2 + (-n) + k);
-
13671  }
-
13672 
-
13673  if (k == 1)
-
13674  {
-
13675  // dE+123
-
13676  // len <= 1 + 5
-
13677 
-
13678  buf += 1;
-
13679  }
-
13680  else
-
13681  {
-
13682  // d.igitsE+123
-
13683  // len <= max_digits10 + 1 + 5
-
13684 
-
13685  std::memmove(buf + 2, buf + 1, static_cast<size_t>(k - 1));
-
13686  buf[1] = '.';
-
13687  buf += 1 + k;
-
13688  }
-
13689 
-
13690  *buf++ = 'e';
-
13691  return append_exponent(buf, n - 1);
-
13692 }
-
13693 
-
13694 } // namespace dtoa_impl
-
13695 
-
13706 template <typename FloatType>
- - -
13709 char* to_chars(char* first, const char* last, FloatType value)
-
13710 {
-
13711  static_cast<void>(last); // maybe unused - fix warning
-
13712  assert(std::isfinite(value));
-
13713 
-
13714  // Use signbit(value) instead of (value < 0) since signbit works for -0.
-
13715  if (std::signbit(value))
-
13716  {
-
13717  value = -value;
-
13718  *first++ = '-';
-
13719  }
-
13720 
-
13721  if (value == 0) // +-0
-
13722  {
-
13723  *first++ = '0';
-
13724  // Make it look like a floating-point number (#362, #378)
-
13725  *first++ = '.';
-
13726  *first++ = '0';
-
13727  return first;
-
13728  }
-
13729 
-
13730  assert(last - first >= std::numeric_limits<FloatType>::max_digits10);
-
13731 
-
13732  // Compute v = buffer * 10^decimal_exponent.
-
13733  // The decimal digits are stored in the buffer, which needs to be interpreted
-
13734  // as an unsigned decimal integer.
-
13735  // len is the length of the buffer, i.e. the number of decimal digits.
-
13736  int len = 0;
-
13737  int decimal_exponent = 0;
-
13738  dtoa_impl::grisu2(first, len, decimal_exponent, value);
-
13739 
-
13740  assert(len <= std::numeric_limits<FloatType>::max_digits10);
-
13741 
-
13742  // Format the buffer like printf("%.*g", prec, value)
-
13743  constexpr int kMinExp = -4;
-
13744  // Use digits10 here to increase compatibility with version 2.
-
13745  constexpr int kMaxExp = std::numeric_limits<FloatType>::digits10;
-
13746 
-
13747  assert(last - first >= kMaxExp + 2);
-
13748  assert(last - first >= 2 + (-kMinExp - 1) + std::numeric_limits<FloatType>::max_digits10);
-
13749  assert(last - first >= std::numeric_limits<FloatType>::max_digits10 + 6);
-
13750 
-
13751  return dtoa_impl::format_buffer(first, len, decimal_exponent, kMinExp, kMaxExp);
-
13752 }
-
13753 
-
13754 } // namespace detail
-
13755 } // namespace nlohmann
-
13756 
-
13757 // #include <nlohmann/detail/exceptions.hpp>
-
13758 
-
13759 // #include <nlohmann/detail/macro_scope.hpp>
-
13760 
-
13761 // #include <nlohmann/detail/meta/cpp_future.hpp>
-
13762 
-
13763 // #include <nlohmann/detail/output/binary_writer.hpp>
-
13764 
-
13765 // #include <nlohmann/detail/output/output_adapters.hpp>
-
13766 
-
13767 // #include <nlohmann/detail/value_t.hpp>
-
13768 
-
13769 
-
13770 namespace nlohmann
-
13771 {
-
13772 namespace detail
-
13773 {
-
13775 // serialization //
-
13777 
- -
13780 {
-
13781  strict,
-
13782  replace,
-
13783  ignore
-
13784 };
-
13785 
-
13786 template<typename BasicJsonType>
- -
13788 {
-
13789  using string_t = typename BasicJsonType::string_t;
-
13790  using number_float_t = typename BasicJsonType::number_float_t;
-
13791  using number_integer_t = typename BasicJsonType::number_integer_t;
-
13792  using number_unsigned_t = typename BasicJsonType::number_unsigned_t;
-
13793  static constexpr std::uint8_t UTF8_ACCEPT = 0;
-
13794  static constexpr std::uint8_t UTF8_REJECT = 1;
-
13795 
-
13796  public:
-
13802  serializer(output_adapter_t<char> s, const char ichar,
-
13803  error_handler_t error_handler_ = error_handler_t::strict)
-
13804  : o(std::move(s))
-
13805  , loc(std::localeconv())
-
13806  , thousands_sep(loc->thousands_sep == nullptr ? '\0' : * (loc->thousands_sep))
-
13807  , decimal_point(loc->decimal_point == nullptr ? '\0' : * (loc->decimal_point))
-
13808  , indent_char(ichar)
-
13809  , indent_string(512, indent_char)
-
13810  , error_handler(error_handler_)
-
13811  {}
-
13812 
-
13813  // delete because of pointer members
-
13814  serializer(const serializer&) = delete;
-
13815  serializer& operator=(const serializer&) = delete;
-
13816  serializer(serializer&&) = delete;
-
13817  serializer& operator=(serializer&&) = delete;
-
13818  ~serializer() = default;
-
13819 
-
13837  void dump(const BasicJsonType& val, const bool pretty_print,
-
13838  const bool ensure_ascii,
-
13839  const unsigned int indent_step,
-
13840  const unsigned int current_indent = 0)
-
13841  {
-
13842  switch (val.m_type)
-
13843  {
-
13844  case value_t::object:
-
13845  {
-
13846  if (val.m_value.object->empty())
-
13847  {
-
13848  o->write_characters("{}", 2);
-
13849  return;
-
13850  }
-
13851 
-
13852  if (pretty_print)
-
13853  {
-
13854  o->write_characters("{\n", 2);
-
13855 
-
13856  // variable to hold indentation for recursive calls
-
13857  const auto new_indent = current_indent + indent_step;
-
13858  if (JSON_HEDLEY_UNLIKELY(indent_string.size() < new_indent))
-
13859  {
-
13860  indent_string.resize(indent_string.size() * 2, ' ');
-
13861  }
-
13862 
-
13863  // first n-1 elements
-
13864  auto i = val.m_value.object->cbegin();
-
13865  for (std::size_t cnt = 0; cnt < val.m_value.object->size() - 1; ++cnt, ++i)
-
13866  {
-
13867  o->write_characters(indent_string.c_str(), new_indent);
-
13868  o->write_character('\"');
-
13869  dump_escaped(i->first, ensure_ascii);
-
13870  o->write_characters("\": ", 3);
-
13871  dump(i->second, true, ensure_ascii, indent_step, new_indent);
-
13872  o->write_characters(",\n", 2);
-
13873  }
-
13874 
-
13875  // last element
-
13876  assert(i != val.m_value.object->cend());
-
13877  assert(std::next(i) == val.m_value.object->cend());
-
13878  o->write_characters(indent_string.c_str(), new_indent);
-
13879  o->write_character('\"');
-
13880  dump_escaped(i->first, ensure_ascii);
-
13881  o->write_characters("\": ", 3);
-
13882  dump(i->second, true, ensure_ascii, indent_step, new_indent);
-
13883 
-
13884  o->write_character('\n');
-
13885  o->write_characters(indent_string.c_str(), current_indent);
-
13886  o->write_character('}');
-
13887  }
-
13888  else
-
13889  {
-
13890  o->write_character('{');
-
13891 
-
13892  // first n-1 elements
-
13893  auto i = val.m_value.object->cbegin();
-
13894  for (std::size_t cnt = 0; cnt < val.m_value.object->size() - 1; ++cnt, ++i)
-
13895  {
-
13896  o->write_character('\"');
-
13897  dump_escaped(i->first, ensure_ascii);
-
13898  o->write_characters("\":", 2);
-
13899  dump(i->second, false, ensure_ascii, indent_step, current_indent);
-
13900  o->write_character(',');
-
13901  }
-
13902 
-
13903  // last element
-
13904  assert(i != val.m_value.object->cend());
-
13905  assert(std::next(i) == val.m_value.object->cend());
-
13906  o->write_character('\"');
-
13907  dump_escaped(i->first, ensure_ascii);
-
13908  o->write_characters("\":", 2);
-
13909  dump(i->second, false, ensure_ascii, indent_step, current_indent);
-
13910 
-
13911  o->write_character('}');
-
13912  }
-
13913 
-
13914  return;
-
13915  }
-
13916 
-
13917  case value_t::array:
-
13918  {
-
13919  if (val.m_value.array->empty())
-
13920  {
-
13921  o->write_characters("[]", 2);
-
13922  return;
-
13923  }
-
13924 
-
13925  if (pretty_print)
-
13926  {
-
13927  o->write_characters("[\n", 2);
-
13928 
-
13929  // variable to hold indentation for recursive calls
-
13930  const auto new_indent = current_indent + indent_step;
-
13931  if (JSON_HEDLEY_UNLIKELY(indent_string.size() < new_indent))
-
13932  {
-
13933  indent_string.resize(indent_string.size() * 2, ' ');
-
13934  }
-
13935 
-
13936  // first n-1 elements
-
13937  for (auto i = val.m_value.array->cbegin();
-
13938  i != val.m_value.array->cend() - 1; ++i)
-
13939  {
-
13940  o->write_characters(indent_string.c_str(), new_indent);
-
13941  dump(*i, true, ensure_ascii, indent_step, new_indent);
-
13942  o->write_characters(",\n", 2);
-
13943  }
-
13944 
-
13945  // last element
-
13946  assert(not val.m_value.array->empty());
-
13947  o->write_characters(indent_string.c_str(), new_indent);
-
13948  dump(val.m_value.array->back(), true, ensure_ascii, indent_step, new_indent);
-
13949 
-
13950  o->write_character('\n');
-
13951  o->write_characters(indent_string.c_str(), current_indent);
-
13952  o->write_character(']');
-
13953  }
-
13954  else
-
13955  {
-
13956  o->write_character('[');
-
13957 
-
13958  // first n-1 elements
-
13959  for (auto i = val.m_value.array->cbegin();
-
13960  i != val.m_value.array->cend() - 1; ++i)
-
13961  {
-
13962  dump(*i, false, ensure_ascii, indent_step, current_indent);
-
13963  o->write_character(',');
-
13964  }
-
13965 
-
13966  // last element
-
13967  assert(not val.m_value.array->empty());
-
13968  dump(val.m_value.array->back(), false, ensure_ascii, indent_step, current_indent);
-
13969 
-
13970  o->write_character(']');
-
13971  }
-
13972 
-
13973  return;
-
13974  }
-
13975 
-
13976  case value_t::string:
-
13977  {
-
13978  o->write_character('\"');
-
13979  dump_escaped(*val.m_value.string, ensure_ascii);
-
13980  o->write_character('\"');
-
13981  return;
-
13982  }
-
13983 
-
13984  case value_t::boolean:
-
13985  {
-
13986  if (val.m_value.boolean)
-
13987  {
-
13988  o->write_characters("true", 4);
-
13989  }
-
13990  else
-
13991  {
-
13992  o->write_characters("false", 5);
-
13993  }
-
13994  return;
-
13995  }
-
13996 
- -
13998  {
-
13999  dump_integer(val.m_value.number_integer);
-
14000  return;
-
14001  }
-
14002 
- -
14004  {
-
14005  dump_integer(val.m_value.number_unsigned);
-
14006  return;
-
14007  }
-
14008 
-
14009  case value_t::number_float:
-
14010  {
-
14011  dump_float(val.m_value.number_float);
-
14012  return;
-
14013  }
-
14014 
-
14015  case value_t::discarded:
-
14016  {
-
14017  o->write_characters("<discarded>", 11);
-
14018  return;
-
14019  }
-
14020 
-
14021  case value_t::null:
-
14022  {
-
14023  o->write_characters("null", 4);
-
14024  return;
-
14025  }
-
14026 
-
14027  default: // LCOV_EXCL_LINE
-
14028  assert(false); // LCOV_EXCL_LINE
-
14029  }
-
14030  }
-
14031 
-
14032  private:
-
14047  void dump_escaped(const string_t& s, const bool ensure_ascii)
-
14048  {
-
14049  std::uint32_t codepoint;
-
14050  std::uint8_t state = UTF8_ACCEPT;
-
14051  std::size_t bytes = 0; // number of bytes written to string_buffer
-
14052 
-
14053  // number of bytes written at the point of the last valid byte
-
14054  std::size_t bytes_after_last_accept = 0;
-
14055  std::size_t undumped_chars = 0;
-
14056 
-
14057  for (std::size_t i = 0; i < s.size(); ++i)
-
14058  {
-
14059  const auto byte = static_cast<uint8_t>(s[i]);
-
14060 
-
14061  switch (decode(state, codepoint, byte))
-
14062  {
-
14063  case UTF8_ACCEPT: // decode found a new code point
-
14064  {
-
14065  switch (codepoint)
-
14066  {
-
14067  case 0x08: // backspace
-
14068  {
-
14069  string_buffer[bytes++] = '\\';
-
14070  string_buffer[bytes++] = 'b';
-
14071  break;
-
14072  }
-
14073 
-
14074  case 0x09: // horizontal tab
-
14075  {
-
14076  string_buffer[bytes++] = '\\';
-
14077  string_buffer[bytes++] = 't';
-
14078  break;
-
14079  }
-
14080 
-
14081  case 0x0A: // newline
-
14082  {
-
14083  string_buffer[bytes++] = '\\';
-
14084  string_buffer[bytes++] = 'n';
-
14085  break;
-
14086  }
-
14087 
-
14088  case 0x0C: // formfeed
-
14089  {
-
14090  string_buffer[bytes++] = '\\';
-
14091  string_buffer[bytes++] = 'f';
-
14092  break;
-
14093  }
-
14094 
-
14095  case 0x0D: // carriage return
-
14096  {
-
14097  string_buffer[bytes++] = '\\';
-
14098  string_buffer[bytes++] = 'r';
-
14099  break;
-
14100  }
-
14101 
-
14102  case 0x22: // quotation mark
-
14103  {
-
14104  string_buffer[bytes++] = '\\';
-
14105  string_buffer[bytes++] = '\"';
-
14106  break;
-
14107  }
-
14108 
-
14109  case 0x5C: // reverse solidus
-
14110  {
-
14111  string_buffer[bytes++] = '\\';
-
14112  string_buffer[bytes++] = '\\';
-
14113  break;
-
14114  }
-
14115 
-
14116  default:
-
14117  {
-
14118  // escape control characters (0x00..0x1F) or, if
-
14119  // ensure_ascii parameter is used, non-ASCII characters
-
14120  if ((codepoint <= 0x1F) or (ensure_ascii and (codepoint >= 0x7F)))
-
14121  {
-
14122  if (codepoint <= 0xFFFF)
-
14123  {
-
14124  (std::snprintf)(string_buffer.data() + bytes, 7, "\\u%04x",
-
14125  static_cast<std::uint16_t>(codepoint));
-
14126  bytes += 6;
-
14127  }
-
14128  else
-
14129  {
-
14130  (std::snprintf)(string_buffer.data() + bytes, 13, "\\u%04x\\u%04x",
-
14131  static_cast<std::uint16_t>(0xD7C0u + (codepoint >> 10u)),
-
14132  static_cast<std::uint16_t>(0xDC00u + (codepoint & 0x3FFu)));
-
14133  bytes += 12;
-
14134  }
-
14135  }
-
14136  else
-
14137  {
-
14138  // copy byte to buffer (all previous bytes
-
14139  // been copied have in default case above)
-
14140  string_buffer[bytes++] = s[i];
-
14141  }
-
14142  break;
-
14143  }
-
14144  }
-
14145 
-
14146  // write buffer and reset index; there must be 13 bytes
-
14147  // left, as this is the maximal number of bytes to be
-
14148  // written ("\uxxxx\uxxxx\0") for one code point
-
14149  if (string_buffer.size() - bytes < 13)
-
14150  {
-
14151  o->write_characters(string_buffer.data(), bytes);
-
14152  bytes = 0;
-
14153  }
-
14154 
-
14155  // remember the byte position of this accept
-
14156  bytes_after_last_accept = bytes;
-
14157  undumped_chars = 0;
-
14158  break;
-
14159  }
-
14160 
-
14161  case UTF8_REJECT: // decode found invalid UTF-8 byte
-
14162  {
-
14163  switch (error_handler)
-
14164  {
- -
14166  {
-
14167  std::string sn(3, '\0');
-
14168  (std::snprintf)(&sn[0], sn.size(), "%.2X", byte);
-
14169  JSON_THROW(type_error::create(316, "invalid UTF-8 byte at index " + std::to_string(i) + ": 0x" + sn));
-
14170  }
-
14171 
- - -
14174  {
-
14175  // in case we saw this character the first time, we
-
14176  // would like to read it again, because the byte
-
14177  // may be OK for itself, but just not OK for the
-
14178  // previous sequence
-
14179  if (undumped_chars > 0)
-
14180  {
-
14181  --i;
-
14182  }
-
14183 
-
14184  // reset length buffer to the last accepted index;
-
14185  // thus removing/ignoring the invalid characters
-
14186  bytes = bytes_after_last_accept;
-
14187 
-
14188  if (error_handler == error_handler_t::replace)
-
14189  {
-
14190  // add a replacement character
-
14191  if (ensure_ascii)
-
14192  {
-
14193  string_buffer[bytes++] = '\\';
-
14194  string_buffer[bytes++] = 'u';
-
14195  string_buffer[bytes++] = 'f';
-
14196  string_buffer[bytes++] = 'f';
-
14197  string_buffer[bytes++] = 'f';
-
14198  string_buffer[bytes++] = 'd';
-
14199  }
-
14200  else
-
14201  {
-
14202  string_buffer[bytes++] = detail::binary_writer<BasicJsonType, char>::to_char_type('\xEF');
-
14203  string_buffer[bytes++] = detail::binary_writer<BasicJsonType, char>::to_char_type('\xBF');
-
14204  string_buffer[bytes++] = detail::binary_writer<BasicJsonType, char>::to_char_type('\xBD');
-
14205  }
-
14206 
-
14207  // write buffer and reset index; there must be 13 bytes
-
14208  // left, as this is the maximal number of bytes to be
-
14209  // written ("\uxxxx\uxxxx\0") for one code point
-
14210  if (string_buffer.size() - bytes < 13)
-
14211  {
-
14212  o->write_characters(string_buffer.data(), bytes);
-
14213  bytes = 0;
-
14214  }
-
14215 
-
14216  bytes_after_last_accept = bytes;
-
14217  }
-
14218 
-
14219  undumped_chars = 0;
-
14220 
-
14221  // continue processing the string
-
14222  state = UTF8_ACCEPT;
-
14223  break;
-
14224  }
-
14225 
-
14226  default: // LCOV_EXCL_LINE
-
14227  assert(false); // LCOV_EXCL_LINE
-
14228  }
-
14229  break;
-
14230  }
-
14231 
-
14232  default: // decode found yet incomplete multi-byte code point
-
14233  {
-
14234  if (not ensure_ascii)
-
14235  {
-
14236  // code point will not be escaped - copy byte to buffer
-
14237  string_buffer[bytes++] = s[i];
-
14238  }
-
14239  ++undumped_chars;
-
14240  break;
-
14241  }
-
14242  }
-
14243  }
-
14244 
-
14245  // we finished processing the string
-
14246  if (JSON_HEDLEY_LIKELY(state == UTF8_ACCEPT))
-
14247  {
-
14248  // write buffer
-
14249  if (bytes > 0)
-
14250  {
-
14251  o->write_characters(string_buffer.data(), bytes);
-
14252  }
-
14253  }
-
14254  else
-
14255  {
-
14256  // we finish reading, but do not accept: string was incomplete
-
14257  switch (error_handler)
-
14258  {
- -
14260  {
-
14261  std::string sn(3, '\0');
-
14262  (std::snprintf)(&sn[0], sn.size(), "%.2X", static_cast<std::uint8_t>(s.back()));
-
14263  JSON_THROW(type_error::create(316, "incomplete UTF-8 string; last byte: 0x" + sn));
-
14264  }
-
14265 
- -
14267  {
-
14268  // write all accepted bytes
-
14269  o->write_characters(string_buffer.data(), bytes_after_last_accept);
-
14270  break;
-
14271  }
-
14272 
- -
14274  {
-
14275  // write all accepted bytes
-
14276  o->write_characters(string_buffer.data(), bytes_after_last_accept);
-
14277  // add a replacement character
-
14278  if (ensure_ascii)
-
14279  {
-
14280  o->write_characters("\\ufffd", 6);
-
14281  }
-
14282  else
-
14283  {
-
14284  o->write_characters("\xEF\xBF\xBD", 3);
-
14285  }
-
14286  break;
-
14287  }
-
14288 
-
14289  default: // LCOV_EXCL_LINE
-
14290  assert(false); // LCOV_EXCL_LINE
-
14291  }
-
14292  }
-
14293  }
-
14294 
-
14303  inline unsigned int count_digits(number_unsigned_t x) noexcept
-
14304  {
-
14305  unsigned int n_digits = 1;
-
14306  for (;;)
-
14307  {
-
14308  if (x < 10)
-
14309  {
-
14310  return n_digits;
-
14311  }
-
14312  if (x < 100)
-
14313  {
-
14314  return n_digits + 1;
-
14315  }
-
14316  if (x < 1000)
-
14317  {
-
14318  return n_digits + 2;
-
14319  }
-
14320  if (x < 10000)
-
14321  {
-
14322  return n_digits + 3;
-
14323  }
-
14324  x = x / 10000u;
-
14325  n_digits += 4;
-
14326  }
-
14327  }
-
14328 
-
14338  template<typename NumberType, detail::enable_if_t<
-
14339  std::is_same<NumberType, number_unsigned_t>::value or
-
14340  std::is_same<NumberType, number_integer_t>::value,
-
14341  int> = 0>
-
14342  void dump_integer(NumberType x)
-
14343  {
-
14344  static constexpr std::array<std::array<char, 2>, 100> digits_to_99
-
14345  {
-
14346  {
-
14347  {{'0', '0'}}, {{'0', '1'}}, {{'0', '2'}}, {{'0', '3'}}, {{'0', '4'}}, {{'0', '5'}}, {{'0', '6'}}, {{'0', '7'}}, {{'0', '8'}}, {{'0', '9'}},
-
14348  {{'1', '0'}}, {{'1', '1'}}, {{'1', '2'}}, {{'1', '3'}}, {{'1', '4'}}, {{'1', '5'}}, {{'1', '6'}}, {{'1', '7'}}, {{'1', '8'}}, {{'1', '9'}},
-
14349  {{'2', '0'}}, {{'2', '1'}}, {{'2', '2'}}, {{'2', '3'}}, {{'2', '4'}}, {{'2', '5'}}, {{'2', '6'}}, {{'2', '7'}}, {{'2', '8'}}, {{'2', '9'}},
-
14350  {{'3', '0'}}, {{'3', '1'}}, {{'3', '2'}}, {{'3', '3'}}, {{'3', '4'}}, {{'3', '5'}}, {{'3', '6'}}, {{'3', '7'}}, {{'3', '8'}}, {{'3', '9'}},
-
14351  {{'4', '0'}}, {{'4', '1'}}, {{'4', '2'}}, {{'4', '3'}}, {{'4', '4'}}, {{'4', '5'}}, {{'4', '6'}}, {{'4', '7'}}, {{'4', '8'}}, {{'4', '9'}},
-
14352  {{'5', '0'}}, {{'5', '1'}}, {{'5', '2'}}, {{'5', '3'}}, {{'5', '4'}}, {{'5', '5'}}, {{'5', '6'}}, {{'5', '7'}}, {{'5', '8'}}, {{'5', '9'}},
-
14353  {{'6', '0'}}, {{'6', '1'}}, {{'6', '2'}}, {{'6', '3'}}, {{'6', '4'}}, {{'6', '5'}}, {{'6', '6'}}, {{'6', '7'}}, {{'6', '8'}}, {{'6', '9'}},
-
14354  {{'7', '0'}}, {{'7', '1'}}, {{'7', '2'}}, {{'7', '3'}}, {{'7', '4'}}, {{'7', '5'}}, {{'7', '6'}}, {{'7', '7'}}, {{'7', '8'}}, {{'7', '9'}},
-
14355  {{'8', '0'}}, {{'8', '1'}}, {{'8', '2'}}, {{'8', '3'}}, {{'8', '4'}}, {{'8', '5'}}, {{'8', '6'}}, {{'8', '7'}}, {{'8', '8'}}, {{'8', '9'}},
-
14356  {{'9', '0'}}, {{'9', '1'}}, {{'9', '2'}}, {{'9', '3'}}, {{'9', '4'}}, {{'9', '5'}}, {{'9', '6'}}, {{'9', '7'}}, {{'9', '8'}}, {{'9', '9'}},
-
14357  }
-
14358  };
-
14359 
-
14360  // special case for "0"
-
14361  if (x == 0)
-
14362  {
-
14363  o->write_character('0');
-
14364  return;
-
14365  }
-
14366 
-
14367  // use a pointer to fill the buffer
-
14368  auto buffer_ptr = number_buffer.begin();
-
14369 
-
14370  const bool is_negative = std::is_same<NumberType, number_integer_t>::value and not(x >= 0); // see issue #755
-
14371  number_unsigned_t abs_value;
-
14372 
-
14373  unsigned int n_chars;
-
14374 
-
14375  if (is_negative)
-
14376  {
-
14377  *buffer_ptr = '-';
-
14378  abs_value = remove_sign(x);
-
14379 
-
14380  // account one more byte for the minus sign
-
14381  n_chars = 1 + count_digits(abs_value);
-
14382  }
-
14383  else
-
14384  {
-
14385  abs_value = static_cast<number_unsigned_t>(x);
-
14386  n_chars = count_digits(abs_value);
-
14387  }
-
14388 
-
14389  // spare 1 byte for '\0'
-
14390  assert(n_chars < number_buffer.size() - 1);
-
14391 
-
14392  // jump to the end to generate the string from backward
-
14393  // so we later avoid reversing the result
-
14394  buffer_ptr += n_chars;
-
14395 
-
14396  // Fast int2ascii implementation inspired by "Fastware" talk by Andrei Alexandrescu
-
14397  // See: https://www.youtube.com/watch?v=o4-CwDo2zpg
-
14398  while (abs_value >= 100)
-
14399  {
-
14400  const auto digits_index = static_cast<unsigned>((abs_value % 100));
-
14401  abs_value /= 100;
-
14402  *(--buffer_ptr) = digits_to_99[digits_index][1];
-
14403  *(--buffer_ptr) = digits_to_99[digits_index][0];
-
14404  }
-
14405 
-
14406  if (abs_value >= 10)
-
14407  {
-
14408  const auto digits_index = static_cast<unsigned>(abs_value);
-
14409  *(--buffer_ptr) = digits_to_99[digits_index][1];
-
14410  *(--buffer_ptr) = digits_to_99[digits_index][0];
-
14411  }
-
14412  else
-
14413  {
-
14414  *(--buffer_ptr) = static_cast<char>('0' + abs_value);
-
14415  }
-
14416 
-
14417  o->write_characters(number_buffer.data(), n_chars);
-
14418  }
-
14419 
-
14428  void dump_float(number_float_t x)
-
14429  {
-
14430  // NaN / inf
-
14431  if (not std::isfinite(x))
-
14432  {
-
14433  o->write_characters("null", 4);
-
14434  return;
-
14435  }
-
14436 
-
14437  // If number_float_t is an IEEE-754 single or double precision number,
-
14438  // use the Grisu2 algorithm to produce short numbers which are
-
14439  // guaranteed to round-trip, using strtof and strtod, resp.
-
14440  //
-
14441  // NB: The test below works if <long double> == <double>.
-
14442  static constexpr bool is_ieee_single_or_double
-
14443  = (std::numeric_limits<number_float_t>::is_iec559 and std::numeric_limits<number_float_t>::digits == 24 and std::numeric_limits<number_float_t>::max_exponent == 128) or
-
14444  (std::numeric_limits<number_float_t>::is_iec559 and std::numeric_limits<number_float_t>::digits == 53 and std::numeric_limits<number_float_t>::max_exponent == 1024);
-
14445 
-
14446  dump_float(x, std::integral_constant<bool, is_ieee_single_or_double>());
-
14447  }
-
14448 
-
14449  void dump_float(number_float_t x, std::true_type /*is_ieee_single_or_double*/)
-
14450  {
-
14451  char* begin = number_buffer.data();
-
14452  char* end = ::nlohmann::detail::to_chars(begin, begin + number_buffer.size(), x);
-
14453 
-
14454  o->write_characters(begin, static_cast<size_t>(end - begin));
-
14455  }
-
14456 
-
14457  void dump_float(number_float_t x, std::false_type /*is_ieee_single_or_double*/)
-
14458  {
-
14459  // get number of digits for a float -> text -> float round-trip
-
14460  static constexpr auto d = std::numeric_limits<number_float_t>::max_digits10;
-
14461 
-
14462  // the actual conversion
-
14463  std::ptrdiff_t len = (std::snprintf)(number_buffer.data(), number_buffer.size(), "%.*g", d, x);
-
14464 
-
14465  // negative value indicates an error
-
14466  assert(len > 0);
-
14467  // check if buffer was large enough
-
14468  assert(static_cast<std::size_t>(len) < number_buffer.size());
-
14469 
-
14470  // erase thousands separator
-
14471  if (thousands_sep != '\0')
-
14472  {
-
14473  const auto end = std::remove(number_buffer.begin(),
-
14474  number_buffer.begin() + len, thousands_sep);
-
14475  std::fill(end, number_buffer.end(), '\0');
-
14476  assert((end - number_buffer.begin()) <= len);
-
14477  len = (end - number_buffer.begin());
-
14478  }
-
14479 
-
14480  // convert decimal point to '.'
-
14481  if (decimal_point != '\0' and decimal_point != '.')
-
14482  {
-
14483  const auto dec_pos = std::find(number_buffer.begin(), number_buffer.end(), decimal_point);
-
14484  if (dec_pos != number_buffer.end())
-
14485  {
-
14486  *dec_pos = '.';
-
14487  }
-
14488  }
-
14489 
-
14490  o->write_characters(number_buffer.data(), static_cast<std::size_t>(len));
-
14491 
-
14492  // determine if need to append ".0"
-
14493  const bool value_is_int_like =
-
14494  std::none_of(number_buffer.begin(), number_buffer.begin() + len + 1,
-
14495  [](char c)
-
14496  {
-
14497  return c == '.' or c == 'e';
-
14498  });
-
14499 
-
14500  if (value_is_int_like)
-
14501  {
-
14502  o->write_characters(".0", 2);
-
14503  }
-
14504  }
-
14505 
-
14527  static std::uint8_t decode(std::uint8_t& state, std::uint32_t& codep, const std::uint8_t byte) noexcept
-
14528  {
-
14529  static const std::array<std::uint8_t, 400> utf8d =
-
14530  {
-
14531  {
-
14532  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 00..1F
-
14533  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 20..3F
-
14534  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 40..5F
-
14535  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 60..7F
-
14536  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, // 80..9F
-
14537  7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, // A0..BF
-
14538  8, 8, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, // C0..DF
-
14539  0xA, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, // E0..EF
-
14540  0xB, 0x6, 0x6, 0x6, 0x5, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, // F0..FF
-
14541  0x0, 0x1, 0x2, 0x3, 0x5, 0x8, 0x7, 0x1, 0x1, 0x1, 0x4, 0x6, 0x1, 0x1, 0x1, 0x1, // s0..s0
-
14542  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, // s1..s2
-
14543  1, 2, 1, 1, 1, 1, 1, 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, // s3..s4
-
14544  1, 2, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 3, 1, 1, 1, 1, 1, 1, // s5..s6
-
14545  1, 3, 1, 1, 1, 1, 1, 3, 1, 3, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 // s7..s8
-
14546  }
-
14547  };
-
14548 
-
14549  const std::uint8_t type = utf8d[byte];
-
14550 
-
14551  codep = (state != UTF8_ACCEPT)
-
14552  ? (byte & 0x3fu) | (codep << 6u)
-
14553  : (0xFFu >> type) & (byte);
-
14554 
-
14555  state = utf8d[256u + state * 16u + type];
-
14556  return state;
-
14557  }
-
14558 
-
14559  /*
-
14560  * Overload to make the compiler happy while it is instantiating
-
14561  * dump_integer for number_unsigned_t.
-
14562  * Must never be called.
-
14563  */
-
14564  number_unsigned_t remove_sign(number_unsigned_t x)
-
14565  {
-
14566  assert(false); // LCOV_EXCL_LINE
-
14567  return x; // LCOV_EXCL_LINE
-
14568  }
-
14569 
-
14570  /*
-
14571  * Helper function for dump_integer
-
14572  *
-
14573  * This function takes a negative signed integer and returns its absolute
-
14574  * value as unsigned integer. The plus/minus shuffling is necessary as we can
-
14575  * not directly remove the sign of an arbitrary signed integer as the
-
14576  * absolute values of INT_MIN and INT_MAX are usually not the same. See
-
14577  * #1708 for details.
-
14578  */
-
14579  inline number_unsigned_t remove_sign(number_integer_t x) noexcept
-
14580  {
-
14581  assert(x < 0 and x < (std::numeric_limits<number_integer_t>::max)());
-
14582  return static_cast<number_unsigned_t>(-(x + 1)) + 1;
-
14583  }
-
14584 
-
14585  private:
-
14587  output_adapter_t<char> o = nullptr;
-
14588 
-
14590  std::array<char, 64> number_buffer{{}};
-
14591 
-
14593  const std::lconv* loc = nullptr;
-
14595  const char thousands_sep = '\0';
-
14597  const char decimal_point = '\0';
-
14598 
-
14600  std::array<char, 512> string_buffer{{}};
-
14601 
-
14603  const char indent_char;
-
14605  string_t indent_string;
-
14606 
-
14608  const error_handler_t error_handler;
-
14609 };
-
14610 } // namespace detail
-
14611 } // namespace nlohmann
-
14612 
-
14613 // #include <nlohmann/detail/value_t.hpp>
-
14614 
-
14615 // #include <nlohmann/json_fwd.hpp>
-
14616 
-
14617 
-
14623 namespace nlohmann
-
14624 {
-
14625 
- -
14708 class basic_json
-
14709 {
-
14710  private:
-
14711  template<detail::value_t> friend struct detail::external_constructor;
-
14712  friend ::nlohmann::json_pointer<basic_json>;
-
14713  friend ::nlohmann::detail::parser<basic_json>;
-
14714  friend ::nlohmann::detail::serializer<basic_json>;
-
14715  template<typename BasicJsonType>
-
14716  friend class ::nlohmann::detail::iter_impl;
-
14717  template<typename BasicJsonType, typename CharType>
-
14718  friend class ::nlohmann::detail::binary_writer;
-
14719  template<typename BasicJsonType, typename SAX>
-
14720  friend class ::nlohmann::detail::binary_reader;
-
14721  template<typename BasicJsonType>
-
14722  friend class ::nlohmann::detail::json_sax_dom_parser;
-
14723  template<typename BasicJsonType>
-
14724  friend class ::nlohmann::detail::json_sax_dom_callback_parser;
-
14725 
-
14727  using basic_json_t = NLOHMANN_BASIC_JSON_TPL;
-
14728 
-
14729  // convenience aliases for types residing in namespace detail;
- - -
14732 
- -
14734  template<typename BasicJsonType>
- -
14736  template<typename BasicJsonType>
- -
14738  template<typename Iterator>
- - -
14741 
-
14742  template<typename CharType>
-
14743  using output_adapter_t = ::nlohmann::detail::output_adapter_t<CharType>;
-
14744 
- -
14746  template<typename CharType> using binary_writer = ::nlohmann::detail::binary_writer<basic_json, CharType>;
-
14747 
- -
14749 
-
14750  public:
- - -
14754  template<typename T, typename SFINAE>
-
14755  using json_serializer = JSONSerializer<T, SFINAE>;
- -
14759  using initializer_list_t = std::initializer_list<detail::json_ref<basic_json>>;
-
14760 
- - -
14764 
-
14766  // exceptions //
-
14768 
-
14772 
- - - - - - -
14785 
-
14787 
-
14788 
-
14790  // container types //
-
14792 
-
14797 
- -
14800 
- -
14804  using const_reference = const value_type&;
-
14805 
-
14807  using difference_type = std::ptrdiff_t;
-
14809  using size_type = std::size_t;
-
14810 
-
14812  using allocator_type = AllocatorType<basic_json>;
-
14813 
-
14815  using pointer = typename std::allocator_traits<allocator_type>::pointer;
-
14817  using const_pointer = typename std::allocator_traits<allocator_type>::const_pointer;
-
14818 
- - - - -
14827 
-
14829 
-
14830 
- -
14835  {
-
14836  return allocator_type();
-
14837  }
-
14838 
- -
14866  static basic_json meta()
-
14867  {
-
14868  basic_json result;
-
14869 
-
14870  result["copyright"] = "(C) 2013-2017 Niels Lohmann";
-
14871  result["name"] = "JSON for Modern C++";
-
14872  result["url"] = "https://github.com/nlohmann/json";
-
14873  result["version"]["string"] =
- - - -
14877  result["version"]["major"] = NLOHMANN_JSON_VERSION_MAJOR;
-
14878  result["version"]["minor"] = NLOHMANN_JSON_VERSION_MINOR;
-
14879  result["version"]["patch"] = NLOHMANN_JSON_VERSION_PATCH;
-
14880 
-
14881 #ifdef _WIN32
-
14882  result["platform"] = "win32";
-
14883 #elif defined __linux__
-
14884  result["platform"] = "linux";
-
14885 #elif defined __APPLE__
-
14886  result["platform"] = "apple";
-
14887 #elif defined __unix__
-
14888  result["platform"] = "unix";
-
14889 #else
-
14890  result["platform"] = "unknown";
-
14891 #endif
-
14892 
-
14893 #if defined(__ICC) || defined(__INTEL_COMPILER)
-
14894  result["compiler"] = {{"family", "icc"}, {"version", __INTEL_COMPILER}};
-
14895 #elif defined(__clang__)
-
14896  result["compiler"] = {{"family", "clang"}, {"version", __clang_version__}};
-
14897 #elif defined(__GNUC__) || defined(__GNUG__)
-
14898  result["compiler"] = {{"family", "gcc"}, {"version", std::to_string(__GNUC__) + "." + std::to_string(__GNUC_MINOR__) + "." + std::to_string(__GNUC_PATCHLEVEL__)}};
-
14899 #elif defined(__HP_cc) || defined(__HP_aCC)
-
14900  result["compiler"] = "hp"
-
14901 #elif defined(__IBMCPP__)
-
14902  result["compiler"] = {{"family", "ilecpp"}, {"version", __IBMCPP__}};
-
14903 #elif defined(_MSC_VER)
-
14904  result["compiler"] = {{"family", "msvc"}, {"version", _MSC_VER}};
-
14905 #elif defined(__PGI)
-
14906  result["compiler"] = {{"family", "pgcpp"}, {"version", __PGI}};
-
14907 #elif defined(__SUNPRO_CC)
-
14908  result["compiler"] = {{"family", "sunpro"}, {"version", __SUNPRO_CC}};
-
14909 #else
-
14910  result["compiler"] = {{"family", "unknown"}, {"version", "unknown"}};
-
14911 #endif
-
14912 
-
14913 #ifdef __cplusplus
-
14914  result["compiler"]["c++"] = std::to_string(__cplusplus);
-
14915 #else
-
14916  result["compiler"]["c++"] = "unknown";
-
14917 #endif
-
14918  return result;
-
14919  }
-
14920 
-
14921 
-
14923  // JSON value data types //
-
14925 
-
14930 
-
14931 #if defined(JSON_HAS_CPP_14)
-
14932  // Use transparent comparator if possible, combined with perfect forwarding
-
14933  // on find() and count() calls prevents unnecessary string construction.
-
14934  using object_comparator_t = std::less<>;
-
14935 #else
-
14936  using object_comparator_t = std::less<StringType>;
-
14937 #endif
-
14938 
-
15022  using object_t = ObjectType<StringType,
-
15023  basic_json,
- -
15025  AllocatorType<std::pair<const StringType,
- -
15027 
-
15072  using array_t = ArrayType<basic_json, AllocatorType<basic_json>>;
-
15073 
-
15125  using string_t = StringType;
-
15126 
-
15151  using boolean_t = BooleanType;
-
15152 
-
15223  using number_integer_t = NumberIntegerType;
-
15224 
-
15294  using number_unsigned_t = NumberUnsignedType;
-
15295 
-
15362  using number_float_t = NumberFloatType;
-
15363 
-
15365 
-
15366  private:
-
15367 
-
15369  template<typename T, typename... Args>
- -
15371  static T* create(Args&& ... args)
-
15372  {
-
15373  AllocatorType<T> alloc;
-
15374  using AllocatorTraits = std::allocator_traits<AllocatorType<T>>;
-
15375 
-
15376  auto deleter = [&](T * object)
-
15377  {
-
15378  AllocatorTraits::deallocate(alloc, object, 1);
-
15379  };
-
15380  std::unique_ptr<T, decltype(deleter)> object(AllocatorTraits::allocate(alloc, 1), deleter);
-
15381  AllocatorTraits::construct(alloc, object.get(), std::forward<Args>(args)...);
-
15382  assert(object != nullptr);
-
15383  return object.release();
-
15384  }
-
15385 
-
15387  // JSON value storage //
-
15389 
-
15414  union json_value
-
15415  {
-
15417  object_t* object;
-
15419  array_t* array;
-
15421  string_t* string;
-
15423  boolean_t boolean;
-
15425  number_integer_t number_integer;
-
15427  number_unsigned_t number_unsigned;
-
15429  number_float_t number_float;
-
15430 
-
15432  json_value() = default;
-
15434  json_value(boolean_t v) noexcept : boolean(v) {}
-
15436  json_value(number_integer_t v) noexcept : number_integer(v) {}
-
15438  json_value(number_unsigned_t v) noexcept : number_unsigned(v) {}
-
15440  json_value(number_float_t v) noexcept : number_float(v) {}
-
15442  json_value(value_t t)
-
15443  {
-
15444  switch (t)
-
15445  {
-
15446  case value_t::object:
-
15447  {
-
15448  object = create<object_t>();
-
15449  break;
-
15450  }
-
15451 
-
15452  case value_t::array:
-
15453  {
-
15454  array = create<array_t>();
-
15455  break;
-
15456  }
-
15457 
-
15458  case value_t::string:
-
15459  {
-
15460  string = create<string_t>("");
-
15461  break;
-
15462  }
-
15463 
-
15464  case value_t::boolean:
-
15465  {
-
15466  boolean = boolean_t(false);
-
15467  break;
-
15468  }
-
15469 
- -
15471  {
- -
15473  break;
-
15474  }
-
15475 
- -
15477  {
- -
15479  break;
-
15480  }
-
15481 
-
15482  case value_t::number_float:
-
15483  {
- -
15485  break;
-
15486  }
-
15487 
-
15488  case value_t::null:
-
15489  {
-
15490  object = nullptr; // silence warning, see #821
-
15491  break;
-
15492  }
-
15493 
-
15494  default:
-
15495  {
-
15496  object = nullptr; // silence warning, see #821
- -
15498  {
-
15499  JSON_THROW(other_error::create(500, "961c151d2e87f2686a955a9be24d316f1362bf21 3.7.3")); // LCOV_EXCL_LINE
-
15500  }
-
15501  break;
-
15502  }
-
15503  }
-
15504  }
-
15505 
-
15507  json_value(const string_t& value)
-
15508  {
-
15509  string = create<string_t>(value);
-
15510  }
-
15511 
-
15513  json_value(string_t&& value)
-
15514  {
-
15515  string = create<string_t>(std::move(value));
-
15516  }
-
15517 
-
15519  json_value(const object_t& value)
-
15520  {
-
15521  object = create<object_t>(value);
-
15522  }
-
15523 
-
15525  json_value(object_t&& value)
-
15526  {
-
15527  object = create<object_t>(std::move(value));
-
15528  }
-
15529 
-
15531  json_value(const array_t& value)
-
15532  {
-
15533  array = create<array_t>(value);
-
15534  }
-
15535 
-
15537  json_value(array_t&& value)
-
15538  {
-
15539  array = create<array_t>(std::move(value));
-
15540  }
-
15541 
-
15542  void destroy(value_t t) noexcept
-
15543  {
-
15544  // flatten the current json_value to a heap-allocated stack
-
15545  std::vector<basic_json> stack;
-
15546 
-
15547  // move the top-level items to stack
-
15548  if (t == value_t::array)
-
15549  {
-
15550  stack.reserve(array->size());
-
15551  std::move(array->begin(), array->end(), std::back_inserter(stack));
-
15552  }
-
15553  else if (t == value_t::object)
-
15554  {
-
15555  stack.reserve(object->size());
-
15556  for (auto&& it : *object)
-
15557  {
-
15558  stack.push_back(std::move(it.second));
-
15559  }
-
15560  }
-
15561 
-
15562  while (not stack.empty())
-
15563  {
-
15564  // move the last item to local variable to be processed
-
15565  basic_json current_item(std::move(stack.back()));
-
15566  stack.pop_back();
-
15567 
-
15568  // if current_item is array/object, move
-
15569  // its children to the stack to be processed later
-
15570  if (current_item.is_array())
-
15571  {
-
15572  std::move(current_item.m_value.array->begin(), current_item.m_value.array->end(),
-
15573  std::back_inserter(stack));
-
15574 
-
15575  current_item.m_value.array->clear();
-
15576  }
-
15577  else if (current_item.is_object())
-
15578  {
-
15579  for (auto&& it : *current_item.m_value.object)
-
15580  {
-
15581  stack.push_back(std::move(it.second));
-
15582  }
-
15583 
-
15584  current_item.m_value.object->clear();
-
15585  }
-
15586 
-
15587  // it's now safe that current_item get destructed
-
15588  // since it doesn't have any children
-
15589  }
-
15590 
-
15591  switch (t)
-
15592  {
-
15593  case value_t::object:
-
15594  {
-
15595  AllocatorType<object_t> alloc;
-
15596  std::allocator_traits<decltype(alloc)>::destroy(alloc, object);
-
15597  std::allocator_traits<decltype(alloc)>::deallocate(alloc, object, 1);
-
15598  break;
-
15599  }
-
15600 
-
15601  case value_t::array:
-
15602  {
-
15603  AllocatorType<array_t> alloc;
-
15604  std::allocator_traits<decltype(alloc)>::destroy(alloc, array);
-
15605  std::allocator_traits<decltype(alloc)>::deallocate(alloc, array, 1);
-
15606  break;
-
15607  }
-
15608 
-
15609  case value_t::string:
-
15610  {
-
15611  AllocatorType<string_t> alloc;
-
15612  std::allocator_traits<decltype(alloc)>::destroy(alloc, string);
-
15613  std::allocator_traits<decltype(alloc)>::deallocate(alloc, string, 1);
-
15614  break;
-
15615  }
-
15616 
-
15617  default:
-
15618  {
-
15619  break;
-
15620  }
-
15621  }
-
15622  }
-
15623  };
-
15624 
-
15634  void assert_invariant() const noexcept
-
15635  {
-
15636  assert(m_type != value_t::object or m_value.object != nullptr);
-
15637  assert(m_type != value_t::array or m_value.array != nullptr);
-
15638  assert(m_type != value_t::string or m_value.string != nullptr);
-
15639  }
-
15640 
-
15641  public:
-
15643  // JSON parser callback //
-
15645 
- -
15662 
- -
15713 
-
15715  // constructors //
-
15717 
-
15722 
- -
15753  : m_type(v), m_value(v)
-
15754  {
-
15755  assert_invariant();
-
15756  }
-
15757 
-
15776  basic_json(std::nullptr_t = nullptr) noexcept
-
15777  : basic_json(value_t::null)
-
15778  {
-
15779  assert_invariant();
-
15780  }
-
15781 
-
15839  template <typename CompatibleType,
-
15840  typename U = detail::uncvref_t<CompatibleType>,
- - -
15843  basic_json(CompatibleType && val) noexcept(noexcept(
-
15844  JSONSerializer<U>::to_json(std::declval<basic_json_t&>(),
-
15845  std::forward<CompatibleType>(val))))
-
15846  {
-
15847  JSONSerializer<U>::to_json(*this, std::forward<CompatibleType>(val));
-
15848  assert_invariant();
-
15849  }
-
15850 
-
15877  template <typename BasicJsonType,
- -
15879  detail::is_basic_json<BasicJsonType>::value and not std::is_same<basic_json, BasicJsonType>::value, int> = 0>
-
15880  basic_json(const BasicJsonType& val)
-
15881  {
-
15882  using other_boolean_t = typename BasicJsonType::boolean_t;
-
15883  using other_number_float_t = typename BasicJsonType::number_float_t;
-
15884  using other_number_integer_t = typename BasicJsonType::number_integer_t;
-
15885  using other_number_unsigned_t = typename BasicJsonType::number_unsigned_t;
-
15886  using other_string_t = typename BasicJsonType::string_t;
-
15887  using other_object_t = typename BasicJsonType::object_t;
-
15888  using other_array_t = typename BasicJsonType::array_t;
-
15889 
-
15890  switch (val.type())
-
15891  {
-
15892  case value_t::boolean:
-
15893  JSONSerializer<other_boolean_t>::to_json(*this, val.template get<other_boolean_t>());
-
15894  break;
-
15895  case value_t::number_float:
-
15896  JSONSerializer<other_number_float_t>::to_json(*this, val.template get<other_number_float_t>());
-
15897  break;
- -
15899  JSONSerializer<other_number_integer_t>::to_json(*this, val.template get<other_number_integer_t>());
-
15900  break;
- -
15902  JSONSerializer<other_number_unsigned_t>::to_json(*this, val.template get<other_number_unsigned_t>());
-
15903  break;
-
15904  case value_t::string:
-
15905  JSONSerializer<other_string_t>::to_json(*this, val.template get_ref<const other_string_t&>());
-
15906  break;
-
15907  case value_t::object:
-
15908  JSONSerializer<other_object_t>::to_json(*this, val.template get_ref<const other_object_t&>());
-
15909  break;
-
15910  case value_t::array:
-
15911  JSONSerializer<other_array_t>::to_json(*this, val.template get_ref<const other_array_t&>());
-
15912  break;
-
15913  case value_t::null:
-
15914  *this = nullptr;
-
15915  break;
-
15916  case value_t::discarded:
-
15917  m_type = value_t::discarded;
-
15918  break;
-
15919  default: // LCOV_EXCL_LINE
-
15920  assert(false); // LCOV_EXCL_LINE
-
15921  }
-
15922  assert_invariant();
-
15923  }
-
15924 
- -
16000  bool type_deduction = true,
-
16001  value_t manual_type = value_t::array)
-
16002  {
-
16003  // check if each element is an array with two elements whose first
-
16004  // element is a string
-
16005  bool is_an_object = std::all_of(init.begin(), init.end(),
-
16006  [](const detail::json_ref<basic_json>& element_ref)
-
16007  {
-
16008  return element_ref->is_array() and element_ref->size() == 2 and (*element_ref)[0].is_string();
-
16009  });
-
16010 
-
16011  // adjust type if type deduction is not wanted
-
16012  if (not type_deduction)
-
16013  {
-
16014  // if array is wanted, do not create an object though possible
-
16015  if (manual_type == value_t::array)
-
16016  {
-
16017  is_an_object = false;
-
16018  }
-
16019 
-
16020  // if object is wanted but impossible, throw an exception
-
16021  if (JSON_HEDLEY_UNLIKELY(manual_type == value_t::object and not is_an_object))
-
16022  {
-
16023  JSON_THROW(type_error::create(301, "cannot create object from initializer list"));
-
16024  }
-
16025  }
-
16026 
-
16027  if (is_an_object)
-
16028  {
-
16029  // the initializer list is a list of pairs -> create object
-
16030  m_type = value_t::object;
-
16031  m_value = value_t::object;
-
16032 
-
16033  std::for_each(init.begin(), init.end(), [this](const detail::json_ref<basic_json>& element_ref)
-
16034  {
-
16035  auto element = element_ref.moved_or_copied();
-
16036  m_value.object->emplace(
-
16037  std::move(*((*element.m_value.array)[0].m_value.string)),
-
16038  std::move((*element.m_value.array)[1]));
-
16039  });
-
16040  }
-
16041  else
-
16042  {
-
16043  // the initializer list describes an array -> create array
-
16044  m_type = value_t::array;
-
16045  m_value.array = create<array_t>(init.begin(), init.end());
-
16046  }
-
16047 
-
16048  assert_invariant();
-
16049  }
-
16050 
- - -
16090  {
-
16091  return basic_json(init, false, value_t::array);
-
16092  }
-
16093 
- - -
16134  {
-
16135  return basic_json(init, false, value_t::object);
-
16136  }
-
16137 
- -
16161  : m_type(value_t::array)
-
16162  {
-
16163  m_value.array = create<array_t>(cnt, val);
-
16164  assert_invariant();
-
16165  }
-
16166 
-
16222  template<class InputIT, typename std::enable_if<
-
16223  std::is_same<InputIT, typename basic_json_t::iterator>::value or
-
16224  std::is_same<InputIT, typename basic_json_t::const_iterator>::value, int>::type = 0>
-
16225  basic_json(InputIT first, InputIT last)
-
16226  {
-
16227  assert(first.m_object != nullptr);
-
16228  assert(last.m_object != nullptr);
-
16229 
-
16230  // make sure iterator fits the current value
-
16231  if (JSON_HEDLEY_UNLIKELY(first.m_object != last.m_object))
-
16232  {
-
16233  JSON_THROW(invalid_iterator::create(201, "iterators are not compatible"));
-
16234  }
-
16235 
-
16236  // copy type from first iterator
-
16237  m_type = first.m_object->m_type;
-
16238 
-
16239  // check if iterator range is complete for primitive values
-
16240  switch (m_type)
-
16241  {
-
16242  case value_t::boolean:
-
16243  case value_t::number_float:
- - -
16246  case value_t::string:
-
16247  {
-
16248  if (JSON_HEDLEY_UNLIKELY(not first.m_it.primitive_iterator.is_begin()
-
16249  or not last.m_it.primitive_iterator.is_end()))
-
16250  {
-
16251  JSON_THROW(invalid_iterator::create(204, "iterators out of range"));
-
16252  }
-
16253  break;
-
16254  }
-
16255 
-
16256  default:
-
16257  break;
-
16258  }
-
16259 
-
16260  switch (m_type)
-
16261  {
- -
16263  {
-
16264  m_value.number_integer = first.m_object->m_value.number_integer;
-
16265  break;
-
16266  }
-
16267 
- -
16269  {
-
16270  m_value.number_unsigned = first.m_object->m_value.number_unsigned;
-
16271  break;
-
16272  }
-
16273 
-
16274  case value_t::number_float:
-
16275  {
-
16276  m_value.number_float = first.m_object->m_value.number_float;
-
16277  break;
-
16278  }
-
16279 
-
16280  case value_t::boolean:
-
16281  {
-
16282  m_value.boolean = first.m_object->m_value.boolean;
-
16283  break;
-
16284  }
-
16285 
-
16286  case value_t::string:
-
16287  {
-
16288  m_value = *first.m_object->m_value.string;
-
16289  break;
-
16290  }
-
16291 
-
16292  case value_t::object:
-
16293  {
-
16294  m_value.object = create<object_t>(first.m_it.object_iterator,
-
16295  last.m_it.object_iterator);
-
16296  break;
-
16297  }
-
16298 
-
16299  case value_t::array:
-
16300  {
-
16301  m_value.array = create<array_t>(first.m_it.array_iterator,
-
16302  last.m_it.array_iterator);
-
16303  break;
-
16304  }
-
16305 
-
16306  default:
-
16307  JSON_THROW(invalid_iterator::create(206, "cannot construct with iterators from " +
-
16308  std::string(first.m_object->type_name())));
-
16309  }
-
16310 
-
16311  assert_invariant();
-
16312  }
-
16313 
-
16314 
-
16316  // other constructors and destructor //
-
16318 
- -
16321  : basic_json(ref.moved_or_copied())
-
16322  {}
-
16323 
-
16349  basic_json(const basic_json& other)
-
16350  : m_type(other.m_type)
-
16351  {
-
16352  // check of passed value is valid
-
16353  other.assert_invariant();
-
16354 
-
16355  switch (m_type)
-
16356  {
-
16357  case value_t::object:
-
16358  {
-
16359  m_value = *other.m_value.object;
-
16360  break;
-
16361  }
-
16362 
-
16363  case value_t::array:
-
16364  {
-
16365  m_value = *other.m_value.array;
-
16366  break;
-
16367  }
-
16368 
-
16369  case value_t::string:
-
16370  {
-
16371  m_value = *other.m_value.string;
-
16372  break;
-
16373  }
-
16374 
-
16375  case value_t::boolean:
-
16376  {
-
16377  m_value = other.m_value.boolean;
-
16378  break;
-
16379  }
-
16380 
- -
16382  {
-
16383  m_value = other.m_value.number_integer;
-
16384  break;
-
16385  }
-
16386 
- -
16388  {
-
16389  m_value = other.m_value.number_unsigned;
-
16390  break;
-
16391  }
-
16392 
-
16393  case value_t::number_float:
-
16394  {
-
16395  m_value = other.m_value.number_float;
-
16396  break;
-
16397  }
-
16398 
-
16399  default:
-
16400  break;
-
16401  }
-
16402 
-
16403  assert_invariant();
-
16404  }
-
16405 
-
16432  basic_json(basic_json&& other) noexcept
-
16433  : m_type(std::move(other.m_type)),
-
16434  m_value(std::move(other.m_value))
-
16435  {
-
16436  // check that passed value is valid
-
16437  other.assert_invariant();
-
16438 
-
16439  // invalidate payload
-
16440  other.m_type = value_t::null;
-
16441  other.m_value = {};
-
16442 
-
16443  assert_invariant();
-
16444  }
-
16445 
-
16469  basic_json& operator=(basic_json other) noexcept (
-
16470  std::is_nothrow_move_constructible<value_t>::value and
-
16471  std::is_nothrow_move_assignable<value_t>::value and
-
16472  std::is_nothrow_move_constructible<json_value>::value and
-
16473  std::is_nothrow_move_assignable<json_value>::value
-
16474  )
-
16475  {
-
16476  // check that passed value is valid
-
16477  other.assert_invariant();
-
16478 
-
16479  using std::swap;
-
16480  swap(m_type, other.m_type);
-
16481  swap(m_value, other.m_value);
-
16482 
-
16483  assert_invariant();
-
16484  return *this;
-
16485  }
-
16486 
-
16502  ~basic_json() noexcept
-
16503  {
-
16504  assert_invariant();
-
16505  m_value.destroy(m_type);
-
16506  }
-
16507 
-
16509 
-
16510  public:
-
16512  // object inspection //
-
16514 
-
16518 
-
16560  string_t dump(const int indent = -1,
-
16561  const char indent_char = ' ',
-
16562  const bool ensure_ascii = false,
-
16563  const error_handler_t error_handler = error_handler_t::strict) const
-
16564  {
-
16565  string_t result;
-
16566  serializer s(detail::output_adapter<char, string_t>(result), indent_char, error_handler);
-
16567 
-
16568  if (indent >= 0)
-
16569  {
-
16570  s.dump(*this, true, ensure_ascii, static_cast<unsigned int>(indent));
-
16571  }
-
16572  else
-
16573  {
-
16574  s.dump(*this, false, ensure_ascii, 0);
-
16575  }
-
16576 
-
16577  return result;
-
16578  }
-
16579 
-
16612  constexpr value_t type() const noexcept
-
16613  {
-
16614  return m_type;
-
16615  }
-
16616 
-
16642  constexpr bool is_primitive() const noexcept
-
16643  {
-
16644  return is_null() or is_string() or is_boolean() or is_number();
-
16645  }
-
16646 
-
16669  constexpr bool is_structured() const noexcept
-
16670  {
-
16671  return is_array() or is_object();
-
16672  }
-
16673 
-
16691  constexpr bool is_null() const noexcept
-
16692  {
-
16693  return m_type == value_t::null;
-
16694  }
-
16695 
-
16713  constexpr bool is_boolean() const noexcept
-
16714  {
-
16715  return m_type == value_t::boolean;
-
16716  }
-
16717 
-
16743  constexpr bool is_number() const noexcept
-
16744  {
-
16745  return is_number_integer() or is_number_float();
-
16746  }
-
16747 
-
16772  constexpr bool is_number_integer() const noexcept
-
16773  {
-
16774  return m_type == value_t::number_integer or m_type == value_t::number_unsigned;
-
16775  }
-
16776 
-
16800  constexpr bool is_number_unsigned() const noexcept
-
16801  {
-
16802  return m_type == value_t::number_unsigned;
-
16803  }
-
16804 
-
16828  constexpr bool is_number_float() const noexcept
-
16829  {
-
16830  return m_type == value_t::number_float;
-
16831  }
-
16832 
-
16850  constexpr bool is_object() const noexcept
-
16851  {
-
16852  return m_type == value_t::object;
-
16853  }
-
16854 
-
16872  constexpr bool is_array() const noexcept
-
16873  {
-
16874  return m_type == value_t::array;
-
16875  }
-
16876 
-
16894  constexpr bool is_string() const noexcept
-
16895  {
-
16896  return m_type == value_t::string;
-
16897  }
-
16898 
-
16921  constexpr bool is_discarded() const noexcept
-
16922  {
-
16923  return m_type == value_t::discarded;
-
16924  }
-
16925 
-
16947  constexpr operator value_t() const noexcept
-
16948  {
-
16949  return m_type;
-
16950  }
-
16951 
-
16953 
-
16954  private:
-
16956  // value access //
-
16958 
-
16960  boolean_t get_impl(boolean_t* /*unused*/) const
-
16961  {
- -
16963  {
-
16964  return m_value.boolean;
-
16965  }
-
16966 
-
16967  JSON_THROW(type_error::create(302, "type must be boolean, but is " + std::string(type_name())));
-
16968  }
-
16969 
-
16971  object_t* get_impl_ptr(object_t* /*unused*/) noexcept
-
16972  {
-
16973  return is_object() ? m_value.object : nullptr;
-
16974  }
-
16975 
-
16977  constexpr const object_t* get_impl_ptr(const object_t* /*unused*/) const noexcept
-
16978  {
-
16979  return is_object() ? m_value.object : nullptr;
-
16980  }
-
16981 
-
16983  array_t* get_impl_ptr(array_t* /*unused*/) noexcept
-
16984  {
-
16985  return is_array() ? m_value.array : nullptr;
-
16986  }
-
16987 
-
16989  constexpr const array_t* get_impl_ptr(const array_t* /*unused*/) const noexcept
-
16990  {
-
16991  return is_array() ? m_value.array : nullptr;
-
16992  }
-
16993 
-
16995  string_t* get_impl_ptr(string_t* /*unused*/) noexcept
-
16996  {
-
16997  return is_string() ? m_value.string : nullptr;
-
16998  }
-
16999 
-
17001  constexpr const string_t* get_impl_ptr(const string_t* /*unused*/) const noexcept
-
17002  {
-
17003  return is_string() ? m_value.string : nullptr;
-
17004  }
-
17005 
-
17007  boolean_t* get_impl_ptr(boolean_t* /*unused*/) noexcept
-
17008  {
-
17009  return is_boolean() ? &m_value.boolean : nullptr;
-
17010  }
-
17011 
-
17013  constexpr const boolean_t* get_impl_ptr(const boolean_t* /*unused*/) const noexcept
-
17014  {
-
17015  return is_boolean() ? &m_value.boolean : nullptr;
-
17016  }
-
17017 
-
17019  number_integer_t* get_impl_ptr(number_integer_t* /*unused*/) noexcept
-
17020  {
-
17021  return is_number_integer() ? &m_value.number_integer : nullptr;
-
17022  }
-
17023 
-
17025  constexpr const number_integer_t* get_impl_ptr(const number_integer_t* /*unused*/) const noexcept
-
17026  {
-
17027  return is_number_integer() ? &m_value.number_integer : nullptr;
-
17028  }
-
17029 
-
17031  number_unsigned_t* get_impl_ptr(number_unsigned_t* /*unused*/) noexcept
-
17032  {
-
17033  return is_number_unsigned() ? &m_value.number_unsigned : nullptr;
-
17034  }
-
17035 
-
17037  constexpr const number_unsigned_t* get_impl_ptr(const number_unsigned_t* /*unused*/) const noexcept
-
17038  {
-
17039  return is_number_unsigned() ? &m_value.number_unsigned : nullptr;
-
17040  }
-
17041 
-
17043  number_float_t* get_impl_ptr(number_float_t* /*unused*/) noexcept
-
17044  {
-
17045  return is_number_float() ? &m_value.number_float : nullptr;
-
17046  }
-
17047 
-
17049  constexpr const number_float_t* get_impl_ptr(const number_float_t* /*unused*/) const noexcept
-
17050  {
-
17051  return is_number_float() ? &m_value.number_float : nullptr;
-
17052  }
-
17053 
-
17065  template<typename ReferenceType, typename ThisType>
-
17066  static ReferenceType get_ref_impl(ThisType& obj)
-
17067  {
-
17068  // delegate the call to get_ptr<>()
-
17069  auto ptr = obj.template get_ptr<typename std::add_pointer<ReferenceType>::type>();
-
17070 
-
17071  if (JSON_HEDLEY_LIKELY(ptr != nullptr))
-
17072  {
-
17073  return *ptr;
-
17074  }
-
17075 
-
17076  JSON_THROW(type_error::create(303, "incompatible ReferenceType for get_ref, actual type is " + std::string(obj.type_name())));
-
17077  }
-
17078 
-
17079  public:
-
17083 
-
17098  template<typename BasicJsonType, detail::enable_if_t<
-
17099  std::is_same<typename std::remove_const<BasicJsonType>::type, basic_json_t>::value,
-
17100  int> = 0>
-
17101  basic_json get() const
-
17102  {
-
17103  return *this;
-
17104  }
-
17105 
-
17121  template<typename BasicJsonType, detail::enable_if_t<
-
17122  not std::is_same<BasicJsonType, basic_json>::value and
- -
17124  BasicJsonType get() const
-
17125  {
-
17126  return *this;
-
17127  }
-
17128 
-
17168  template<typename ValueTypeCV, typename ValueType = detail::uncvref_t<ValueTypeCV>,
-
17169  detail::enable_if_t <
-
17170  not detail::is_basic_json<ValueType>::value and
-
17171  detail::has_from_json<basic_json_t, ValueType>::value and
-
17172  not detail::has_non_default_from_json<basic_json_t, ValueType>::value,
-
17173  int> = 0>
-
17174  ValueType get() const noexcept(noexcept(
-
17175  JSONSerializer<ValueType>::from_json(std::declval<const basic_json_t&>(), std::declval<ValueType&>())))
-
17176  {
-
17177  // we cannot static_assert on ValueTypeCV being non-const, because
-
17178  // there is support for get<const basic_json_t>(), which is why we
-
17179  // still need the uncvref
-
17180  static_assert(not std::is_reference<ValueTypeCV>::value,
-
17181  "get() cannot be used with reference types, you might want to use get_ref()");
-
17182  static_assert(std::is_default_constructible<ValueType>::value,
-
17183  "types must be DefaultConstructible when used with get()");
-
17184 
-
17185  ValueType ret;
- -
17187  return ret;
-
17188  }
-
17189 
-
17221  template<typename ValueTypeCV, typename ValueType = detail::uncvref_t<ValueTypeCV>,
-
17222  detail::enable_if_t<not std::is_same<basic_json_t, ValueType>::value and
-
17223  detail::has_non_default_from_json<basic_json_t, ValueType>::value,
-
17224  int> = 0>
-
17225  ValueType get() const noexcept(noexcept(
-
17226  JSONSerializer<ValueType>::from_json(std::declval<const basic_json_t&>())))
-
17227  {
-
17228  static_assert(not std::is_reference<ValueTypeCV>::value,
-
17229  "get() cannot be used with reference types, you might want to use get_ref()");
- -
17231  }
-
17232 
-
17266  template<typename ValueType,
- - - -
17270  int> = 0>
-
17271  ValueType & get_to(ValueType& v) const noexcept(noexcept(
-
17272  JSONSerializer<ValueType>::from_json(std::declval<const basic_json_t&>(), v)))
-
17273  {
- -
17275  return v;
-
17276  }
-
17277 
-
17278  template <
-
17279  typename T, std::size_t N,
-
17280  typename Array = T (&)[N],
- - -
17283  Array get_to(T (&v)[N]) const
-
17284  noexcept(noexcept(JSONSerializer<Array>::from_json(
-
17285  std::declval<const basic_json_t&>(), v)))
-
17286  {
- -
17288  return v;
-
17289  }
-
17290 
-
17291 
-
17318  template<typename PointerType, typename std::enable_if<
-
17319  std::is_pointer<PointerType>::value, int>::type = 0>
-
17320  auto get_ptr() noexcept -> decltype(std::declval<basic_json_t&>().get_impl_ptr(std::declval<PointerType>()))
-
17321  {
-
17322  // delegate the call to get_impl_ptr<>()
-
17323  return get_impl_ptr(static_cast<PointerType>(nullptr));
-
17324  }
-
17325 
-
17330  template<typename PointerType, typename std::enable_if<
-
17331  std::is_pointer<PointerType>::value and
-
17332  std::is_const<typename std::remove_pointer<PointerType>::type>::value, int>::type = 0>
-
17333  constexpr auto get_ptr() const noexcept -> decltype(std::declval<const basic_json_t&>().get_impl_ptr(std::declval<PointerType>()))
-
17334  {
-
17335  // delegate the call to get_impl_ptr<>() const
-
17336  return get_impl_ptr(static_cast<PointerType>(nullptr));
-
17337  }
-
17338 
-
17366  template<typename PointerType, typename std::enable_if<
-
17367  std::is_pointer<PointerType>::value, int>::type = 0>
-
17368  auto get() noexcept -> decltype(std::declval<basic_json_t&>().template get_ptr<PointerType>())
-
17369  {
-
17370  // delegate the call to get_ptr
-
17371  return get_ptr<PointerType>();
-
17372  }
-
17373 
-
17378  template<typename PointerType, typename std::enable_if<
-
17379  std::is_pointer<PointerType>::value, int>::type = 0>
-
17380  constexpr auto get() const noexcept -> decltype(std::declval<const basic_json_t&>().template get_ptr<PointerType>())
-
17381  {
-
17382  // delegate the call to get_ptr
-
17383  return get_ptr<PointerType>();
-
17384  }
-
17385 
-
17412  template<typename ReferenceType, typename std::enable_if<
-
17413  std::is_reference<ReferenceType>::value, int>::type = 0>
-
17414  ReferenceType get_ref()
-
17415  {
-
17416  // delegate call to get_ref_impl
-
17417  return get_ref_impl<ReferenceType>(*this);
-
17418  }
-
17419 
-
17424  template<typename ReferenceType, typename std::enable_if<
-
17425  std::is_reference<ReferenceType>::value and
-
17426  std::is_const<typename std::remove_reference<ReferenceType>::type>::value, int>::type = 0>
-
17427  ReferenceType get_ref() const
-
17428  {
-
17429  // delegate call to get_ref_impl
-
17430  return get_ref_impl<ReferenceType>(*this);
-
17431  }
-
17432 
-
17462  template < typename ValueType, typename std::enable_if <
-
17463  not std::is_pointer<ValueType>::value and
-
17464  not std::is_same<ValueType, detail::json_ref<basic_json>>::value and
-
17465  not std::is_same<ValueType, typename string_t::value_type>::value and
- -
17467 
-
17468 #ifndef _MSC_VER // fix for issue #167 operator<< ambiguity under VS2015
-
17469  and not std::is_same<ValueType, std::initializer_list<typename string_t::value_type>>::value
-
17470 #if defined(JSON_HAS_CPP_17) && (defined(__GNUC__) || (defined(_MSC_VER) and _MSC_VER <= 1914))
-
17471  and not std::is_same<ValueType, typename std::string_view>::value
-
17472 #endif
-
17473 #endif
- -
17475  , int >::type = 0 >
-
17476  operator ValueType() const
-
17477  {
-
17478  // delegate the call to get<>() const
-
17479  return get<ValueType>();
-
17480  }
-
17481 
-
17483 
-
17484 
-
17486  // element access //
-
17488 
-
17492 
- -
17520  {
-
17521  // at only works for arrays
- -
17523  {
-
17524  JSON_TRY
-
17525  {
-
17526  return m_value.array->at(idx);
-
17527  }
-
17528  JSON_CATCH (std::out_of_range&)
-
17529  {
-
17530  // create better exception explanation
-
17531  JSON_THROW(out_of_range::create(401, "array index " + std::to_string(idx) + " is out of range"));
-
17532  }
-
17533  }
-
17534  else
-
17535  {
-
17536  JSON_THROW(type_error::create(304, "cannot use at() with " + std::string(type_name())));
-
17537  }
-
17538  }
-
17539 
- -
17567  {
-
17568  // at only works for arrays
- -
17570  {
-
17571  JSON_TRY
-
17572  {
-
17573  return m_value.array->at(idx);
-
17574  }
-
17575  JSON_CATCH (std::out_of_range&)
-
17576  {
-
17577  // create better exception explanation
-
17578  JSON_THROW(out_of_range::create(401, "array index " + std::to_string(idx) + " is out of range"));
-
17579  }
-
17580  }
-
17581  else
-
17582  {
-
17583  JSON_THROW(type_error::create(304, "cannot use at() with " + std::string(type_name())));
-
17584  }
-
17585  }
-
17586 
-
17617  reference at(const typename object_t::key_type& key)
-
17618  {
-
17619  // at only works for objects
- -
17621  {
-
17622  JSON_TRY
-
17623  {
-
17624  return m_value.object->at(key);
-
17625  }
-
17626  JSON_CATCH (std::out_of_range&)
-
17627  {
-
17628  // create better exception explanation
-
17629  JSON_THROW(out_of_range::create(403, "key '" + key + "' not found"));
-
17630  }
-
17631  }
-
17632  else
-
17633  {
-
17634  JSON_THROW(type_error::create(304, "cannot use at() with " + std::string(type_name())));
-
17635  }
-
17636  }
-
17637 
-
17668  const_reference at(const typename object_t::key_type& key) const
-
17669  {
-
17670  // at only works for objects
- -
17672  {
-
17673  JSON_TRY
-
17674  {
-
17675  return m_value.object->at(key);
-
17676  }
-
17677  JSON_CATCH (std::out_of_range&)
-
17678  {
-
17679  // create better exception explanation
-
17680  JSON_THROW(out_of_range::create(403, "key '" + key + "' not found"));
-
17681  }
-
17682  }
-
17683  else
-
17684  {
-
17685  JSON_THROW(type_error::create(304, "cannot use at() with " + std::string(type_name())));
-
17686  }
-
17687  }
-
17688 
- -
17715  {
-
17716  // implicitly convert null value to an empty array
-
17717  if (is_null())
-
17718  {
-
17719  m_type = value_t::array;
-
17720  m_value.array = create<array_t>();
-
17721  assert_invariant();
-
17722  }
-
17723 
-
17724  // operator[] only works for arrays
- -
17726  {
-
17727  // fill up array with null values if given idx is outside range
-
17728  if (idx >= m_value.array->size())
-
17729  {
-
17730  m_value.array->insert(m_value.array->end(),
-
17731  idx - m_value.array->size() + 1,
-
17732  basic_json());
-
17733  }
-
17734 
-
17735  return m_value.array->operator[](idx);
-
17736  }
-
17737 
-
17738  JSON_THROW(type_error::create(305, "cannot use operator[] with a numeric argument with " + std::string(type_name())));
-
17739  }
-
17740 
- -
17761  {
-
17762  // const operator[] only works for arrays
- -
17764  {
-
17765  return m_value.array->operator[](idx);
-
17766  }
-
17767 
-
17768  JSON_THROW(type_error::create(305, "cannot use operator[] with a numeric argument with " + std::string(type_name())));
-
17769  }
-
17770 
-
17798  reference operator[](const typename object_t::key_type& key)
-
17799  {
-
17800  // implicitly convert null value to an empty object
-
17801  if (is_null())
-
17802  {
-
17803  m_type = value_t::object;
-
17804  m_value.object = create<object_t>();
-
17805  assert_invariant();
-
17806  }
-
17807 
-
17808  // operator[] only works for objects
- -
17810  {
-
17811  return m_value.object->operator[](key);
-
17812  }
-
17813 
-
17814  JSON_THROW(type_error::create(305, "cannot use operator[] with a string argument with " + std::string(type_name())));
-
17815  }
-
17816 
-
17847  const_reference operator[](const typename object_t::key_type& key) const
-
17848  {
-
17849  // const operator[] only works for objects
- -
17851  {
-
17852  assert(m_value.object->find(key) != m_value.object->end());
-
17853  return m_value.object->find(key)->second;
-
17854  }
-
17855 
-
17856  JSON_THROW(type_error::create(305, "cannot use operator[] with a string argument with " + std::string(type_name())));
-
17857  }
-
17858 
-
17886  template<typename T>
- -
17888  reference operator[](T* key)
-
17889  {
-
17890  // implicitly convert null to object
-
17891  if (is_null())
-
17892  {
-
17893  m_type = value_t::object;
-
17894  m_value = value_t::object;
-
17895  assert_invariant();
-
17896  }
-
17897 
-
17898  // at only works for objects
- -
17900  {
-
17901  return m_value.object->operator[](key);
-
17902  }
-
17903 
-
17904  JSON_THROW(type_error::create(305, "cannot use operator[] with a string argument with " + std::string(type_name())));
-
17905  }
-
17906 
-
17937  template<typename T>
- -
17939  const_reference operator[](T* key) const
-
17940  {
-
17941  // at only works for objects
- -
17943  {
-
17944  assert(m_value.object->find(key) != m_value.object->end());
-
17945  return m_value.object->find(key)->second;
-
17946  }
-
17947 
-
17948  JSON_THROW(type_error::create(305, "cannot use operator[] with a string argument with " + std::string(type_name())));
-
17949  }
-
17950 
-
18001  template<class ValueType, typename std::enable_if<
-
18002  std::is_convertible<basic_json_t, ValueType>::value, int>::type = 0>
-
18003  ValueType value(const typename object_t::key_type& key, const ValueType& default_value) const
-
18004  {
-
18005  // at only works for objects
- -
18007  {
-
18008  // if key is found, return value and given default value otherwise
-
18009  const auto it = find(key);
-
18010  if (it != end())
-
18011  {
-
18012  return *it;
-
18013  }
-
18014 
-
18015  return default_value;
-
18016  }
-
18017 
-
18018  JSON_THROW(type_error::create(306, "cannot use value() with " + std::string(type_name())));
-
18019  }
-
18020 
-
18025  string_t value(const typename object_t::key_type& key, const char* default_value) const
-
18026  {
-
18027  return value(key, string_t(default_value));
-
18028  }
-
18029 
-
18073  template<class ValueType, typename std::enable_if<
-
18074  std::is_convertible<basic_json_t, ValueType>::value, int>::type = 0>
-
18075  ValueType value(const json_pointer& ptr, const ValueType& default_value) const
-
18076  {
-
18077  // at only works for objects
- -
18079  {
-
18080  // if pointer resolves a value, return it or use default value
-
18081  JSON_TRY
-
18082  {
-
18083  return ptr.get_checked(this);
-
18084  }
- -
18086  {
-
18087  return default_value;
-
18088  }
-
18089  }
-
18090 
-
18091  JSON_THROW(type_error::create(306, "cannot use value() with " + std::string(type_name())));
-
18092  }
-
18093 
- -
18099  string_t value(const json_pointer& ptr, const char* default_value) const
-
18100  {
-
18101  return value(ptr, string_t(default_value));
-
18102  }
-
18103 
- -
18130  {
-
18131  return *begin();
-
18132  }
-
18133 
- -
18138  {
-
18139  return *cbegin();
-
18140  }
-
18141 
- -
18174  {
-
18175  auto tmp = end();
-
18176  --tmp;
-
18177  return *tmp;
-
18178  }
-
18179 
- -
18184  {
-
18185  auto tmp = cend();
-
18186  --tmp;
-
18187  return *tmp;
-
18188  }
-
18189 
-
18236  template<class IteratorType, typename std::enable_if<
-
18237  std::is_same<IteratorType, typename basic_json_t::iterator>::value or
-
18238  std::is_same<IteratorType, typename basic_json_t::const_iterator>::value, int>::type
-
18239  = 0>
-
18240  IteratorType erase(IteratorType pos)
-
18241  {
-
18242  // make sure iterator fits the current value
-
18243  if (JSON_HEDLEY_UNLIKELY(this != pos.m_object))
-
18244  {
-
18245  JSON_THROW(invalid_iterator::create(202, "iterator does not fit current value"));
-
18246  }
-
18247 
-
18248  IteratorType result = end();
-
18249 
-
18250  switch (m_type)
-
18251  {
-
18252  case value_t::boolean:
-
18253  case value_t::number_float:
- - -
18256  case value_t::string:
-
18257  {
-
18258  if (JSON_HEDLEY_UNLIKELY(not pos.m_it.primitive_iterator.is_begin()))
-
18259  {
-
18260  JSON_THROW(invalid_iterator::create(205, "iterator out of range"));
-
18261  }
-
18262 
-
18263  if (is_string())
-
18264  {
-
18265  AllocatorType<string_t> alloc;
-
18266  std::allocator_traits<decltype(alloc)>::destroy(alloc, m_value.string);
-
18267  std::allocator_traits<decltype(alloc)>::deallocate(alloc, m_value.string, 1);
-
18268  m_value.string = nullptr;
-
18269  }
-
18270 
-
18271  m_type = value_t::null;
-
18272  assert_invariant();
-
18273  break;
-
18274  }
-
18275 
-
18276  case value_t::object:
-
18277  {
-
18278  result.m_it.object_iterator = m_value.object->erase(pos.m_it.object_iterator);
-
18279  break;
-
18280  }
-
18281 
-
18282  case value_t::array:
-
18283  {
-
18284  result.m_it.array_iterator = m_value.array->erase(pos.m_it.array_iterator);
-
18285  break;
-
18286  }
-
18287 
-
18288  default:
-
18289  JSON_THROW(type_error::create(307, "cannot use erase() with " + std::string(type_name())));
-
18290  }
-
18291 
-
18292  return result;
-
18293  }
-
18294 
-
18341  template<class IteratorType, typename std::enable_if<
-
18342  std::is_same<IteratorType, typename basic_json_t::iterator>::value or
-
18343  std::is_same<IteratorType, typename basic_json_t::const_iterator>::value, int>::type
-
18344  = 0>
-
18345  IteratorType erase(IteratorType first, IteratorType last)
-
18346  {
-
18347  // make sure iterator fits the current value
-
18348  if (JSON_HEDLEY_UNLIKELY(this != first.m_object or this != last.m_object))
-
18349  {
-
18350  JSON_THROW(invalid_iterator::create(203, "iterators do not fit current value"));
-
18351  }
-
18352 
-
18353  IteratorType result = end();
-
18354 
-
18355  switch (m_type)
-
18356  {
-
18357  case value_t::boolean:
-
18358  case value_t::number_float:
- - -
18361  case value_t::string:
-
18362  {
-
18363  if (JSON_HEDLEY_LIKELY(not first.m_it.primitive_iterator.is_begin()
-
18364  or not last.m_it.primitive_iterator.is_end()))
-
18365  {
-
18366  JSON_THROW(invalid_iterator::create(204, "iterators out of range"));
-
18367  }
-
18368 
-
18369  if (is_string())
-
18370  {
-
18371  AllocatorType<string_t> alloc;
-
18372  std::allocator_traits<decltype(alloc)>::destroy(alloc, m_value.string);
-
18373  std::allocator_traits<decltype(alloc)>::deallocate(alloc, m_value.string, 1);
-
18374  m_value.string = nullptr;
-
18375  }
-
18376 
-
18377  m_type = value_t::null;
-
18378  assert_invariant();
-
18379  break;
-
18380  }
-
18381 
-
18382  case value_t::object:
-
18383  {
-
18384  result.m_it.object_iterator = m_value.object->erase(first.m_it.object_iterator,
-
18385  last.m_it.object_iterator);
-
18386  break;
-
18387  }
-
18388 
-
18389  case value_t::array:
-
18390  {
-
18391  result.m_it.array_iterator = m_value.array->erase(first.m_it.array_iterator,
-
18392  last.m_it.array_iterator);
-
18393  break;
-
18394  }
-
18395 
-
18396  default:
-
18397  JSON_THROW(type_error::create(307, "cannot use erase() with " + std::string(type_name())));
-
18398  }
-
18399 
-
18400  return result;
-
18401  }
-
18402 
-
18432  size_type erase(const typename object_t::key_type& key)
-
18433  {
-
18434  // this erase only works for objects
- -
18436  {
-
18437  return m_value.object->erase(key);
-
18438  }
-
18439 
-
18440  JSON_THROW(type_error::create(307, "cannot use erase() with " + std::string(type_name())));
-
18441  }
-
18442 
-
18467  void erase(const size_type idx)
-
18468  {
-
18469  // this erase only works for arrays
- -
18471  {
-
18472  if (JSON_HEDLEY_UNLIKELY(idx >= size()))
-
18473  {
-
18474  JSON_THROW(out_of_range::create(401, "array index " + std::to_string(idx) + " is out of range"));
-
18475  }
-
18476 
-
18477  m_value.array->erase(m_value.array->begin() + static_cast<difference_type>(idx));
-
18478  }
-
18479  else
-
18480  {
-
18481  JSON_THROW(type_error::create(307, "cannot use erase() with " + std::string(type_name())));
-
18482  }
-
18483  }
-
18484 
-
18486 
-
18487 
-
18489  // lookup //
-
18491 
-
18494 
-
18519  template<typename KeyT>
-
18520  iterator find(KeyT&& key)
-
18521  {
-
18522  auto result = end();
-
18523 
-
18524  if (is_object())
-
18525  {
-
18526  result.m_it.object_iterator = m_value.object->find(std::forward<KeyT>(key));
-
18527  }
-
18528 
-
18529  return result;
-
18530  }
-
18531 
-
18536  template<typename KeyT>
-
18537  const_iterator find(KeyT&& key) const
-
18538  {
-
18539  auto result = cend();
-
18540 
-
18541  if (is_object())
-
18542  {
-
18543  result.m_it.object_iterator = m_value.object->find(std::forward<KeyT>(key));
-
18544  }
-
18545 
-
18546  return result;
-
18547  }
-
18548 
-
18570  template<typename KeyT>
-
18571  size_type count(KeyT&& key) const
-
18572  {
-
18573  // return 0 for all nonobject types
-
18574  return is_object() ? m_value.object->count(std::forward<KeyT>(key)) : 0;
-
18575  }
-
18576 
-
18602  template<typename KeyT, typename std::enable_if<
-
18603  not std::is_same<typename std::decay<KeyT>::type, json_pointer>::value, int>::type = 0>
-
18604  bool contains(KeyT && key) const
-
18605  {
-
18606  return is_object() and m_value.object->find(std::forward<KeyT>(key)) != m_value.object->end();
-
18607  }
-
18608 
-
18635  bool contains(const json_pointer& ptr) const
-
18636  {
-
18637  return ptr.contains(this);
-
18638  }
-
18639 
-
18641 
-
18642 
-
18644  // iterators //
-
18646 
-
18649 
-
18674  iterator begin() noexcept
-
18675  {
-
18676  iterator result(this);
-
18677  result.set_begin();
-
18678  return result;
-
18679  }
-
18680 
-
18684  const_iterator begin() const noexcept
-
18685  {
-
18686  return cbegin();
-
18687  }
-
18688 
-
18714  const_iterator cbegin() const noexcept
-
18715  {
-
18716  const_iterator result(this);
-
18717  result.set_begin();
-
18718  return result;
-
18719  }
-
18720 
-
18745  iterator end() noexcept
-
18746  {
-
18747  iterator result(this);
-
18748  result.set_end();
-
18749  return result;
-
18750  }
-
18751 
-
18755  const_iterator end() const noexcept
-
18756  {
-
18757  return cend();
-
18758  }
-
18759 
-
18785  const_iterator cend() const noexcept
-
18786  {
-
18787  const_iterator result(this);
-
18788  result.set_end();
-
18789  return result;
-
18790  }
-
18791 
- -
18816  {
-
18817  return reverse_iterator(end());
-
18818  }
-
18819 
- -
18824  {
-
18825  return crbegin();
-
18826  }
-
18827 
- -
18853  {
-
18854  return reverse_iterator(begin());
-
18855  }
-
18856 
-
18860  const_reverse_iterator rend() const noexcept
-
18861  {
-
18862  return crend();
-
18863  }
-
18864 
- -
18890  {
-
18891  return const_reverse_iterator(cend());
-
18892  }
-
18893 
- -
18919  {
-
18920  return const_reverse_iterator(cbegin());
-
18921  }
-
18922 
-
18923  public:
-
18981  JSON_HEDLEY_DEPRECATED(3.1.0)
- -
18983  {
-
18984  return ref.items();
-
18985  }
-
18986 
-
18990  JSON_HEDLEY_DEPRECATED(3.1.0)
- -
18992  {
-
18993  return ref.items();
-
18994  }
-
18995 
- -
19060  {
-
19061  return iteration_proxy<iterator>(*this);
-
19062  }
-
19063 
- -
19068  {
-
19069  return iteration_proxy<const_iterator>(*this);
-
19070  }
-
19071 
-
19073 
-
19074 
-
19076  // capacity //
-
19078 
-
19081 
-
19123  bool empty() const noexcept
-
19124  {
-
19125  switch (m_type)
-
19126  {
-
19127  case value_t::null:
-
19128  {
-
19129  // null values are empty
-
19130  return true;
-
19131  }
-
19132 
-
19133  case value_t::array:
-
19134  {
-
19135  // delegate call to array_t::empty()
-
19136  return m_value.array->empty();
-
19137  }
-
19138 
-
19139  case value_t::object:
-
19140  {
-
19141  // delegate call to object_t::empty()
-
19142  return m_value.object->empty();
-
19143  }
-
19144 
-
19145  default:
-
19146  {
-
19147  // all other types are nonempty
-
19148  return false;
-
19149  }
-
19150  }
-
19151  }
-
19152 
-
19195  size_type size() const noexcept
-
19196  {
-
19197  switch (m_type)
-
19198  {
-
19199  case value_t::null:
-
19200  {
-
19201  // null values are empty
-
19202  return 0;
-
19203  }
-
19204 
-
19205  case value_t::array:
-
19206  {
-
19207  // delegate call to array_t::size()
-
19208  return m_value.array->size();
-
19209  }
-
19210 
-
19211  case value_t::object:
-
19212  {
-
19213  // delegate call to object_t::size()
-
19214  return m_value.object->size();
-
19215  }
-
19216 
-
19217  default:
-
19218  {
-
19219  // all other types have size 1
-
19220  return 1;
-
19221  }
-
19222  }
-
19223  }
-
19224 
-
19265  size_type max_size() const noexcept
-
19266  {
-
19267  switch (m_type)
-
19268  {
-
19269  case value_t::array:
-
19270  {
-
19271  // delegate call to array_t::max_size()
-
19272  return m_value.array->max_size();
-
19273  }
-
19274 
-
19275  case value_t::object:
-
19276  {
-
19277  // delegate call to object_t::max_size()
-
19278  return m_value.object->max_size();
-
19279  }
-
19280 
-
19281  default:
-
19282  {
-
19283  // all other types have max_size() == size()
-
19284  return size();
-
19285  }
-
19286  }
-
19287  }
-
19288 
-
19290 
-
19291 
-
19293  // modifiers //
-
19295 
-
19298 
-
19335  void clear() noexcept
-
19336  {
-
19337  switch (m_type)
-
19338  {
- -
19340  {
-
19341  m_value.number_integer = 0;
-
19342  break;
-
19343  }
-
19344 
- -
19346  {
-
19347  m_value.number_unsigned = 0;
-
19348  break;
-
19349  }
-
19350 
-
19351  case value_t::number_float:
-
19352  {
-
19353  m_value.number_float = 0.0;
-
19354  break;
-
19355  }
-
19356 
-
19357  case value_t::boolean:
-
19358  {
-
19359  m_value.boolean = false;
-
19360  break;
-
19361  }
-
19362 
-
19363  case value_t::string:
-
19364  {
-
19365  m_value.string->clear();
-
19366  break;
-
19367  }
-
19368 
-
19369  case value_t::array:
-
19370  {
-
19371  m_value.array->clear();
-
19372  break;
-
19373  }
-
19374 
-
19375  case value_t::object:
-
19376  {
-
19377  m_value.object->clear();
-
19378  break;
-
19379  }
-
19380 
-
19381  default:
-
19382  break;
-
19383  }
-
19384  }
-
19385 
-
19406  void push_back(basic_json&& val)
-
19407  {
-
19408  // push_back only works for null objects or arrays
-
19409  if (JSON_HEDLEY_UNLIKELY(not(is_null() or is_array())))
-
19410  {
-
19411  JSON_THROW(type_error::create(308, "cannot use push_back() with " + std::string(type_name())));
-
19412  }
-
19413 
-
19414  // transform null object into an array
-
19415  if (is_null())
-
19416  {
-
19417  m_type = value_t::array;
-
19418  m_value = value_t::array;
-
19419  assert_invariant();
-
19420  }
-
19421 
-
19422  // add element to array (move semantics)
-
19423  m_value.array->push_back(std::move(val));
-
19424  // invalidate object: mark it null so we do not call the destructor
-
19425  // cppcheck-suppress accessMoved
-
19426  val.m_type = value_t::null;
-
19427  }
-
19428 
- -
19434  {
-
19435  push_back(std::move(val));
-
19436  return *this;
-
19437  }
-
19438 
-
19443  void push_back(const basic_json& val)
-
19444  {
-
19445  // push_back only works for null objects or arrays
-
19446  if (JSON_HEDLEY_UNLIKELY(not(is_null() or is_array())))
-
19447  {
-
19448  JSON_THROW(type_error::create(308, "cannot use push_back() with " + std::string(type_name())));
-
19449  }
-
19450 
-
19451  // transform null object into an array
-
19452  if (is_null())
-
19453  {
-
19454  m_type = value_t::array;
-
19455  m_value = value_t::array;
-
19456  assert_invariant();
-
19457  }
-
19458 
-
19459  // add element to array
-
19460  m_value.array->push_back(val);
-
19461  }
-
19462 
- -
19468  {
-
19469  push_back(val);
-
19470  return *this;
-
19471  }
-
19472 
-
19493  void push_back(const typename object_t::value_type& val)
-
19494  {
-
19495  // push_back only works for null objects or objects
-
19496  if (JSON_HEDLEY_UNLIKELY(not(is_null() or is_object())))
-
19497  {
-
19498  JSON_THROW(type_error::create(308, "cannot use push_back() with " + std::string(type_name())));
-
19499  }
-
19500 
-
19501  // transform null object into an object
-
19502  if (is_null())
-
19503  {
-
19504  m_type = value_t::object;
-
19505  m_value = value_t::object;
-
19506  assert_invariant();
-
19507  }
-
19508 
-
19509  // add element to array
-
19510  m_value.object->insert(val);
-
19511  }
-
19512 
-
19517  reference operator+=(const typename object_t::value_type& val)
-
19518  {
-
19519  push_back(val);
-
19520  return *this;
-
19521  }
-
19522 
- -
19549  {
-
19550  if (is_object() and init.size() == 2 and (*init.begin())->is_string())
-
19551  {
-
19552  basic_json&& key = init.begin()->moved_or_copied();
-
19553  push_back(typename object_t::value_type(
-
19554  std::move(key.get_ref<string_t&>()), (init.begin() + 1)->moved_or_copied()));
-
19555  }
-
19556  else
-
19557  {
-
19558  push_back(basic_json(init));
-
19559  }
-
19560  }
-
19561 
- -
19567  {
-
19568  push_back(init);
-
19569  return *this;
-
19570  }
-
19571 
-
19595  template<class... Args>
-
19596  reference emplace_back(Args&& ... args)
-
19597  {
-
19598  // emplace_back only works for null objects or arrays
-
19599  if (JSON_HEDLEY_UNLIKELY(not(is_null() or is_array())))
-
19600  {
-
19601  JSON_THROW(type_error::create(311, "cannot use emplace_back() with " + std::string(type_name())));
-
19602  }
-
19603 
-
19604  // transform null object into an array
-
19605  if (is_null())
-
19606  {
-
19607  m_type = value_t::array;
-
19608  m_value = value_t::array;
-
19609  assert_invariant();
-
19610  }
-
19611 
-
19612  // add element to array (perfect forwarding)
-
19613 #ifdef JSON_HAS_CPP_17
-
19614  return m_value.array->emplace_back(std::forward<Args>(args)...);
-
19615 #else
-
19616  m_value.array->emplace_back(std::forward<Args>(args)...);
-
19617  return m_value.array->back();
-
19618 #endif
-
19619  }
-
19620 
-
19648  template<class... Args>
-
19649  std::pair<iterator, bool> emplace(Args&& ... args)
-
19650  {
-
19651  // emplace only works for null objects or arrays
-
19652  if (JSON_HEDLEY_UNLIKELY(not(is_null() or is_object())))
-
19653  {
-
19654  JSON_THROW(type_error::create(311, "cannot use emplace() with " + std::string(type_name())));
-
19655  }
-
19656 
-
19657  // transform null object into an object
-
19658  if (is_null())
-
19659  {
-
19660  m_type = value_t::object;
-
19661  m_value = value_t::object;
-
19662  assert_invariant();
-
19663  }
-
19664 
-
19665  // add element to array (perfect forwarding)
-
19666  auto res = m_value.object->emplace(std::forward<Args>(args)...);
-
19667  // create result iterator and set iterator to the result of emplace
-
19668  auto it = begin();
-
19669  it.m_it.object_iterator = res.first;
-
19670 
-
19671  // return pair of iterator and boolean
-
19672  return {it, res.second};
-
19673  }
-
19674 
-
19678  template<typename... Args>
- -
19680  {
-
19681  iterator result(this);
-
19682  assert(m_value.array != nullptr);
-
19683 
-
19684  auto insert_pos = std::distance(m_value.array->begin(), pos.m_it.array_iterator);
-
19685  m_value.array->insert(pos.m_it.array_iterator, std::forward<Args>(args)...);
-
19686  result.m_it.array_iterator = m_value.array->begin() + insert_pos;
-
19687 
-
19688  // This could have been written as:
-
19689  // result.m_it.array_iterator = m_value.array->insert(pos.m_it.array_iterator, cnt, val);
-
19690  // but the return value of insert is missing in GCC 4.8, so it is written this way instead.
-
19691 
-
19692  return result;
-
19693  }
-
19694 
- -
19718  {
-
19719  // insert only works for arrays
- -
19721  {
-
19722  // check if iterator pos fits to this JSON value
-
19723  if (JSON_HEDLEY_UNLIKELY(pos.m_object != this))
-
19724  {
-
19725  JSON_THROW(invalid_iterator::create(202, "iterator does not fit current value"));
-
19726  }
-
19727 
-
19728  // insert to array and return iterator
-
19729  return insert_iterator(pos, val);
-
19730  }
-
19731 
-
19732  JSON_THROW(type_error::create(309, "cannot use insert() with " + std::string(type_name())));
-
19733  }
-
19734 
- -
19740  {
-
19741  return insert(pos, val);
-
19742  }
-
19743 
- -
19769  {
-
19770  // insert only works for arrays
- -
19772  {
-
19773  // check if iterator pos fits to this JSON value
-
19774  if (JSON_HEDLEY_UNLIKELY(pos.m_object != this))
-
19775  {
-
19776  JSON_THROW(invalid_iterator::create(202, "iterator does not fit current value"));
-
19777  }
-
19778 
-
19779  // insert to array and return iterator
-
19780  return insert_iterator(pos, cnt, val);
-
19781  }
-
19782 
-
19783  JSON_THROW(type_error::create(309, "cannot use insert() with " + std::string(type_name())));
-
19784  }
-
19785 
- -
19817  {
-
19818  // insert only works for arrays
-
19819  if (JSON_HEDLEY_UNLIKELY(not is_array()))
-
19820  {
-
19821  JSON_THROW(type_error::create(309, "cannot use insert() with " + std::string(type_name())));
-
19822  }
-
19823 
-
19824  // check if iterator pos fits to this JSON value
-
19825  if (JSON_HEDLEY_UNLIKELY(pos.m_object != this))
-
19826  {
-
19827  JSON_THROW(invalid_iterator::create(202, "iterator does not fit current value"));
-
19828  }
-
19829 
-
19830  // check if range iterators belong to the same JSON object
-
19831  if (JSON_HEDLEY_UNLIKELY(first.m_object != last.m_object))
-
19832  {
-
19833  JSON_THROW(invalid_iterator::create(210, "iterators do not fit"));
-
19834  }
-
19835 
-
19836  if (JSON_HEDLEY_UNLIKELY(first.m_object == this))
-
19837  {
-
19838  JSON_THROW(invalid_iterator::create(211, "passed iterators may not belong to container"));
-
19839  }
-
19840 
-
19841  // insert to array and return iterator
-
19842  return insert_iterator(pos, first.m_it.array_iterator, last.m_it.array_iterator);
-
19843  }
-
19844 
- -
19870  {
-
19871  // insert only works for arrays
-
19872  if (JSON_HEDLEY_UNLIKELY(not is_array()))
-
19873  {
-
19874  JSON_THROW(type_error::create(309, "cannot use insert() with " + std::string(type_name())));
-
19875  }
-
19876 
-
19877  // check if iterator pos fits to this JSON value
-
19878  if (JSON_HEDLEY_UNLIKELY(pos.m_object != this))
-
19879  {
-
19880  JSON_THROW(invalid_iterator::create(202, "iterator does not fit current value"));
-
19881  }
-
19882 
-
19883  // insert to array and return iterator
-
19884  return insert_iterator(pos, ilist.begin(), ilist.end());
-
19885  }
-
19886 
- -
19911  {
-
19912  // insert only works for objects
-
19913  if (JSON_HEDLEY_UNLIKELY(not is_object()))
-
19914  {
-
19915  JSON_THROW(type_error::create(309, "cannot use insert() with " + std::string(type_name())));
-
19916  }
-
19917 
-
19918  // check if range iterators belong to the same JSON object
-
19919  if (JSON_HEDLEY_UNLIKELY(first.m_object != last.m_object))
-
19920  {
-
19921  JSON_THROW(invalid_iterator::create(210, "iterators do not fit"));
-
19922  }
-
19923 
-
19924  // passed iterators must belong to objects
-
19925  if (JSON_HEDLEY_UNLIKELY(not first.m_object->is_object()))
-
19926  {
-
19927  JSON_THROW(invalid_iterator::create(202, "iterators first and last must point to objects"));
-
19928  }
-
19929 
-
19930  m_value.object->insert(first.m_it.object_iterator, last.m_it.object_iterator);
-
19931  }
-
19932 
- -
19953  {
-
19954  // implicitly convert null value to an empty object
-
19955  if (is_null())
-
19956  {
-
19957  m_type = value_t::object;
-
19958  m_value.object = create<object_t>();
-
19959  assert_invariant();
-
19960  }
-
19961 
-
19962  if (JSON_HEDLEY_UNLIKELY(not is_object()))
-
19963  {
-
19964  JSON_THROW(type_error::create(312, "cannot use update() with " + std::string(type_name())));
-
19965  }
-
19966  if (JSON_HEDLEY_UNLIKELY(not j.is_object()))
-
19967  {
-
19968  JSON_THROW(type_error::create(312, "cannot use update() with " + std::string(j.type_name())));
-
19969  }
-
19970 
-
19971  for (auto it = j.cbegin(); it != j.cend(); ++it)
-
19972  {
-
19973  m_value.object->operator[](it.key()) = it.value();
-
19974  }
-
19975  }
-
19976 
- -
20004  {
-
20005  // implicitly convert null value to an empty object
-
20006  if (is_null())
-
20007  {
-
20008  m_type = value_t::object;
-
20009  m_value.object = create<object_t>();
-
20010  assert_invariant();
-
20011  }
-
20012 
-
20013  if (JSON_HEDLEY_UNLIKELY(not is_object()))
-
20014  {
-
20015  JSON_THROW(type_error::create(312, "cannot use update() with " + std::string(type_name())));
-
20016  }
-
20017 
-
20018  // check if range iterators belong to the same JSON object
-
20019  if (JSON_HEDLEY_UNLIKELY(first.m_object != last.m_object))
-
20020  {
-
20021  JSON_THROW(invalid_iterator::create(210, "iterators do not fit"));
-
20022  }
-
20023 
-
20024  // passed iterators must belong to objects
-
20025  if (JSON_HEDLEY_UNLIKELY(not first.m_object->is_object()
-
20026  or not last.m_object->is_object()))
-
20027  {
-
20028  JSON_THROW(invalid_iterator::create(202, "iterators first and last must point to objects"));
-
20029  }
-
20030 
-
20031  for (auto it = first; it != last; ++it)
-
20032  {
-
20033  m_value.object->operator[](it.key()) = it.value();
-
20034  }
-
20035  }
-
20036 
-
20054  void swap(reference other) noexcept (
-
20055  std::is_nothrow_move_constructible<value_t>::value and
-
20056  std::is_nothrow_move_assignable<value_t>::value and
-
20057  std::is_nothrow_move_constructible<json_value>::value and
-
20058  std::is_nothrow_move_assignable<json_value>::value
-
20059  )
-
20060  {
-
20061  std::swap(m_type, other.m_type);
-
20062  std::swap(m_value, other.m_value);
-
20063  assert_invariant();
-
20064  }
-
20065 
-
20086  void swap(array_t& other)
-
20087  {
-
20088  // swap only works for arrays
- -
20090  {
-
20091  std::swap(*(m_value.array), other);
-
20092  }
-
20093  else
-
20094  {
-
20095  JSON_THROW(type_error::create(310, "cannot use swap() with " + std::string(type_name())));
-
20096  }
-
20097  }
-
20098 
-
20119  void swap(object_t& other)
-
20120  {
-
20121  // swap only works for objects
- -
20123  {
-
20124  std::swap(*(m_value.object), other);
-
20125  }
-
20126  else
-
20127  {
-
20128  JSON_THROW(type_error::create(310, "cannot use swap() with " + std::string(type_name())));
-
20129  }
-
20130  }
-
20131 
-
20152  void swap(string_t& other)
-
20153  {
-
20154  // swap only works for strings
- -
20156  {
-
20157  std::swap(*(m_value.string), other);
-
20158  }
-
20159  else
-
20160  {
-
20161  JSON_THROW(type_error::create(310, "cannot use swap() with " + std::string(type_name())));
-
20162  }
-
20163  }
-
20164 
-
20166 
-
20167  public:
-
20169  // lexicographical comparison operators //
-
20171 
-
20174 
-
20214  friend bool operator==(const_reference lhs, const_reference rhs) noexcept
-
20215  {
-
20216  const auto lhs_type = lhs.type();
-
20217  const auto rhs_type = rhs.type();
-
20218 
-
20219  if (lhs_type == rhs_type)
-
20220  {
-
20221  switch (lhs_type)
-
20222  {
-
20223  case value_t::array:
-
20224  return *lhs.m_value.array == *rhs.m_value.array;
-
20225 
-
20226  case value_t::object:
-
20227  return *lhs.m_value.object == *rhs.m_value.object;
-
20228 
-
20229  case value_t::null:
-
20230  return true;
-
20231 
-
20232  case value_t::string:
-
20233  return *lhs.m_value.string == *rhs.m_value.string;
-
20234 
-
20235  case value_t::boolean:
-
20236  return lhs.m_value.boolean == rhs.m_value.boolean;
-
20237 
- -
20239  return lhs.m_value.number_integer == rhs.m_value.number_integer;
-
20240 
- -
20242  return lhs.m_value.number_unsigned == rhs.m_value.number_unsigned;
-
20243 
-
20244  case value_t::number_float:
-
20245  return lhs.m_value.number_float == rhs.m_value.number_float;
-
20246 
-
20247  default:
-
20248  return false;
-
20249  }
-
20250  }
-
20251  else if (lhs_type == value_t::number_integer and rhs_type == value_t::number_float)
-
20252  {
-
20253  return static_cast<number_float_t>(lhs.m_value.number_integer) == rhs.m_value.number_float;
-
20254  }
-
20255  else if (lhs_type == value_t::number_float and rhs_type == value_t::number_integer)
-
20256  {
-
20257  return lhs.m_value.number_float == static_cast<number_float_t>(rhs.m_value.number_integer);
-
20258  }
-
20259  else if (lhs_type == value_t::number_unsigned and rhs_type == value_t::number_float)
-
20260  {
-
20261  return static_cast<number_float_t>(lhs.m_value.number_unsigned) == rhs.m_value.number_float;
-
20262  }
-
20263  else if (lhs_type == value_t::number_float and rhs_type == value_t::number_unsigned)
-
20264  {
-
20265  return lhs.m_value.number_float == static_cast<number_float_t>(rhs.m_value.number_unsigned);
-
20266  }
-
20267  else if (lhs_type == value_t::number_unsigned and rhs_type == value_t::number_integer)
-
20268  {
-
20269  return static_cast<number_integer_t>(lhs.m_value.number_unsigned) == rhs.m_value.number_integer;
-
20270  }
-
20271  else if (lhs_type == value_t::number_integer and rhs_type == value_t::number_unsigned)
-
20272  {
-
20273  return lhs.m_value.number_integer == static_cast<number_integer_t>(rhs.m_value.number_unsigned);
-
20274  }
-
20275 
-
20276  return false;
-
20277  }
-
20278 
-
20283  template<typename ScalarType, typename std::enable_if<
-
20284  std::is_scalar<ScalarType>::value, int>::type = 0>
-
20285  friend bool operator==(const_reference lhs, const ScalarType rhs) noexcept
-
20286  {
-
20287  return lhs == basic_json(rhs);
-
20288  }
-
20289 
-
20294  template<typename ScalarType, typename std::enable_if<
-
20295  std::is_scalar<ScalarType>::value, int>::type = 0>
-
20296  friend bool operator==(const ScalarType lhs, const_reference rhs) noexcept
-
20297  {
-
20298  return basic_json(lhs) == rhs;
-
20299  }
-
20300 
-
20319  friend bool operator!=(const_reference lhs, const_reference rhs) noexcept
-
20320  {
-
20321  return not (lhs == rhs);
-
20322  }
-
20323 
-
20328  template<typename ScalarType, typename std::enable_if<
-
20329  std::is_scalar<ScalarType>::value, int>::type = 0>
-
20330  friend bool operator!=(const_reference lhs, const ScalarType rhs) noexcept
-
20331  {
-
20332  return lhs != basic_json(rhs);
-
20333  }
-
20334 
-
20339  template<typename ScalarType, typename std::enable_if<
-
20340  std::is_scalar<ScalarType>::value, int>::type = 0>
-
20341  friend bool operator!=(const ScalarType lhs, const_reference rhs) noexcept
-
20342  {
-
20343  return basic_json(lhs) != rhs;
-
20344  }
-
20345 
-
20372  friend bool operator<(const_reference lhs, const_reference rhs) noexcept
-
20373  {
-
20374  const auto lhs_type = lhs.type();
-
20375  const auto rhs_type = rhs.type();
-
20376 
-
20377  if (lhs_type == rhs_type)
-
20378  {
-
20379  switch (lhs_type)
-
20380  {
-
20381  case value_t::array:
-
20382  // note parentheses are necessary, see
-
20383  // https://github.com/nlohmann/json/issues/1530
-
20384  return (*lhs.m_value.array) < (*rhs.m_value.array);
-
20385 
-
20386  case value_t::object:
-
20387  return (*lhs.m_value.object) < (*rhs.m_value.object);
-
20388 
-
20389  case value_t::null:
-
20390  return false;
-
20391 
-
20392  case value_t::string:
-
20393  return (*lhs.m_value.string) < (*rhs.m_value.string);
-
20394 
-
20395  case value_t::boolean:
-
20396  return (lhs.m_value.boolean) < (rhs.m_value.boolean);
-
20397 
- -
20399  return (lhs.m_value.number_integer) < (rhs.m_value.number_integer);
-
20400 
- -
20402  return (lhs.m_value.number_unsigned) < (rhs.m_value.number_unsigned);
-
20403 
-
20404  case value_t::number_float:
-
20405  return (lhs.m_value.number_float) < (rhs.m_value.number_float);
-
20406 
-
20407  default:
-
20408  return false;
-
20409  }
-
20410  }
-
20411  else if (lhs_type == value_t::number_integer and rhs_type == value_t::number_float)
-
20412  {
-
20413  return static_cast<number_float_t>(lhs.m_value.number_integer) < rhs.m_value.number_float;
-
20414  }
-
20415  else if (lhs_type == value_t::number_float and rhs_type == value_t::number_integer)
-
20416  {
-
20417  return lhs.m_value.number_float < static_cast<number_float_t>(rhs.m_value.number_integer);
-
20418  }
-
20419  else if (lhs_type == value_t::number_unsigned and rhs_type == value_t::number_float)
-
20420  {
-
20421  return static_cast<number_float_t>(lhs.m_value.number_unsigned) < rhs.m_value.number_float;
-
20422  }
-
20423  else if (lhs_type == value_t::number_float and rhs_type == value_t::number_unsigned)
-
20424  {
-
20425  return lhs.m_value.number_float < static_cast<number_float_t>(rhs.m_value.number_unsigned);
-
20426  }
-
20427  else if (lhs_type == value_t::number_integer and rhs_type == value_t::number_unsigned)
-
20428  {
-
20429  return lhs.m_value.number_integer < static_cast<number_integer_t>(rhs.m_value.number_unsigned);
-
20430  }
-
20431  else if (lhs_type == value_t::number_unsigned and rhs_type == value_t::number_integer)
-
20432  {
-
20433  return static_cast<number_integer_t>(lhs.m_value.number_unsigned) < rhs.m_value.number_integer;
-
20434  }
-
20435 
-
20436  // We only reach this line if we cannot compare values. In that case,
-
20437  // we compare types. Note we have to call the operator explicitly,
-
20438  // because MSVC has problems otherwise.
-
20439  return operator<(lhs_type, rhs_type);
-
20440  }
-
20441 
-
20446  template<typename ScalarType, typename std::enable_if<
-
20447  std::is_scalar<ScalarType>::value, int>::type = 0>
-
20448  friend bool operator<(const_reference lhs, const ScalarType rhs) noexcept
-
20449  {
-
20450  return lhs < basic_json(rhs);
-
20451  }
-
20452 
-
20457  template<typename ScalarType, typename std::enable_if<
-
20458  std::is_scalar<ScalarType>::value, int>::type = 0>
-
20459  friend bool operator<(const ScalarType lhs, const_reference rhs) noexcept
-
20460  {
-
20461  return basic_json(lhs) < rhs;
-
20462  }
-
20463 
-
20483  friend bool operator<=(const_reference lhs, const_reference rhs) noexcept
-
20484  {
-
20485  return not (rhs < lhs);
-
20486  }
-
20487 
-
20492  template<typename ScalarType, typename std::enable_if<
-
20493  std::is_scalar<ScalarType>::value, int>::type = 0>
-
20494  friend bool operator<=(const_reference lhs, const ScalarType rhs) noexcept
-
20495  {
-
20496  return lhs <= basic_json(rhs);
-
20497  }
-
20498 
-
20503  template<typename ScalarType, typename std::enable_if<
-
20504  std::is_scalar<ScalarType>::value, int>::type = 0>
-
20505  friend bool operator<=(const ScalarType lhs, const_reference rhs) noexcept
-
20506  {
-
20507  return basic_json(lhs) <= rhs;
-
20508  }
-
20509 
-
20529  friend bool operator>(const_reference lhs, const_reference rhs) noexcept
-
20530  {
-
20531  return not (lhs <= rhs);
-
20532  }
-
20533 
-
20538  template<typename ScalarType, typename std::enable_if<
-
20539  std::is_scalar<ScalarType>::value, int>::type = 0>
-
20540  friend bool operator>(const_reference lhs, const ScalarType rhs) noexcept
-
20541  {
-
20542  return lhs > basic_json(rhs);
-
20543  }
-
20544 
-
20549  template<typename ScalarType, typename std::enable_if<
-
20550  std::is_scalar<ScalarType>::value, int>::type = 0>
-
20551  friend bool operator>(const ScalarType lhs, const_reference rhs) noexcept
-
20552  {
-
20553  return basic_json(lhs) > rhs;
-
20554  }
-
20555 
-
20575  friend bool operator>=(const_reference lhs, const_reference rhs) noexcept
-
20576  {
-
20577  return not (lhs < rhs);
-
20578  }
-
20579 
-
20584  template<typename ScalarType, typename std::enable_if<
-
20585  std::is_scalar<ScalarType>::value, int>::type = 0>
-
20586  friend bool operator>=(const_reference lhs, const ScalarType rhs) noexcept
-
20587  {
-
20588  return lhs >= basic_json(rhs);
-
20589  }
-
20590 
-
20595  template<typename ScalarType, typename std::enable_if<
-
20596  std::is_scalar<ScalarType>::value, int>::type = 0>
-
20597  friend bool operator>=(const ScalarType lhs, const_reference rhs) noexcept
-
20598  {
-
20599  return basic_json(lhs) >= rhs;
-
20600  }
-
20601 
-
20603 
-
20605  // serialization //
-
20607 
-
20610 
-
20642  friend std::ostream& operator<<(std::ostream& o, const basic_json& j)
-
20643  {
-
20644  // read width member and use it as indentation parameter if nonzero
-
20645  const bool pretty_print = o.width() > 0;
-
20646  const auto indentation = pretty_print ? o.width() : 0;
-
20647 
-
20648  // reset width to 0 for subsequent calls to this stream
-
20649  o.width(0);
-
20650 
-
20651  // do the actual serialization
-
20652  serializer s(detail::output_adapter<char>(o), o.fill());
-
20653  s.dump(j, pretty_print, false, static_cast<unsigned int>(indentation));
-
20654  return o;
-
20655  }
-
20656 
-
20665  JSON_HEDLEY_DEPRECATED(3.0.0)
-
20666  friend std::ostream& operator>>(const basic_json& j, std::ostream& o)
-
20667  {
-
20668  return o << j;
-
20669  }
-
20670 
-
20672 
-
20673 
-
20675  // deserialization //
-
20677 
-
20680 
- - -
20746  const parser_callback_t cb = nullptr,
-
20747  const bool allow_exceptions = true)
-
20748  {
-
20749  basic_json result;
-
20750  parser(i, cb, allow_exceptions).parse(true, result);
-
20751  return result;
-
20752  }
-
20753 
- -
20755  {
-
20756  return parser(i).accept(true);
-
20757  }
-
20758 
-
20812  template <typename SAX>
- -
20814  static bool sax_parse(detail::input_adapter&& i, SAX* sax,
- -
20816  const bool strict = true)
-
20817  {
-
20818  assert(sax);
-
20819  return format == input_format_t::json
-
20820  ? parser(std::move(i)).sax_parse(sax, strict)
-
20821  : detail::binary_reader<basic_json, SAX>(std::move(i)).sax_parse(format, sax, strict);
-
20822  }
-
20823 
-
20873  template<class IteratorType, typename std::enable_if<
-
20874  std::is_base_of<
-
20875  std::random_access_iterator_tag,
-
20876  typename std::iterator_traits<IteratorType>::iterator_category>::value, int>::type = 0>
-
20877  static basic_json parse(IteratorType first, IteratorType last,
-
20878  const parser_callback_t cb = nullptr,
-
20879  const bool allow_exceptions = true)
-
20880  {
-
20881  basic_json result;
-
20882  parser(detail::input_adapter(first, last), cb, allow_exceptions).parse(true, result);
-
20883  return result;
-
20884  }
-
20885 
-
20886  template<class IteratorType, typename std::enable_if<
-
20887  std::is_base_of<
-
20888  std::random_access_iterator_tag,
-
20889  typename std::iterator_traits<IteratorType>::iterator_category>::value, int>::type = 0>
-
20890  static bool accept(IteratorType first, IteratorType last)
-
20891  {
-
20892  return parser(detail::input_adapter(first, last)).accept(true);
-
20893  }
-
20894 
-
20895  template<class IteratorType, class SAX, typename std::enable_if<
-
20896  std::is_base_of<
-
20897  std::random_access_iterator_tag,
-
20898  typename std::iterator_traits<IteratorType>::iterator_category>::value, int>::type = 0>
- -
20900  static bool sax_parse(IteratorType first, IteratorType last, SAX* sax)
-
20901  {
-
20902  return parser(detail::input_adapter(first, last)).sax_parse(sax);
-
20903  }
-
20904 
-
20913  JSON_HEDLEY_DEPRECATED(3.0.0)
-
20914  friend std::istream& operator<<(basic_json& j, std::istream& i)
-
20915  {
-
20916  return operator>>(i, j);
-
20917  }
-
20918 
-
20944  friend std::istream& operator>>(std::istream& i, basic_json& j)
-
20945  {
-
20946  parser(detail::input_adapter(i)).parse(false, j);
-
20947  return i;
-
20948  }
-
20949 
-
20951 
-
20953  // convenience functions //
-
20955 
- -
20987  const char* type_name() const noexcept
-
20988  {
-
20989  {
-
20990  switch (m_type)
-
20991  {
-
20992  case value_t::null:
-
20993  return "null";
-
20994  case value_t::object:
-
20995  return "object";
-
20996  case value_t::array:
-
20997  return "array";
-
20998  case value_t::string:
-
20999  return "string";
-
21000  case value_t::boolean:
-
21001  return "boolean";
-
21002  case value_t::discarded:
-
21003  return "discarded";
-
21004  default:
-
21005  return "number";
-
21006  }
-
21007  }
-
21008  }
-
21009 
-
21010 
-
21011  private:
-
21013  // member variables //
-
21015 
-
21017  value_t m_type = value_t::null;
-
21018 
-
21020  json_value m_value = {};
-
21021 
-
21023  // binary serialization/deserialization //
-
21025 
-
21028 
-
21029  public:
-
21118  static std::vector<uint8_t> to_cbor(const basic_json& j)
-
21119  {
-
21120  std::vector<uint8_t> result;
-
21121  to_cbor(j, result);
-
21122  return result;
-
21123  }
-
21124 
- -
21126  {
- -
21128  }
-
21129 
- -
21131  {
- -
21133  }
-
21134 
-
21214  static std::vector<uint8_t> to_msgpack(const basic_json& j)
-
21215  {
-
21216  std::vector<uint8_t> result;
-
21217  to_msgpack(j, result);
-
21218  return result;
-
21219  }
-
21220 
- -
21222  {
- -
21224  }
-
21225 
- -
21227  {
- -
21229  }
-
21230 
-
21311  static std::vector<uint8_t> to_ubjson(const basic_json& j,
-
21312  const bool use_size = false,
-
21313  const bool use_type = false)
-
21314  {
-
21315  std::vector<uint8_t> result;
-
21316  to_ubjson(j, result, use_size, use_type);
-
21317  return result;
-
21318  }
-
21319 
- -
21321  const bool use_size = false, const bool use_type = false)
-
21322  {
-
21323  binary_writer<uint8_t>(o).write_ubjson(j, use_size, use_type);
-
21324  }
-
21325 
- -
21327  const bool use_size = false, const bool use_type = false)
-
21328  {
-
21329  binary_writer<char>(o).write_ubjson(j, use_size, use_type);
-
21330  }
-
21331 
-
21332 
-
21388  static std::vector<uint8_t> to_bson(const basic_json& j)
-
21389  {
-
21390  std::vector<uint8_t> result;
-
21391  to_bson(j, result);
-
21392  return result;
-
21393  }
-
21394 
- -
21404  {
- -
21406  }
-
21407 
- -
21412  {
- -
21414  }
-
21415 
-
21416 
- - -
21518  const bool strict = true,
-
21519  const bool allow_exceptions = true)
-
21520  {
-
21521  basic_json result;
-
21522  detail::json_sax_dom_parser<basic_json> sdp(result, allow_exceptions);
-
21523  const bool res = binary_reader(detail::input_adapter(i)).sax_parse(input_format_t::cbor, &sdp, strict);
-
21524  return res ? result : basic_json(value_t::discarded);
-
21525  }
-
21526 
-
21530  template<typename A1, typename A2,
- - -
21533  static basic_json from_cbor(A1 && a1, A2 && a2,
-
21534  const bool strict = true,
-
21535  const bool allow_exceptions = true)
-
21536  {
-
21537  basic_json result;
-
21538  detail::json_sax_dom_parser<basic_json> sdp(result, allow_exceptions);
-
21539  const bool res = binary_reader(detail::input_adapter(std::forward<A1>(a1), std::forward<A2>(a2))).sax_parse(input_format_t::cbor, &sdp, strict);
-
21540  return res ? result : basic_json(value_t::discarded);
-
21541  }
-
21542 
- - -
21627  const bool strict = true,
-
21628  const bool allow_exceptions = true)
-
21629  {
-
21630  basic_json result;
-
21631  detail::json_sax_dom_parser<basic_json> sdp(result, allow_exceptions);
-
21632  const bool res = binary_reader(detail::input_adapter(i)).sax_parse(input_format_t::msgpack, &sdp, strict);
-
21633  return res ? result : basic_json(value_t::discarded);
-
21634  }
-
21635 
-
21639  template<typename A1, typename A2,
- - -
21642  static basic_json from_msgpack(A1 && a1, A2 && a2,
-
21643  const bool strict = true,
-
21644  const bool allow_exceptions = true)
-
21645  {
-
21646  basic_json result;
-
21647  detail::json_sax_dom_parser<basic_json> sdp(result, allow_exceptions);
-
21648  const bool res = binary_reader(detail::input_adapter(std::forward<A1>(a1), std::forward<A2>(a2))).sax_parse(input_format_t::msgpack, &sdp, strict);
-
21649  return res ? result : basic_json(value_t::discarded);
-
21650  }
-
21651 
- - -
21715  const bool strict = true,
-
21716  const bool allow_exceptions = true)
-
21717  {
-
21718  basic_json result;
-
21719  detail::json_sax_dom_parser<basic_json> sdp(result, allow_exceptions);
-
21720  const bool res = binary_reader(detail::input_adapter(i)).sax_parse(input_format_t::ubjson, &sdp, strict);
-
21721  return res ? result : basic_json(value_t::discarded);
-
21722  }
-
21723 
-
21727  template<typename A1, typename A2,
- - -
21730  static basic_json from_ubjson(A1 && a1, A2 && a2,
-
21731  const bool strict = true,
-
21732  const bool allow_exceptions = true)
-
21733  {
-
21734  basic_json result;
-
21735  detail::json_sax_dom_parser<basic_json> sdp(result, allow_exceptions);
-
21736  const bool res = binary_reader(detail::input_adapter(std::forward<A1>(a1), std::forward<A2>(a2))).sax_parse(input_format_t::ubjson, &sdp, strict);
-
21737  return res ? result : basic_json(value_t::discarded);
-
21738  }
-
21739 
- - -
21802  const bool strict = true,
-
21803  const bool allow_exceptions = true)
-
21804  {
-
21805  basic_json result;
-
21806  detail::json_sax_dom_parser<basic_json> sdp(result, allow_exceptions);
-
21807  const bool res = binary_reader(detail::input_adapter(i)).sax_parse(input_format_t::bson, &sdp, strict);
-
21808  return res ? result : basic_json(value_t::discarded);
-
21809  }
-
21810 
-
21814  template<typename A1, typename A2,
- - -
21817  static basic_json from_bson(A1 && a1, A2 && a2,
-
21818  const bool strict = true,
-
21819  const bool allow_exceptions = true)
-
21820  {
-
21821  basic_json result;
-
21822  detail::json_sax_dom_parser<basic_json> sdp(result, allow_exceptions);
-
21823  const bool res = binary_reader(detail::input_adapter(std::forward<A1>(a1), std::forward<A2>(a2))).sax_parse(input_format_t::bson, &sdp, strict);
-
21824  return res ? result : basic_json(value_t::discarded);
-
21825  }
-
21826 
-
21827 
-
21828 
-
21830 
-
21832  // JSON Pointer support //
-
21834 
-
21837 
- -
21872  {
-
21873  return ptr.get_unchecked(this);
-
21874  }
-
21875 
- -
21900  {
-
21901  return ptr.get_unchecked(this);
-
21902  }
-
21903 
- -
21943  {
-
21944  return ptr.get_checked(this);
-
21945  }
-
21946 
-
21985  const_reference at(const json_pointer& ptr) const
-
21986  {
-
21987  return ptr.get_checked(this);
-
21988  }
-
21989 
- -
22013  {
-
22014  basic_json result(value_t::object);
-
22015  json_pointer::flatten("", *this, result);
-
22016  return result;
-
22017  }
-
22018 
- -
22050  {
-
22051  return json_pointer::unflatten(*this);
-
22052  }
-
22053 
-
22055 
-
22057  // JSON Patch functions //
-
22059 
-
22062 
-
22110  basic_json patch(const basic_json& json_patch) const
-
22111  {
-
22112  // make a working copy to apply the patch to
-
22113  basic_json result = *this;
-
22114 
-
22115  // the valid JSON Patch operations
-
22116  enum class patch_operations {add, remove, replace, move, copy, test, invalid};
-
22117 
-
22118  const auto get_op = [](const std::string & op)
-
22119  {
-
22120  if (op == "add")
-
22121  {
-
22122  return patch_operations::add;
-
22123  }
-
22124  if (op == "remove")
-
22125  {
-
22126  return patch_operations::remove;
-
22127  }
-
22128  if (op == "replace")
-
22129  {
-
22130  return patch_operations::replace;
-
22131  }
-
22132  if (op == "move")
-
22133  {
-
22134  return patch_operations::move;
-
22135  }
-
22136  if (op == "copy")
-
22137  {
-
22138  return patch_operations::copy;
-
22139  }
-
22140  if (op == "test")
-
22141  {
-
22142  return patch_operations::test;
-
22143  }
-
22144 
-
22145  return patch_operations::invalid;
-
22146  };
-
22147 
-
22148  // wrapper for "add" operation; add value at ptr
-
22149  const auto operation_add = [&result](json_pointer & ptr, basic_json val)
-
22150  {
-
22151  // adding to the root of the target document means replacing it
-
22152  if (ptr.empty())
-
22153  {
-
22154  result = val;
-
22155  return;
-
22156  }
-
22157 
-
22158  // make sure the top element of the pointer exists
-
22159  json_pointer top_pointer = ptr.top();
-
22160  if (top_pointer != ptr)
-
22161  {
-
22162  result.at(top_pointer);
-
22163  }
-
22164 
-
22165  // get reference to parent of JSON pointer ptr
-
22166  const auto last_path = ptr.back();
-
22167  ptr.pop_back();
-
22168  basic_json& parent = result[ptr];
-
22169 
-
22170  switch (parent.m_type)
-
22171  {
-
22172  case value_t::null:
-
22173  case value_t::object:
-
22174  {
-
22175  // use operator[] to add value
-
22176  parent[last_path] = val;
-
22177  break;
-
22178  }
-
22179 
-
22180  case value_t::array:
-
22181  {
-
22182  if (last_path == "-")
-
22183  {
-
22184  // special case: append to back
-
22185  parent.push_back(val);
-
22186  }
-
22187  else
-
22188  {
-
22189  const auto idx = json_pointer::array_index(last_path);
-
22190  if (JSON_HEDLEY_UNLIKELY(static_cast<size_type>(idx) > parent.size()))
-
22191  {
-
22192  // avoid undefined behavior
-
22193  JSON_THROW(out_of_range::create(401, "array index " + std::to_string(idx) + " is out of range"));
-
22194  }
-
22195 
-
22196  // default case: insert add offset
-
22197  parent.insert(parent.begin() + static_cast<difference_type>(idx), val);
-
22198  }
-
22199  break;
-
22200  }
-
22201 
-
22202  // if there exists a parent it cannot be primitive
-
22203  default: // LCOV_EXCL_LINE
-
22204  assert(false); // LCOV_EXCL_LINE
-
22205  }
-
22206  };
-
22207 
-
22208  // wrapper for "remove" operation; remove value at ptr
-
22209  const auto operation_remove = [&result](json_pointer & ptr)
-
22210  {
-
22211  // get reference to parent of JSON pointer ptr
-
22212  const auto last_path = ptr.back();
-
22213  ptr.pop_back();
-
22214  basic_json& parent = result.at(ptr);
-
22215 
-
22216  // remove child
-
22217  if (parent.is_object())
-
22218  {
-
22219  // perform range check
-
22220  auto it = parent.find(last_path);
-
22221  if (JSON_HEDLEY_LIKELY(it != parent.end()))
-
22222  {
-
22223  parent.erase(it);
-
22224  }
-
22225  else
-
22226  {
-
22227  JSON_THROW(out_of_range::create(403, "key '" + last_path + "' not found"));
-
22228  }
-
22229  }
-
22230  else if (parent.is_array())
-
22231  {
-
22232  // note erase performs range check
-
22233  parent.erase(static_cast<size_type>(json_pointer::array_index(last_path)));
-
22234  }
-
22235  };
-
22236 
-
22237  // type check: top level value must be an array
-
22238  if (JSON_HEDLEY_UNLIKELY(not json_patch.is_array()))
-
22239  {
-
22240  JSON_THROW(parse_error::create(104, 0, "JSON patch must be an array of objects"));
-
22241  }
-
22242 
-
22243  // iterate and apply the operations
-
22244  for (const auto& val : json_patch)
-
22245  {
-
22246  // wrapper to get a value for an operation
-
22247  const auto get_value = [&val](const std::string & op,
-
22248  const std::string & member,
-
22249  bool string_type) -> basic_json &
-
22250  {
-
22251  // find value
-
22252  auto it = val.m_value.object->find(member);
-
22253 
-
22254  // context-sensitive error message
-
22255  const auto error_msg = (op == "op") ? "operation" : "operation '" + op + "'";
-
22256 
-
22257  // check if desired value is present
-
22258  if (JSON_HEDLEY_UNLIKELY(it == val.m_value.object->end()))
-
22259  {
-
22260  JSON_THROW(parse_error::create(105, 0, error_msg + " must have member '" + member + "'"));
-
22261  }
-
22262 
-
22263  // check if result is of type string
-
22264  if (JSON_HEDLEY_UNLIKELY(string_type and not it->second.is_string()))
-
22265  {
-
22266  JSON_THROW(parse_error::create(105, 0, error_msg + " must have string member '" + member + "'"));
-
22267  }
-
22268 
-
22269  // no error: return value
-
22270  return it->second;
-
22271  };
-
22272 
-
22273  // type check: every element of the array must be an object
-
22274  if (JSON_HEDLEY_UNLIKELY(not val.is_object()))
-
22275  {
-
22276  JSON_THROW(parse_error::create(104, 0, "JSON patch must be an array of objects"));
-
22277  }
-
22278 
-
22279  // collect mandatory members
-
22280  const std::string op = get_value("op", "op", true);
-
22281  const std::string path = get_value(op, "path", true);
-
22282  json_pointer ptr(path);
-
22283 
-
22284  switch (get_op(op))
-
22285  {
-
22286  case patch_operations::add:
-
22287  {
-
22288  operation_add(ptr, get_value("add", "value", false));
-
22289  break;
-
22290  }
-
22291 
-
22292  case patch_operations::remove:
-
22293  {
-
22294  operation_remove(ptr);
-
22295  break;
-
22296  }
-
22297 
-
22298  case patch_operations::replace:
-
22299  {
-
22300  // the "path" location must exist - use at()
-
22301  result.at(ptr) = get_value("replace", "value", false);
-
22302  break;
-
22303  }
-
22304 
-
22305  case patch_operations::move:
-
22306  {
-
22307  const std::string from_path = get_value("move", "from", true);
-
22308  json_pointer from_ptr(from_path);
-
22309 
-
22310  // the "from" location must exist - use at()
-
22311  basic_json v = result.at(from_ptr);
-
22312 
-
22313  // The move operation is functionally identical to a
-
22314  // "remove" operation on the "from" location, followed
-
22315  // immediately by an "add" operation at the target
-
22316  // location with the value that was just removed.
-
22317  operation_remove(from_ptr);
-
22318  operation_add(ptr, v);
-
22319  break;
-
22320  }
-
22321 
-
22322  case patch_operations::copy:
-
22323  {
-
22324  const std::string from_path = get_value("copy", "from", true);
-
22325  const json_pointer from_ptr(from_path);
-
22326 
-
22327  // the "from" location must exist - use at()
-
22328  basic_json v = result.at(from_ptr);
-
22329 
-
22330  // The copy is functionally identical to an "add"
-
22331  // operation at the target location using the value
-
22332  // specified in the "from" member.
-
22333  operation_add(ptr, v);
-
22334  break;
-
22335  }
-
22336 
-
22337  case patch_operations::test:
-
22338  {
-
22339  bool success = false;
-
22340  JSON_TRY
-
22341  {
-
22342  // check if "value" matches the one at "path"
-
22343  // the "path" location must exist - use at()
-
22344  success = (result.at(ptr) == get_value("test", "value", false));
-
22345  }
- -
22347  {
-
22348  // ignore out of range errors: success remains false
-
22349  }
-
22350 
-
22351  // throw an exception if test fails
-
22352  if (JSON_HEDLEY_UNLIKELY(not success))
-
22353  {
-
22354  JSON_THROW(other_error::create(501, "unsuccessful: " + val.dump()));
-
22355  }
-
22356 
-
22357  break;
-
22358  }
-
22359 
-
22360  default:
-
22361  {
-
22362  // op must be "add", "remove", "replace", "move", "copy", or
-
22363  // "test"
-
22364  JSON_THROW(parse_error::create(105, 0, "operation value '" + op + "' is invalid"));
-
22365  }
-
22366  }
-
22367  }
-
22368 
-
22369  return result;
-
22370  }
-
22371 
- -
22406  static basic_json diff(const basic_json& source, const basic_json& target,
-
22407  const std::string& path = "")
-
22408  {
-
22409  // the patch
-
22410  basic_json result(value_t::array);
-
22411 
-
22412  // if the values are the same, return empty patch
-
22413  if (source == target)
-
22414  {
-
22415  return result;
-
22416  }
-
22417 
-
22418  if (source.type() != target.type())
-
22419  {
-
22420  // different types: replace value
-
22421  result.push_back(
-
22422  {
-
22423  {"op", "replace"}, {"path", path}, {"value", target}
-
22424  });
-
22425  return result;
-
22426  }
-
22427 
-
22428  switch (source.type())
-
22429  {
-
22430  case value_t::array:
-
22431  {
-
22432  // first pass: traverse common elements
-
22433  std::size_t i = 0;
-
22434  while (i < source.size() and i < target.size())
-
22435  {
-
22436  // recursive call to compare array values at index i
-
22437  auto temp_diff = diff(source[i], target[i], path + "/" + std::to_string(i));
-
22438  result.insert(result.end(), temp_diff.begin(), temp_diff.end());
-
22439  ++i;
-
22440  }
-
22441 
-
22442  // i now reached the end of at least one array
-
22443  // in a second pass, traverse the remaining elements
-
22444 
-
22445  // remove my remaining elements
-
22446  const auto end_index = static_cast<difference_type>(result.size());
-
22447  while (i < source.size())
-
22448  {
-
22449  // add operations in reverse order to avoid invalid
-
22450  // indices
-
22451  result.insert(result.begin() + end_index, object(
-
22452  {
-
22453  {"op", "remove"},
-
22454  {"path", path + "/" + std::to_string(i)}
-
22455  }));
-
22456  ++i;
-
22457  }
-
22458 
-
22459  // add other remaining elements
-
22460  while (i < target.size())
-
22461  {
-
22462  result.push_back(
-
22463  {
-
22464  {"op", "add"},
-
22465  {"path", path + "/" + std::to_string(i)},
-
22466  {"value", target[i]}
-
22467  });
-
22468  ++i;
-
22469  }
-
22470 
-
22471  break;
-
22472  }
-
22473 
-
22474  case value_t::object:
-
22475  {
-
22476  // first pass: traverse this object's elements
-
22477  for (auto it = source.cbegin(); it != source.cend(); ++it)
-
22478  {
-
22479  // escape the key name to be used in a JSON patch
-
22480  const auto key = json_pointer::escape(it.key());
-
22481 
-
22482  if (target.find(it.key()) != target.end())
-
22483  {
-
22484  // recursive call to compare object values at key it
-
22485  auto temp_diff = diff(it.value(), target[it.key()], path + "/" + key);
-
22486  result.insert(result.end(), temp_diff.begin(), temp_diff.end());
-
22487  }
-
22488  else
-
22489  {
-
22490  // found a key that is not in o -> remove it
-
22491  result.push_back(object(
-
22492  {
-
22493  {"op", "remove"}, {"path", path + "/" + key}
-
22494  }));
-
22495  }
-
22496  }
-
22497 
-
22498  // second pass: traverse other object's elements
-
22499  for (auto it = target.cbegin(); it != target.cend(); ++it)
-
22500  {
-
22501  if (source.find(it.key()) == source.end())
-
22502  {
-
22503  // found a key that is not in this -> add it
-
22504  const auto key = json_pointer::escape(it.key());
-
22505  result.push_back(
-
22506  {
-
22507  {"op", "add"}, {"path", path + "/" + key},
-
22508  {"value", it.value()}
-
22509  });
-
22510  }
-
22511  }
-
22512 
-
22513  break;
-
22514  }
-
22515 
-
22516  default:
-
22517  {
-
22518  // both primitive type: replace value
-
22519  result.push_back(
-
22520  {
-
22521  {"op", "replace"}, {"path", path}, {"value", target}
-
22522  });
-
22523  break;
-
22524  }
-
22525  }
-
22526 
-
22527  return result;
-
22528  }
-
22529 
-
22531 
-
22533  // JSON Merge Patch functions //
-
22535 
-
22538 
-
22581  void merge_patch(const basic_json& apply_patch)
-
22582  {
-
22583  if (apply_patch.is_object())
-
22584  {
-
22585  if (not is_object())
-
22586  {
-
22587  *this = object();
-
22588  }
-
22589  for (auto it = apply_patch.begin(); it != apply_patch.end(); ++it)
-
22590  {
-
22591  if (it.value().is_null())
-
22592  {
-
22593  erase(it.key());
-
22594  }
-
22595  else
-
22596  {
-
22597  operator[](it.key()).merge_patch(it.value());
-
22598  }
-
22599  }
-
22600  }
-
22601  else
-
22602  {
-
22603  *this = apply_patch;
-
22604  }
-
22605  }
-
22606 
-
22608 };
-
22609 
- -
22620 std::string to_string(const NLOHMANN_BASIC_JSON_TPL& j)
-
22621 {
-
22622  return j.dump();
-
22623 }
-
22624 } // namespace nlohmann
-
22625 
-
22627 // nonmember support //
-
22629 
-
22630 // specialization of std::swap, and std::hash
-
22631 namespace std
-
22632 {
-
22633 
-
22635 template<>
- -
22637 {
-
22643  std::size_t operator()(const nlohmann::json& j) const
-
22644  {
-
22645  // a naive hashing via the string representation
-
22646  const auto& h = hash<nlohmann::json::string_t>();
-
22647  return h(j.dump());
-
22648  }
-
22649 };
-
22650 
-
22654 template<>
- -
22656 {
- -
22662  nlohmann::detail::value_t rhs) const noexcept
-
22663  {
-
22664  return nlohmann::detail::operator<(lhs, rhs);
-
22665  }
-
22666 };
-
22667 
-
22673 template<>
-
22674 inline void swap<nlohmann::json>(nlohmann::json& j1, nlohmann::json& j2) noexcept(
-
22675  is_nothrow_move_constructible<nlohmann::json>::value and
-
22676  is_nothrow_move_assignable<nlohmann::json>::value
-
22677 )
-
22678 {
-
22679  j1.swap(j2);
-
22680 }
-
22681 
-
22682 } // namespace std
-
22683 
- -
22698 inline nlohmann::json operator "" _json(const char* s, std::size_t n)
-
22699 {
-
22700  return nlohmann::json::parse(s, s + n);
-
22701 }
-
22702 
- -
22717 inline nlohmann::json::json_pointer operator "" _json_pointer(const char* s, std::size_t n)
-
22718 {
-
22719  return nlohmann::json::json_pointer(std::string(s, n));
-
22720 }
-
22721 
-
22722 // #include <nlohmann/detail/macro_unscope.hpp>
-
22723 
-
22724 
-
22725 // restore GCC/clang diagnostic settings
-
22726 #if defined(__clang__) || defined(__GNUC__) || defined(__GNUG__)
-
22727  #pragma GCC diagnostic pop
-
22728 #endif
-
22729 #if defined(__clang__)
-
22730  #pragma GCC diagnostic pop
-
22731 #endif
-
22732 
-
22733 // clean up
-
22734 #undef JSON_INTERNAL_CATCH
-
22735 #undef JSON_CATCH
-
22736 #undef JSON_THROW
-
22737 #undef JSON_TRY
-
22738 #undef JSON_HAS_CPP_14
-
22739 #undef JSON_HAS_CPP_17
-
22740 #undef NLOHMANN_BASIC_JSON_TPL_DECLARATION
-
22741 #undef NLOHMANN_BASIC_JSON_TPL
-
22742 
-
22743 // #include <nlohmann/thirdparty/hedley/hedley_undef.hpp>
-
22744 #undef JSON_HEDLEY_ALWAYS_INLINE
-
22745 #undef JSON_HEDLEY_ARM_VERSION
-
22746 #undef JSON_HEDLEY_ARM_VERSION_CHECK
-
22747 #undef JSON_HEDLEY_ARRAY_PARAM
-
22748 #undef JSON_HEDLEY_ASSUME
-
22749 #undef JSON_HEDLEY_BEGIN_C_DECLS
-
22750 #undef JSON_HEDLEY_C_DECL
-
22751 #undef JSON_HEDLEY_CLANG_HAS_ATTRIBUTE
-
22752 #undef JSON_HEDLEY_CLANG_HAS_BUILTIN
-
22753 #undef JSON_HEDLEY_CLANG_HAS_CPP_ATTRIBUTE
-
22754 #undef JSON_HEDLEY_CLANG_HAS_DECLSPEC_DECLSPEC_ATTRIBUTE
-
22755 #undef JSON_HEDLEY_CLANG_HAS_EXTENSION
-
22756 #undef JSON_HEDLEY_CLANG_HAS_FEATURE
-
22757 #undef JSON_HEDLEY_CLANG_HAS_WARNING
-
22758 #undef JSON_HEDLEY_COMPCERT_VERSION
-
22759 #undef JSON_HEDLEY_COMPCERT_VERSION_CHECK
-
22760 #undef JSON_HEDLEY_CONCAT
-
22761 #undef JSON_HEDLEY_CONCAT_EX
-
22762 #undef JSON_HEDLEY_CONST
-
22763 #undef JSON_HEDLEY_CONST_CAST
-
22764 #undef JSON_HEDLEY_CONSTEXPR
-
22765 #undef JSON_HEDLEY_CPP_CAST
-
22766 #undef JSON_HEDLEY_CRAY_VERSION
-
22767 #undef JSON_HEDLEY_CRAY_VERSION_CHECK
-
22768 #undef JSON_HEDLEY_DEPRECATED
-
22769 #undef JSON_HEDLEY_DEPRECATED_FOR
-
22770 #undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL
-
22771 #undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_
-
22772 #undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED
-
22773 #undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES
-
22774 #undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS
-
22775 #undef JSON_HEDLEY_DIAGNOSTIC_POP
-
22776 #undef JSON_HEDLEY_DIAGNOSTIC_PUSH
-
22777 #undef JSON_HEDLEY_DMC_VERSION
-
22778 #undef JSON_HEDLEY_DMC_VERSION_CHECK
-
22779 #undef JSON_HEDLEY_EMPTY_BASES
-
22780 #undef JSON_HEDLEY_EMSCRIPTEN_VERSION
-
22781 #undef JSON_HEDLEY_EMSCRIPTEN_VERSION_CHECK
-
22782 #undef JSON_HEDLEY_END_C_DECLS
-
22783 #undef JSON_HEDLEY_FALL_THROUGH
-
22784 #undef JSON_HEDLEY_FLAGS
-
22785 #undef JSON_HEDLEY_FLAGS_CAST
-
22786 #undef JSON_HEDLEY_GCC_HAS_ATTRIBUTE
-
22787 #undef JSON_HEDLEY_GCC_HAS_BUILTIN
-
22788 #undef JSON_HEDLEY_GCC_HAS_CPP_ATTRIBUTE
-
22789 #undef JSON_HEDLEY_GCC_HAS_DECLSPEC_ATTRIBUTE
-
22790 #undef JSON_HEDLEY_GCC_HAS_EXTENSION
-
22791 #undef JSON_HEDLEY_GCC_HAS_FEATURE
-
22792 #undef JSON_HEDLEY_GCC_HAS_WARNING
-
22793 #undef JSON_HEDLEY_GCC_NOT_CLANG_VERSION_CHECK
-
22794 #undef JSON_HEDLEY_GCC_VERSION
-
22795 #undef JSON_HEDLEY_GCC_VERSION_CHECK
-
22796 #undef JSON_HEDLEY_GNUC_HAS_ATTRIBUTE
-
22797 #undef JSON_HEDLEY_GNUC_HAS_BUILTIN
-
22798 #undef JSON_HEDLEY_GNUC_HAS_CPP_ATTRIBUTE
-
22799 #undef JSON_HEDLEY_GNUC_HAS_DECLSPEC_ATTRIBUTE
-
22800 #undef JSON_HEDLEY_GNUC_HAS_EXTENSION
-
22801 #undef JSON_HEDLEY_GNUC_HAS_FEATURE
-
22802 #undef JSON_HEDLEY_GNUC_HAS_WARNING
-
22803 #undef JSON_HEDLEY_GNUC_VERSION
-
22804 #undef JSON_HEDLEY_GNUC_VERSION_CHECK
-
22805 #undef JSON_HEDLEY_HAS_ATTRIBUTE
-
22806 #undef JSON_HEDLEY_HAS_BUILTIN
-
22807 #undef JSON_HEDLEY_HAS_CPP_ATTRIBUTE
-
22808 #undef JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS
-
22809 #undef JSON_HEDLEY_HAS_DECLSPEC_ATTRIBUTE
-
22810 #undef JSON_HEDLEY_HAS_EXTENSION
-
22811 #undef JSON_HEDLEY_HAS_FEATURE
-
22812 #undef JSON_HEDLEY_HAS_WARNING
-
22813 #undef JSON_HEDLEY_IAR_VERSION
-
22814 #undef JSON_HEDLEY_IAR_VERSION_CHECK
-
22815 #undef JSON_HEDLEY_IBM_VERSION
-
22816 #undef JSON_HEDLEY_IBM_VERSION_CHECK
-
22817 #undef JSON_HEDLEY_IMPORT
-
22818 #undef JSON_HEDLEY_INLINE
-
22819 #undef JSON_HEDLEY_INTEL_VERSION
-
22820 #undef JSON_HEDLEY_INTEL_VERSION_CHECK
-
22821 #undef JSON_HEDLEY_IS_CONSTANT
-
22822 #undef JSON_HEDLEY_IS_CONSTEXPR_
-
22823 #undef JSON_HEDLEY_LIKELY
-
22824 #undef JSON_HEDLEY_MALLOC
-
22825 #undef JSON_HEDLEY_MESSAGE
-
22826 #undef JSON_HEDLEY_MSVC_VERSION
-
22827 #undef JSON_HEDLEY_MSVC_VERSION_CHECK
-
22828 #undef JSON_HEDLEY_NEVER_INLINE
-
22829 #undef JSON_HEDLEY_NO_ESCAPE
-
22830 #undef JSON_HEDLEY_NON_NULL
-
22831 #undef JSON_HEDLEY_NO_RETURN
-
22832 #undef JSON_HEDLEY_NO_THROW
-
22833 #undef JSON_HEDLEY_NULL
-
22834 #undef JSON_HEDLEY_PELLES_VERSION
-
22835 #undef JSON_HEDLEY_PELLES_VERSION_CHECK
-
22836 #undef JSON_HEDLEY_PGI_VERSION
-
22837 #undef JSON_HEDLEY_PGI_VERSION_CHECK
-
22838 #undef JSON_HEDLEY_PREDICT
-
22839 #undef JSON_HEDLEY_PRINTF_FORMAT
-
22840 #undef JSON_HEDLEY_PRIVATE
-
22841 #undef JSON_HEDLEY_PUBLIC
-
22842 #undef JSON_HEDLEY_PURE
-
22843 #undef JSON_HEDLEY_REINTERPRET_CAST
-
22844 #undef JSON_HEDLEY_REQUIRE
-
22845 #undef JSON_HEDLEY_REQUIRE_CONSTEXPR
-
22846 #undef JSON_HEDLEY_REQUIRE_MSG
-
22847 #undef JSON_HEDLEY_RESTRICT
-
22848 #undef JSON_HEDLEY_RETURNS_NON_NULL
-
22849 #undef JSON_HEDLEY_SENTINEL
-
22850 #undef JSON_HEDLEY_STATIC_ASSERT
-
22851 #undef JSON_HEDLEY_STATIC_CAST
-
22852 #undef JSON_HEDLEY_STRINGIFY
-
22853 #undef JSON_HEDLEY_STRINGIFY_EX
-
22854 #undef JSON_HEDLEY_SUNPRO_VERSION
-
22855 #undef JSON_HEDLEY_SUNPRO_VERSION_CHECK
-
22856 #undef JSON_HEDLEY_TINYC_VERSION
-
22857 #undef JSON_HEDLEY_TINYC_VERSION_CHECK
-
22858 #undef JSON_HEDLEY_TI_VERSION
-
22859 #undef JSON_HEDLEY_TI_VERSION_CHECK
-
22860 #undef JSON_HEDLEY_UNAVAILABLE
-
22861 #undef JSON_HEDLEY_UNLIKELY
-
22862 #undef JSON_HEDLEY_UNPREDICTABLE
-
22863 #undef JSON_HEDLEY_UNREACHABLE
-
22864 #undef JSON_HEDLEY_UNREACHABLE_RETURN
-
22865 #undef JSON_HEDLEY_VERSION
-
22866 #undef JSON_HEDLEY_VERSION_DECODE_MAJOR
-
22867 #undef JSON_HEDLEY_VERSION_DECODE_MINOR
-
22868 #undef JSON_HEDLEY_VERSION_DECODE_REVISION
-
22869 #undef JSON_HEDLEY_VERSION_ENCODE
-
22870 #undef JSON_HEDLEY_WARNING
-
22871 #undef JSON_HEDLEY_WARN_UNUSED_RESULT
-
22872 
-
22873 
-
22874 
-
22875 #endif // INCLUDE_NLOHMANN_JSON_HPP_
-
-
a template for a reverse iterator class
Definition: json.hpp:9982
-
const_iterator find(KeyT &&key) const
find an element in a JSON object
Definition: json.hpp:18537
-
difference_type operator-(const iter_impl &other) const
return difference
Definition: json.hpp:9864
-
void int_to_string(string_type &target, std::size_t value)
Definition: json.hpp:3293
-
iteration_proxy_value< IteratorType > begin() noexcept
return iterator begin (needed for range-based for)
Definition: json.hpp:3397
-
primitive_iterator_t & operator+=(difference_type n) noexcept
Definition: json.hpp:9261
-
static auto to_json(BasicJsonType &j, ValueType &&val) noexcept(noexcept(::nlohmann::to_json(j, std::forward< ValueType >(val)))) -> decltype(::nlohmann::to_json(j, std::forward< ValueType >(val)), void())
convert any value type to a JSON value
Definition: json.hpp:3827
-
basic_json unflatten() const
unflatten a previously flattened JSON value
Definition: json.hpp:22049
-
basic_json flatten() const
return flattened JSON value
Definition: json.hpp:22012
-
typename BasicJsonType::parse_event_t parse_event_t
Definition: json.hpp:4644
-
std::char_traits< char >::int_type get_character() noexcept override
get a character [0,255] or std::char_traits<char>::eof().
Definition: json.hpp:4008
-
exception indicating executing a member function with a wrong type
Definition: json.hpp:2075
-
const_reference back() const
access the last element
Definition: json.hpp:18183
-
primitive_iterator_t & operator++() noexcept
Definition: json.hpp:9235
-
typename T::difference_type difference_type_t
Definition: json.hpp:2495
-
std::ptrdiff_t difference_type
Definition: json.hpp:3300
-
std::char_traits< char >::int_type get_character() override
get a character [0,255] or std::char_traits<char>::eof().
Definition: json.hpp:3976
-
void write_cbor(const BasicJsonType &j)
Definition: json.hpp:11357
-
json_ref(value_type &&value)
Definition: json.hpp:11106
-
constexpr bool is_string() const noexcept
return whether value is a string
Definition: json.hpp:16894
-
typename It::iterator_category iterator_category
Definition: json.hpp:2291
-
static allocator_type get_allocator()
returns the allocator associated with the container
Definition: json.hpp:14834
-
static auto from_json(BasicJsonType &&j, ValueType &val) noexcept(noexcept(::nlohmann::from_json(std::forward< BasicJsonType >(j), val))) -> decltype(::nlohmann::from_json(std::forward< BasicJsonType >(j), val), void())
convert a JSON value to any value type
Definition: json.hpp:3810
-
boundaries compute_boundaries(FloatType value)
Definition: json.hpp:12831
-
pointer operator->() const
dereference the iterator
Definition: json.hpp:9583
-
decltype(std::declval< T & >().start_array(std::declval< std::size_t >())) start_array_function_t
Definition: json.hpp:5066
-
basic_json(CompatibleType &&val) noexcept(noexcept(JSONSerializer< U >::to_json(std::declval< basic_json_t & >(), std::forward< CompatibleType >(val))))
create a JSON value
Definition: json.hpp:15843
-
static bool accept(detail::input_adapter &&i)
Definition: json.hpp:20754
-
std::size_t hash(const BasicJsonType &j)
hash a JSON value
Definition: json.hpp:4613
-
bool string(string_t &val)
Definition: json.hpp:4691
-
static constexpr CharType to_char_type(InputCharType x) noexcept
Definition: json.hpp:12614
-
json_ref & operator=(const json_ref &)=delete
-
IteratorType::reference value() const
return value of the iterator
Definition: json.hpp:3378
-
@ begin_object
the character for object begin {
-
void get_arithmetic_value(const BasicJsonType &j, ArithmeticType &val)
Definition: json.hpp:2912
-
NLOHMANN_BASIC_JSON_TPL_DECLARATION std::string to_string(const NLOHMANN_BASIC_JSON_TPL &j)
user-defined to_string function for JSON values
Definition: json.hpp:22620
-
reference operator+=(const typename object_t::value_type &val)
add an object to an object
Definition: json.hpp:19517
-
bool string(string_t &val)
Definition: json.hpp:4508
-
value_type moved_or_copied() const
Definition: json.hpp:11132
-
general exception of the basic_json class
Definition: json.hpp:1864
-
Definition: json.hpp:5109
-
basic_json(const value_t v)
create an empty value with a given type
Definition: json.hpp:15752
-
bool empty() const noexcept
return whether pointer points to the root document
Definition: json.hpp:10391
-
basic_json(std::nullptr_t=nullptr) noexcept
create a null object
Definition: json.hpp:15776
-
basic_json(initializer_list_t init, bool type_deduction=true, value_t manual_type=value_t::array)
create a container (array or object) from an initializer list
Definition: json.hpp:15999
-
Definition: json.hpp:2520
-
value_t
the JSON type enumeration
Definition: json.hpp:2854
-
@ value
the parser finished reading a JSON value
-
const_reverse_iterator rbegin() const noexcept
returns a const reverse iterator to the last element
Definition: json.hpp:18823
-
detail::value_t value_t
Definition: json.hpp:14751
-
iter_impl(const iter_impl< typename std::remove_const< BasicJsonType >::type > &other) noexcept
converting constructor
Definition: json.hpp:9456
-
iter_impl & operator--()
pre-decrement (–it)
Definition: json.hpp:9671
-
decltype(get< N >(std::declval< ::nlohmann::detail::iteration_proxy_value< IteratorType > >())) type
Definition: json.hpp:3448
-
decltype(std::declval< T & >().start_object(std::declval< std::size_t >())) start_object_function_t
Definition: json.hpp:5055
-
const iter_impl operator++(int)
post-increment (it++)
Definition: json.hpp:9617
-
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json from_ubjson(A1 &&a1, A2 &&a2, const bool strict=true, const bool allow_exceptions=true)
create a JSON value from an input in UBJSON format
Definition: json.hpp:21730
-
iter_impl & operator=(const iter_impl< const BasicJsonType > &other) noexcept
converting assignment
Definition: json.hpp:9444
-
T * pointer
Definition: json.hpp:2313
-
@ ignore
ignore invalid UTF-8 sequences
-
decltype(std::declval< T & >().boolean(std::declval< bool >())) boolean_function_t
Definition: json.hpp:5035
-
ReferenceType get_ref() const
get a reference value (implicit)
Definition: json.hpp:17427
-
static void construct(BasicJsonType &j, const CompatibleArrayType &arr)
Definition: json.hpp:3572
-
void grisu2_round(char *buf, int len, std::uint64_t dist, std::uint64_t delta, std::uint64_t rest, std::uint64_t ten_k)
Definition: json.hpp:13190
-
bool key(string_t &val)
Definition: json.hpp:4715
-
void write_character(CharType c) override
Definition: json.hpp:11266
-
Op< Args... > type
Definition: json.hpp:2360
-
static void to_msgpack(const basic_json &j, detail::output_adapter< uint8_t > o)
Definition: json.hpp:21221
-
friend bool operator!=(const ScalarType lhs, const_reference rhs) noexcept
comparison: not equal
Definition: json.hpp:20341
-
~input_stream_adapter() override
Definition: json.hpp:3956
-
bool end_object()
Definition: json.hpp:4988
-
typename BasicJsonType::number_unsigned_t number_unsigned_t
type for unsigned integers
Definition: json.hpp:4338
-
bool start_array(std::size_t len)
Definition: json.hpp:4761
-
#define JSON_HEDLEY_UNLIKELY(expr)
Definition: json.hpp:1124
-
friend bool operator<(const_reference lhs, const ScalarType rhs) noexcept
comparison: less than
Definition: json.hpp:20448
-
Definition: json.hpp:2799
-
static bool accept(IteratorType first, IteratorType last)
Definition: json.hpp:20890
-
@ replace
replace invalid UTF-8 sequences with U+FFFD
-
@ literal_true
the true literal
-
bool operator==(const iter_impl &other) const
comparison: equal
Definition: json.hpp:9703
-
typename BasicJsonType::template json_serializer< T, void > serializer
Definition: json.hpp:2526
-
constexpr bool is_discarded() const noexcept
return whether value is discarded
Definition: json.hpp:16921
-
void from_json(const BasicJsonType &j, typename BasicJsonType::binary_t &bin)
Definition: json.hpp:3652
-
typename T::mapped_type mapped_type_t
Definition: json.hpp:2486
-
void type
Definition: json.hpp:2265
-
bool start_object(std::size_t=std::size_t(-1))
Definition: json.hpp:4978
-
value_type const & operator*() const
Definition: json.hpp:11141
-
virtual bool parse_error(std::size_t position, const std::string &last_token, const detail::exception &ex)=0
a parse error occurred
-
@ null
null value
-
static void construct(BasicJsonType &j, typename BasicJsonType::object_t &&obj)
Definition: json.hpp:3621
-
const_reverse_iterator rend() const noexcept
returns a const reverse iterator to one before the first
Definition: json.hpp:18860
-
virtual bool number_unsigned(number_unsigned_t val)=0
an unsigned integer number was read
-
void grisu2_digit_gen(char *buffer, int &length, int &decimal_exponent, diyfp M_minus, diyfp w, diyfp M_plus)
Definition: json.hpp:13231
-
Definition: json.hpp:12699
-
std::char_traits< char >::int_type get_character() noexcept override
get a character [0,255] or std::char_traits<char>::eof().
Definition: json.hpp:4158
-
json_reverse_iterator operator+(difference_type i) const
add to iterator
Definition: json.hpp:10029
-
@ parse_error
indicating a parse error
-
size_type size() const noexcept
returns the number of elements
Definition: json.hpp:19195
-
@ object
object (unordered set of name/value pairs)
-
json_sax_dom_parser(BasicJsonType &r, const bool allow_exceptions_=true)
Definition: json.hpp:4467
-
typename BasicJsonType::number_float_t number_float_t
Definition: json.hpp:4459
-
@ bson
-
void push_back(const typename object_t::value_type &val)
add an object to an object
Definition: json.hpp:19493
-
std::string get_token_string() const
Definition: json.hpp:8488
-
typename BasicJsonType::string_t string_t
Definition: json.hpp:4460
-
~file_input_adapter() override=default
-
std::true_type value_t
Definition: json.hpp:2359
-
struct to capture the start position of the current token
Definition: json.hpp:89
-
void dump(const BasicJsonType &val, const bool pretty_print, const bool ensure_ascii, const unsigned int indent_step, const unsigned int current_indent=0)
internal implementation of the serialization function
Definition: json.hpp:13837
-
diyfp w
Definition: json.hpp:12819
-
basic_json get() const
get special-case overload
Definition: json.hpp:17101
-
Definition: json.hpp:2589
-
::nlohmann::json_pointer< basic_json > json_pointer
JSON Pointer, see nlohmann::json_pointer.
Definition: json.hpp:14753
-
static constexpr CharType to_char_type(std::uint8_t x) noexcept
Definition: json.hpp:12585
-
Definition: json.hpp:2228
-
std::less< StringType > object_comparator_t
Definition: json.hpp:14936
-
static other_error create(int id_, const std::string &what_arg)
Definition: json.hpp:2163
-
constexpr bool is_primitive() const noexcept
return whether type is primitive
Definition: json.hpp:16642
-
json_pointer(const std::string &s="")
create JSON pointer
Definition: json.hpp:10120
-
input_buffer_adapter & operator=(input_buffer_adapter &)=delete
-
ValueType value(const json_pointer &ptr, const ValueType &default_value) const
access specified object element via JSON Pointer with default value
Definition: json.hpp:18075
-
constexpr value_t type() const noexcept
return the type of the JSON value (explicit)
Definition: json.hpp:16612
-
constexpr position_t get_position() const noexcept
return position of last read token
Definition: json.hpp:8480
-
typename BasicJsonType::number_integer_t number_integer_t
Definition: json.hpp:4943
-
iteration_proxy< iterator > items() noexcept
helper to access iterator member functions in range-based for
Definition: json.hpp:19059
-
exception indicating access out of the defined range
Definition: json.hpp:2122
-
typename detected_or< Default, Op, Args... >::type detected_or_t
Definition: json.hpp:2373
-
@ array_end
the parser read ] and finished processing a JSON array
-
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json from_bson(detail::input_adapter &&i, const bool strict=true, const bool allow_exceptions=true)
Create a JSON value from an input in BSON format.
Definition: json.hpp:21801
-
std::false_type value_t
Definition: json.hpp:2352
-
static void construct(BasicJsonType &j, typename BasicJsonType::array_t &&arr)
Definition: json.hpp:3562
-
bool parse_error(std::size_t, const std::string &, const detail::exception &ex)
Definition: json.hpp:4559
-
exception indicating errors with iterators
Definition: json.hpp:2021
-
basic_json(size_type cnt, const basic_json &val)
construct an array with count copies of given value
Definition: json.hpp:16160
-
typename BasicJsonType::string_t string_t
Definition: json.hpp:4642
-
virtual ~input_adapter_protocol()=default
-
Definition: json.hpp:3953
-
AllocatorType< basic_json > allocator_type
the allocator type
Definition: json.hpp:14812
-
static std::string name(const std::string &ename, int id_)
Definition: json.hpp:1881
-
static out_of_range create(int id_, const std::string &what_arg)
Definition: json.hpp:2125
-
ValueType value(const typename object_t::key_type &key, const ValueType &default_value) const
access specified object element with default value
Definition: json.hpp:18003
-
@ cbor
-
Definition: json.hpp:2672
-
std::size_t chars_read_current_line
the number of characters read in the current line
Definition: json.hpp:94
-
input_buffer_adapter(const char *b, const std::size_t l) noexcept
Definition: json.hpp:3997
-
std::char_traits< char >::int_type get_character() noexcept override
get a character [0,255] or std::char_traits<char>::eof().
Definition: json.hpp:3933
-
typename BasicJsonType::object_t object_t
Definition: json.hpp:2629
-
friend json_pointer operator/(const json_pointer &lhs, const json_pointer &rhs)
create a new JSON pointer by appending the right JSON pointer at the end of the left JSON pointer
Definition: json.hpp:10236
-
json_sax_dom_parser & operator=(const json_sax_dom_parser &)=delete
-
Definition: json.hpp:2229
-
BasicJsonType::object_t::iterator object_iterator
iterator for JSON objects
Definition: json.hpp:9290
-
Definition: json.hpp:2263
-
typename std::enable_if< B, T >::type enable_if_t
Definition: json.hpp:2191
-
void write_msgpack(const BasicJsonType &j)
Definition: json.hpp:11601
-
void from_json(const BasicJsonType &j, typename std::nullptr_t &n)
Definition: json.hpp:2898
-
nonesuch()=delete
-
void write_ubjson(const BasicJsonType &j, const bool use_count, const bool use_type, const bool add_prefix=true)
Definition: json.hpp:11843
-
Definition: json.hpp:3775
-
static void to_ubjson(const basic_json &j, detail::output_adapter< uint8_t > o, const bool use_size=false, const bool use_type=false)
Definition: json.hpp:21320
-
#define NLOHMANN_BASIC_JSON_TPL
Definition: json.hpp:1822
-
bool start_object(std::size_t len)
Definition: json.hpp:4514
-
json_sax_dom_callback_parser & operator=(const json_sax_dom_callback_parser &)=delete
-
static constexpr bool value
Definition: json.hpp:5090
-
const_reference operator[](const json_pointer &ptr) const
access specified element via JSON Pointer
Definition: json.hpp:21899
-
auto key() const -> decltype(std::declval< Base >().key())
return the key of an object iterator
Definition: json.hpp:10053
-
wide_string_input_adapter(const WideStringType &w) noexcept
Definition: json.hpp:4154
-
namespace for Niels Lohmann
Definition: json.hpp:84
-
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json object(initializer_list_t init={})
explicitly create an object from an initializer list
Definition: json.hpp:16133
-
serialization to CBOR and MessagePack values
Definition: json.hpp:11318
-
typename BasicJsonType::number_integer_t number_integer_t
Definition: json.hpp:4457
-
void set_end() noexcept
set iterator to a defined past the end
Definition: json.hpp:9196
-
static diyfp normalize_to(const diyfp &x, const int target_exponent) noexcept
normalize x such that the result has the exponent E
Definition: json.hpp:12806
-
Definition: json.hpp:2667
-
void erase(const size_type idx)
remove element from a JSON array given an index
Definition: json.hpp:18467
-
json_reverse_iterator(const typename base_iterator::iterator_type &it) noexcept
create reverse iterator from iterator
Definition: json.hpp:9992
-
static void to_bson(const basic_json &j, detail::output_adapter< char > o)
Serializes the given JSON object j to BSON and forwards the corresponding BSON-representation to the ...
Definition: json.hpp:21411
-
size_type count(KeyT &&key) const
returns the number of occurrences of a key in a JSON object
Definition: json.hpp:18571
-
void push_back(basic_json &&val)
add an object to an array
Definition: json.hpp:19406
-
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json meta()
returns version information on the library
Definition: json.hpp:14866
-
bool number_float(number_float_t val, const string_t &)
Definition: json.hpp:4685
-
reference back()
access the last element
Definition: json.hpp:18173
-
constexpr difference_type get_value() const noexcept
Definition: json.hpp:9184
-
static void construct(BasicJsonType &j, typename BasicJsonType::number_integer_t val) noexcept
Definition: json.hpp:3542
-
constexpr bool is_end() const noexcept
return whether the iterator is at end
Definition: json.hpp:9208
-
@ value_unsigned
an unsigned integer – use get_number_unsigned() for actual value
-
SAX implementation to create a JSON value from SAX events.
Definition: json.hpp:4454
-
std::size_t value_type
Definition: json.hpp:2202
-
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json diff(const basic_json &source, const basic_json &target, const std::string &path="")
creates a diff as a JSON patch
Definition: json.hpp:22406
-
@ number_float
number value (floating-point)
-
primitive_iterator_t & operator--() noexcept
Definition: json.hpp:9248
-
static constexpr std::size_t size() noexcept
Definition: json.hpp:2203
-
JSON Pointer.
Definition: json.hpp:2435
-
json_pointer parent_pointer() const
returns the parent of this JSON pointer
Definition: json.hpp:10295
-
token_type
token types for the parser
Definition: json.hpp:7170
-
IteratorType erase(IteratorType first, IteratorType last)
remove elements given an iterator range
Definition: json.hpp:18345
-
bool number_integer(number_integer_t val)
Definition: json.hpp:4490
-
exception indicating other library errors
Definition: json.hpp:2160
-
bool sax_parse(SAX *sax, const bool strict=true)
Definition: json.hpp:8802
-
input adapter for buffer input
Definition: json.hpp:3994
-
iteration_proxy_value & operator*()
dereference operator (needed for range-based for)
Definition: json.hpp:3323
-
json_reverse_iterator & operator+=(difference_type i)
add to iterator
Definition: json.hpp:10023
-
input_adapter(T(&array)[N])
input adapter for array
Definition: json.hpp:4284
-
void merge_patch(const basic_json &apply_patch)
applies a JSON Merge Patch
Definition: json.hpp:22581
-
@ object_end
the parser read } and finished processing a JSON object
-
Definition: json.hpp:2279
-
bool key(string_t &)
Definition: json.hpp:4983
-
cached_power get_cached_power_for_binary_exponent(int e)
Definition: json.hpp:12970
-
bool empty() const noexcept
checks whether the container is empty.
Definition: json.hpp:19123
-
virtual bool string(string_t &val)=0
a string was read
-
reverse_iterator rbegin() noexcept
returns an iterator to the reverse-beginning
Definition: json.hpp:18815
-
iterator insert(const_iterator pos, basic_json &&val)
inserts element
Definition: json.hpp:19739
-
@ number_integer
number value (signed integer)
-
Definition: json.hpp:2350
-
ArrayType< basic_json, AllocatorType< basic_json > > array_t
a type for an array
Definition: json.hpp:15072
-
#define JSON_THROW(exception)
Definition: json.hpp:1754
-
typename BasicJsonType::parser_callback_t parser_callback_t
Definition: json.hpp:4643
-
input_adapter(const std::wstring &ws)
Definition: json.hpp:4212
-
Definition: json.hpp:2806
-
json_sax_dom_callback_parser(BasicJsonType &r, const parser_callback_t cb, const bool allow_exceptions_=true)
Definition: json.hpp:4646
-
output_vector_adapter(std::vector< CharType > &vec) noexcept
Definition: json.hpp:11214
-
iter_impl operator-(difference_type i) const
subtract from iterator
Definition: json.hpp:9853
-
std::input_iterator_tag iterator_category
Definition: json.hpp:3304
-
friend bool operator<=(const_reference lhs, const_reference rhs) noexcept
comparison: less than or equal
Definition: json.hpp:20483
-
string_t value(const typename object_t::key_type &key, const char *default_value) const
overload for a default value of type const char*
Definition: json.hpp:18025
-
static std::vector< uint8_t > to_msgpack(const basic_json &j)
create a MessagePack serialization of a given JSON value
Definition: json.hpp:21214
-
std::string to_string() const
return a string representation of the JSON pointer
Definition: json.hpp:10138
-
bool string(string_t &)
Definition: json.hpp:4973
-
std::function< bool(int depth, parse_event_t event, BasicJsonType &parsed)> parser_callback_t
Definition: json.hpp:8711
-
std::function< bool(int depth, parse_event_t event, BasicJsonType &parsed)> parser_callback_t
Definition: json.hpp:10155
-
typename std::remove_cv< typename std::remove_reference< decltype(std::declval< IteratorType >().key()) >::type >::type string_type
Definition: json.hpp:3305
-
bool end_array()
Definition: json.hpp:4553
-
static void fill_buffer(const WideStringType &str, size_t &current_wchar, std::array< std::char_traits< char >::int_type, 4 > &utf8_bytes, size_t &utf8_bytes_index, size_t &utf8_bytes_filled)
Definition: json.hpp:4089
-
output_string_adapter(StringType &s) noexcept
Definition: json.hpp:11262
-
Definition: json.hpp:2783
-
Definition: json.hpp:2752
-
reference at(const json_pointer &ptr)
access specified element via JSON Pointer
Definition: json.hpp:21942
-
T & reference
Definition: json.hpp:2314
-
std::initializer_list< detail::json_ref< basic_json > > initializer_list_t
helper type for initializer lists of basic_json values
Definition: json.hpp:14759
-
const primitive_iterator_t operator++(int) noexcept
Definition: json.hpp:9241
-
@ key
the parser read a key of a value in an object
-
iterator insert(const_iterator pos, const basic_json &val)
inserts element
Definition: json.hpp:19717
-
std::bidirectional_iterator_tag iterator_category
Definition: json.hpp:9367
-
bool end_array()
Definition: json.hpp:4778
-
decltype(std::declval< T & >().null()) null_function_t
Definition: json.hpp:5031
-
void swap(array_t &other)
exchanges the values
Definition: json.hpp:20086
-
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json from_cbor(A1 &&a1, A2 &&a2, const bool strict=true, const bool allow_exceptions=true)
create a JSON value from an input in CBOR format
Definition: json.hpp:21533
-
friend json_pointer operator/(const json_pointer &ptr, std::string token)
create a new JSON pointer by appending the unescaped token at the end of the JSON pointer
Definition: json.hpp:10257
-
lexical analysis
Definition: json.hpp:7161
-
json_ref(std::initializer_list< json_ref > init)
Definition: json.hpp:11114
-
std::random_access_iterator_tag iterator_category
Definition: json.hpp:2310
-
void to_json_tuple_impl(BasicJsonType &j, const Tuple &t, index_sequence< Idx... >)
Definition: json.hpp:3764
-
bool key(string_t &val)
Definition: json.hpp:4527
-
virtual bool boolean(bool val)=0
a boolean value was read
-
static void construct(BasicJsonType &j, const typename BasicJsonType::array_t &arr)
Definition: json.hpp:3554
-
reference value() const
return the value of an iterator
Definition: json.hpp:10060
-
primitive_iterator_t operator+(difference_type n) noexcept
Definition: json.hpp:9223
-
#define NLOHMANN_JSON_VERSION_PATCH
Definition: json.hpp:35
-
bool boolean(bool val)
Definition: json.hpp:4484
-
const std::size_t byte
byte index of the parse error
Definition: json.hpp:1971
-
void swap(object_t &other)
exchanges the values
Definition: json.hpp:20119
-
@ value_integer
a signed integer – use get_number_integer() for actual value
-
bool number_unsigned(number_unsigned_t val)
Definition: json.hpp:4496
-
const_iterator cend() const noexcept
returns a const iterator to one past the last element
Definition: json.hpp:18785
-
constexpr bool is_object() const noexcept
return whether value is an object
Definition: json.hpp:16850
-
typename BasicJsonType::object_t object_t
Definition: json.hpp:2605
-
output_stream_adapter(std::basic_ostream< CharType > &s) noexcept
Definition: json.hpp:11238
-
bool operator!=(const iter_impl &other) const
comparison: not equal
Definition: json.hpp:9730
-
Definition: json.hpp:2686
-
NumberIntegerType number_integer_t
a type for a number (integer)
Definition: json.hpp:15223
-
void set_begin() noexcept
set iterator to a defined beginning
Definition: json.hpp:9190
-
static diyfp sub(const diyfp &x, const diyfp &y) noexcept
returns x - y
Definition: json.hpp:12712
-
json_ref(Args &&... args)
Definition: json.hpp:11121
-
output_adapter(std::basic_ostream< CharType > &s)
Definition: json.hpp:11288
-
const std::string & back() const
return last reference token
Definition: json.hpp:10344
-
token_type scan()
Definition: json.hpp:8540
-
Definition: json.hpp:11101
-
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json from_ubjson(detail::input_adapter &&i, const bool strict=true, const bool allow_exceptions=true)
create a JSON value from an input in UBJSON format
Definition: json.hpp:21714
-
bool start_array(std::size_t=std::size_t(-1))
Definition: json.hpp:4993
-
decltype(std::declval< T >().template get< U >()) get_template_function
Definition: json.hpp:2516
-
Definition: json.hpp:2536
-
#define JSON_HEDLEY_LIKELY(expr)
Definition: json.hpp:1123
-
constexpr bool is_errored() const
Definition: json.hpp:4587
-
input_stream_adapter(std::istream &i)
Definition: json.hpp:3963
-
exception indicating a parse error
Definition: json.hpp:1935
-
Definition: json.hpp:4151
-
constexpr bool is_begin() const noexcept
return whether the iterator can be dereferenced
Definition: json.hpp:9202
-
json_reverse_iterator< typename basic_json::iterator > reverse_iterator
a reverse iterator for a basic_json container
Definition: json.hpp:14824
-
decltype(std::declval< T & >().end_array()) end_array_function_t
Definition: json.hpp:5069
-
friend bool operator==(const_reference lhs, const_reference rhs) noexcept
comparison: equal
Definition: json.hpp:20214
-
std::shared_ptr< input_adapter_protocol > input_adapter_t
a type to simplify interfaces
Definition: json.hpp:3912
-
friend bool operator>(const ScalarType lhs, const_reference rhs) noexcept
comparison: greater than
Definition: json.hpp:20551
-
output adapter for byte vectors
Definition: json.hpp:11211
-
T value_type
Definition: json.hpp:2311
-
a template for a bidirectional iterator for the basic_json class This class implements a both iterato...
Definition: json.hpp:9346
-
BasicJsonType::array_t::iterator array_iterator
iterator for JSON arrays
Definition: json.hpp:9292
-
static void construct(BasicJsonType &j, const CompatibleStringType &str)
Definition: json.hpp:3506
-
@ string
string value
-
typename std::conditional< std::is_const< BasicJsonType >::value, typename BasicJsonType::const_reference, typename BasicJsonType::reference >::type reference
defines a reference to the type iterated over (value_type)
Definition: json.hpp:9381
-
bool accept(const bool strict=true)
public accept interface
Definition: json.hpp:8794
-
static parse_error create(int id_, std::size_t byte_, const std::string &what_arg)
Definition: json.hpp:1954
-
static diyfp mul(const diyfp &x, const diyfp &y) noexcept
returns x * y
Definition: json.hpp:12724
-
reference operator[](difference_type n) const
access to successor
Definition: json.hpp:10047
-
default JSONSerializer template argument
Definition: json.hpp:2409
-
Definition: json.hpp:2648
-
typename make_void< Ts... >::type void_t
Definition: json.hpp:2267
-
const_reference at(const json_pointer &ptr) const
access specified element via JSON Pointer
Definition: json.hpp:21985
-
void to_json(BasicJsonType &j, const typename BasicJsonType::binary_t &bin)
Definition: json.hpp:4280
-
Definition: json.hpp:2210
-
typename BasicJsonType::number_integer_t number_integer_t
type for (signed) integers
Definition: json.hpp:4336
-
error_handler_t
how to treat decoding errors
Definition: json.hpp:13779
-
std::uint64_t f
Definition: json.hpp:12958
-
StringType string_t
a type for a string
Definition: json.hpp:15125
-
typename T::iterator iterator_t
Definition: json.hpp:2507
-
static void fill_buffer(const WideStringType &str, size_t &current_wchar, std::array< std::char_traits< char >::int_type, 4 > &utf8_bytes, size_t &utf8_bytes_index, size_t &utf8_bytes_filled)
Definition: json.hpp:4030
-
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json array(initializer_list_t init={})
explicitly create an array from an initializer list
Definition: json.hpp:16089
-
ValueType get() const noexcept(noexcept(JSONSerializer< ValueType >::from_json(std::declval< const basic_json_t & >(), std::declval< ValueType & >())))
get a value (explicit)
Definition: json.hpp:17174
-
Target reinterpret_bits(const Source source)
Definition: json.hpp:12690
-
friend json_pointer operator/(const json_pointer &ptr, std::size_t array_index)
create a new JSON pointer by appending the array-index-token at the end of the JSON pointer
Definition: json.hpp:10277
-
typename T::value_type value_type_t
Definition: json.hpp:2492
-
friend bool operator<=(const ScalarType lhs, const_reference rhs) noexcept
comparison: less than or equal
Definition: json.hpp:20505
-
friend bool operator>(const_reference lhs, const_reference rhs) noexcept
comparison: greater than
Definition: json.hpp:20529
-
std::numeric_limits< CompatibleNumberIntegerType > CompatibleLimits
Definition: json.hpp:2768
-
friend bool operator>(const_reference lhs, const ScalarType rhs) noexcept
comparison: greater than
Definition: json.hpp:20540
-
typename parser::parser_callback_t parser_callback_t
per-element parser callback type
Definition: json.hpp:15712
-
static void to_msgpack(const basic_json &j, detail::output_adapter< char > o)
Definition: json.hpp:21226
-
typename BasicJsonType::string_t string_t
type for strings
Definition: json.hpp:4342
-
const_reference at(size_type idx) const
access specified array element with bounds checking
Definition: json.hpp:17566
-
basic_json & operator=(basic_json other) noexcept(std::is_nothrow_move_constructible< value_t >::value and std::is_nothrow_move_assignable< value_t >::value and std::is_nothrow_move_constructible< json_value >::value and std::is_nothrow_move_assignable< json_value >::value)
copy assignment
Definition: json.hpp:16469
-
Definition: json.hpp:2757
-
static CharType to_char_type(std::uint8_t x) noexcept
Definition: json.hpp:12592
-
void grisu2(char *buf, int &len, int &decimal_exponent, diyfp m_minus, diyfp v, diyfp m_plus)
Definition: json.hpp:13472
-
std::pair< iterator, bool > emplace(Args &&... args)
add an object to an object if key does not exist
Definition: json.hpp:19649
-
friend std::istream & operator>>(std::istream &i, basic_json &j)
deserialize from stream
Definition: json.hpp:20944
-
auto operator()(const BasicJsonType &j, T &val) const noexcept(noexcept(from_json(j, val))) -> decltype(from_json(j, val), void())
Definition: json.hpp:3244
-
static void construct(BasicJsonType &j, typename BasicJsonType::number_unsigned_t val) noexcept
Definition: json.hpp:3530
-
auto get() noexcept -> decltype(std::declval< basic_json_t & >().template get_ptr< PointerType >())
get a pointer value (explicit)
Definition: json.hpp:17368
-
std::ptrdiff_t difference_type
Definition: json.hpp:9985
-
static constexpr bool little_endianess(int num=1) noexcept
determine system byte order
Definition: json.hpp:5268
-
ptrdiff_t difference_type
Definition: json.hpp:2312
-
@ end_of_input
indicating the end of the input buffer
-
output_adapter(StringType &s)
Definition: json.hpp:11291
-
bool number_integer(number_integer_t val)
Definition: json.hpp:4673
-
Definition: json.hpp:2199
-
~json_sax_dom_callback_parser()=default
-
static diyfp normalize(diyfp x) noexcept
normalize x such that the significand is >= 2^(q-1)
Definition: json.hpp:12789
-
iter_impl & operator++()
pre-increment (++it)
Definition: json.hpp:9628
-
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json parse(detail::input_adapter &&i, const parser_callback_t cb=nullptr, const bool allow_exceptions=true)
deserialize from a compatible input
Definition: json.hpp:20745
-
reference operator+=(const basic_json &val)
add an object to an array
Definition: json.hpp:19467
-
#define JSON_INTERNAL_CATCH(exception)
Definition: json.hpp:1757
-
syntax analysis
Definition: json.hpp:8684
-
Definition: json.hpp:4027
-
const string_type & key() const
return key of the iterator
Definition: json.hpp:3350
-
void update(const_reference j)
updates a JSON object from another object, overwriting existing keys
Definition: json.hpp:19952
-
int e
Definition: json.hpp:12959
-
file_input_adapter & operator=(const file_input_adapter &)=delete
-
string_t & get_string()
return current string value (implicitly resets the token; useful only once)
Definition: json.hpp:8470
-
typename BasicJsonType::number_unsigned_t number_unsigned_t
Definition: json.hpp:4458
-
typename Base::reference reference
the reference type for the pointed-to element
Definition: json.hpp:9989
-
Definition: json.hpp:4636
-
@ array_end
the parser read ] and finished processing a JSON array
-
iteration_proxy_value< IteratorType > end() noexcept
return iterator end (needed for range-based for)
Definition: json.hpp:3403
-
bool number_integer(number_integer_t)
Definition: json.hpp:4958
-
bool operator>=(const iter_impl &other) const
comparison: greater than or equal
Definition: json.hpp:9784
-
#define JSON_HEDLEY_RETURNS_NON_NULL
Definition: json.hpp:1362
-
std::size_t size_type
a type to represent container sizes
Definition: json.hpp:14809
-
json_reverse_iterator operator-(difference_type i) const
subtract from iterator
Definition: json.hpp:10035
-
serializer & operator=(const serializer &)=delete
-
std::shared_ptr< output_adapter_protocol< CharType > > output_adapter_t
a type to simplify interfaces
Definition: json.hpp:11207
-
reference emplace_back(Args &&... args)
add an object to an array
Definition: json.hpp:19596
-
bool operator<(const value_t lhs, const value_t rhs) noexcept
comparison operator for JSON types
Definition: json.hpp:2877
-
#define JSON_TRY
Definition: json.hpp:1755
-
friend bool operator==(const ScalarType lhs, const_reference rhs) noexcept
comparison: equal
Definition: json.hpp:20296
-
reverse_iterator rend() noexcept
returns an iterator to the reverse-end
Definition: json.hpp:18852
-
iter_impl(const iter_impl< const BasicJsonType > &other) noexcept
const copy constructor
Definition: json.hpp:9434
-
parser(detail::input_adapter_t &&adapter, const parser_callback_t cb=nullptr, const bool allow_exceptions_=true)
a parser reading from an input adapter
Definition: json.hpp:8714
-
static std::vector< uint8_t > to_cbor(const basic_json &j)
create a CBOR serialization of a given JSON value
Definition: json.hpp:21118
-
Definition: json.hpp:2713
-
const primitive_iterator_t operator--(int) noexcept
Definition: json.hpp:9254
-
input_format_t
the supported input formats
Definition: json.hpp:3887
-
bool operator<=(const iter_impl &other) const
comparison: less than or equal
Definition: json.hpp:9766
-
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json from_bson(A1 &&a1, A2 &&a2, const bool strict=true, const bool allow_exceptions=true)
Create a JSON value from an input in BSON format.
Definition: json.hpp:21817
-
~serializer()=default
-
@ strict
throw a type_error exception in case of invalid UTF-8
-
constexpr int kGamma
Definition: json.hpp:12954
-
reference operator+=(initializer_list_t init)
add an object to an object
Definition: json.hpp:19566
-
void pop_back()
remove last reference token
Definition: json.hpp:10320
-
decltype(std::declval< T & >().number_integer(std::declval< Integer >())) number_integer_function_t
Definition: json.hpp:5039
-
std::uint64_t f
Definition: json.hpp:12703
-
#define NLOHMANN_JSON_VERSION_MINOR
Definition: json.hpp:34
-
Definition: json.hpp:2297
-
bool number_unsigned(number_unsigned_t)
Definition: json.hpp:4963
-
bool number_unsigned(number_unsigned_t val)
Definition: json.hpp:4679
-
virtual bool number_float(number_float_t val, const string_t &s)=0
an floating-point number was read
-
j template void())
Definition: json.hpp:3108
-
ObjectType< StringType, basic_json, object_comparator_t, AllocatorType< std::pair< const StringType, basic_json > >> object_t
a type for an object
Definition: json.hpp:15026
-
bool start_array(std::size_t len)
Definition: json.hpp:4540
-
bool parse_error(std::size_t, const std::string &, const detail::exception &ex)
Definition: json.hpp:4806
-
diyfp minus
Definition: json.hpp:12820
-
abstract input adapter interface
Definition: json.hpp:3904
-
reference operator*() const
return a reference to the value pointed to by the iterator
Definition: json.hpp:9546
-
const_reference operator[](const typename object_t::key_type &key) const
read-only access specified object element
Definition: json.hpp:17847
-
ReferenceType get_ref()
get a reference value (implicit)
Definition: json.hpp:17414
-
basic_json(InputIT first, InputIT last)
construct a JSON container given an iterator range
Definition: json.hpp:16225
-
const JSON_HEDLEY_RETURNS_NON_NULL char * type_name() const noexcept
return the type as string
Definition: json.hpp:20987
-
iteration_proxy< const_iterator > items() const noexcept
helper to access iterator member functions in range-based for
Definition: json.hpp:19067
-
static void to_cbor(const basic_json &j, detail::output_adapter< char > o)
Definition: json.hpp:21130
-
~json_ref()=default
-
decltype(std::declval< T & >().key(std::declval< String & >())) key_function_t
Definition: json.hpp:5059
-
const int id
the id of the exception
Definition: json.hpp:1875
-
json_reverse_iterator< typename basic_json::const_iterator > const_reverse_iterator
a const reverse iterator for a basic_json container
Definition: json.hpp:14826
-
~nonesuch()=delete
-
virtual bool end_object()=0
the end of an object was read
-
serializer(output_adapter_t< char > s, const char ichar, error_handler_t error_handler_=error_handler_t::strict)
Definition: json.hpp:13802
-
input_adapter(std::FILE *file)
Definition: json.hpp:4202
-
size_type erase(const typename object_t::key_type &key)
remove element from a JSON object given a key
Definition: json.hpp:18432
-
bool operator<(const iter_impl &other) const
comparison: smaller
Definition: json.hpp:9739
-
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json from_cbor(detail::input_adapter &&i, const bool strict=true, const bool allow_exceptions=true)
create a JSON value from an input in CBOR format
Definition: json.hpp:21517
-
friend bool operator>=(const_reference lhs, const ScalarType rhs) noexcept
comparison: greater than or equal
Definition: json.hpp:20586
-
@ uninitialized
indicating the scanner is uninitialized
-
Definition: json.hpp:3470
-
typename It::value_type value_type
Definition: json.hpp:2288
-
void update(const_iterator first, const_iterator last)
updates a JSON object from another object, overwriting existing keys
Definition: json.hpp:20003
-
@ value
the parser finished reading a JSON value
-
NumberUnsignedType number_unsigned_t
a type for a number (unsigned)
Definition: json.hpp:15294
-
constexpr number_unsigned_t get_number_unsigned() const noexcept
return unsigned integer value
Definition: json.hpp:8458
-
basic_json(basic_json &&other) noexcept
move constructor
Definition: json.hpp:16432
-
primitive_iterator_t primitive_iterator
generic iterator for all other types
Definition: json.hpp:9294
-
std::size_t lines_read
the number of lines read
Definition: json.hpp:96
-
@ number_unsigned
number value (unsigned integer)
-
size_type max_size() const noexcept
returns the maximum possible number of elements
Definition: json.hpp:19265
-
bool sax_parse(const input_format_t format, json_sax_t *sax_, const bool strict=true)
Definition: json.hpp:5210
-
Definition: json.hpp:2795
-
deserialization of CBOR, MessagePack, and UBJSON values
Definition: json.hpp:5175
-
Definition: json.hpp:2709
-
JSON_HEDLEY_RETURNS_NON_NULL char * append_exponent(char *buf, int e)
appends a decimal representation of e to buf
Definition: json.hpp:13572
-
@ array
array (ordered collection of values)
-
static void construct(BasicJsonType &j, typename BasicJsonType::string_t &&s)
Definition: json.hpp:3496
-
decltype(T::from_json(std::declval< Args >()...)) from_json_function
Definition: json.hpp:2513
-
typename BasicJsonType::number_integer_t number_integer_t
Definition: json.hpp:4639
-
BooleanType boolean_t
a type for a boolean
Definition: json.hpp:15151
-
const_iterator end() const noexcept
returns a const iterator to one past the last element
Definition: json.hpp:18755
-
void push_back(std::string &&token)
append an unescaped token at the end of the reference pointer
Definition: json.hpp:10372
-
binary_reader & operator=(const binary_reader &)=delete
-
input_adapter(const std::u16string &ws)
Definition: json.hpp:4215
-
value_type const * operator->() const
Definition: json.hpp:11146
-
diyfp plus
Definition: json.hpp:12821
-
static type_error create(int id_, const std::string &what_arg)
Definition: json.hpp:2078
-
~json_sax_dom_parser()=default
-
constexpr diyfp(std::uint64_t f_, int e_) noexcept
Definition: json.hpp:12706
-
reference at(size_type idx)
access specified array element with bounds checking
Definition: json.hpp:17519
-
bool contains(KeyT &&key) const
check the existence of an element in a JSON object
Definition: json.hpp:18604
-
#define JSON_HEDLEY_DIAGNOSTIC_PUSH
Definition: json.hpp:735
-
typename detector< nonesuch, void, Op, Args... >::type detected_t
Definition: json.hpp:2367
-
decltype(std::declval< T & >().end_object()) end_object_function_t
Definition: json.hpp:5062
-
friend bool operator!=(json_pointer const &lhs, json_pointer const &rhs) noexcept
compares two JSON pointers for inequality
Definition: json.hpp:11076
-
Definition: json.hpp:2690
-
std::is_convertible< detected_t< Op, Args... >, To > is_detected_convertible
Definition: json.hpp:2380
-
typename BasicJsonType::number_float_t number_float_t
Definition: json.hpp:4945
-
iteration_proxy_value & operator++()
increment operator (needed for range-based for)
Definition: json.hpp:3329
-
abstract output adapter interface
Definition: json.hpp:11198
-
iteration_proxy_value(IteratorType it) noexcept
Definition: json.hpp:3320
-
@ discarded
discarded by the the parser callback function
-
constexpr bool is_structured() const noexcept
return whether type is structured
Definition: json.hpp:16669
-
iterator begin() noexcept
returns an iterator to the first element
Definition: json.hpp:18674
-
parse_event_t
Definition: json.hpp:8694
-
void swap(string_t &other)
exchanges the values
Definition: json.hpp:20152
-
Default type
Definition: json.hpp:2353
-
bool end_object()
Definition: json.hpp:4534
-
~basic_json() noexcept
destructor
Definition: json.hpp:16502
-
#define JSON_HEDLEY_NON_NULL(...)
Definition: json.hpp:1032
-
string_t dump(const int indent=-1, const char indent_char=' ', const bool ensure_ascii=false, const error_handler_t error_handler=error_handler_t::strict) const
serialization
Definition: json.hpp:16560
-
Definition: json.hpp:9173
-
static void construct(BasicJsonType &j, const typename BasicJsonType::string_t &s)
Definition: json.hpp:3488
-
static void to_bson(const basic_json &j, detail::output_adapter< uint8_t > o)
Serializes the given JSON object j to BSON and forwards the corresponding BSON-representation to the ...
Definition: json.hpp:21403
-
JSONSerializer< T, SFINAE > json_serializer
Definition: json.hpp:14755
-
void push_back(initializer_list_t init)
add an object to an object
Definition: json.hpp:19548
-
Definition: json.hpp:2569
-
~input_buffer_adapter() override=default
-
#define JSON_HEDLEY_DEPRECATED(since)
Definition: json.hpp:860
-
typename parser::parse_event_t parse_event_t
parser event types
Definition: json.hpp:15661
-
@ object_start
the parser read { and started to process a JSON object
-
bool operator()(nlohmann::detail::value_t lhs, nlohmann::detail::value_t rhs) const noexcept
compare two value_t enum values
Definition: json.hpp:22661
-
typename detector< nonesuch, void, Op, Args... >::value_t is_detected
Definition: json.hpp:2364
-
@ boolean
boolean value
-
iter_impl(pointer object) noexcept
constructor for a given JSON instance
Definition: json.hpp:9392
-
virtual bool start_object(std::size_t elements)=0
the beginning of an object was read
-
lexer(detail::input_adapter_t &&adapter)
Definition: json.hpp:7237
-
void push_back(const basic_json &val)
add an object to an array
Definition: json.hpp:19443
-
input_adapter(IteratorType first, IteratorType last)
input adapter for iterator range with contiguous storage
Definition: json.hpp:4249
-
auto input_adapter(T(&array)[N]) -> decltype(input_adapter(array, array+N))
Definition: json.hpp:5139
-
json_pointer & operator/=(std::string token)
append an unescaped reference token at the end of this JSON pointer
Definition: json.hpp:10194
-
friend bool operator>=(const_reference lhs, const_reference rhs) noexcept
comparison: greater than or equal
Definition: json.hpp:20575
-
static void to_cbor(const basic_json &j, detail::output_adapter< uint8_t > o)
Definition: json.hpp:21125
-
BasicJsonType get() const
get special-case overload
Definition: json.hpp:17124
-
@ msgpack
-
json_pointer & operator/=(std::size_t array_index)
append an array index at the end of this JSON pointer
Definition: json.hpp:10216
-
static void construct(BasicJsonType &j, const CompatibleObjectType &obj)
Definition: json.hpp:3630
-
reference operator[](size_type idx)
access specified array element
Definition: json.hpp:17714
-
lexer & operator=(lexer &)=delete
-
iter_impl()=default
default constructor
Definition: json.hpp:9349
-
virtual bool number_integer(number_integer_t val)=0
an integer number was read
-
Definition: json.hpp:13787
-
bool operator>(const iter_impl &other) const
comparison: greater than
Definition: json.hpp:9775
-
iterator find(KeyT &&key)
find an element in a JSON object
Definition: json.hpp:18520
-
typename std::allocator_traits< allocator_type >::pointer pointer
the type of an element pointer
Definition: json.hpp:14815
-
friend bool operator<(const_reference lhs, const_reference rhs) noexcept
comparison: less than
Definition: json.hpp:20372
-
@ object_end
the parser read } and finished processing a JSON object
-
@ end_array
the character for array end ]
-
const_iterator cbegin() const noexcept
returns a const iterator to the first element
Definition: json.hpp:18714
-
output adapter for output streams
Definition: json.hpp:11235
-
Definition: json.hpp:2476
-
json_pointer & operator/=(const json_pointer &ptr)
append another JSON pointer at the end of this JSON pointer
Definition: json.hpp:10170
-
const_iterator begin() const noexcept
returns a const iterator to the first element
Definition: json.hpp:18684
-
a class to store JSON values
Definition: json.hpp:2421
-
@ value_separator
the value separator ,
-
static invalid_iterator create(int id_, const std::string &what_arg)
Definition: json.hpp:2024
-
static bool sax_parse(detail::input_adapter &&i, SAX *sax, input_format_t format=input_format_t::json, const bool strict=true)
generate SAX events
Definition: json.hpp:20814
-
const json_reverse_iterator operator++(int)
post-increment (it++)
Definition: json.hpp:9999
-
#define JSON_HEDLEY_CONST
Definition: json.hpp:1191
-
Definition: json.hpp:2800
-
reference operator[](const typename object_t::key_type &key)
access specified object element
Definition: json.hpp:17798
-
@ literal_null
the null literal
-
friend bool operator==(const_reference lhs, const ScalarType rhs) noexcept
comparison: equal
Definition: json.hpp:20285
-
~binary_reader()=default
-
virtual bool end_array()=0
the end of an array was read
-
constexpr auto get() const noexcept -> decltype(std::declval< const basic_json_t & >().template get_ptr< PointerType >())
get a pointer value (explicit)
Definition: json.hpp:17380
-
Definition: json.hpp:4940
-
Definition: json.hpp:12817
-
input_adapter(CharT b, std::size_t l)
input adapter for buffer
Definition: json.hpp:4228
-
static parse_error create(int id_, const position_t &pos, const std::string &what_arg)
create a parse error exception
Definition: json.hpp:1947
-
constexpr bool is_number() const noexcept
return whether value is a number
Definition: json.hpp:16743
-
static constexpr T value
Definition: json.hpp:2235
-
const_reference at(const typename object_t::key_type &key) const
access specified object element with bounds checking
Definition: json.hpp:17668
-
Definition: json.hpp:2551
-
reference at(const typename object_t::key_type &key)
access specified object element with bounds checking
Definition: json.hpp:17617
-
static std::vector< uint8_t > to_bson(const basic_json &j)
Serializes the given JSON object j to BSON and returns a vector containing the corresponding BSON-rep...
Definition: json.hpp:21388
-
Definition: json.hpp:3297
-
Definition: json.hpp:5077
-
friend iter_impl operator+(difference_type i, const iter_impl &it)
addition of distance and iterator
Definition: json.hpp:9842
-
constexpr number_integer_t get_number_integer() const noexcept
return integer value
Definition: json.hpp:8452
-
static constexpr int kPrecision
Definition: json.hpp:12701
-
Definition: json.hpp:3431
-
@ literal_false
the false literal
-
#define NLOHMANN_BASIC_JSON_TPL_DECLARATION
Definition: json.hpp:1814
-
json_reverse_iterator & operator++()
pre-increment (++it)
Definition: json.hpp:10005
-
@ name_separator
the name separator :
-
basic_json<> json
default JSON class
Definition: json.hpp:2445
-
constexpr friend difference_type operator-(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept
Definition: json.hpp:9230
-
Definition: json.hpp:4197
-
friend bool operator!=(const_reference lhs, const_reference rhs) noexcept
comparison: not equal
Definition: json.hpp:20319
-
typename BasicJsonType::template json_serializer< T, void > serializer
Definition: json.hpp:2541
-
iter_impl & operator=(const iter_impl< typename std::remove_const< BasicJsonType >::type > &other) noexcept
converting assignment
Definition: json.hpp:9466
-
@ json
-
static void to_ubjson(const basic_json &j, detail::output_adapter< char > o, const bool use_size=false, const bool use_type=false)
Definition: json.hpp:21326
-
void push_back(const std::string &token)
append an unescaped token at the end of the reference pointer
Definition: json.hpp:10366
-
Definition: json.hpp:3241
-
void from_json_tuple_impl(const BasicJsonType &j, Tuple &t, index_sequence< Idx... >)
Definition: json.hpp:3190
-
iterator insert(const_iterator pos, const_iterator first, const_iterator last)
inserts elements
Definition: json.hpp:19816
-
static void construct(BasicJsonType &j, typename BasicJsonType::number_float_t val) noexcept
Definition: json.hpp:3518
-
void write_character(CharType c) override
Definition: json.hpp:11218
-
static iteration_proxy< iterator > iterator_wrapper(reference ref) noexcept
wrapper to access iterator member functions in range-based for
Definition: json.hpp:18982
-
basic_json(const BasicJsonType &val)
create a JSON value from an existing one
Definition: json.hpp:15880
-
bool number_float(number_float_t, const string_t &)
Definition: json.hpp:4968
-
static basic_json parse(IteratorType first, IteratorType last, const parser_callback_t cb=nullptr, const bool allow_exceptions=true)
deserialize from an iterator range with contiguous storage
Definition: json.hpp:20877
-
decltype(std::declval< T & >().parse_error(std::declval< std::size_t >(), std::declval< const std::string & >(), std::declval< const Exception & >())) parse_error_function_t
Definition: json.hpp:5074
-
auto get(const nlohmann::detail::iteration_proxy_value< IteratorType > &i) -> decltype(i.key())
Definition: json.hpp:3412
-
static void construct(BasicJsonType &j, const std::vector< bool > &arr)
Definition: json.hpp:3582
-
constexpr friend bool operator<(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept
Definition: json.hpp:9218
-
input_adapter(std::istream &i)
input adapter for input stream
Definition: json.hpp:4205
-
void parse(const bool strict, BasicJsonType &result)
public parser interface
Definition: json.hpp:8733
-
const_reference front() const
access the first element
Definition: json.hpp:18137
-
iterator insert(const_iterator pos, initializer_list_t ilist)
inserts elements
Definition: json.hpp:19869
-
iter_impl & operator-=(difference_type i)
subtract from iterator
Definition: json.hpp:9822
-
typename BasicJsonType::number_unsigned_t number_unsigned_t
Definition: json.hpp:4944
-
input_adapter(const std::u32string &ws)
Definition: json.hpp:4218
-
typename BasicJsonType::number_unsigned_t number_unsigned_t
Definition: json.hpp:4640
-
decltype(std::declval< T & >().number_float(std::declval< Float >(), std::declval< const String & >())) number_float_function_t
Definition: json.hpp:5047
-
Definition: json.hpp:12956
-
an iterator value
Definition: json.hpp:9287
-
bool boolean(bool)
Definition: json.hpp:4953
-
typename It::reference reference
Definition: json.hpp:2290
-
json_ref(const value_type &value)
Definition: json.hpp:11110
-
input_adapter(const ContiguousContainer &c)
input adapter for contiguous container
Definition: json.hpp:4292
-
NumberFloatType number_float_t
a type for a number (floating-point)
Definition: json.hpp:15362
-
JSON_HEDLEY_RETURNS_NON_NULL char * to_chars(char *first, const char *last, FloatType value)
generates a decimal representation of the floating-point number value in [first, last).
Definition: json.hpp:13709
-
reference front()
access the first element
Definition: json.hpp:18129
-
typename BasicJsonType::value_type value_type
the type of the values when the iterator is dereferenced
Definition: json.hpp:9370
-
constexpr bool is_number_integer() const noexcept
return whether value is an integer number
Definition: json.hpp:16772
-
constexpr const JSON_HEDLEY_RETURNS_NON_NULL char * get_error_message() const noexcept
return syntax error message
Definition: json.hpp:8513
-
std::size_t chars_read_total
the total number of characters read
Definition: json.hpp:92
-
Definition: json.hpp:2616
-
~lexer()=default
-
#define JSON_HEDLEY_WARN_UNUSED_RESULT
Definition: json.hpp:893
-
reference operator[](const json_pointer &ptr)
access specified element via JSON Pointer
Definition: json.hpp:21871
-
void operator=(nonesuch const &)=delete
-
output adapter for basic_string
Definition: json.hpp:11259
-
iter_impl operator+(difference_type i) const
add to iterator
Definition: json.hpp:9831
-
binary_reader(input_adapter_t adapter)
create a binary reader
Definition: json.hpp:5189
-
static void construct(BasicJsonType &j, const std::valarray< T > &arr)
Definition: json.hpp:3596
-
decltype(std::declval< T & >().number_unsigned(std::declval< Unsigned >())) number_unsigned_function_t
Definition: json.hpp:5043
-
reference operator[](difference_type n) const
access to successor
Definition: json.hpp:9885
-
Definition: json.hpp:2217
-
typename BasicJsonType::number_float_t number_float_t
type for floating-point numbers
Definition: json.hpp:4340
-
@ array_start
the parser read [ and started to process a JSON array
-
const json_reverse_iterator operator--(int)
post-decrement (it–)
Definition: json.hpp:10011
-
constexpr bool is_number_unsigned() const noexcept
return whether value is an unsigned integer number
Definition: json.hpp:16800
-
decltype(T::to_json(std::declval< Args >()...)) to_json_function
Definition: json.hpp:2510
-
static std::vector< uint8_t > to_ubjson(const basic_json &j, const bool use_size=false, const bool use_type=false)
create a UBJSON serialization of a given JSON value
Definition: json.hpp:21311
-
typename BasicJsonType::number_float_t number_float_t
Definition: json.hpp:4641
-
bool start_object(std::size_t len)
Definition: json.hpp:4697
-
primitive_iterator_t & operator-=(difference_type n) noexcept
Definition: json.hpp:9267
-
iteration_proxy(typename IteratorType::reference cont) noexcept
construct iteration proxy from a container
Definition: json.hpp:3393
-
JSON_HEDLEY_RETURNS_NON_NULL char * format_buffer(char *buf, int len, int decimal_exponent, int min_exp, int max_exp)
prettify v = buf * 10^decimal_exponent
Definition: json.hpp:13624
-
const JSON_HEDLEY_RETURNS_NON_NULL char * what() const noexcept override
returns the explanatory string
Definition: json.hpp:1869
-
friend std::ostream & operator<<(std::ostream &o, const basic_json &j)
serialize to stream
Definition: json.hpp:20642
-
void clear() noexcept
clears the contents
Definition: json.hpp:19335
-
friend std::ostream & operator>>(const basic_json &j, std::ostream &o)
serialize to stream
Definition: json.hpp:20666
-
Definition: json.hpp:2336
-
constexpr bool is_null() const noexcept
return whether value is null
Definition: json.hpp:16691
-
iterator insert(const_iterator pos, size_type cnt, const basic_json &val)
inserts elements
Definition: json.hpp:19768
-
typename T::reference reference_t
Definition: json.hpp:2501
-
const_reverse_iterator crend() const noexcept
returns a const reverse iterator to one before the first
Definition: json.hpp:18918
-
bool operator!=(const iteration_proxy_value &o) const
inequality operator (needed for range-based for)
Definition: json.hpp:3344
-
basic_json patch(const basic_json &json_patch) const
applies a JSON patch
Definition: json.hpp:22110
-
virtual std::char_traits< char >::int_type get_character()=0
get a character [0,255] or std::char_traits<char>::eof().
-
constexpr int kAlpha
Definition: json.hpp:12953
-
constexpr number_float_t get_number_float() const noexcept
return floating-point value
Definition: json.hpp:8464
-
Definition: json.hpp:2596
-
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json from_msgpack(A1 &&a1, A2 &&a2, const bool strict=true, const bool allow_exceptions=true)
create a JSON value from an input in MessagePack format
Definition: json.hpp:21642
-
Definition: json.hpp:3918
-
bool skip_bom()
skip the UTF-8 byte order mark
Definition: json.hpp:8526
-
bool end_object()
Definition: json.hpp:4732
-
Definition: json.hpp:2778
-
IteratorType erase(IteratorType pos)
remove element given an iterator
Definition: json.hpp:18240
-
#define JSON_CATCH(exception)
Definition: json.hpp:1756
-
constexpr auto get_ptr() const noexcept -> decltype(std::declval< const basic_json_t & >().get_impl_ptr(std::declval< PointerType >()))
get a pointer value (implicit)
Definition: json.hpp:17333
-
Definition: json.hpp:2654
-
decltype(std::declval< T & >().string(std::declval< String & >())) string_function_t
Definition: json.hpp:5051
-
input_stream_adapter & operator=(input_stream_adapter &)=delete
-
constexpr bool is_array() const noexcept
return whether value is an array
Definition: json.hpp:16872
-
parse_event_t
Definition: json.hpp:10137
-
bool operator==(const iteration_proxy_value &o) const
equality operator (needed for InputIterator)
Definition: json.hpp:3338
-
virtual bool start_array(std::size_t elements)=0
the beginning of an array was read
-
typename T::key_type key_type_t
Definition: json.hpp:2489
-
typename BasicJsonType::difference_type difference_type
a type to represent differences between iterators
Definition: json.hpp:9372
-
Array get_to(T(&v)[N]) const noexcept(noexcept(JSONSerializer< Array >::from_json(std::declval< const basic_json_t & >(), v)))
Definition: json.hpp:17283
-
void from_json_array_impl(const BasicJsonType &j, typename BasicJsonType::array_t &arr, priority_tag< 3 >)
Definition: json.hpp:3042
-
SAX interface.
Definition: json.hpp:4333
-
friend bool operator>=(const ScalarType lhs, const_reference rhs) noexcept
comparison: greater than or equal
Definition: json.hpp:20597
-
void insert(const_iterator first, const_iterator last)
inserts elements
Definition: json.hpp:19910
-
file_input_adapter(std::FILE *f) noexcept
Definition: json.hpp:3922
-
const_reverse_iterator crbegin() const noexcept
returns a const reverse iterator to the last element
Definition: json.hpp:18889
-
int k
Definition: json.hpp:12960
-
constexpr bool is_boolean() const noexcept
return whether value is a boolean
Definition: json.hpp:16713
-
std::ptrdiff_t difference_type
a type to represent differences between iterators
Definition: json.hpp:14807
-
auto get_ptr() noexcept -> decltype(std::declval< basic_json_t & >().get_impl_ptr(std::declval< PointerType >()))
get a pointer value (implicit)
Definition: json.hpp:17320
-
proxy class for the items() function
Definition: json.hpp:3385
-
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json from_msgpack(detail::input_adapter &&i, const bool strict=true, const bool allow_exceptions=true)
create a JSON value from an input in MessagePack format
Definition: json.hpp:21626
-
const object_t::key_type & key() const
return the key of an object iterator
Definition: json.hpp:9916
-
static void construct(BasicJsonType &j, const typename BasicJsonType::object_t &obj)
Definition: json.hpp:3613
-
typename BasicJsonType::template json_serializer< T, void > serializer
Definition: json.hpp:2556
-
typename It::difference_type difference_type
Definition: json.hpp:2287
-
difference_type operator-(const json_reverse_iterator &other) const
return difference
Definition: json.hpp:10041
-
#define JSON_HEDLEY_PURE
Definition: json.hpp:1170
-
bool parse_error(std::size_t, const std::string &, const detail::exception &)
Definition: json.hpp:5003
-
@ ubjson
-
input_adapter(CharT b)
input adapter for string literal
Definition: json.hpp:4240
-
typename T::pointer pointer_t
Definition: json.hpp:2498
-
@ object_start
the parser read { and started to process a JSON object
-
constexpr bool is_number_float() const noexcept
return whether value is a floating-point number
Definition: json.hpp:16828
-
@ literal_or_value
a literal or the begin of a value (only for diagnostics)
-
friend bool operator!=(const_reference lhs, const ScalarType rhs) noexcept
comparison: not equal
Definition: json.hpp:20330
-
int e
Definition: json.hpp:12704
-
typename std::conditional< std::is_const< BasicJsonType >::value, typename BasicJsonType::const_pointer, typename BasicJsonType::pointer >::type pointer
defines a pointer to the type iterated over (value_type)
Definition: json.hpp:9376
-
const iter_impl operator--(int)
post-decrement (it–)
Definition: json.hpp:9660
-
virtual bool key(string_t &val)=0
an object key was read
-
std::numeric_limits< RealIntegerType > RealLimits
Definition: json.hpp:2767
-
@ value_float
an floating point number – use get_number_float() for actual value
-
@ begin_array
the character for array begin [
-
binary_writer(output_adapter_t< CharType > adapter)
create a binary writer
Definition: json.hpp:11328
-
Definition: json.hpp:2233
-
basic_json(const basic_json &other)
copy constructor
Definition: json.hpp:16349
-
@ value_string
a string – use get_string() for actual value
-
virtual ~json_sax()=default
-
void write_character(CharType c) override
Definition: json.hpp:11242
-
typename It::pointer pointer
Definition: json.hpp:2289
-
output_adapter(std::vector< CharType > &vec)
Definition: json.hpp:11285
-
constexpr friend bool operator==(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept
Definition: json.hpp:9213
-
input_adapter(std::istream &&i)
input adapter for input stream
Definition: json.hpp:4209
-
friend bool operator==(json_pointer const &lhs, json_pointer const &rhs) noexcept
compares two JSON pointers for equality
Definition: json.hpp:11059
-
typename BasicJsonType::string_t string_t
Definition: json.hpp:4946
-
bool number_float(number_float_t val, const string_t &)
Definition: json.hpp:4502
-
friend bool operator<=(const_reference lhs, const ScalarType rhs) noexcept
comparison: less than or equal
Definition: json.hpp:20494
-
const_reference operator[](size_type idx) const
access specified array element
Definition: json.hpp:17760
-
bool end_array()
Definition: json.hpp:4998
-
int find_largest_pow10(const std::uint32_t n, std::uint32_t &pow10)
Definition: json.hpp:13134
-
std::reverse_iterator< Base > base_iterator
shortcut to the reverse iterator adapter
Definition: json.hpp:9987
-
json_reverse_iterator & operator--()
pre-decrement (–it)
Definition: json.hpp:10017
-
iterator insert_iterator(const_iterator pos, Args &&... args)
Definition: json.hpp:19679
-
static void construct(BasicJsonType &j, typename BasicJsonType::boolean_t b) noexcept
Definition: json.hpp:3476
-
reference value() const
return the value of an iterator
Definition: json.hpp:9932
-
JSON_HEDLEY_RETURNS_NON_NULL static const JSON_HEDLEY_CONST char * token_type_name(const token_type t) noexcept
return name of values of type token_type (only used for errors)
Definition: json.hpp:7194
-
reference operator+=(basic_json &&val)
add an object to an array
Definition: json.hpp:19433
-
json_reverse_iterator(const base_iterator &it) noexcept
create reverse iterator from base class
Definition: json.hpp:9996
-
void to_json(BasicJsonType &j, T b) noexcept
Definition: json.hpp:3647
-
@ end_object
the character for object end }
-
Definition: json.hpp:2621
-
constexpr bool is_errored() const
Definition: json.hpp:4834
-
void write_bson(const BasicJsonType &j)
Definition: json.hpp:11337
-
typename std::allocator_traits< allocator_type >::const_pointer const_pointer
the type of an element const pointer
Definition: json.hpp:14817
-
iter_impl & operator+=(difference_type i)
add to iterator
Definition: json.hpp:9793
-
Definition: json.hpp:11282
-
void swap(reference other) noexcept(std::is_nothrow_move_constructible< value_t >::value and std::is_nothrow_move_assignable< value_t >::value and std::is_nothrow_move_constructible< json_value >::value and std::is_nothrow_move_assignable< json_value >::value)
exchanges the values
Definition: json.hpp:20054
-
iterator end() noexcept
returns an iterator to one past the last element
Definition: json.hpp:18745
-
ValueType & get_to(ValueType &v) const noexcept(noexcept(JSONSerializer< ValueType >::from_json(std::declval< const basic_json_t & >(), v)))
get a value (explicit)
Definition: json.hpp:17271
-
typename T::iterator_category iterator_category_t
Definition: json.hpp:2504
-
bool boolean(bool val)
Definition: json.hpp:4667
-
BasicJsonType value_type
Definition: json.hpp:11104
-
auto operator()(BasicJsonType &j, T &&val) const noexcept(noexcept(to_json(j, std::forward< T >(val)))) -> decltype(to_json(j, std::forward< T >(val)), void())
Definition: json.hpp:3778
-
#define JSON_HEDLEY_DIAGNOSTIC_POP
Definition: json.hpp:736
-
std::is_same< Expected, detected_t< Op, Args... > > is_detected_exact
Definition: json.hpp:2376
-
@ key
the parser read a key of a value in an object
-
friend bool operator<(const ScalarType lhs, const_reference rhs) noexcept
comparison: less than
Definition: json.hpp:20459
-
#define NLOHMANN_JSON_VERSION_MAJOR
Definition: json.hpp:33
-
ValueType get() const noexcept(noexcept(JSONSerializer< ValueType >::from_json(std::declval< const basic_json_t & >())))
get a value (explicit); special case
Definition: json.hpp:17225
-
bool contains(const json_pointer &ptr) const
check the existence of an element in a JSON object given a JSON pointer
Definition: json.hpp:18635
-
std::size_t operator()(const nlohmann::json &j) const
return a hash value for a JSON object
Definition: json.hpp:22643
-
@ array_start
the parser read [ and started to process a JSON array
-
typename std::remove_cv< typename std::remove_reference< T >::type >::type uncvref_t
Definition: json.hpp:2194
- - - - diff --git a/help/html/build_2__deps_2json-subbuild_2CMakeLists_8txt.html b/help/html/build_2__deps_2json-subbuild_2CMakeLists_8txt.html deleted file mode 100644 index 6f0cd8b..0000000 --- a/help/html/build_2__deps_2json-subbuild_2CMakeLists_8txt.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - -CocoaTweet: build/_deps/json-subbuild/CMakeLists.txt File Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
build/_deps/json-subbuild/CMakeLists.txt File Reference
-
-
-
- - - - diff --git a/help/html/classCocoaTweet_1_1API_1_1API-members.html b/help/html/classCocoaTweet_1_1API_1_1API-members.html deleted file mode 100644 index 8cb33c4..0000000 --- a/help/html/classCocoaTweet_1_1API_1_1API-members.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
CocoaTweet::API::API Member List
-
-
- -

This is the complete list of members for CocoaTweet::API::API, including all inherited members.

- - - - - - - -
API(CocoaTweet::OAuth::Key _key)CocoaTweet::API::API
directMessage() constCocoaTweet::API::API
favorite() constCocoaTweet::API::API
generateBearerToken() constCocoaTweet::API::API
media() constCocoaTweet::API::API
status() constCocoaTweet::API::API
- - - - diff --git a/help/html/classCocoaTweet_1_1API_1_1API.html b/help/html/classCocoaTweet_1_1API_1_1API.html deleted file mode 100644 index e858409..0000000 --- a/help/html/classCocoaTweet_1_1API_1_1API.html +++ /dev/null @@ -1,242 +0,0 @@ - - - - - - - -CocoaTweet: CocoaTweet::API::API Class Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
CocoaTweet::API::API Class Reference
-
-
- -

Twitter API Entry Point. - More...

- -

#include <api.h>

- - - - - - - - - - - - - - - - - -

-Public Member Functions

 API (CocoaTweet::OAuth::Key _key)
 primary constructor More...
 
Statuses::Status status () const
 Getter for Grouped by Statuses/*. More...
 
Favorites::Favorite favorite () const
 Getter for Grouped by Favorites/*. More...
 
Medias::Media media () const
 
DirectMessages::DirectMessage directMessage () const
 
const std::string & generateBearerToken () const
 
-

Detailed Description

-

Twitter API Entry Point.

-

Constructor & Destructor Documentation

- -

◆ API()

- -
-
- - - - - - - - -
CocoaTweet::API::API::API (CocoaTweet::OAuth::Key _key)
-
- -

primary constructor

-
Parameters
- - -
[in]_keyTwitter API Key typed CocoaTweet::OAuth::Key
-
-
- -
-
-

Member Function Documentation

- -

◆ directMessage()

- -
-
- - - - - - - -
DirectMessages::DirectMessage CocoaTweet::API::API::directMessage () const
-
- -
-
- -

◆ favorite()

- -
-
- - - - - - - -
Favorites::Favorite CocoaTweet::API::API::favorite () const
-
- -

Getter for Grouped by Favorites/*.

-
Parameters
- - -
[out]Favoriteobject typed CococaTweet::API::Favorites::Favorite
-
-
- -
-
- -

◆ generateBearerToken()

- -
-
- - - - - - - -
const std::string & CocoaTweet::API::API::generateBearerToken () const
-
- -
-
- -

◆ media()

- -
-
- - - - - - - -
Medias::Media CocoaTweet::API::API::media () const
-
- -
-
- -

◆ status()

- -
-
- - - - - - - -
Statuses::Status CocoaTweet::API::API::status () const
-
- -

Getter for Grouped by Statuses/*.

-
Parameters
- - -
[out]Statusobject typed CocoaTweet::API::Statuses::Status
-
-
- -
-
-
The documentation for this class was generated from the following files: -
- - - - diff --git a/help/html/classCocoaTweet_1_1API_1_1DirectMessages_1_1DirectMessage-members.html b/help/html/classCocoaTweet_1_1API_1_1DirectMessages_1_1DirectMessage-members.html deleted file mode 100644 index f50bc90..0000000 --- a/help/html/classCocoaTweet_1_1API_1_1DirectMessages_1_1DirectMessage-members.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
CocoaTweet::API::DirectMessages::DirectMessage Member List
-
-
- -

This is the complete list of members for CocoaTweet::API::DirectMessages::DirectMessage, including all inherited members.

- - - - - -
DirectMessage()=defaultCocoaTweet::API::DirectMessages::DirectMessage
DirectMessage(std::shared_ptr< CocoaTweet::OAuth::OAuth1 > _oauth)CocoaTweet::API::DirectMessages::DirectMessage
messageCreate(const std::string &_recipient, const std::string &_message)CocoaTweet::API::DirectMessages::DirectMessage
oauth_CocoaTweet::API::groupInterfaceprotected
- - - - diff --git a/help/html/classCocoaTweet_1_1API_1_1DirectMessages_1_1DirectMessage.html b/help/html/classCocoaTweet_1_1API_1_1DirectMessages_1_1DirectMessage.html deleted file mode 100644 index 0ecc072..0000000 --- a/help/html/classCocoaTweet_1_1API_1_1DirectMessages_1_1DirectMessage.html +++ /dev/null @@ -1,210 +0,0 @@ - - - - - - - -CocoaTweet: CocoaTweet::API::DirectMessages::DirectMessage Class Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
CocoaTweet::API::DirectMessages::DirectMessage Class Reference
-
-
- -

Entory point for statuses/*. - More...

- -

#include <directMessage.h>

-
-Inheritance diagram for CocoaTweet::API::DirectMessages::DirectMessage:
-
-
Inheritance graph
- - - - -
[legend]
-
-Collaboration diagram for CocoaTweet::API::DirectMessages::DirectMessage:
-
-
Collaboration graph
- - - - -
[legend]
- - - - - - - - - -

-Public Member Functions

 DirectMessage ()=default
 
 DirectMessage (std::shared_ptr< CocoaTweet::OAuth::OAuth1 > _oauth)
 constructor which finally should to be called. More...
 
void messageCreate (const std::string &_recipient, const std::string &_message)
 
- - - - -

-Additional Inherited Members

- Protected Attributes inherited from CocoaTweet::API::groupInterface
std::weak_ptr< CocoaTweet::OAuth::OAuth1oauth_
 
-

Detailed Description

-

Entory point for statuses/*.

-

Constructor & Destructor Documentation

- -

◆ DirectMessage() [1/2]

- -
-
- - - - - -
- - - - - - - -
CocoaTweet::API::DirectMessages::DirectMessage::DirectMessage ()
-
-default
-
- -
-
- -

◆ DirectMessage() [2/2]

- -
-
- - - - - - - - -
CocoaTweet::API::DirectMessages::DirectMessage::DirectMessage (std::shared_ptr< CocoaTweet::OAuth::OAuth1_oauth)
-
- -

constructor which finally should to be called.

-
Parameters
- - -
[in]std::shared_ptr<CocoaTweet::OAuth::OAuth1>: pointer to OAuth object
-
-
- -
-
-

Member Function Documentation

- -

◆ messageCreate()

- -
-
- - - - - - - - - - - - - - - - - - -
void CocoaTweet::API::DirectMessages::DirectMessage::messageCreate (const std::string & _recipient,
const std::string & _message 
)
-
- -
-
-
The documentation for this class was generated from the following files: -
- - - - diff --git a/help/html/classCocoaTweet_1_1API_1_1DirectMessages_1_1DirectMessage__coll__graph.map b/help/html/classCocoaTweet_1_1API_1_1DirectMessages_1_1DirectMessage__coll__graph.map deleted file mode 100644 index 9bf957c..0000000 --- a/help/html/classCocoaTweet_1_1API_1_1DirectMessages_1_1DirectMessage__coll__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/help/html/classCocoaTweet_1_1API_1_1DirectMessages_1_1DirectMessage__coll__graph.md5 b/help/html/classCocoaTweet_1_1API_1_1DirectMessages_1_1DirectMessage__coll__graph.md5 deleted file mode 100644 index fa7879c..0000000 --- a/help/html/classCocoaTweet_1_1API_1_1DirectMessages_1_1DirectMessage__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -11ba0235f54a37871b3a9f18174cc284 \ No newline at end of file diff --git a/help/html/classCocoaTweet_1_1API_1_1DirectMessages_1_1DirectMessage__coll__graph.png b/help/html/classCocoaTweet_1_1API_1_1DirectMessages_1_1DirectMessage__coll__graph.png deleted file mode 100644 index 55be0f6..0000000 Binary files a/help/html/classCocoaTweet_1_1API_1_1DirectMessages_1_1DirectMessage__coll__graph.png and /dev/null differ diff --git a/help/html/classCocoaTweet_1_1API_1_1DirectMessages_1_1DirectMessage__inherit__graph.map b/help/html/classCocoaTweet_1_1API_1_1DirectMessages_1_1DirectMessage__inherit__graph.map deleted file mode 100644 index 9bf957c..0000000 --- a/help/html/classCocoaTweet_1_1API_1_1DirectMessages_1_1DirectMessage__inherit__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/help/html/classCocoaTweet_1_1API_1_1DirectMessages_1_1DirectMessage__inherit__graph.md5 b/help/html/classCocoaTweet_1_1API_1_1DirectMessages_1_1DirectMessage__inherit__graph.md5 deleted file mode 100644 index fa7879c..0000000 --- a/help/html/classCocoaTweet_1_1API_1_1DirectMessages_1_1DirectMessage__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -11ba0235f54a37871b3a9f18174cc284 \ No newline at end of file diff --git a/help/html/classCocoaTweet_1_1API_1_1DirectMessages_1_1DirectMessage__inherit__graph.png b/help/html/classCocoaTweet_1_1API_1_1DirectMessages_1_1DirectMessage__inherit__graph.png deleted file mode 100644 index 55be0f6..0000000 Binary files a/help/html/classCocoaTweet_1_1API_1_1DirectMessages_1_1DirectMessage__inherit__graph.png and /dev/null differ diff --git a/help/html/classCocoaTweet_1_1API_1_1DirectMessages_1_1New-members.html b/help/html/classCocoaTweet_1_1API_1_1DirectMessages_1_1New-members.html deleted file mode 100644 index 368f638..0000000 --- a/help/html/classCocoaTweet_1_1API_1_1DirectMessages_1_1New-members.html +++ /dev/null @@ -1,93 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
CocoaTweet::API::DirectMessages::New Member List
-
-
- -

This is the complete list of members for CocoaTweet::API::DirectMessages::New, including all inherited members.

- - - - - - - - - - - -
bodyParam_CocoaTweet::API::Interface::HttpBaseprotected
contentType_CocoaTweet::API::Interface::HttpBaseprotected
curlCallback_(char *_ptr, size_t _size, size_t _nmemb, std::string *_stream)CocoaTweet::API::Interface::HttpBaseinlineprotectedstatic
message(const std::string &_message)CocoaTweet::API::DirectMessages::New
New()CocoaTweet::API::DirectMessages::New
oauth_CocoaTweet::API::Interface::HttpBaseprotected
process(std::weak_ptr< CocoaTweet::OAuth::OAuth1 > _oauth)CocoaTweet::API::DirectMessages::New
CocoaTweet::API::Interface::HttpPost::process(std::weak_ptr< CocoaTweet::OAuth::OAuth1 > _oauth, std::function< void(const std::string &)> _callback)CocoaTweet::API::Interface::HttpPostprotectedvirtual
recipient(const std::string &_id)CocoaTweet::API::DirectMessages::New
url_CocoaTweet::API::Interface::HttpBaseprotected
- - - - diff --git a/help/html/classCocoaTweet_1_1API_1_1DirectMessages_1_1New.html b/help/html/classCocoaTweet_1_1API_1_1DirectMessages_1_1New.html deleted file mode 100644 index c03366d..0000000 --- a/help/html/classCocoaTweet_1_1API_1_1DirectMessages_1_1New.html +++ /dev/null @@ -1,228 +0,0 @@ - - - - - - - -CocoaTweet: CocoaTweet::API::DirectMessages::New Class Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
CocoaTweet::API::DirectMessages::New Class Reference
-
-
- -

class for using statuses/update endpoint - More...

- -

#include <new.h>

-
-Inheritance diagram for CocoaTweet::API::DirectMessages::New:
-
-
Inheritance graph
- - - - - -
[legend]
-
-Collaboration diagram for CocoaTweet::API::DirectMessages::New:
-
-
Collaboration graph
- - - - - -
[legend]
- - - - - - - - - - - -

-Public Member Functions

 New ()
 
void recipient (const std::string &_id)
 
void message (const std::string &_message)
 
void process (std::weak_ptr< CocoaTweet::OAuth::OAuth1 > _oauth)
 process request for endpoint More...
 
- - - - - - - - - - - - - - - - - -

-Additional Inherited Members

- Protected Member Functions inherited from CocoaTweet::API::Interface::HttpPost
void process (std::weak_ptr< CocoaTweet::OAuth::OAuth1 > _oauth, std::function< void(const std::string &)> _callback)
 Send HTTP/POST using OAuth object. More...
 
- Static Protected Member Functions inherited from CocoaTweet::API::Interface::HttpBase
static size_t curlCallback_ (char *_ptr, size_t _size, size_t _nmemb, std::string *_stream)
 
- Protected Attributes inherited from CocoaTweet::API::Interface::HttpBase
std::weak_ptr< CocoaTweet::OAuth::OAuth1oauth_
 
std::map< std::string, std::string > bodyParam_
 
std::string url_
 
std::string contentType_
 
-

Detailed Description

-

class for using statuses/update endpoint

-

Constructor & Destructor Documentation

- -

◆ New()

- -
-
- - - - - - - -
CocoaTweet::API::DirectMessages::New::New ()
-
- -
-
-

Member Function Documentation

- -

◆ message()

- -
-
- - - - - - - - -
void CocoaTweet::API::DirectMessages::New::message (const std::string & _message)
-
- -
-
- -

◆ process()

- -
-
- - - - - - - - -
void CocoaTweet::API::DirectMessages::New::process (std::weak_ptr< CocoaTweet::OAuth::OAuth1_oauth)
-
- -

process request for endpoint

-
Parameters
- - - -
[in]std::weak_ptr<CocoaTweet::OAuth::OAuth1>_oauth : pointer to oauth object
[out]CocoaTweet::API::Model::Tweet: request result
-
-
- -
-
- -

◆ recipient()

- -
-
- - - - - - - - -
void CocoaTweet::API::DirectMessages::New::recipient (const std::string & _id)
-
- -
-
-
The documentation for this class was generated from the following files: -
- - - - diff --git a/help/html/classCocoaTweet_1_1API_1_1DirectMessages_1_1New__coll__graph.map b/help/html/classCocoaTweet_1_1API_1_1DirectMessages_1_1New__coll__graph.map deleted file mode 100644 index 4139f83..0000000 --- a/help/html/classCocoaTweet_1_1API_1_1DirectMessages_1_1New__coll__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/help/html/classCocoaTweet_1_1API_1_1DirectMessages_1_1New__coll__graph.md5 b/help/html/classCocoaTweet_1_1API_1_1DirectMessages_1_1New__coll__graph.md5 deleted file mode 100644 index fd2ef16..0000000 --- a/help/html/classCocoaTweet_1_1API_1_1DirectMessages_1_1New__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -24bbe1ec4a9327219e9d566a3b5d06a3 \ No newline at end of file diff --git a/help/html/classCocoaTweet_1_1API_1_1DirectMessages_1_1New__coll__graph.png b/help/html/classCocoaTweet_1_1API_1_1DirectMessages_1_1New__coll__graph.png deleted file mode 100644 index 4efc083..0000000 Binary files a/help/html/classCocoaTweet_1_1API_1_1DirectMessages_1_1New__coll__graph.png and /dev/null differ diff --git a/help/html/classCocoaTweet_1_1API_1_1DirectMessages_1_1New__inherit__graph.map b/help/html/classCocoaTweet_1_1API_1_1DirectMessages_1_1New__inherit__graph.map deleted file mode 100644 index 4139f83..0000000 --- a/help/html/classCocoaTweet_1_1API_1_1DirectMessages_1_1New__inherit__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/help/html/classCocoaTweet_1_1API_1_1DirectMessages_1_1New__inherit__graph.md5 b/help/html/classCocoaTweet_1_1API_1_1DirectMessages_1_1New__inherit__graph.md5 deleted file mode 100644 index fd2ef16..0000000 --- a/help/html/classCocoaTweet_1_1API_1_1DirectMessages_1_1New__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -24bbe1ec4a9327219e9d566a3b5d06a3 \ No newline at end of file diff --git a/help/html/classCocoaTweet_1_1API_1_1DirectMessages_1_1New__inherit__graph.png b/help/html/classCocoaTweet_1_1API_1_1DirectMessages_1_1New__inherit__graph.png deleted file mode 100644 index 4efc083..0000000 Binary files a/help/html/classCocoaTweet_1_1API_1_1DirectMessages_1_1New__inherit__graph.png and /dev/null differ diff --git a/help/html/classCocoaTweet_1_1API_1_1Favorites_1_1Create-members.html b/help/html/classCocoaTweet_1_1API_1_1Favorites_1_1Create-members.html deleted file mode 100644 index b2fa3af..0000000 --- a/help/html/classCocoaTweet_1_1API_1_1Favorites_1_1Create-members.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
CocoaTweet::API::Favorites::Create Member List
-
-
- -

This is the complete list of members for CocoaTweet::API::Favorites::Create, including all inherited members.

- - - - - - - - - - -
bodyParam_CocoaTweet::API::Interface::HttpBaseprotected
contentType_CocoaTweet::API::Interface::HttpBaseprotected
Create()CocoaTweet::API::Favorites::Create
curlCallback_(char *_ptr, size_t _size, size_t _nmemb, std::string *_stream)CocoaTweet::API::Interface::HttpBaseinlineprotectedstatic
id(const std::string &_id)CocoaTweet::API::Favorites::Create
oauth_CocoaTweet::API::Interface::HttpBaseprotected
process(std::weak_ptr< CocoaTweet::OAuth::OAuth1 > _oauth)CocoaTweet::API::Favorites::Create
CocoaTweet::API::Interface::HttpPost::process(std::weak_ptr< CocoaTweet::OAuth::OAuth1 > _oauth, std::function< void(const std::string &)> _callback)CocoaTweet::API::Interface::HttpPostprotectedvirtual
url_CocoaTweet::API::Interface::HttpBaseprotected
- - - - diff --git a/help/html/classCocoaTweet_1_1API_1_1Favorites_1_1Create.html b/help/html/classCocoaTweet_1_1API_1_1Favorites_1_1Create.html deleted file mode 100644 index 48e9124..0000000 --- a/help/html/classCocoaTweet_1_1API_1_1Favorites_1_1Create.html +++ /dev/null @@ -1,193 +0,0 @@ - - - - - - - -CocoaTweet: CocoaTweet::API::Favorites::Create Class Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
CocoaTweet::API::Favorites::Create Class Reference
-
-
- -

#include <create.h>

-
-Inheritance diagram for CocoaTweet::API::Favorites::Create:
-
-
Inheritance graph
- - - - - -
[legend]
-
-Collaboration diagram for CocoaTweet::API::Favorites::Create:
-
-
Collaboration graph
- - - - - -
[legend]
- - - - - - - - -

-Public Member Functions

 Create ()
 
void id (const std::string &_id)
 
CocoaTweet::API::Model::Tweet process (std::weak_ptr< CocoaTweet::OAuth::OAuth1 > _oauth)
 
- - - - - - - - - - - - - - - - - -

-Additional Inherited Members

- Protected Member Functions inherited from CocoaTweet::API::Interface::HttpPost
void process (std::weak_ptr< CocoaTweet::OAuth::OAuth1 > _oauth, std::function< void(const std::string &)> _callback)
 Send HTTP/POST using OAuth object. More...
 
- Static Protected Member Functions inherited from CocoaTweet::API::Interface::HttpBase
static size_t curlCallback_ (char *_ptr, size_t _size, size_t _nmemb, std::string *_stream)
 
- Protected Attributes inherited from CocoaTweet::API::Interface::HttpBase
std::weak_ptr< CocoaTweet::OAuth::OAuth1oauth_
 
std::map< std::string, std::string > bodyParam_
 
std::string url_
 
std::string contentType_
 
-

Constructor & Destructor Documentation

- -

◆ Create()

- -
-
- - - - - - - -
CocoaTweet::API::Favorites::Create::Create ()
-
- -
-
-

Member Function Documentation

- -

◆ id()

- -
-
- - - - - - - - -
void CocoaTweet::API::Favorites::Create::id (const std::string & _id)
-
- -
-
- -

◆ process()

- -
-
- - - - - - - - -
CocoaTweet::API::Model::Tweet CocoaTweet::API::Favorites::Create::process (std::weak_ptr< CocoaTweet::OAuth::OAuth1_oauth)
-
- -
-
-
The documentation for this class was generated from the following files: -
- - - - diff --git a/help/html/classCocoaTweet_1_1API_1_1Favorites_1_1Create__coll__graph.map b/help/html/classCocoaTweet_1_1API_1_1Favorites_1_1Create__coll__graph.map deleted file mode 100644 index 4c53096..0000000 --- a/help/html/classCocoaTweet_1_1API_1_1Favorites_1_1Create__coll__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/help/html/classCocoaTweet_1_1API_1_1Favorites_1_1Create__coll__graph.md5 b/help/html/classCocoaTweet_1_1API_1_1Favorites_1_1Create__coll__graph.md5 deleted file mode 100644 index 6cf29d0..0000000 --- a/help/html/classCocoaTweet_1_1API_1_1Favorites_1_1Create__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -b2582d4e9d44b0fceca56033bfc252b2 \ No newline at end of file diff --git a/help/html/classCocoaTweet_1_1API_1_1Favorites_1_1Create__coll__graph.png b/help/html/classCocoaTweet_1_1API_1_1Favorites_1_1Create__coll__graph.png deleted file mode 100644 index 62bb1db..0000000 Binary files a/help/html/classCocoaTweet_1_1API_1_1Favorites_1_1Create__coll__graph.png and /dev/null differ diff --git a/help/html/classCocoaTweet_1_1API_1_1Favorites_1_1Create__inherit__graph.map b/help/html/classCocoaTweet_1_1API_1_1Favorites_1_1Create__inherit__graph.map deleted file mode 100644 index 4c53096..0000000 --- a/help/html/classCocoaTweet_1_1API_1_1Favorites_1_1Create__inherit__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/help/html/classCocoaTweet_1_1API_1_1Favorites_1_1Create__inherit__graph.md5 b/help/html/classCocoaTweet_1_1API_1_1Favorites_1_1Create__inherit__graph.md5 deleted file mode 100644 index 6cf29d0..0000000 --- a/help/html/classCocoaTweet_1_1API_1_1Favorites_1_1Create__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -b2582d4e9d44b0fceca56033bfc252b2 \ No newline at end of file diff --git a/help/html/classCocoaTweet_1_1API_1_1Favorites_1_1Create__inherit__graph.png b/help/html/classCocoaTweet_1_1API_1_1Favorites_1_1Create__inherit__graph.png deleted file mode 100644 index 62bb1db..0000000 Binary files a/help/html/classCocoaTweet_1_1API_1_1Favorites_1_1Create__inherit__graph.png and /dev/null differ diff --git a/help/html/classCocoaTweet_1_1API_1_1Favorites_1_1Destroy-members.html b/help/html/classCocoaTweet_1_1API_1_1Favorites_1_1Destroy-members.html deleted file mode 100644 index 1e3dbff..0000000 --- a/help/html/classCocoaTweet_1_1API_1_1Favorites_1_1Destroy-members.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
CocoaTweet::API::Favorites::Destroy Member List
-
-
- -

This is the complete list of members for CocoaTweet::API::Favorites::Destroy, including all inherited members.

- - - - - - - - - - -
bodyParam_CocoaTweet::API::Interface::HttpBaseprotected
contentType_CocoaTweet::API::Interface::HttpBaseprotected
curlCallback_(char *_ptr, size_t _size, size_t _nmemb, std::string *_stream)CocoaTweet::API::Interface::HttpBaseinlineprotectedstatic
Destroy()CocoaTweet::API::Favorites::Destroy
id(const std::string &_id)CocoaTweet::API::Favorites::Destroy
oauth_CocoaTweet::API::Interface::HttpBaseprotected
process(std::weak_ptr< CocoaTweet::OAuth::OAuth1 > _oauth)CocoaTweet::API::Favorites::Destroy
CocoaTweet::API::Interface::HttpPost::process(std::weak_ptr< CocoaTweet::OAuth::OAuth1 > _oauth, std::function< void(const std::string &)> _callback)CocoaTweet::API::Interface::HttpPostprotectedvirtual
url_CocoaTweet::API::Interface::HttpBaseprotected
- - - - diff --git a/help/html/classCocoaTweet_1_1API_1_1Favorites_1_1Destroy.html b/help/html/classCocoaTweet_1_1API_1_1Favorites_1_1Destroy.html deleted file mode 100644 index 1b5309f..0000000 --- a/help/html/classCocoaTweet_1_1API_1_1Favorites_1_1Destroy.html +++ /dev/null @@ -1,193 +0,0 @@ - - - - - - - -CocoaTweet: CocoaTweet::API::Favorites::Destroy Class Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
CocoaTweet::API::Favorites::Destroy Class Reference
-
-
- -

#include <destroy.h>

-
-Inheritance diagram for CocoaTweet::API::Favorites::Destroy:
-
-
Inheritance graph
- - - - - -
[legend]
-
-Collaboration diagram for CocoaTweet::API::Favorites::Destroy:
-
-
Collaboration graph
- - - - - -
[legend]
- - - - - - - - -

-Public Member Functions

 Destroy ()
 
void id (const std::string &_id)
 
CocoaTweet::API::Model::Tweet process (std::weak_ptr< CocoaTweet::OAuth::OAuth1 > _oauth)
 
- - - - - - - - - - - - - - - - - -

-Additional Inherited Members

- Protected Member Functions inherited from CocoaTweet::API::Interface::HttpPost
void process (std::weak_ptr< CocoaTweet::OAuth::OAuth1 > _oauth, std::function< void(const std::string &)> _callback)
 Send HTTP/POST using OAuth object. More...
 
- Static Protected Member Functions inherited from CocoaTweet::API::Interface::HttpBase
static size_t curlCallback_ (char *_ptr, size_t _size, size_t _nmemb, std::string *_stream)
 
- Protected Attributes inherited from CocoaTweet::API::Interface::HttpBase
std::weak_ptr< CocoaTweet::OAuth::OAuth1oauth_
 
std::map< std::string, std::string > bodyParam_
 
std::string url_
 
std::string contentType_
 
-

Constructor & Destructor Documentation

- -

◆ Destroy()

- -
-
- - - - - - - -
CocoaTweet::API::Favorites::Destroy::Destroy ()
-
- -
-
-

Member Function Documentation

- -

◆ id()

- -
-
- - - - - - - - -
void CocoaTweet::API::Favorites::Destroy::id (const std::string & _id)
-
- -
-
- -

◆ process()

- -
-
- - - - - - - - -
CocoaTweet::API::Model::Tweet CocoaTweet::API::Favorites::Destroy::process (std::weak_ptr< CocoaTweet::OAuth::OAuth1_oauth)
-
- -
-
-
The documentation for this class was generated from the following files: -
- - - - diff --git a/help/html/classCocoaTweet_1_1API_1_1Favorites_1_1Destroy__coll__graph.map b/help/html/classCocoaTweet_1_1API_1_1Favorites_1_1Destroy__coll__graph.map deleted file mode 100644 index 4c990c3..0000000 --- a/help/html/classCocoaTweet_1_1API_1_1Favorites_1_1Destroy__coll__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/help/html/classCocoaTweet_1_1API_1_1Favorites_1_1Destroy__coll__graph.md5 b/help/html/classCocoaTweet_1_1API_1_1Favorites_1_1Destroy__coll__graph.md5 deleted file mode 100644 index b0d6055..0000000 --- a/help/html/classCocoaTweet_1_1API_1_1Favorites_1_1Destroy__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -896ae5ef8c0f018a5a106ec34dbe28e0 \ No newline at end of file diff --git a/help/html/classCocoaTweet_1_1API_1_1Favorites_1_1Destroy__coll__graph.png b/help/html/classCocoaTweet_1_1API_1_1Favorites_1_1Destroy__coll__graph.png deleted file mode 100644 index c82a29f..0000000 Binary files a/help/html/classCocoaTweet_1_1API_1_1Favorites_1_1Destroy__coll__graph.png and /dev/null differ diff --git a/help/html/classCocoaTweet_1_1API_1_1Favorites_1_1Destroy__inherit__graph.map b/help/html/classCocoaTweet_1_1API_1_1Favorites_1_1Destroy__inherit__graph.map deleted file mode 100644 index 4c990c3..0000000 --- a/help/html/classCocoaTweet_1_1API_1_1Favorites_1_1Destroy__inherit__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/help/html/classCocoaTweet_1_1API_1_1Favorites_1_1Destroy__inherit__graph.md5 b/help/html/classCocoaTweet_1_1API_1_1Favorites_1_1Destroy__inherit__graph.md5 deleted file mode 100644 index b0d6055..0000000 --- a/help/html/classCocoaTweet_1_1API_1_1Favorites_1_1Destroy__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -896ae5ef8c0f018a5a106ec34dbe28e0 \ No newline at end of file diff --git a/help/html/classCocoaTweet_1_1API_1_1Favorites_1_1Destroy__inherit__graph.png b/help/html/classCocoaTweet_1_1API_1_1Favorites_1_1Destroy__inherit__graph.png deleted file mode 100644 index c82a29f..0000000 Binary files a/help/html/classCocoaTweet_1_1API_1_1Favorites_1_1Destroy__inherit__graph.png and /dev/null differ diff --git a/help/html/classCocoaTweet_1_1API_1_1Favorites_1_1Favorite-members.html b/help/html/classCocoaTweet_1_1API_1_1Favorites_1_1Favorite-members.html deleted file mode 100644 index 973ba98..0000000 --- a/help/html/classCocoaTweet_1_1API_1_1Favorites_1_1Favorite-members.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
CocoaTweet::API::Favorites::Favorite Member List
-
-
- -

This is the complete list of members for CocoaTweet::API::Favorites::Favorite, including all inherited members.

- - - - - - -
create(const std::string &_id) constCocoaTweet::API::Favorites::Favorite
destroy(const std::string &_id) constCocoaTweet::API::Favorites::Favorite
Favorite()=defaultCocoaTweet::API::Favorites::Favorite
Favorite(std::shared_ptr< CocoaTweet::OAuth::OAuth1 > _oauth)CocoaTweet::API::Favorites::Favorite
oauth_CocoaTweet::API::groupInterfaceprotected
- - - - diff --git a/help/html/classCocoaTweet_1_1API_1_1Favorites_1_1Favorite.html b/help/html/classCocoaTweet_1_1API_1_1Favorites_1_1Favorite.html deleted file mode 100644 index 6340711..0000000 --- a/help/html/classCocoaTweet_1_1API_1_1Favorites_1_1Favorite.html +++ /dev/null @@ -1,206 +0,0 @@ - - - - - - - -CocoaTweet: CocoaTweet::API::Favorites::Favorite Class Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
CocoaTweet::API::Favorites::Favorite Class Reference
-
-
- -

#include <favorite.h>

-
-Inheritance diagram for CocoaTweet::API::Favorites::Favorite:
-
-
Inheritance graph
- - - - -
[legend]
-
-Collaboration diagram for CocoaTweet::API::Favorites::Favorite:
-
-
Collaboration graph
- - - - -
[legend]
- - - - - - - - - - -

-Public Member Functions

 Favorite ()=default
 
 Favorite (std::shared_ptr< CocoaTweet::OAuth::OAuth1 > _oauth)
 
CocoaTweet::API::Model::Tweet create (const std::string &_id) const
 
CocoaTweet::API::Model::Tweet destroy (const std::string &_id) const
 
- - - - -

-Additional Inherited Members

- Protected Attributes inherited from CocoaTweet::API::groupInterface
std::weak_ptr< CocoaTweet::OAuth::OAuth1oauth_
 
-

Constructor & Destructor Documentation

- -

◆ Favorite() [1/2]

- -
-
- - - - - -
- - - - - - - -
CocoaTweet::API::Favorites::Favorite::Favorite ()
-
-default
-
- -
-
- -

◆ Favorite() [2/2]

- -
-
- - - - - - - - -
CocoaTweet::API::Favorites::Favorite::Favorite (std::shared_ptr< CocoaTweet::OAuth::OAuth1_oauth)
-
- -
-
-

Member Function Documentation

- -

◆ create()

- -
-
- - - - - - - - -
CocoaTweet::API::Model::Tweet CocoaTweet::API::Favorites::Favorite::create (const std::string & _id) const
-
- -
-
- -

◆ destroy()

- -
-
- - - - - - - - -
CocoaTweet::API::Model::Tweet CocoaTweet::API::Favorites::Favorite::destroy (const std::string & _id) const
-
- -
-
-
The documentation for this class was generated from the following files: -
- - - - diff --git a/help/html/classCocoaTweet_1_1API_1_1Favorites_1_1Favorite__coll__graph.map b/help/html/classCocoaTweet_1_1API_1_1Favorites_1_1Favorite__coll__graph.map deleted file mode 100644 index f2fe692..0000000 --- a/help/html/classCocoaTweet_1_1API_1_1Favorites_1_1Favorite__coll__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/help/html/classCocoaTweet_1_1API_1_1Favorites_1_1Favorite__coll__graph.md5 b/help/html/classCocoaTweet_1_1API_1_1Favorites_1_1Favorite__coll__graph.md5 deleted file mode 100644 index f8e2a9d..0000000 --- a/help/html/classCocoaTweet_1_1API_1_1Favorites_1_1Favorite__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -5ecaf77e7aea97c29855969aba5261b7 \ No newline at end of file diff --git a/help/html/classCocoaTweet_1_1API_1_1Favorites_1_1Favorite__coll__graph.png b/help/html/classCocoaTweet_1_1API_1_1Favorites_1_1Favorite__coll__graph.png deleted file mode 100644 index 9489f9c..0000000 Binary files a/help/html/classCocoaTweet_1_1API_1_1Favorites_1_1Favorite__coll__graph.png and /dev/null differ diff --git a/help/html/classCocoaTweet_1_1API_1_1Favorites_1_1Favorite__inherit__graph.map b/help/html/classCocoaTweet_1_1API_1_1Favorites_1_1Favorite__inherit__graph.map deleted file mode 100644 index f2fe692..0000000 --- a/help/html/classCocoaTweet_1_1API_1_1Favorites_1_1Favorite__inherit__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/help/html/classCocoaTweet_1_1API_1_1Favorites_1_1Favorite__inherit__graph.md5 b/help/html/classCocoaTweet_1_1API_1_1Favorites_1_1Favorite__inherit__graph.md5 deleted file mode 100644 index f8e2a9d..0000000 --- a/help/html/classCocoaTweet_1_1API_1_1Favorites_1_1Favorite__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -5ecaf77e7aea97c29855969aba5261b7 \ No newline at end of file diff --git a/help/html/classCocoaTweet_1_1API_1_1Favorites_1_1Favorite__inherit__graph.png b/help/html/classCocoaTweet_1_1API_1_1Favorites_1_1Favorite__inherit__graph.png deleted file mode 100644 index 9489f9c..0000000 Binary files a/help/html/classCocoaTweet_1_1API_1_1Favorites_1_1Favorite__inherit__graph.png and /dev/null differ diff --git a/help/html/classCocoaTweet_1_1API_1_1Interface_1_1HttpBase-members.html b/help/html/classCocoaTweet_1_1API_1_1Interface_1_1HttpBase-members.html deleted file mode 100644 index 807eb81..0000000 --- a/help/html/classCocoaTweet_1_1API_1_1Interface_1_1HttpBase-members.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
CocoaTweet::API::Interface::HttpBase Member List
-
-
- -

This is the complete list of members for CocoaTweet::API::Interface::HttpBase, including all inherited members.

- - - - - - - -
bodyParam_CocoaTweet::API::Interface::HttpBaseprotected
contentType_CocoaTweet::API::Interface::HttpBaseprotected
curlCallback_(char *_ptr, size_t _size, size_t _nmemb, std::string *_stream)CocoaTweet::API::Interface::HttpBaseinlineprotectedstatic
oauth_CocoaTweet::API::Interface::HttpBaseprotected
process(std::weak_ptr< CocoaTweet::OAuth::OAuth1 > _oauth, std::function< void(const std::string &)> _callback)=0CocoaTweet::API::Interface::HttpBaseprotectedpure virtual
url_CocoaTweet::API::Interface::HttpBaseprotected
- - - - diff --git a/help/html/classCocoaTweet_1_1API_1_1Interface_1_1HttpBase.html b/help/html/classCocoaTweet_1_1API_1_1Interface_1_1HttpBase.html deleted file mode 100644 index ae3a119..0000000 --- a/help/html/classCocoaTweet_1_1API_1_1Interface_1_1HttpBase.html +++ /dev/null @@ -1,307 +0,0 @@ - - - - - - - -CocoaTweet: CocoaTweet::API::Interface::HttpBase Class Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
CocoaTweet::API::Interface::HttpBase Class Referenceabstract
-
-
- -

#include <httpBase.h>

-
-Inheritance diagram for CocoaTweet::API::Interface::HttpBase:
-
-
Inheritance graph
- - - - - - - - - - - - - - -
[legend]
- - - - -

-Protected Member Functions

virtual void process (std::weak_ptr< CocoaTweet::OAuth::OAuth1 > _oauth, std::function< void(const std::string &)> _callback)=0
 
- - - -

-Static Protected Member Functions

static size_t curlCallback_ (char *_ptr, size_t _size, size_t _nmemb, std::string *_stream)
 
- - - - - - - - - -

-Protected Attributes

std::weak_ptr< CocoaTweet::OAuth::OAuth1oauth_
 
std::map< std::string, std::string > bodyParam_
 
std::string url_
 
std::string contentType_
 
-

Member Function Documentation

- -

◆ curlCallback_()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
static size_t CocoaTweet::API::Interface::HttpBase::curlCallback_ (char * _ptr,
size_t _size,
size_t _nmemb,
std::string * _stream 
)
-
-inlinestaticprotected
-
- -
-
- -

◆ process()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
virtual void CocoaTweet::API::Interface::HttpBase::process (std::weak_ptr< CocoaTweet::OAuth::OAuth1_oauth,
std::function< void(const std::string &)> _callback 
)
-
-protectedpure virtual
-
-
-

Member Data Documentation

- -

◆ bodyParam_

- -
-
- - - - - -
- - - - -
std::map<std::string, std::string> CocoaTweet::API::Interface::HttpBase::bodyParam_
-
-protected
-
- -
-
- -

◆ contentType_

- -
-
- - - - - -
- - - - -
std::string CocoaTweet::API::Interface::HttpBase::contentType_
-
-protected
-
- -
-
- -

◆ oauth_

- -
-
- - - - - -
- - - - -
std::weak_ptr<CocoaTweet::OAuth::OAuth1> CocoaTweet::API::Interface::HttpBase::oauth_
-
-protected
-
- -
-
- -

◆ url_

- -
-
- - - - - -
- - - - -
std::string CocoaTweet::API::Interface::HttpBase::url_
-
-protected
-
- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/help/html/classCocoaTweet_1_1API_1_1Interface_1_1HttpBase__inherit__graph.map b/help/html/classCocoaTweet_1_1API_1_1Interface_1_1HttpBase__inherit__graph.map deleted file mode 100644 index 6256834..0000000 --- a/help/html/classCocoaTweet_1_1API_1_1Interface_1_1HttpBase__inherit__graph.map +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/help/html/classCocoaTweet_1_1API_1_1Interface_1_1HttpBase__inherit__graph.md5 b/help/html/classCocoaTweet_1_1API_1_1Interface_1_1HttpBase__inherit__graph.md5 deleted file mode 100644 index 276901d..0000000 --- a/help/html/classCocoaTweet_1_1API_1_1Interface_1_1HttpBase__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -2c88875be437013441ff7dedcfc5953e \ No newline at end of file diff --git a/help/html/classCocoaTweet_1_1API_1_1Interface_1_1HttpBase__inherit__graph.png b/help/html/classCocoaTweet_1_1API_1_1Interface_1_1HttpBase__inherit__graph.png deleted file mode 100644 index 348356e..0000000 Binary files a/help/html/classCocoaTweet_1_1API_1_1Interface_1_1HttpBase__inherit__graph.png and /dev/null differ diff --git a/help/html/classCocoaTweet_1_1API_1_1Interface_1_1HttpGet-members.html b/help/html/classCocoaTweet_1_1API_1_1Interface_1_1HttpGet-members.html deleted file mode 100644 index 40fd70f..0000000 --- a/help/html/classCocoaTweet_1_1API_1_1Interface_1_1HttpGet-members.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
CocoaTweet::API::Interface::HttpGet Member List
-
-
- -

This is the complete list of members for CocoaTweet::API::Interface::HttpGet, including all inherited members.

- - - - - - - -
bodyParam_CocoaTweet::API::Interface::HttpBaseprotected
contentType_CocoaTweet::API::Interface::HttpBaseprotected
curlCallback_(char *_ptr, size_t _size, size_t _nmemb, std::string *_stream)CocoaTweet::API::Interface::HttpBaseinlineprotectedstatic
oauth_CocoaTweet::API::Interface::HttpBaseprotected
process(std::weak_ptr< CocoaTweet::OAuth::OAuth1 > _oauth, std::function< void(const std::string &)> _callback)CocoaTweet::API::Interface::HttpGetprotectedvirtual
url_CocoaTweet::API::Interface::HttpBaseprotected
- - - - diff --git a/help/html/classCocoaTweet_1_1API_1_1Interface_1_1HttpGet.html b/help/html/classCocoaTweet_1_1API_1_1Interface_1_1HttpGet.html deleted file mode 100644 index 7fc6843..0000000 --- a/help/html/classCocoaTweet_1_1API_1_1Interface_1_1HttpGet.html +++ /dev/null @@ -1,183 +0,0 @@ - - - - - - - -CocoaTweet: CocoaTweet::API::Interface::HttpGet Class Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
CocoaTweet::API::Interface::HttpGet Class Reference
-
-
- -

class for Send request with POST method - More...

- -

#include <httpGet.h>

-
-Inheritance diagram for CocoaTweet::API::Interface::HttpGet:
-
-
Inheritance graph
- - - - - -
[legend]
-
-Collaboration diagram for CocoaTweet::API::Interface::HttpGet:
-
-
Collaboration graph
- - - - -
[legend]
- - - - - -

-Protected Member Functions

void process (std::weak_ptr< CocoaTweet::OAuth::OAuth1 > _oauth, std::function< void(const std::string &)> _callback)
 Send HTTP/POST using OAuth object. More...
 
- - - - - - - - - - - - - -

-Additional Inherited Members

- Static Protected Member Functions inherited from CocoaTweet::API::Interface::HttpBase
static size_t curlCallback_ (char *_ptr, size_t _size, size_t _nmemb, std::string *_stream)
 
- Protected Attributes inherited from CocoaTweet::API::Interface::HttpBase
std::weak_ptr< CocoaTweet::OAuth::OAuth1oauth_
 
std::map< std::string, std::string > bodyParam_
 
std::string url_
 
std::string contentType_
 
-

Detailed Description

-

class for Send request with POST method

-

Member Function Documentation

- -

◆ process()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void CocoaTweet::API::Interface::HttpGet::process (std::weak_ptr< CocoaTweet::OAuth::OAuth1_oauth,
std::function< void(const std::string &)> _callback 
)
-
-protectedvirtual
-
- -

Send HTTP/POST using OAuth object.

-
Parameters
- - - -
[in]std::weak_ptr<CocoaTweet::OAuth::OAuth1>_oauth : pointer to OAuth object to authenticate
[in]std::function<void(constunsigned int, const std::string&)> _callback : callback method for processing to response
-
-
- -

Implements CocoaTweet::API::Interface::HttpBase.

- -
-
-
The documentation for this class was generated from the following files: -
- - - - diff --git a/help/html/classCocoaTweet_1_1API_1_1Interface_1_1HttpGet__coll__graph.map b/help/html/classCocoaTweet_1_1API_1_1Interface_1_1HttpGet__coll__graph.map deleted file mode 100644 index e12dfeb..0000000 --- a/help/html/classCocoaTweet_1_1API_1_1Interface_1_1HttpGet__coll__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/help/html/classCocoaTweet_1_1API_1_1Interface_1_1HttpGet__coll__graph.md5 b/help/html/classCocoaTweet_1_1API_1_1Interface_1_1HttpGet__coll__graph.md5 deleted file mode 100644 index c14c7a5..0000000 --- a/help/html/classCocoaTweet_1_1API_1_1Interface_1_1HttpGet__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -c8ac0579e016fad38f83081ff6bd19de \ No newline at end of file diff --git a/help/html/classCocoaTweet_1_1API_1_1Interface_1_1HttpGet__coll__graph.png b/help/html/classCocoaTweet_1_1API_1_1Interface_1_1HttpGet__coll__graph.png deleted file mode 100644 index 04e1386..0000000 Binary files a/help/html/classCocoaTweet_1_1API_1_1Interface_1_1HttpGet__coll__graph.png and /dev/null differ diff --git a/help/html/classCocoaTweet_1_1API_1_1Interface_1_1HttpGet__inherit__graph.map b/help/html/classCocoaTweet_1_1API_1_1Interface_1_1HttpGet__inherit__graph.map deleted file mode 100644 index ba265b9..0000000 --- a/help/html/classCocoaTweet_1_1API_1_1Interface_1_1HttpGet__inherit__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/help/html/classCocoaTweet_1_1API_1_1Interface_1_1HttpGet__inherit__graph.md5 b/help/html/classCocoaTweet_1_1API_1_1Interface_1_1HttpGet__inherit__graph.md5 deleted file mode 100644 index e007db9..0000000 --- a/help/html/classCocoaTweet_1_1API_1_1Interface_1_1HttpGet__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -914795b6a1072a898bdfd3d5763a371b \ No newline at end of file diff --git a/help/html/classCocoaTweet_1_1API_1_1Interface_1_1HttpGet__inherit__graph.png b/help/html/classCocoaTweet_1_1API_1_1Interface_1_1HttpGet__inherit__graph.png deleted file mode 100644 index 08a6ae3..0000000 Binary files a/help/html/classCocoaTweet_1_1API_1_1Interface_1_1HttpGet__inherit__graph.png and /dev/null differ diff --git a/help/html/classCocoaTweet_1_1API_1_1Interface_1_1HttpPost-members.html b/help/html/classCocoaTweet_1_1API_1_1Interface_1_1HttpPost-members.html deleted file mode 100644 index 21c93f8..0000000 --- a/help/html/classCocoaTweet_1_1API_1_1Interface_1_1HttpPost-members.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
CocoaTweet::API::Interface::HttpPost Member List
-
-
- -

This is the complete list of members for CocoaTweet::API::Interface::HttpPost, including all inherited members.

- - - - - - - -
bodyParam_CocoaTweet::API::Interface::HttpBaseprotected
contentType_CocoaTweet::API::Interface::HttpBaseprotected
curlCallback_(char *_ptr, size_t _size, size_t _nmemb, std::string *_stream)CocoaTweet::API::Interface::HttpBaseinlineprotectedstatic
oauth_CocoaTweet::API::Interface::HttpBaseprotected
process(std::weak_ptr< CocoaTweet::OAuth::OAuth1 > _oauth, std::function< void(const std::string &)> _callback)CocoaTweet::API::Interface::HttpPostprotectedvirtual
url_CocoaTweet::API::Interface::HttpBaseprotected
- - - - diff --git a/help/html/classCocoaTweet_1_1API_1_1Interface_1_1HttpPost.html b/help/html/classCocoaTweet_1_1API_1_1Interface_1_1HttpPost.html deleted file mode 100644 index c0a91f4..0000000 --- a/help/html/classCocoaTweet_1_1API_1_1Interface_1_1HttpPost.html +++ /dev/null @@ -1,190 +0,0 @@ - - - - - - - -CocoaTweet: CocoaTweet::API::Interface::HttpPost Class Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
CocoaTweet::API::Interface::HttpPost Class Reference
-
-
- -

class for Send request with POST method - More...

- -

#include <httpPost.h>

-
-Inheritance diagram for CocoaTweet::API::Interface::HttpPost:
-
-
Inheritance graph
- - - - - - - - - - - - -
[legend]
-
-Collaboration diagram for CocoaTweet::API::Interface::HttpPost:
-
-
Collaboration graph
- - - - -
[legend]
- - - - - -

-Protected Member Functions

void process (std::weak_ptr< CocoaTweet::OAuth::OAuth1 > _oauth, std::function< void(const std::string &)> _callback)
 Send HTTP/POST using OAuth object. More...
 
- - - - - - - - - - - - - -

-Additional Inherited Members

- Static Protected Member Functions inherited from CocoaTweet::API::Interface::HttpBase
static size_t curlCallback_ (char *_ptr, size_t _size, size_t _nmemb, std::string *_stream)
 
- Protected Attributes inherited from CocoaTweet::API::Interface::HttpBase
std::weak_ptr< CocoaTweet::OAuth::OAuth1oauth_
 
std::map< std::string, std::string > bodyParam_
 
std::string url_
 
std::string contentType_
 
-

Detailed Description

-

class for Send request with POST method

-

Member Function Documentation

- -

◆ process()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void CocoaTweet::API::Interface::HttpPost::process (std::weak_ptr< CocoaTweet::OAuth::OAuth1_oauth,
std::function< void(const std::string &)> _callback 
)
-
-protectedvirtual
-
- -

Send HTTP/POST using OAuth object.

-
Parameters
- - - -
[in]std::weak_ptr<CocoaTweet::OAuth::OAuth1>_oauth : pointer to OAuth object to authenticate
[in]std::function<void(constunsigned int, const std::string&)> _callback : callback method for processing to response
-
-
- -

Implements CocoaTweet::API::Interface::HttpBase.

- -
-
-
The documentation for this class was generated from the following files: -
- - - - diff --git a/help/html/classCocoaTweet_1_1API_1_1Interface_1_1HttpPost__coll__graph.map b/help/html/classCocoaTweet_1_1API_1_1Interface_1_1HttpPost__coll__graph.map deleted file mode 100644 index 1203bbd..0000000 --- a/help/html/classCocoaTweet_1_1API_1_1Interface_1_1HttpPost__coll__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/help/html/classCocoaTweet_1_1API_1_1Interface_1_1HttpPost__coll__graph.md5 b/help/html/classCocoaTweet_1_1API_1_1Interface_1_1HttpPost__coll__graph.md5 deleted file mode 100644 index 53b3dd4..0000000 --- a/help/html/classCocoaTweet_1_1API_1_1Interface_1_1HttpPost__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -9cba2574fa3084ac8dfc591738b990aa \ No newline at end of file diff --git a/help/html/classCocoaTweet_1_1API_1_1Interface_1_1HttpPost__coll__graph.png b/help/html/classCocoaTweet_1_1API_1_1Interface_1_1HttpPost__coll__graph.png deleted file mode 100644 index 3fa579a..0000000 Binary files a/help/html/classCocoaTweet_1_1API_1_1Interface_1_1HttpPost__coll__graph.png and /dev/null differ diff --git a/help/html/classCocoaTweet_1_1API_1_1Interface_1_1HttpPost__inherit__graph.map b/help/html/classCocoaTweet_1_1API_1_1Interface_1_1HttpPost__inherit__graph.map deleted file mode 100644 index 2629250..0000000 --- a/help/html/classCocoaTweet_1_1API_1_1Interface_1_1HttpPost__inherit__graph.map +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/help/html/classCocoaTweet_1_1API_1_1Interface_1_1HttpPost__inherit__graph.md5 b/help/html/classCocoaTweet_1_1API_1_1Interface_1_1HttpPost__inherit__graph.md5 deleted file mode 100644 index 577fb2e..0000000 --- a/help/html/classCocoaTweet_1_1API_1_1Interface_1_1HttpPost__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -876008ed2e45f83bedd1d71f13f728b3 \ No newline at end of file diff --git a/help/html/classCocoaTweet_1_1API_1_1Interface_1_1HttpPost__inherit__graph.png b/help/html/classCocoaTweet_1_1API_1_1Interface_1_1HttpPost__inherit__graph.png deleted file mode 100644 index 6d069a4..0000000 Binary files a/help/html/classCocoaTweet_1_1API_1_1Interface_1_1HttpPost__inherit__graph.png and /dev/null differ diff --git a/help/html/classCocoaTweet_1_1API_1_1Medias_1_1Media-members.html b/help/html/classCocoaTweet_1_1API_1_1Medias_1_1Media-members.html deleted file mode 100644 index 87892e8..0000000 --- a/help/html/classCocoaTweet_1_1API_1_1Medias_1_1Media-members.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
CocoaTweet::API::Medias::Media Member List
-
-
- -

This is the complete list of members for CocoaTweet::API::Medias::Media, including all inherited members.

- - - - - -
Media()=defaultCocoaTweet::API::Medias::Media
Media(std::shared_ptr< CocoaTweet::OAuth::OAuth1 > _oauth)CocoaTweet::API::Medias::Media
oauth_CocoaTweet::API::groupInterfaceprotected
upload(const std::string &_file) constCocoaTweet::API::Medias::Media
- - - - diff --git a/help/html/classCocoaTweet_1_1API_1_1Medias_1_1Media.html b/help/html/classCocoaTweet_1_1API_1_1Medias_1_1Media.html deleted file mode 100644 index 34d6286..0000000 --- a/help/html/classCocoaTweet_1_1API_1_1Medias_1_1Media.html +++ /dev/null @@ -1,203 +0,0 @@ - - - - - - - -CocoaTweet: CocoaTweet::API::Medias::Media Class Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
CocoaTweet::API::Medias::Media Class Reference
-
-
- -

Entory point for statuses/*. - More...

- -

#include <media.h>

-
-Inheritance diagram for CocoaTweet::API::Medias::Media:
-
-
Inheritance graph
- - - - -
[legend]
-
-Collaboration diagram for CocoaTweet::API::Medias::Media:
-
-
Collaboration graph
- - - - -
[legend]
- - - - - - - - - - -

-Public Member Functions

 Media ()=default
 primary constructor to allow for create NON-INITIALIZED object More...
 
 Media (std::shared_ptr< CocoaTweet::OAuth::OAuth1 > _oauth)
 constructor which finally should to be called. More...
 
CocoaTweet::API::Model::MediaStore upload (const std::string &_file) const
 
- - - - -

-Additional Inherited Members

- Protected Attributes inherited from CocoaTweet::API::groupInterface
std::weak_ptr< CocoaTweet::OAuth::OAuth1oauth_
 
-

Detailed Description

-

Entory point for statuses/*.

-

Constructor & Destructor Documentation

- -

◆ Media() [1/2]

- -
-
- - - - - -
- - - - - - - -
CocoaTweet::API::Medias::Media::Media ()
-
-default
-
- -

primary constructor to allow for create NON-INITIALIZED object

- -
-
- -

◆ Media() [2/2]

- -
-
- - - - - - - - -
CocoaTweet::API::Medias::Media::Media (std::shared_ptr< CocoaTweet::OAuth::OAuth1_oauth)
-
- -

constructor which finally should to be called.

-
Parameters
- - -
[in]std::shared_ptr<CocoaTweet::OAuth::OAuth1>: pointer to OAuth object
-
-
- -
-
-

Member Function Documentation

- -

◆ upload()

- -
-
- - - - - - - - -
CocoaTweet::API::Model::MediaStore CocoaTweet::API::Medias::Media::upload (const std::string & _file) const
-
- -
-
-
The documentation for this class was generated from the following files: -
- - - - diff --git a/help/html/classCocoaTweet_1_1API_1_1Medias_1_1Media__coll__graph.map b/help/html/classCocoaTweet_1_1API_1_1Medias_1_1Media__coll__graph.map deleted file mode 100644 index ac92b35..0000000 --- a/help/html/classCocoaTweet_1_1API_1_1Medias_1_1Media__coll__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/help/html/classCocoaTweet_1_1API_1_1Medias_1_1Media__coll__graph.md5 b/help/html/classCocoaTweet_1_1API_1_1Medias_1_1Media__coll__graph.md5 deleted file mode 100644 index 0d71c49..0000000 --- a/help/html/classCocoaTweet_1_1API_1_1Medias_1_1Media__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -a96161298ed6eee5306d99f3fd6f5b64 \ No newline at end of file diff --git a/help/html/classCocoaTweet_1_1API_1_1Medias_1_1Media__coll__graph.png b/help/html/classCocoaTweet_1_1API_1_1Medias_1_1Media__coll__graph.png deleted file mode 100644 index b0f5ae0..0000000 Binary files a/help/html/classCocoaTweet_1_1API_1_1Medias_1_1Media__coll__graph.png and /dev/null differ diff --git a/help/html/classCocoaTweet_1_1API_1_1Medias_1_1Media__inherit__graph.map b/help/html/classCocoaTweet_1_1API_1_1Medias_1_1Media__inherit__graph.map deleted file mode 100644 index ac92b35..0000000 --- a/help/html/classCocoaTweet_1_1API_1_1Medias_1_1Media__inherit__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/help/html/classCocoaTweet_1_1API_1_1Medias_1_1Media__inherit__graph.md5 b/help/html/classCocoaTweet_1_1API_1_1Medias_1_1Media__inherit__graph.md5 deleted file mode 100644 index 0d71c49..0000000 --- a/help/html/classCocoaTweet_1_1API_1_1Medias_1_1Media__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -a96161298ed6eee5306d99f3fd6f5b64 \ No newline at end of file diff --git a/help/html/classCocoaTweet_1_1API_1_1Medias_1_1Media__inherit__graph.png b/help/html/classCocoaTweet_1_1API_1_1Medias_1_1Media__inherit__graph.png deleted file mode 100644 index b0f5ae0..0000000 Binary files a/help/html/classCocoaTweet_1_1API_1_1Medias_1_1Media__inherit__graph.png and /dev/null differ diff --git a/help/html/classCocoaTweet_1_1API_1_1Medias_1_1Upload-members.html b/help/html/classCocoaTweet_1_1API_1_1Medias_1_1Upload-members.html deleted file mode 100644 index 65edf1a..0000000 --- a/help/html/classCocoaTweet_1_1API_1_1Medias_1_1Upload-members.html +++ /dev/null @@ -1,93 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
CocoaTweet::API::Medias::Upload Member List
-
-
- -

This is the complete list of members for CocoaTweet::API::Medias::Upload, including all inherited members.

- - - - - - - - - - - -
bodyParam_CocoaTweet::API::Interface::HttpBaseprotected
contentType_CocoaTweet::API::Interface::HttpBaseprotected
curlCallback_(char *_ptr, size_t _size, size_t _nmemb, std::string *_stream)CocoaTweet::API::Interface::HttpBaseinlineprotectedstatic
media(const std::string &_media)CocoaTweet::API::Medias::Upload
mediaId(const std::string &_mediaId)CocoaTweet::API::Medias::Upload
oauth_CocoaTweet::API::Interface::HttpBaseprotected
process(std::weak_ptr< CocoaTweet::OAuth::OAuth1 > _oauth)CocoaTweet::API::Medias::Upload
CocoaTweet::API::Interface::HttpPost::process(std::weak_ptr< CocoaTweet::OAuth::OAuth1 > _oauth, std::function< void(const std::string &)> _callback)CocoaTweet::API::Interface::HttpPostprotectedvirtual
Upload()CocoaTweet::API::Medias::Upload
url_CocoaTweet::API::Interface::HttpBaseprotected
- - - - diff --git a/help/html/classCocoaTweet_1_1API_1_1Medias_1_1Upload.html b/help/html/classCocoaTweet_1_1API_1_1Medias_1_1Upload.html deleted file mode 100644 index cefd2c8..0000000 --- a/help/html/classCocoaTweet_1_1API_1_1Medias_1_1Upload.html +++ /dev/null @@ -1,244 +0,0 @@ - - - - - - - -CocoaTweet: CocoaTweet::API::Medias::Upload Class Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
CocoaTweet::API::Medias::Upload Class Reference
-
-
- -

entry point for using media/upload endpoint - More...

- -

#include <upload.h>

-
-Inheritance diagram for CocoaTweet::API::Medias::Upload:
-
-
Inheritance graph
- - - - - -
[legend]
-
-Collaboration diagram for CocoaTweet::API::Medias::Upload:
-
-
Collaboration graph
- - - - - -
[legend]
- - - - - - - - - - - - - - -

-Public Member Functions

 Upload ()
 default constructor More...
 
void media (const std::string &_media)
 set media file with absolute path More...
 
void mediaId (const std::string &_mediaId)
 set media id(no affect to process. will be obsoleted) More...
 
CocoaTweet::API::Model::MediaStore process (std::weak_ptr< CocoaTweet::OAuth::OAuth1 > _oauth)
 upload media More...
 
- - - - - - - - - - - - - - - - - -

-Additional Inherited Members

- Protected Member Functions inherited from CocoaTweet::API::Interface::HttpPost
void process (std::weak_ptr< CocoaTweet::OAuth::OAuth1 > _oauth, std::function< void(const std::string &)> _callback)
 Send HTTP/POST using OAuth object. More...
 
- Static Protected Member Functions inherited from CocoaTweet::API::Interface::HttpBase
static size_t curlCallback_ (char *_ptr, size_t _size, size_t _nmemb, std::string *_stream)
 
- Protected Attributes inherited from CocoaTweet::API::Interface::HttpBase
std::weak_ptr< CocoaTweet::OAuth::OAuth1oauth_
 
std::map< std::string, std::string > bodyParam_
 
std::string url_
 
std::string contentType_
 
-

Detailed Description

-

entry point for using media/upload endpoint

-

Constructor & Destructor Documentation

- -

◆ Upload()

- -
-
- - - - - - - -
CocoaTweet::API::Medias::Upload::Upload ()
-
- -

default constructor

- -
-
-

Member Function Documentation

- -

◆ media()

- -
-
- - - - - - - - -
void CocoaTweet::API::Medias::Upload::media (const std::string & _media)
-
- -

set media file with absolute path

-
Parameters
- - - -
[in]conststd::string& _media : absolute path to media should be uploaded
[out]none
-
-
- -
-
- -

◆ mediaId()

- -
-
- - - - - - - - -
void CocoaTweet::API::Medias::Upload::mediaId (const std::string & _mediaId)
-
- -

set media id(no affect to process. will be obsoleted)

- -
-
- -

◆ process()

- -
-
- - - - - - - - -
CocoaTweet::API::Model::MediaStore CocoaTweet::API::Medias::Upload::process (std::weak_ptr< CocoaTweet::OAuth::OAuth1_oauth)
-
- -

upload media

-
Parameters
- - - -
[in]std::weak_ptr<CocoaTweet::OAuth::OAuth1>_oauth : pointer to OAuth object for authenticate
[out]CocoaTweet::API::Model::MediaStore: media upload result. use id() for post tweet.
-
-
- -
-
-
The documentation for this class was generated from the following files: -
- - - - diff --git a/help/html/classCocoaTweet_1_1API_1_1Medias_1_1Upload__coll__graph.map b/help/html/classCocoaTweet_1_1API_1_1Medias_1_1Upload__coll__graph.map deleted file mode 100644 index 7616892..0000000 --- a/help/html/classCocoaTweet_1_1API_1_1Medias_1_1Upload__coll__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/help/html/classCocoaTweet_1_1API_1_1Medias_1_1Upload__coll__graph.md5 b/help/html/classCocoaTweet_1_1API_1_1Medias_1_1Upload__coll__graph.md5 deleted file mode 100644 index 9c6add8..0000000 --- a/help/html/classCocoaTweet_1_1API_1_1Medias_1_1Upload__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -d4620f957cf2fc7f3772baf4cbaad717 \ No newline at end of file diff --git a/help/html/classCocoaTweet_1_1API_1_1Medias_1_1Upload__coll__graph.png b/help/html/classCocoaTweet_1_1API_1_1Medias_1_1Upload__coll__graph.png deleted file mode 100644 index 1f130c2..0000000 Binary files a/help/html/classCocoaTweet_1_1API_1_1Medias_1_1Upload__coll__graph.png and /dev/null differ diff --git a/help/html/classCocoaTweet_1_1API_1_1Medias_1_1Upload__inherit__graph.map b/help/html/classCocoaTweet_1_1API_1_1Medias_1_1Upload__inherit__graph.map deleted file mode 100644 index 7616892..0000000 --- a/help/html/classCocoaTweet_1_1API_1_1Medias_1_1Upload__inherit__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/help/html/classCocoaTweet_1_1API_1_1Medias_1_1Upload__inherit__graph.md5 b/help/html/classCocoaTweet_1_1API_1_1Medias_1_1Upload__inherit__graph.md5 deleted file mode 100644 index 9c6add8..0000000 --- a/help/html/classCocoaTweet_1_1API_1_1Medias_1_1Upload__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -d4620f957cf2fc7f3772baf4cbaad717 \ No newline at end of file diff --git a/help/html/classCocoaTweet_1_1API_1_1Medias_1_1Upload__inherit__graph.png b/help/html/classCocoaTweet_1_1API_1_1Medias_1_1Upload__inherit__graph.png deleted file mode 100644 index 1f130c2..0000000 Binary files a/help/html/classCocoaTweet_1_1API_1_1Medias_1_1Upload__inherit__graph.png and /dev/null differ diff --git a/help/html/classCocoaTweet_1_1API_1_1Model_1_1MediaStore-members.html b/help/html/classCocoaTweet_1_1API_1_1Model_1_1MediaStore-members.html deleted file mode 100644 index 230ec0f..0000000 --- a/help/html/classCocoaTweet_1_1API_1_1Model_1_1MediaStore-members.html +++ /dev/null @@ -1,97 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
CocoaTweet::API::Model::MediaStore Member List
-
-
- -

This is the complete list of members for CocoaTweet::API::Model::MediaStore, including all inherited members.

- - - - - - - - - - - - - - - -
expire() constCocoaTweet::API::Model::MediaStore
expires(const unsigned int _ex)CocoaTweet::API::Model::MediaStore
id(const std::string _id)CocoaTweet::API::Model::MediaStore
id() constCocoaTweet::API::Model::MediaStore
MediaStore()=defaultCocoaTweet::API::Model::MediaStore
MediaStore(const MediaStore &)=defaultCocoaTweet::API::Model::MediaStore
MediaStore(const std::string &_json)CocoaTweet::API::Model::MediaStoreinline
parse(const std::string &_json)CocoaTweet::API::Model::MediaStorestatic
remain(const unsigned int _remain)CocoaTweet::API::Model::MediaStore
remain() constCocoaTweet::API::Model::MediaStore
size(const unsigned int _size)CocoaTweet::API::Model::MediaStore
size() constCocoaTweet::API::Model::MediaStore
state(const std::string _state)CocoaTweet::API::Model::MediaStore
state() constCocoaTweet::API::Model::MediaStore
- - - - diff --git a/help/html/classCocoaTweet_1_1API_1_1Model_1_1MediaStore.html b/help/html/classCocoaTweet_1_1API_1_1Model_1_1MediaStore.html deleted file mode 100644 index 064b6a0..0000000 --- a/help/html/classCocoaTweet_1_1API_1_1Model_1_1MediaStore.html +++ /dev/null @@ -1,535 +0,0 @@ - - - - - - - -CocoaTweet: CocoaTweet::API::Model::MediaStore Class Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
CocoaTweet::API::Model::MediaStore Class Referencefinal
-
-
- -

data class for tweet object - More...

- -

#include <mediaStore.h>

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 MediaStore ()=default
 constructor More...
 
 MediaStore (const MediaStore &)=default
 copy constructor More...
 
 MediaStore (const std::string &_json)
 constructor for create object from json response More...
 
void id (const std::string _id)
 set id of tweet More...
 
void size (const unsigned int _size)
 set media size in byte More...
 
void expires (const unsigned int _ex)
 set remaining time to expire the media More...
 
void state (const std::string _state)
 set media processing status More...
 
void remain (const unsigned int _remain)
 set how second need for upload complete More...
 
const std::string id () const
 get media id More...
 
const unsigned int size () const
 get media size More...
 
const unsigned int expire () const
 get remaining time to expire the media More...
 
const std::string state () const
 get media processing status More...
 
const unsigned int remain () const
 set how second need for upload complete More...
 
- - - - -

-Static Public Member Functions

static MediaStore parse (const std::string &_json)
 response parser for MediaStore object More...
 
-

Detailed Description

-

data class for tweet object

-

Constructor & Destructor Documentation

- -

◆ MediaStore() [1/3]

- -
-
- - - - - -
- - - - - - - -
CocoaTweet::API::Model::MediaStore::MediaStore ()
-
-default
-
- -

constructor

- -
-
- -

◆ MediaStore() [2/3]

- -
-
- - - - - -
- - - - - - - - -
CocoaTweet::API::Model::MediaStore::MediaStore (const MediaStore)
-
-default
-
- -

copy constructor

- -
-
- -

◆ MediaStore() [3/3]

- -
-
- - - - - -
- - - - - - - - -
CocoaTweet::API::Model::MediaStore::MediaStore (const std::string & _json)
-
-inline
-
- -

constructor for create object from json response

-
Parameters
- - -
[in]conststd::string& _json : received content from twitter endpoint
-
-
- -
-
-

Member Function Documentation

- -

◆ expire()

- -
-
- - - - - - - -
const unsigned int CocoaTweet::API::Model::MediaStore::expire () const
-
- -

get remaining time to expire the media

-
Parameters
- - - -
[in]none
[out]constunsigned int : remaining time to expire the media ib sec
-
-
- -
-
- -

◆ expires()

- -
-
- - - - - - - - -
void CocoaTweet::API::Model::MediaStore::expires (const unsigned int _ex)
-
- -

set remaining time to expire the media

-
Parameters
- - - -
[in]constunsigned int : remaining time to expire the media ib sec
[out]none
-
-
- -
-
- -

◆ id() [1/2]

- -
-
- - - - - - - -
const std::string CocoaTweet::API::Model::MediaStore::id () const
-
- -

get media id

-
Parameters
- - - -
[in]none
[out]conststd::string : media id
-
-
- -
-
- -

◆ id() [2/2]

- -
-
- - - - - - - - -
void CocoaTweet::API::Model::MediaStore::id (const std::string _id)
-
- -

set id of tweet

-
Parameters
- - - -
[in]conststd::string _id : media id to set
[out]none
-
-
- -
-
- -

◆ parse()

- -
-
- - - - - -
- - - - - - - - -
MediaStore CocoaTweet::API::Model::MediaStore::parse (const std::string & _json)
-
-static
-
- -

response parser for MediaStore object

-
Parameters
- - - -
[in]conststd::string& _json : received content from twitter endpoint
[out]CocoaTweet::API::Model::MediaStore
-
-
- -
-
- -

◆ remain() [1/2]

- -
-
- - - - - - - -
const unsigned int CocoaTweet::API::Model::MediaStore::remain () const
-
- -

set how second need for upload complete

-
Parameters
- - - -
[in]none
[out]neededtime to upload complete on server in second
-
-
- -
-
- -

◆ remain() [2/2]

- -
-
- - - - - - - - -
void CocoaTweet::API::Model::MediaStore::remain (const unsigned int _remain)
-
- -

set how second need for upload complete

-
Parameters
- - - -
[in]neededtime to upload complete on server in second
[out]none
-
-
- -
-
- -

◆ size() [1/2]

- -
-
- - - - - - - -
const unsigned int CocoaTweet::API::Model::MediaStore::size () const
-
- -

get media size

-
Parameters
- - - -
[in]none
[out]constunsigned int : media size in byte
-
-
- -
-
- -

◆ size() [2/2]

- -
-
- - - - - - - - -
void CocoaTweet::API::Model::MediaStore::size (const unsigned int _size)
-
- -

set media size in byte

-
Parameters
- - - -
[in]constunsigned int _size : media size in byte
[out]none
-
-
- -
-
- -

◆ state() [1/2]

- -
-
- - - - - - - -
const std::string CocoaTweet::API::Model::MediaStore::state () const
-
- -

get media processing status

-
Parameters
- - - -
[in]none
[out]conststd::string _state : media processed status
-
-
- -
-
- -

◆ state() [2/2]

- -
-
- - - - - - - - -
void CocoaTweet::API::Model::MediaStore::state (const std::string _state)
-
- -

set media processing status

-
Parameters
- - - -
[in]conststd::string _state : media processed status
[out]none
-
-
- -
-
-
The documentation for this class was generated from the following files: -
- - - - diff --git a/help/html/classCocoaTweet_1_1API_1_1Model_1_1Tweet-members.html b/help/html/classCocoaTweet_1_1API_1_1Model_1_1Tweet-members.html deleted file mode 100644 index 7b18bc1..0000000 --- a/help/html/classCocoaTweet_1_1API_1_1Model_1_1Tweet-members.html +++ /dev/null @@ -1,97 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
CocoaTweet::API::Model::Tweet Member List
-
-
- -

This is the complete list of members for CocoaTweet::API::Model::Tweet, including all inherited members.

- - - - - - - - - - - - - - - -
createdAt(const std::string _at)CocoaTweet::API::Model::Tweet
createdAt() constCocoaTweet::API::Model::Tweet
id(const std::string _id)CocoaTweet::API::Model::Tweet
id() constCocoaTweet::API::Model::Tweet
parse(const std::string &_json)CocoaTweet::API::Model::Tweetstatic
source(const std::string _source)CocoaTweet::API::Model::Tweet
source() constCocoaTweet::API::Model::Tweet
text(const std::string _text)CocoaTweet::API::Model::Tweet
text() constCocoaTweet::API::Model::Tweet
Tweet()=defaultCocoaTweet::API::Model::Tweet
Tweet(const Tweet &)=defaultCocoaTweet::API::Model::Tweet
Tweet(const std::string &_json)CocoaTweet::API::Model::Tweetinline
user(const CocoaTweet::API::Model::User _user)CocoaTweet::API::Model::Tweet
user() constCocoaTweet::API::Model::Tweet
- - - - diff --git a/help/html/classCocoaTweet_1_1API_1_1Model_1_1Tweet.html b/help/html/classCocoaTweet_1_1API_1_1Model_1_1Tweet.html deleted file mode 100644 index 0440ff4..0000000 --- a/help/html/classCocoaTweet_1_1API_1_1Model_1_1Tweet.html +++ /dev/null @@ -1,515 +0,0 @@ - - - - - - - -CocoaTweet: CocoaTweet::API::Model::Tweet Class Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
CocoaTweet::API::Model::Tweet Class Referencefinal
-
-
- -

data class for tweet object - More...

- -

#include <tweet.h>

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 Tweet ()=default
 constructor More...
 
 Tweet (const Tweet &)=default
 copy constructor More...
 
 Tweet (const std::string &_json)
 constructor for create object from json response More...
 
void id (const std::string _id)
 set id of tweet More...
 
void createdAt (const std::string _at)
 set created time of tweet More...
 
void text (const std::string _text)
 set tweet text More...
 
void source (const std::string _source)
 set tweet source More...
 
void user (const CocoaTweet::API::Model::User _user)
 
const std::string id () const
 get tweet id More...
 
const std::string createdAt () const
 get tweet create time More...
 
const std::string text () const
 get tweet text More...
 
const std::string source () const
 get tweet source information More...
 
const CocoaTweet::API::Model::User user () const
 
- - - - -

-Static Public Member Functions

static Tweet parse (const std::string &_json)
 response parser for tweet object More...
 
-

Detailed Description

-

data class for tweet object

-

Constructor & Destructor Documentation

- -

◆ Tweet() [1/3]

- -
-
- - - - - -
- - - - - - - -
CocoaTweet::API::Model::Tweet::Tweet ()
-
-default
-
- -

constructor

- -
-
- -

◆ Tweet() [2/3]

- -
-
- - - - - -
- - - - - - - - -
CocoaTweet::API::Model::Tweet::Tweet (const Tweet)
-
-default
-
- -

copy constructor

- -
-
- -

◆ Tweet() [3/3]

- -
-
- - - - - -
- - - - - - - - -
CocoaTweet::API::Model::Tweet::Tweet (const std::string & _json)
-
-inline
-
- -

constructor for create object from json response

-
Parameters
- - -
[in]conststd::string& _json : received content from twitter endpoint
-
-
- -
-
-

Member Function Documentation

- -

◆ createdAt() [1/2]

- -
-
- - - - - - - -
const std::string CocoaTweet::API::Model::Tweet::createdAt () const
-
- -

get tweet create time

-
Parameters
- - - -
[in]none
[out]conststd::string : time of tweet created time
-
-
- -
-
- -

◆ createdAt() [2/2]

- -
-
- - - - - - - - -
void CocoaTweet::API::Model::Tweet::createdAt (const std::string _at)
-
- -

set created time of tweet

-
Parameters
- - - -
[in]conststd::string _at : tweet created time to set
[out]none
-
-
- -
-
- -

◆ id() [1/2]

- -
-
- - - - - - - -
const std::string CocoaTweet::API::Model::Tweet::id () const
-
- -

get tweet id

-
Parameters
- - - -
[in]none
[out]conststd::string : tweet id
-
-
- -
-
- -

◆ id() [2/2]

- -
-
- - - - - - - - -
void CocoaTweet::API::Model::Tweet::id (const std::string _id)
-
- -

set id of tweet

-
Parameters
- - - -
[in]conststd::string _id : tweet id to set
[out]none
-
-
- -
-
- -

◆ parse()

- -
-
- - - - - -
- - - - - - - - -
Tweet CocoaTweet::API::Model::Tweet::parse (const std::string & _json)
-
-static
-
- -

response parser for tweet object

-
Parameters
- - - -
[in]conststd::string& _json : received content from twitter endpoint
[out]CocoaTweet::API::Model::Tweet
-
-
- -
-
- -

◆ source() [1/2]

- -
-
- - - - - - - -
const std::string CocoaTweet::API::Model::Tweet::source () const
-
- -

get tweet source information

-
Parameters
- - - -
[in]none
[out]conststd::string : source information
-
-
- -
-
- -

◆ source() [2/2]

- -
-
- - - - - - - - -
void CocoaTweet::API::Model::Tweet::source (const std::string _source)
-
- -

set tweet source

-
Parameters
- - - -
[in]conststd::string _source : source information to set
[out]none
-
-
- -
-
- -

◆ text() [1/2]

- -
-
- - - - - - - -
const std::string CocoaTweet::API::Model::Tweet::text () const
-
- -

get tweet text

-
Parameters
- - - -
[in]none
[out]conststd::string : tweet text
-
-
- -
-
- -

◆ text() [2/2]

- -
-
- - - - - - - - -
void CocoaTweet::API::Model::Tweet::text (const std::string _text)
-
- -

set tweet text

-
Parameters
- - - -
[in]conststd::string _text : text of tweet to set
[out]none
-
-
- -
-
- -

◆ user() [1/2]

- -
-
- - - - - - - -
const CocoaTweet::API::Model::User CocoaTweet::API::Model::Tweet::user () const
-
- -
-
- -

◆ user() [2/2]

- -
-
- - - - - - - - -
void CocoaTweet::API::Model::Tweet::user (const CocoaTweet::API::Model::User _user)
-
- -
-
-
The documentation for this class was generated from the following files: -
- - - - diff --git a/help/html/classCocoaTweet_1_1API_1_1Model_1_1User-members.html b/help/html/classCocoaTweet_1_1API_1_1Model_1_1User-members.html deleted file mode 100644 index 1e1207f..0000000 --- a/help/html/classCocoaTweet_1_1API_1_1Model_1_1User-members.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
CocoaTweet::API::Model::User Member List
-
-
- -

This is the complete list of members for CocoaTweet::API::Model::User, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
bannerUrl(const std::string &_banner)CocoaTweet::API::Model::User
bannerUrl() constCocoaTweet::API::Model::User
created() constCocoaTweet::API::Model::User
createdAt(const std::string &_created)CocoaTweet::API::Model::User
description(const std::string &_description)CocoaTweet::API::Model::User
description() constCocoaTweet::API::Model::User
favorite(const long _favorite)CocoaTweet::API::Model::User
favorite() constCocoaTweet::API::Model::User
follow(const long _follow)CocoaTweet::API::Model::User
follow() constCocoaTweet::API::Model::User
follower(const long _follower)CocoaTweet::API::Model::User
follower() constCocoaTweet::API::Model::User
icon() constCocoaTweet::API::Model::User
iconUrl(const std::string &_icon)CocoaTweet::API::Model::User
id(const std::string &_id)CocoaTweet::API::Model::User
id() constCocoaTweet::API::Model::User
listed(const long _listed)CocoaTweet::API::Model::User
listed() constCocoaTweet::API::Model::User
location(const std::string &_location)CocoaTweet::API::Model::User
location() constCocoaTweet::API::Model::User
name(const std::string &_name)CocoaTweet::API::Model::User
name() constCocoaTweet::API::Model::User
parse(const std::string &_json)CocoaTweet::API::Model::Userstatic
protectedUser(const bool _protected)CocoaTweet::API::Model::User
protectedUser() constCocoaTweet::API::Model::User
screenName(const std::string &_screen)CocoaTweet::API::Model::User
screenName() constCocoaTweet::API::Model::User
url(const std::string &_url)CocoaTweet::API::Model::User
url() constCocoaTweet::API::Model::User
User()=defaultCocoaTweet::API::Model::User
User(const User &)=defaultCocoaTweet::API::Model::User
User(const std::string &_json)CocoaTweet::API::Model::Userinline
- - - - diff --git a/help/html/classCocoaTweet_1_1API_1_1Model_1_1User.html b/help/html/classCocoaTweet_1_1API_1_1Model_1_1User.html deleted file mode 100644 index 88da7d5..0000000 --- a/help/html/classCocoaTweet_1_1API_1_1Model_1_1User.html +++ /dev/null @@ -1,786 +0,0 @@ - - - - - - - -CocoaTweet: CocoaTweet::API::Model::User Class Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
CocoaTweet::API::Model::User Class Referencefinal
-
-
- -

data class for tweet object - More...

- -

#include <user.h>

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 User ()=default
 constructor More...
 
 User (const User &)=default
 copy constructor More...
 
 User (const std::string &_json)
 constructor for create object from json response More...
 
void id (const std::string &_id)
 
void name (const std::string &_name)
 
void screenName (const std::string &_screen)
 
void location (const std::string &_location)
 
void url (const std::string &_url)
 
void description (const std::string &_description)
 
void protectedUser (const bool _protected)
 
void follower (const long _follower)
 
void follow (const long _follow)
 
void listed (const long _listed)
 
void favorite (const long _favorite)
 
void createdAt (const std::string &_created)
 
void bannerUrl (const std::string &_banner)
 
void iconUrl (const std::string &_icon)
 
const std::string & id () const
 
const std::string & name () const
 
const std::string & screenName () const
 
const std::string & location () const
 
const std::string & url () const
 
const std::string & description () const
 
bool protectedUser () const
 
long follower () const
 
long follow () const
 
long listed () const
 
long favorite () const
 
const std::string & created () const
 
const std::string & bannerUrl () const
 
const std::string & icon () const
 
- - - - -

-Static Public Member Functions

static User parse (const std::string &_json)
 response parser for user object More...
 
-

Detailed Description

-

data class for tweet object

-

Constructor & Destructor Documentation

- -

◆ User() [1/3]

- -
-
- - - - - -
- - - - - - - -
CocoaTweet::API::Model::User::User ()
-
-default
-
- -

constructor

- -
-
- -

◆ User() [2/3]

- -
-
- - - - - -
- - - - - - - - -
CocoaTweet::API::Model::User::User (const User)
-
-default
-
- -

copy constructor

- -
-
- -

◆ User() [3/3]

- -
-
- - - - - -
- - - - - - - - -
CocoaTweet::API::Model::User::User (const std::string & _json)
-
-inline
-
- -

constructor for create object from json response

-
Parameters
- - -
[in]conststd::string& _json : received content from twitter endpoint
-
-
- -
-
-

Member Function Documentation

- -

◆ bannerUrl() [1/2]

- -
-
- - - - - - - -
const std::string & CocoaTweet::API::Model::User::bannerUrl () const
-
- -
-
- -

◆ bannerUrl() [2/2]

- -
-
- - - - - - - - -
void CocoaTweet::API::Model::User::bannerUrl (const std::string & _banner)
-
- -
-
- -

◆ created()

- -
-
- - - - - - - -
const std::string & CocoaTweet::API::Model::User::created () const
-
- -
-
- -

◆ createdAt()

- -
-
- - - - - - - - -
void CocoaTweet::API::Model::User::createdAt (const std::string & _created)
-
- -
-
- -

◆ description() [1/2]

- -
-
- - - - - - - -
const std::string & CocoaTweet::API::Model::User::description () const
-
- -
-
- -

◆ description() [2/2]

- -
-
- - - - - - - - -
void CocoaTweet::API::Model::User::description (const std::string & _description)
-
- -
-
- -

◆ favorite() [1/2]

- -
-
- - - - - - - -
long CocoaTweet::API::Model::User::favorite () const
-
- -
-
- -

◆ favorite() [2/2]

- -
-
- - - - - - - - -
void CocoaTweet::API::Model::User::favorite (const long _favorite)
-
- -
-
- -

◆ follow() [1/2]

- -
-
- - - - - - - -
long CocoaTweet::API::Model::User::follow () const
-
- -
-
- -

◆ follow() [2/2]

- -
-
- - - - - - - - -
void CocoaTweet::API::Model::User::follow (const long _follow)
-
- -
-
- -

◆ follower() [1/2]

- -
-
- - - - - - - -
long CocoaTweet::API::Model::User::follower () const
-
- -
-
- -

◆ follower() [2/2]

- -
-
- - - - - - - - -
void CocoaTweet::API::Model::User::follower (const long _follower)
-
- -
-
- -

◆ icon()

- -
-
- - - - - - - -
const std::string & CocoaTweet::API::Model::User::icon () const
-
- -
-
- -

◆ iconUrl()

- -
-
- - - - - - - - -
void CocoaTweet::API::Model::User::iconUrl (const std::string & _icon)
-
- -
-
- -

◆ id() [1/2]

- -
-
- - - - - - - -
const std::string & CocoaTweet::API::Model::User::id () const
-
- -
-
- -

◆ id() [2/2]

- -
-
- - - - - - - - -
void CocoaTweet::API::Model::User::id (const std::string & _id)
-
- -
-
- -

◆ listed() [1/2]

- -
-
- - - - - - - -
long CocoaTweet::API::Model::User::listed () const
-
- -
-
- -

◆ listed() [2/2]

- -
-
- - - - - - - - -
void CocoaTweet::API::Model::User::listed (const long _listed)
-
- -
-
- -

◆ location() [1/2]

- -
-
- - - - - - - -
const std::string & CocoaTweet::API::Model::User::location () const
-
- -
-
- -

◆ location() [2/2]

- -
-
- - - - - - - - -
void CocoaTweet::API::Model::User::location (const std::string & _location)
-
- -
-
- -

◆ name() [1/2]

- -
-
- - - - - - - -
const std::string & CocoaTweet::API::Model::User::name () const
-
- -
-
- -

◆ name() [2/2]

- -
-
- - - - - - - - -
void CocoaTweet::API::Model::User::name (const std::string & _name)
-
- -
-
- -

◆ parse()

- -
-
- - - - - -
- - - - - - - - -
CocoaTweet::API::Model::User CocoaTweet::API::Model::User::parse (const std::string & _json)
-
-static
-
- -

response parser for user object

-
Parameters
- - - -
[in]conststd::string& _json : received content from twitter endpoint
[out]CocoaTweet::API::Model::User
-
-
- -
-
- -

◆ protectedUser() [1/2]

- -
-
- - - - - - - -
bool CocoaTweet::API::Model::User::protectedUser () const
-
- -
-
- -

◆ protectedUser() [2/2]

- -
-
- - - - - - - - -
void CocoaTweet::API::Model::User::protectedUser (const bool _protected)
-
- -
-
- -

◆ screenName() [1/2]

- -
-
- - - - - - - -
const std::string & CocoaTweet::API::Model::User::screenName () const
-
- -
-
- -

◆ screenName() [2/2]

- -
-
- - - - - - - - -
void CocoaTweet::API::Model::User::screenName (const std::string & _screen)
-
- -
-
- -

◆ url() [1/2]

- -
-
- - - - - - - -
const std::string & CocoaTweet::API::Model::User::url () const
-
- -
-
- -

◆ url() [2/2]

- -
-
- - - - - - - - -
void CocoaTweet::API::Model::User::url (const std::string & _url)
-
- -
-
-
The documentation for this class was generated from the following files: -
- - - - diff --git a/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Destroy-members.html b/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Destroy-members.html deleted file mode 100644 index 6e95636..0000000 --- a/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Destroy-members.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
CocoaTweet::API::Statuses::Destroy Member List
-
-
- -

This is the complete list of members for CocoaTweet::API::Statuses::Destroy, including all inherited members.

- - - - - - - - - - -
bodyParam_CocoaTweet::API::Interface::HttpBaseprotected
contentType_CocoaTweet::API::Interface::HttpBaseprotected
curlCallback_(char *_ptr, size_t _size, size_t _nmemb, std::string *_stream)CocoaTweet::API::Interface::HttpBaseinlineprotectedstatic
Destroy()CocoaTweet::API::Statuses::Destroy
id(const std::string _id)CocoaTweet::API::Statuses::Destroy
oauth_CocoaTweet::API::Interface::HttpBaseprotected
process(std::weak_ptr< CocoaTweet::OAuth::OAuth1 > _oauth)CocoaTweet::API::Statuses::Destroy
CocoaTweet::API::Interface::HttpPost::process(std::weak_ptr< CocoaTweet::OAuth::OAuth1 > _oauth, std::function< void(const std::string &)> _callback)CocoaTweet::API::Interface::HttpPostprotectedvirtual
url_CocoaTweet::API::Interface::HttpBaseprotected
- - - - diff --git a/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Destroy.html b/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Destroy.html deleted file mode 100644 index 5866386..0000000 --- a/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Destroy.html +++ /dev/null @@ -1,221 +0,0 @@ - - - - - - - -CocoaTweet: CocoaTweet::API::Statuses::Destroy Class Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
CocoaTweet::API::Statuses::Destroy Class Reference
-
-
- -

class for using status/destroy:id endpoint - More...

- -

#include <destroy.h>

-
-Inheritance diagram for CocoaTweet::API::Statuses::Destroy:
-
-
Inheritance graph
- - - - - -
[legend]
-
-Collaboration diagram for CocoaTweet::API::Statuses::Destroy:
-
-
Collaboration graph
- - - - - -
[legend]
- - - - - - - - - - - -

-Public Member Functions

 Destroy ()
 primary constructor More...
 
void id (const std::string _id)
 set tweet id to destroy More...
 
CocoaTweet::API::Model::Tweet process (std::weak_ptr< CocoaTweet::OAuth::OAuth1 > _oauth)
 process request for endpoint More...
 
- - - - - - - - - - - - - - - - - -

-Additional Inherited Members

- Protected Member Functions inherited from CocoaTweet::API::Interface::HttpPost
void process (std::weak_ptr< CocoaTweet::OAuth::OAuth1 > _oauth, std::function< void(const std::string &)> _callback)
 Send HTTP/POST using OAuth object. More...
 
- Static Protected Member Functions inherited from CocoaTweet::API::Interface::HttpBase
static size_t curlCallback_ (char *_ptr, size_t _size, size_t _nmemb, std::string *_stream)
 
- Protected Attributes inherited from CocoaTweet::API::Interface::HttpBase
std::weak_ptr< CocoaTweet::OAuth::OAuth1oauth_
 
std::map< std::string, std::string > bodyParam_
 
std::string url_
 
std::string contentType_
 
-

Detailed Description

-

class for using status/destroy:id endpoint

-

Constructor & Destructor Documentation

- -

◆ Destroy()

- -
-
- - - - - - - -
CocoaTweet::API::Statuses::Destroy::Destroy ()
-
- -

primary constructor

- -
-
-

Member Function Documentation

- -

◆ id()

- -
-
- - - - - - - - -
void CocoaTweet::API::Statuses::Destroy::id (const std::string _id)
-
- -

set tweet id to destroy

-
Parameters
- - - -
[in]std::string_id : tweet id which should be destroy
[out]none
-
-
- -
-
- -

◆ process()

- -
-
- - - - - - - - -
CocoaTweet::API::Model::Tweet CocoaTweet::API::Statuses::Destroy::process (std::weak_ptr< CocoaTweet::OAuth::OAuth1_oauth)
-
- -

process request for endpoint

-
Parameters
- - - -
[in]std::weak_ptr<CocoaTweet::OAuth::OAuth1>_oauth : pointer to oauth object
[out]CocoaTweet::API::Model::Tweet: request result
-
-
- -
-
-
The documentation for this class was generated from the following files: -
- - - - diff --git a/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Destroy__coll__graph.map b/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Destroy__coll__graph.map deleted file mode 100644 index 21f10e8..0000000 --- a/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Destroy__coll__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Destroy__coll__graph.md5 b/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Destroy__coll__graph.md5 deleted file mode 100644 index b1b6f85..0000000 --- a/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Destroy__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -0f2a6c1e00bc32b50a5904fc4421ab47 \ No newline at end of file diff --git a/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Destroy__coll__graph.png b/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Destroy__coll__graph.png deleted file mode 100644 index faed2eb..0000000 Binary files a/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Destroy__coll__graph.png and /dev/null differ diff --git a/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Destroy__inherit__graph.map b/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Destroy__inherit__graph.map deleted file mode 100644 index 21f10e8..0000000 --- a/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Destroy__inherit__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Destroy__inherit__graph.md5 b/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Destroy__inherit__graph.md5 deleted file mode 100644 index b1b6f85..0000000 --- a/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Destroy__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -0f2a6c1e00bc32b50a5904fc4421ab47 \ No newline at end of file diff --git a/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Destroy__inherit__graph.png b/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Destroy__inherit__graph.png deleted file mode 100644 index faed2eb..0000000 Binary files a/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Destroy__inherit__graph.png and /dev/null differ diff --git a/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Retweet-members.html b/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Retweet-members.html deleted file mode 100644 index 1aae219..0000000 --- a/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Retweet-members.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
CocoaTweet::API::Statuses::Retweet Member List
-
-
- -

This is the complete list of members for CocoaTweet::API::Statuses::Retweet, including all inherited members.

- - - - - - - - - - -
bodyParam_CocoaTweet::API::Interface::HttpBaseprotected
contentType_CocoaTweet::API::Interface::HttpBaseprotected
curlCallback_(char *_ptr, size_t _size, size_t _nmemb, std::string *_stream)CocoaTweet::API::Interface::HttpBaseinlineprotectedstatic
id(const std::string &_id)CocoaTweet::API::Statuses::Retweet
oauth_CocoaTweet::API::Interface::HttpBaseprotected
process(std::weak_ptr< CocoaTweet::OAuth::OAuth1 > _oauth)CocoaTweet::API::Statuses::Retweet
CocoaTweet::API::Interface::HttpPost::process(std::weak_ptr< CocoaTweet::OAuth::OAuth1 > _oauth, std::function< void(const std::string &)> _callback)CocoaTweet::API::Interface::HttpPostprotectedvirtual
Retweet()CocoaTweet::API::Statuses::Retweet
url_CocoaTweet::API::Interface::HttpBaseprotected
- - - - diff --git a/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Retweet.html b/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Retweet.html deleted file mode 100644 index c9874e1..0000000 --- a/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Retweet.html +++ /dev/null @@ -1,193 +0,0 @@ - - - - - - - -CocoaTweet: CocoaTweet::API::Statuses::Retweet Class Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
CocoaTweet::API::Statuses::Retweet Class Reference
-
-
- -

#include <retweet.h>

-
-Inheritance diagram for CocoaTweet::API::Statuses::Retweet:
-
-
Inheritance graph
- - - - - -
[legend]
-
-Collaboration diagram for CocoaTweet::API::Statuses::Retweet:
-
-
Collaboration graph
- - - - - -
[legend]
- - - - - - - - -

-Public Member Functions

 Retweet ()
 
void id (const std::string &_id)
 
CocoaTweet::API::Model::Tweet process (std::weak_ptr< CocoaTweet::OAuth::OAuth1 > _oauth)
 
- - - - - - - - - - - - - - - - - -

-Additional Inherited Members

- Protected Member Functions inherited from CocoaTweet::API::Interface::HttpPost
void process (std::weak_ptr< CocoaTweet::OAuth::OAuth1 > _oauth, std::function< void(const std::string &)> _callback)
 Send HTTP/POST using OAuth object. More...
 
- Static Protected Member Functions inherited from CocoaTweet::API::Interface::HttpBase
static size_t curlCallback_ (char *_ptr, size_t _size, size_t _nmemb, std::string *_stream)
 
- Protected Attributes inherited from CocoaTweet::API::Interface::HttpBase
std::weak_ptr< CocoaTweet::OAuth::OAuth1oauth_
 
std::map< std::string, std::string > bodyParam_
 
std::string url_
 
std::string contentType_
 
-

Constructor & Destructor Documentation

- -

◆ Retweet()

- -
-
- - - - - - - -
CocoaTweet::API::Statuses::Retweet::Retweet ()
-
- -
-
-

Member Function Documentation

- -

◆ id()

- -
-
- - - - - - - - -
void CocoaTweet::API::Statuses::Retweet::id (const std::string & _id)
-
- -
-
- -

◆ process()

- -
-
- - - - - - - - -
CocoaTweet::API::Model::Tweet CocoaTweet::API::Statuses::Retweet::process (std::weak_ptr< CocoaTweet::OAuth::OAuth1_oauth)
-
- -
-
-
The documentation for this class was generated from the following files: -
- - - - diff --git a/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Retweet__coll__graph.map b/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Retweet__coll__graph.map deleted file mode 100644 index ae9b6ba..0000000 --- a/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Retweet__coll__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Retweet__coll__graph.md5 b/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Retweet__coll__graph.md5 deleted file mode 100644 index 64c0523..0000000 --- a/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Retweet__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -404d2c5bc9e5255f06846c1907138f35 \ No newline at end of file diff --git a/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Retweet__coll__graph.png b/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Retweet__coll__graph.png deleted file mode 100644 index cba2336..0000000 Binary files a/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Retweet__coll__graph.png and /dev/null differ diff --git a/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Retweet__inherit__graph.map b/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Retweet__inherit__graph.map deleted file mode 100644 index ae9b6ba..0000000 --- a/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Retweet__inherit__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Retweet__inherit__graph.md5 b/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Retweet__inherit__graph.md5 deleted file mode 100644 index 64c0523..0000000 --- a/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Retweet__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -404d2c5bc9e5255f06846c1907138f35 \ No newline at end of file diff --git a/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Retweet__inherit__graph.png b/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Retweet__inherit__graph.png deleted file mode 100644 index cba2336..0000000 Binary files a/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Retweet__inherit__graph.png and /dev/null differ diff --git a/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Status-members.html b/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Status-members.html deleted file mode 100644 index 2170cbb..0000000 --- a/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Status-members.html +++ /dev/null @@ -1,93 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
CocoaTweet::API::Statuses::Status Member List
-
-
- -

This is the complete list of members for CocoaTweet::API::Statuses::Status, including all inherited members.

- - - - - - - - - - - -
destroy(const std::string &_id) constCocoaTweet::API::Statuses::Status
oauth_CocoaTweet::API::groupInterfaceprotected
retweet(const std::string &_id) constCocoaTweet::API::Statuses::Status
Status()=defaultCocoaTweet::API::Statuses::Status
Status(std::shared_ptr< CocoaTweet::OAuth::OAuth1 > _oauth)CocoaTweet::API::Statuses::Status
unretweet(const std::string &_id) constCocoaTweet::API::Statuses::Status
update(const std::string &_status) constCocoaTweet::API::Statuses::Status
update(const std::string &_status, const Options _options) constCocoaTweet::API::Statuses::Status
update(const std::string &_status, std::vector< std::string > _mediaId) constCocoaTweet::API::Statuses::Status
userTimeline(const std::string &_screenName) constCocoaTweet::API::Statuses::Status
- - - - diff --git a/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Status.html b/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Status.html deleted file mode 100644 index 0e0d0b3..0000000 --- a/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Status.html +++ /dev/null @@ -1,391 +0,0 @@ - - - - - - - -CocoaTweet: CocoaTweet::API::Statuses::Status Class Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
CocoaTweet::API::Statuses::Status Class Reference
-
-
- -

Entory point for statuses/*. - More...

- -

#include <status.h>

-
-Inheritance diagram for CocoaTweet::API::Statuses::Status:
-
-
Inheritance graph
- - - - -
[legend]
-
-Collaboration diagram for CocoaTweet::API::Statuses::Status:
-
-
Collaboration graph
- - - - -
[legend]
- - - - -

-Classes

struct  Options
 
- - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 Status ()=default
 primary constructor to allow for create NON-INITIALIZED object More...
 
 Status (std::shared_ptr< CocoaTweet::OAuth::OAuth1 > _oauth)
 constructor which finally should to be called. More...
 
CocoaTweet::API::Model::Tweet update (const std::string &_status) const
 send request to statuses/update with specified status More...
 
CocoaTweet::API::Model::Tweet update (const std::string &_status, const Options _options) const
 send request to statuses/update with specified status More...
 
CocoaTweet::API::Model::Tweet update (const std::string &_status, std::vector< std::string > _mediaId) const
 send request to statuses/update with specified status More...
 
CocoaTweet::API::Model::Tweet destroy (const std::string &_id) const
 send request to statuses/destroy with specified id More...
 
CocoaTweet::API::Model::Tweet retweet (const std::string &_id) const
 
CocoaTweet::API::Model::Tweet unretweet (const std::string &_id) const
 
std::vector< CocoaTweet::API::Model::TweetuserTimeline (const std::string &_screenName) const
 
- - - - -

-Additional Inherited Members

- Protected Attributes inherited from CocoaTweet::API::groupInterface
std::weak_ptr< CocoaTweet::OAuth::OAuth1oauth_
 
-

Detailed Description

-

Entory point for statuses/*.

-

Constructor & Destructor Documentation

- -

◆ Status() [1/2]

- -
-
- - - - - -
- - - - - - - -
CocoaTweet::API::Statuses::Status::Status ()
-
-default
-
- -

primary constructor to allow for create NON-INITIALIZED object

- -
-
- -

◆ Status() [2/2]

- -
-
- - - - - - - - -
CocoaTweet::API::Statuses::Status::Status (std::shared_ptr< CocoaTweet::OAuth::OAuth1_oauth)
-
- -

constructor which finally should to be called.

-
Parameters
- - -
[in]std::shared_ptr<CocoaTweet::OAuth::OAuth1>: pointer to OAuth object
-
-
- -
-
-

Member Function Documentation

- -

◆ destroy()

- -
-
- - - - - - - - -
CocoaTweet::API::Model::Tweet CocoaTweet::API::Statuses::Status::destroy (const std::string & _id) const
-
- -

send request to statuses/destroy with specified id

-

this function throws CocoaTweet::Exception::* if something happen

Parameters
- - - -
[in]conststd::string& : tweet id which should be delete
[out]CocoaTweet::API::Model::Tweet: Destroy result
-
-
- -
-
- -

◆ retweet()

- -
-
- - - - - - - - -
CocoaTweet::API::Model::Tweet CocoaTweet::API::Statuses::Status::retweet (const std::string & _id) const
-
- -
-
- -

◆ unretweet()

- -
-
- - - - - - - - -
CocoaTweet::API::Model::Tweet CocoaTweet::API::Statuses::Status::unretweet (const std::string & _id) const
-
- -
-
- -

◆ update() [1/3]

- -
-
- - - - - - - - -
CocoaTweet::API::Model::Tweet CocoaTweet::API::Statuses::Status::update (const std::string & _status) const
-
- -

send request to statuses/update with specified status

-

this function throws CocoaTweet::Exception::* if something happen

Parameters
- - - -
[in]conststd::string& : tweet text
[out]CocoaTweet::API::Model::Tweet: Tweet result
-
-
- -
-
- -

◆ update() [2/3]

- -
-
- - - - - - - - - - - - - - - - - - -
CocoaTweet::API::Model::Tweet CocoaTweet::API::Statuses::Status::update (const std::string & _status,
const Options _options 
) const
-
- -

send request to statuses/update with specified status

-

this function throws CocoaTweet::Exception::* if something happen

Parameters
- - - - -
[in]conststd::string& : tweet text
[in]constCocoaTweet::API::Statuses::Status::Options option : status update options for more parameters
[out]CocoaTweet::API::Model::Tweet: Tweet result
-
-
- -
-
- -

◆ update() [3/3]

- -
-
- - - - - - - - - - - - - - - - - - -
CocoaTweet::API::Model::Tweet CocoaTweet::API::Statuses::Status::update (const std::string & _status,
std::vector< std::string > _mediaId 
) const
-
- -

send request to statuses/update with specified status

-

this function throws CocoaTweet::Exception::* if something happen

Parameters
- - - - -
[in]conststd::string& : tweet text
[in]std::vector<std::string>_mediaId : media id which posted with tweet
[out]CocoaTweet::API::Model::Tweet: Tweet result
-
-
- -
-
- -

◆ userTimeline()

- -
-
- - - - - - - - -
std::vector< CocoaTweet::API::Model::Tweet > CocoaTweet::API::Statuses::Status::userTimeline (const std::string & _screenName) const
-
- -
-
-
The documentation for this class was generated from the following files: -
- - - - diff --git a/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Status__coll__graph.map b/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Status__coll__graph.map deleted file mode 100644 index bda0807..0000000 --- a/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Status__coll__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Status__coll__graph.md5 b/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Status__coll__graph.md5 deleted file mode 100644 index 22f6183..0000000 --- a/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Status__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -5cb4645d94cc726cbb62c0bc1eafd278 \ No newline at end of file diff --git a/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Status__coll__graph.png b/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Status__coll__graph.png deleted file mode 100644 index 153066f..0000000 Binary files a/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Status__coll__graph.png and /dev/null differ diff --git a/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Status__inherit__graph.map b/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Status__inherit__graph.map deleted file mode 100644 index bda0807..0000000 --- a/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Status__inherit__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Status__inherit__graph.md5 b/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Status__inherit__graph.md5 deleted file mode 100644 index 22f6183..0000000 --- a/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Status__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -5cb4645d94cc726cbb62c0bc1eafd278 \ No newline at end of file diff --git a/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Status__inherit__graph.png b/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Status__inherit__graph.png deleted file mode 100644 index 153066f..0000000 Binary files a/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Status__inherit__graph.png and /dev/null differ diff --git a/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Unretweet-members.html b/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Unretweet-members.html deleted file mode 100644 index e38cba2..0000000 --- a/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Unretweet-members.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
CocoaTweet::API::Statuses::Unretweet Member List
-
-
- -

This is the complete list of members for CocoaTweet::API::Statuses::Unretweet, including all inherited members.

- - - - - - - - - - -
bodyParam_CocoaTweet::API::Interface::HttpBaseprotected
contentType_CocoaTweet::API::Interface::HttpBaseprotected
curlCallback_(char *_ptr, size_t _size, size_t _nmemb, std::string *_stream)CocoaTweet::API::Interface::HttpBaseinlineprotectedstatic
id(const std::string &_id)CocoaTweet::API::Statuses::Unretweet
oauth_CocoaTweet::API::Interface::HttpBaseprotected
process(std::weak_ptr< CocoaTweet::OAuth::OAuth1 > _oauth)CocoaTweet::API::Statuses::Unretweet
CocoaTweet::API::Interface::HttpPost::process(std::weak_ptr< CocoaTweet::OAuth::OAuth1 > _oauth, std::function< void(const std::string &)> _callback)CocoaTweet::API::Interface::HttpPostprotectedvirtual
Unretweet()CocoaTweet::API::Statuses::Unretweet
url_CocoaTweet::API::Interface::HttpBaseprotected
- - - - diff --git a/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Unretweet.html b/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Unretweet.html deleted file mode 100644 index 3ed72ea..0000000 --- a/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Unretweet.html +++ /dev/null @@ -1,193 +0,0 @@ - - - - - - - -CocoaTweet: CocoaTweet::API::Statuses::Unretweet Class Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
CocoaTweet::API::Statuses::Unretweet Class Reference
-
-
- -

#include <unretweet.h>

-
-Inheritance diagram for CocoaTweet::API::Statuses::Unretweet:
-
-
Inheritance graph
- - - - - -
[legend]
-
-Collaboration diagram for CocoaTweet::API::Statuses::Unretweet:
-
-
Collaboration graph
- - - - - -
[legend]
- - - - - - - - -

-Public Member Functions

 Unretweet ()
 
void id (const std::string &_id)
 
CocoaTweet::API::Model::Tweet process (std::weak_ptr< CocoaTweet::OAuth::OAuth1 > _oauth)
 
- - - - - - - - - - - - - - - - - -

-Additional Inherited Members

- Protected Member Functions inherited from CocoaTweet::API::Interface::HttpPost
void process (std::weak_ptr< CocoaTweet::OAuth::OAuth1 > _oauth, std::function< void(const std::string &)> _callback)
 Send HTTP/POST using OAuth object. More...
 
- Static Protected Member Functions inherited from CocoaTweet::API::Interface::HttpBase
static size_t curlCallback_ (char *_ptr, size_t _size, size_t _nmemb, std::string *_stream)
 
- Protected Attributes inherited from CocoaTweet::API::Interface::HttpBase
std::weak_ptr< CocoaTweet::OAuth::OAuth1oauth_
 
std::map< std::string, std::string > bodyParam_
 
std::string url_
 
std::string contentType_
 
-

Constructor & Destructor Documentation

- -

◆ Unretweet()

- -
-
- - - - - - - -
CocoaTweet::API::Statuses::Unretweet::Unretweet ()
-
- -
-
-

Member Function Documentation

- -

◆ id()

- -
-
- - - - - - - - -
void CocoaTweet::API::Statuses::Unretweet::id (const std::string & _id)
-
- -
-
- -

◆ process()

- -
-
- - - - - - - - -
CocoaTweet::API::Model::Tweet CocoaTweet::API::Statuses::Unretweet::process (std::weak_ptr< CocoaTweet::OAuth::OAuth1_oauth)
-
- -
-
-
The documentation for this class was generated from the following files: -
- - - - diff --git a/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Unretweet__coll__graph.map b/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Unretweet__coll__graph.map deleted file mode 100644 index 6373b70..0000000 --- a/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Unretweet__coll__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Unretweet__coll__graph.md5 b/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Unretweet__coll__graph.md5 deleted file mode 100644 index 5c81e86..0000000 --- a/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Unretweet__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -df981c3e779157dfe53f1076a9dffc3b \ No newline at end of file diff --git a/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Unretweet__coll__graph.png b/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Unretweet__coll__graph.png deleted file mode 100644 index 160f7d1..0000000 Binary files a/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Unretweet__coll__graph.png and /dev/null differ diff --git a/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Unretweet__inherit__graph.map b/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Unretweet__inherit__graph.map deleted file mode 100644 index 6373b70..0000000 --- a/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Unretweet__inherit__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Unretweet__inherit__graph.md5 b/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Unretweet__inherit__graph.md5 deleted file mode 100644 index 5c81e86..0000000 --- a/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Unretweet__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -df981c3e779157dfe53f1076a9dffc3b \ No newline at end of file diff --git a/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Unretweet__inherit__graph.png b/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Unretweet__inherit__graph.png deleted file mode 100644 index 160f7d1..0000000 Binary files a/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Unretweet__inherit__graph.png and /dev/null differ diff --git a/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Update-members.html b/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Update-members.html deleted file mode 100644 index 4045e90..0000000 --- a/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Update-members.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
CocoaTweet::API::Statuses::Update Member List
-
-
- -

This is the complete list of members for CocoaTweet::API::Statuses::Update, including all inherited members.

- - - - - - - - - - - - - - - - - - - - -
attachmentUrl(const std::string _url)CocoaTweet::API::Statuses::Update
autoPopulateReplyMetaData(bool _meta)CocoaTweet::API::Statuses::Update
bodyParam_CocoaTweet::API::Interface::HttpBaseprotected
contentType_CocoaTweet::API::Interface::HttpBaseprotected
coord(std::pair< std::string, std::string > _coord)CocoaTweet::API::Statuses::Update
curlCallback_(char *_ptr, size_t _size, size_t _nmemb, std::string *_stream)CocoaTweet::API::Interface::HttpBaseinlineprotectedstatic
displayCoord(bool _disp)CocoaTweet::API::Statuses::Update
enableDMCommands(bool _enable)CocoaTweet::API::Statuses::Update
excludeReplyUserId(const std::vector< std::string > _ex)CocoaTweet::API::Statuses::Update
failDMCommands(bool _fail)CocoaTweet::API::Statuses::Update
mediaId(const std::vector< std::string > _media)CocoaTweet::API::Statuses::Update
oauth_CocoaTweet::API::Interface::HttpBaseprotected
process(std::weak_ptr< CocoaTweet::OAuth::OAuth1 > _oauth)CocoaTweet::API::Statuses::Update
CocoaTweet::API::Interface::HttpPost::process(std::weak_ptr< CocoaTweet::OAuth::OAuth1 > _oauth, std::function< void(const std::string &)> _callback)CocoaTweet::API::Interface::HttpPostprotectedvirtual
replyToStatusId(const std::string _reply)CocoaTweet::API::Statuses::Update
status(const std::string _status)CocoaTweet::API::Statuses::Update
trimUser(bool _trim)CocoaTweet::API::Statuses::Update
Update()CocoaTweet::API::Statuses::Update
url_CocoaTweet::API::Interface::HttpBaseprotected
- - - - diff --git a/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Update.html b/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Update.html deleted file mode 100644 index a2785be..0000000 --- a/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Update.html +++ /dev/null @@ -1,421 +0,0 @@ - - - - - - - -CocoaTweet: CocoaTweet::API::Statuses::Update Class Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
CocoaTweet::API::Statuses::Update Class Reference
-
-
- -

class for using statuses/update endpoint - More...

- -

#include <update.h>

-
-Inheritance diagram for CocoaTweet::API::Statuses::Update:
-
-
Inheritance graph
- - - - - -
[legend]
-
-Collaboration diagram for CocoaTweet::API::Statuses::Update:
-
-
Collaboration graph
- - - - - -
[legend]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 Update ()
 primary constructor More...
 
void status (const std::string _status)
 set tweet text for sending request to statuses/update More...
 
void mediaId (const std::vector< std::string > _media)
 
void replyToStatusId (const std::string _reply)
 
void autoPopulateReplyMetaData (bool _meta)
 
void excludeReplyUserId (const std::vector< std::string > _ex)
 
void attachmentUrl (const std::string _url)
 
void coord (std::pair< std::string, std::string > _coord)
 
void displayCoord (bool _disp)
 
void trimUser (bool _trim)
 
void enableDMCommands (bool _enable)
 
void failDMCommands (bool _fail)
 
CocoaTweet::API::Model::Tweet process (std::weak_ptr< CocoaTweet::OAuth::OAuth1 > _oauth)
 process request for endpoint More...
 
- - - - - - - - - - - - - - - - - -

-Additional Inherited Members

- Protected Member Functions inherited from CocoaTweet::API::Interface::HttpPost
void process (std::weak_ptr< CocoaTweet::OAuth::OAuth1 > _oauth, std::function< void(const std::string &)> _callback)
 Send HTTP/POST using OAuth object. More...
 
- Static Protected Member Functions inherited from CocoaTweet::API::Interface::HttpBase
static size_t curlCallback_ (char *_ptr, size_t _size, size_t _nmemb, std::string *_stream)
 
- Protected Attributes inherited from CocoaTweet::API::Interface::HttpBase
std::weak_ptr< CocoaTweet::OAuth::OAuth1oauth_
 
std::map< std::string, std::string > bodyParam_
 
std::string url_
 
std::string contentType_
 
-

Detailed Description

-

class for using statuses/update endpoint

-

Constructor & Destructor Documentation

- -

◆ Update()

- -
-
- - - - - - - -
CocoaTweet::API::Statuses::Update::Update ()
-
- -

primary constructor

- -
-
-

Member Function Documentation

- -

◆ attachmentUrl()

- -
-
- - - - - - - - -
void CocoaTweet::API::Statuses::Update::attachmentUrl (const std::string _url)
-
- -
-
- -

◆ autoPopulateReplyMetaData()

- -
-
- - - - - - - - -
void CocoaTweet::API::Statuses::Update::autoPopulateReplyMetaData (bool _meta)
-
- -
-
- -

◆ coord()

- -
-
- - - - - - - - -
void CocoaTweet::API::Statuses::Update::coord (std::pair< std::string, std::string > _coord)
-
- -
-
- -

◆ displayCoord()

- -
-
- - - - - - - - -
void CocoaTweet::API::Statuses::Update::displayCoord (bool _disp)
-
- -
-
- -

◆ enableDMCommands()

- -
-
- - - - - - - - -
void CocoaTweet::API::Statuses::Update::enableDMCommands (bool _enable)
-
- -
-
- -

◆ excludeReplyUserId()

- -
-
- - - - - - - - -
void CocoaTweet::API::Statuses::Update::excludeReplyUserId (const std::vector< std::string > _ex)
-
- -
-
- -

◆ failDMCommands()

- -
-
- - - - - - - - -
void CocoaTweet::API::Statuses::Update::failDMCommands (bool _fail)
-
- -
-
- -

◆ mediaId()

- -
-
- - - - - - - - -
void CocoaTweet::API::Statuses::Update::mediaId (const std::vector< std::string > _media)
-
- -
-
- -

◆ process()

- -
-
- - - - - - - - -
CocoaTweet::API::Model::Tweet CocoaTweet::API::Statuses::Update::process (std::weak_ptr< CocoaTweet::OAuth::OAuth1_oauth)
-
- -

process request for endpoint

-
Parameters
- - - -
[in]std::weak_ptr<CocoaTweet::OAuth::OAuth1>_oauth : pointer to oauth object
[out]CocoaTweet::API::Model::Tweet: request result
-
-
- -
-
- -

◆ replyToStatusId()

- -
-
- - - - - - - - -
void CocoaTweet::API::Statuses::Update::replyToStatusId (const std::string _reply)
-
- -
-
- -

◆ status()

- -
-
- - - - - - - - -
void CocoaTweet::API::Statuses::Update::status (const std::string _status)
-
- -

set tweet text for sending request to statuses/update

-
Parameters
- - - -
[in]conststd::string _status : tweet text
[out]none
-
-
- -
-
- -

◆ trimUser()

- -
-
- - - - - - - - -
void CocoaTweet::API::Statuses::Update::trimUser (bool _trim)
-
- -
-
-
The documentation for this class was generated from the following files: -
- - - - diff --git a/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Update__coll__graph.map b/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Update__coll__graph.map deleted file mode 100644 index 29e42c7..0000000 --- a/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Update__coll__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Update__coll__graph.md5 b/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Update__coll__graph.md5 deleted file mode 100644 index 59b6194..0000000 --- a/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Update__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -23b82a467b03d7bf27042ce69c1fff45 \ No newline at end of file diff --git a/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Update__coll__graph.png b/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Update__coll__graph.png deleted file mode 100644 index d9e334c..0000000 Binary files a/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Update__coll__graph.png and /dev/null differ diff --git a/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Update__inherit__graph.map b/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Update__inherit__graph.map deleted file mode 100644 index 29e42c7..0000000 --- a/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Update__inherit__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Update__inherit__graph.md5 b/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Update__inherit__graph.md5 deleted file mode 100644 index 59b6194..0000000 --- a/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Update__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -23b82a467b03d7bf27042ce69c1fff45 \ No newline at end of file diff --git a/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Update__inherit__graph.png b/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Update__inherit__graph.png deleted file mode 100644 index d9e334c..0000000 Binary files a/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1Update__inherit__graph.png and /dev/null differ diff --git a/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1UserTimeline-members.html b/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1UserTimeline-members.html deleted file mode 100644 index ea376ca..0000000 --- a/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1UserTimeline-members.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
CocoaTweet::API::Statuses::UserTimeline Member List
-
-
- -

This is the complete list of members for CocoaTweet::API::Statuses::UserTimeline, including all inherited members.

- - - - - - - - - - -
bodyParam_CocoaTweet::API::Interface::HttpBaseprotected
contentType_CocoaTweet::API::Interface::HttpBaseprotected
curlCallback_(char *_ptr, size_t _size, size_t _nmemb, std::string *_stream)CocoaTweet::API::Interface::HttpBaseinlineprotectedstatic
oauth_CocoaTweet::API::Interface::HttpBaseprotected
process(std::weak_ptr< CocoaTweet::OAuth::OAuth1 > _oauth)CocoaTweet::API::Statuses::UserTimeline
CocoaTweet::API::Interface::HttpGet::process(std::weak_ptr< CocoaTweet::OAuth::OAuth1 > _oauth, std::function< void(const std::string &)> _callback)CocoaTweet::API::Interface::HttpGetprotectedvirtual
screenName(const std::string &_screenName)CocoaTweet::API::Statuses::UserTimeline
url_CocoaTweet::API::Interface::HttpBaseprotected
UserTimeline()CocoaTweet::API::Statuses::UserTimeline
- - - - diff --git a/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1UserTimeline.html b/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1UserTimeline.html deleted file mode 100644 index 4144551..0000000 --- a/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1UserTimeline.html +++ /dev/null @@ -1,220 +0,0 @@ - - - - - - - -CocoaTweet: CocoaTweet::API::Statuses::UserTimeline Class Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
CocoaTweet::API::Statuses::UserTimeline Class Reference
-
-
- -

class for using statuses/user_timeline endpoint - More...

- -

#include <userTimeline.h>

-
-Inheritance diagram for CocoaTweet::API::Statuses::UserTimeline:
-
-
Inheritance graph
- - - - - -
[legend]
-
-Collaboration diagram for CocoaTweet::API::Statuses::UserTimeline:
-
-
Collaboration graph
- - - - - -
[legend]
- - - - - - - - - - - -

-Public Member Functions

 UserTimeline ()
 primary constructor More...
 
void screenName (const std::string &_screenName)
 set screen name to get timeline More...
 
std::vector< CocoaTweet::API::Model::Tweetprocess (std::weak_ptr< CocoaTweet::OAuth::OAuth1 > _oauth)
 process request for endpoint More...
 
- - - - - - - - - - - - - - - - - -

-Additional Inherited Members

- Protected Member Functions inherited from CocoaTweet::API::Interface::HttpGet
void process (std::weak_ptr< CocoaTweet::OAuth::OAuth1 > _oauth, std::function< void(const std::string &)> _callback)
 Send HTTP/POST using OAuth object. More...
 
- Static Protected Member Functions inherited from CocoaTweet::API::Interface::HttpBase
static size_t curlCallback_ (char *_ptr, size_t _size, size_t _nmemb, std::string *_stream)
 
- Protected Attributes inherited from CocoaTweet::API::Interface::HttpBase
std::weak_ptr< CocoaTweet::OAuth::OAuth1oauth_
 
std::map< std::string, std::string > bodyParam_
 
std::string url_
 
std::string contentType_
 
-

Detailed Description

-

class for using statuses/user_timeline endpoint

-

Constructor & Destructor Documentation

- -

◆ UserTimeline()

- -
-
- - - - - - - -
CocoaTweet::API::Statuses::UserTimeline::UserTimeline ()
-
- -

primary constructor

- -
-
-

Member Function Documentation

- -

◆ process()

- -
-
- - - - - - - - -
std::vector< CocoaTweet::API::Model::Tweet > CocoaTweet::API::Statuses::UserTimeline::process (std::weak_ptr< CocoaTweet::OAuth::OAuth1_oauth)
-
- -

process request for endpoint

-
Parameters
- - - -
[in]std::weak_ptr<CocoaTweet::OAuth::OAuth1>_oauth : pointer to oauth object
[out]std::vector<CocoaTweet::API::Model::Tweet>: request result
-
-
- -
-
- -

◆ screenName()

- -
-
- - - - - - - - -
void CocoaTweet::API::Statuses::UserTimeline::screenName (const std::string & _screenName)
-
- -

set screen name to get timeline

-
Parameters
- - -
[in]conststd::string& _screenName : screen name for getting tweet
-
-
- -
-
-
The documentation for this class was generated from the following files: -
- - - - diff --git a/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1UserTimeline__coll__graph.map b/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1UserTimeline__coll__graph.map deleted file mode 100644 index 19c3323..0000000 --- a/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1UserTimeline__coll__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1UserTimeline__coll__graph.md5 b/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1UserTimeline__coll__graph.md5 deleted file mode 100644 index 739af63..0000000 --- a/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1UserTimeline__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -434abdeea649003f1453628190bb2131 \ No newline at end of file diff --git a/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1UserTimeline__coll__graph.png b/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1UserTimeline__coll__graph.png deleted file mode 100644 index 21cd5ca..0000000 Binary files a/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1UserTimeline__coll__graph.png and /dev/null differ diff --git a/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1UserTimeline__inherit__graph.map b/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1UserTimeline__inherit__graph.map deleted file mode 100644 index 19c3323..0000000 --- a/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1UserTimeline__inherit__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1UserTimeline__inherit__graph.md5 b/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1UserTimeline__inherit__graph.md5 deleted file mode 100644 index 739af63..0000000 --- a/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1UserTimeline__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -434abdeea649003f1453628190bb2131 \ No newline at end of file diff --git a/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1UserTimeline__inherit__graph.png b/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1UserTimeline__inherit__graph.png deleted file mode 100644 index 21cd5ca..0000000 Binary files a/help/html/classCocoaTweet_1_1API_1_1Statuses_1_1UserTimeline__inherit__graph.png and /dev/null differ diff --git a/help/html/classCocoaTweet_1_1API_1_1groupInterface-members.html b/help/html/classCocoaTweet_1_1API_1_1groupInterface-members.html deleted file mode 100644 index 4791d72..0000000 --- a/help/html/classCocoaTweet_1_1API_1_1groupInterface-members.html +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
CocoaTweet::API::groupInterface Member List
-
-
- -

This is the complete list of members for CocoaTweet::API::groupInterface, including all inherited members.

- - -
oauth_CocoaTweet::API::groupInterfaceprotected
- - - - diff --git a/help/html/classCocoaTweet_1_1API_1_1groupInterface.html b/help/html/classCocoaTweet_1_1API_1_1groupInterface.html deleted file mode 100644 index 9cf1e1d..0000000 --- a/help/html/classCocoaTweet_1_1API_1_1groupInterface.html +++ /dev/null @@ -1,129 +0,0 @@ - - - - - - - -CocoaTweet: CocoaTweet::API::groupInterface Class Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
CocoaTweet::API::groupInterface Class Reference
-
-
- -

#include <groupInterface.h>

-
-Inheritance diagram for CocoaTweet::API::groupInterface:
-
-
Inheritance graph
- - - - - - - -
[legend]
- - - - -

-Protected Attributes

std::weak_ptr< CocoaTweet::OAuth::OAuth1oauth_
 
-

Member Data Documentation

- -

◆ oauth_

- -
-
- - - - - -
- - - - -
std::weak_ptr<CocoaTweet::OAuth::OAuth1> CocoaTweet::API::groupInterface::oauth_
-
-protected
-
- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/help/html/classCocoaTweet_1_1API_1_1groupInterface__inherit__graph.map b/help/html/classCocoaTweet_1_1API_1_1groupInterface__inherit__graph.map deleted file mode 100644 index 2286555..0000000 --- a/help/html/classCocoaTweet_1_1API_1_1groupInterface__inherit__graph.map +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/help/html/classCocoaTweet_1_1API_1_1groupInterface__inherit__graph.md5 b/help/html/classCocoaTweet_1_1API_1_1groupInterface__inherit__graph.md5 deleted file mode 100644 index 1788e5b..0000000 --- a/help/html/classCocoaTweet_1_1API_1_1groupInterface__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -e890c6b051e17b9eb20feb6067812ae6 \ No newline at end of file diff --git a/help/html/classCocoaTweet_1_1API_1_1groupInterface__inherit__graph.png b/help/html/classCocoaTweet_1_1API_1_1groupInterface__inherit__graph.png deleted file mode 100644 index f5e6a5b..0000000 Binary files a/help/html/classCocoaTweet_1_1API_1_1groupInterface__inherit__graph.png and /dev/null differ diff --git a/help/html/classCocoaTweet_1_1Exception_1_1AuthenticateException-members.html b/help/html/classCocoaTweet_1_1Exception_1_1AuthenticateException-members.html deleted file mode 100644 index 6537ca4..0000000 --- a/help/html/classCocoaTweet_1_1Exception_1_1AuthenticateException-members.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
CocoaTweet::Exception::AuthenticateException Member List
-
-
- -

This is the complete list of members for CocoaTweet::Exception::AuthenticateException, including all inherited members.

- - - - - - -
CocoaTweet::Exception::Exception::Exception(const char *_msg)CocoaTweet::Exception::Exceptioninline
CocoaTweet::Exception::Exception::Exception(const std::string &_msg)CocoaTweet::Exception::Exceptioninline
msg_CocoaTweet::Exception::Exceptionprotected
what()CocoaTweet::Exception::Exceptioninline
~Exception()=defaultCocoaTweet::Exception::Exceptionvirtual
- - - - diff --git a/help/html/classCocoaTweet_1_1Exception_1_1AuthenticateException.html b/help/html/classCocoaTweet_1_1Exception_1_1AuthenticateException.html deleted file mode 100644 index 4f093f8..0000000 --- a/help/html/classCocoaTweet_1_1Exception_1_1AuthenticateException.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - - -CocoaTweet: CocoaTweet::Exception::AuthenticateException Class Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
CocoaTweet::Exception::AuthenticateException Class Referencefinal
-
-
- -

#include <authenticateException.h>

-
-Inheritance diagram for CocoaTweet::Exception::AuthenticateException:
-
-
Inheritance graph
- - - - - -
[legend]
-
-Collaboration diagram for CocoaTweet::Exception::AuthenticateException:
-
-
Collaboration graph
- - - - - -
[legend]
- - - - - - - - - - - - - - -

-Additional Inherited Members

- Public Member Functions inherited from CocoaTweet::Exception::Exception
 Exception (const char *_msg)
 
 Exception (const std::string &_msg)
 
const std::string & what ()
 
virtual ~Exception ()=default
 
- Protected Attributes inherited from CocoaTweet::Exception::Exception
std::string msg_
 
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/help/html/classCocoaTweet_1_1Exception_1_1AuthenticateException__coll__graph.map b/help/html/classCocoaTweet_1_1Exception_1_1AuthenticateException__coll__graph.map deleted file mode 100644 index c12a8ca..0000000 --- a/help/html/classCocoaTweet_1_1Exception_1_1AuthenticateException__coll__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/help/html/classCocoaTweet_1_1Exception_1_1AuthenticateException__coll__graph.md5 b/help/html/classCocoaTweet_1_1Exception_1_1AuthenticateException__coll__graph.md5 deleted file mode 100644 index f2fc9fb..0000000 --- a/help/html/classCocoaTweet_1_1Exception_1_1AuthenticateException__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -13642cbbe92edf93436dfe50c68aaa7e \ No newline at end of file diff --git a/help/html/classCocoaTweet_1_1Exception_1_1AuthenticateException__coll__graph.png b/help/html/classCocoaTweet_1_1Exception_1_1AuthenticateException__coll__graph.png deleted file mode 100644 index f461b53..0000000 Binary files a/help/html/classCocoaTweet_1_1Exception_1_1AuthenticateException__coll__graph.png and /dev/null differ diff --git a/help/html/classCocoaTweet_1_1Exception_1_1AuthenticateException__inherit__graph.map b/help/html/classCocoaTweet_1_1Exception_1_1AuthenticateException__inherit__graph.map deleted file mode 100644 index c12a8ca..0000000 --- a/help/html/classCocoaTweet_1_1Exception_1_1AuthenticateException__inherit__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/help/html/classCocoaTweet_1_1Exception_1_1AuthenticateException__inherit__graph.md5 b/help/html/classCocoaTweet_1_1Exception_1_1AuthenticateException__inherit__graph.md5 deleted file mode 100644 index f2fc9fb..0000000 --- a/help/html/classCocoaTweet_1_1Exception_1_1AuthenticateException__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -13642cbbe92edf93436dfe50c68aaa7e \ No newline at end of file diff --git a/help/html/classCocoaTweet_1_1Exception_1_1AuthenticateException__inherit__graph.png b/help/html/classCocoaTweet_1_1Exception_1_1AuthenticateException__inherit__graph.png deleted file mode 100644 index f461b53..0000000 Binary files a/help/html/classCocoaTweet_1_1Exception_1_1AuthenticateException__inherit__graph.png and /dev/null differ diff --git a/help/html/classCocoaTweet_1_1Exception_1_1Exception-members.html b/help/html/classCocoaTweet_1_1Exception_1_1Exception-members.html deleted file mode 100644 index 80566c1..0000000 --- a/help/html/classCocoaTweet_1_1Exception_1_1Exception-members.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
CocoaTweet::Exception::Exception Member List
-
-
- -

This is the complete list of members for CocoaTweet::Exception::Exception, including all inherited members.

- - - - - - -
Exception(const char *_msg)CocoaTweet::Exception::Exceptioninline
Exception(const std::string &_msg)CocoaTweet::Exception::Exceptioninline
msg_CocoaTweet::Exception::Exceptionprotected
what()CocoaTweet::Exception::Exceptioninline
~Exception()=defaultCocoaTweet::Exception::Exceptionvirtual
- - - - diff --git a/help/html/classCocoaTweet_1_1Exception_1_1Exception.html b/help/html/classCocoaTweet_1_1Exception_1_1Exception.html deleted file mode 100644 index 51f551a..0000000 --- a/help/html/classCocoaTweet_1_1Exception_1_1Exception.html +++ /dev/null @@ -1,259 +0,0 @@ - - - - - - - -CocoaTweet: CocoaTweet::Exception::Exception Class Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
CocoaTweet::Exception::Exception Class Reference
-
-
- -

#include <exception.h>

-
-Inheritance diagram for CocoaTweet::Exception::Exception:
-
-
Inheritance graph
- - - - - - - - - - - - -
[legend]
-
-Collaboration diagram for CocoaTweet::Exception::Exception:
-
-
Collaboration graph
- - - - -
[legend]
- - - - - - - - - - -

-Public Member Functions

 Exception (const char *_msg)
 
 Exception (const std::string &_msg)
 
const std::string & what ()
 
virtual ~Exception ()=default
 
- - - -

-Protected Attributes

std::string msg_
 
-

Constructor & Destructor Documentation

- -

◆ Exception() [1/2]

- -
-
- - - - - -
- - - - - - - - -
CocoaTweet::Exception::Exception::Exception (const char * _msg)
-
-inline
-
- -
-
- -

◆ Exception() [2/2]

- -
-
- - - - - -
- - - - - - - - -
CocoaTweet::Exception::Exception::Exception (const std::string & _msg)
-
-inline
-
- -
-
- -

◆ ~Exception()

- -
-
- - - - - -
- - - - - - - -
virtual CocoaTweet::Exception::Exception::~Exception ()
-
-virtualdefault
-
- -
-
-

Member Function Documentation

- -

◆ what()

- -
-
- - - - - -
- - - - - - - -
const std::string& CocoaTweet::Exception::Exception::what ()
-
-inline
-
- -
-
-

Member Data Documentation

- -

◆ msg_

- -
-
- - - - - -
- - - - -
std::string CocoaTweet::Exception::Exception::msg_
-
-protected
-
- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/help/html/classCocoaTweet_1_1Exception_1_1Exception__coll__graph.map b/help/html/classCocoaTweet_1_1Exception_1_1Exception__coll__graph.map deleted file mode 100644 index a62f1ee..0000000 --- a/help/html/classCocoaTweet_1_1Exception_1_1Exception__coll__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/help/html/classCocoaTweet_1_1Exception_1_1Exception__coll__graph.md5 b/help/html/classCocoaTweet_1_1Exception_1_1Exception__coll__graph.md5 deleted file mode 100644 index 9136030..0000000 --- a/help/html/classCocoaTweet_1_1Exception_1_1Exception__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -6cda3aca055f5e0c68919a93822315ec \ No newline at end of file diff --git a/help/html/classCocoaTweet_1_1Exception_1_1Exception__coll__graph.png b/help/html/classCocoaTweet_1_1Exception_1_1Exception__coll__graph.png deleted file mode 100644 index 69cf25f..0000000 Binary files a/help/html/classCocoaTweet_1_1Exception_1_1Exception__coll__graph.png and /dev/null differ diff --git a/help/html/classCocoaTweet_1_1Exception_1_1Exception__inherit__graph.map b/help/html/classCocoaTweet_1_1Exception_1_1Exception__inherit__graph.map deleted file mode 100644 index 9a12296..0000000 --- a/help/html/classCocoaTweet_1_1Exception_1_1Exception__inherit__graph.map +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/help/html/classCocoaTweet_1_1Exception_1_1Exception__inherit__graph.md5 b/help/html/classCocoaTweet_1_1Exception_1_1Exception__inherit__graph.md5 deleted file mode 100644 index eb2b8ee..0000000 --- a/help/html/classCocoaTweet_1_1Exception_1_1Exception__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -59519a86fe93af74aa4e7420c31043f0 \ No newline at end of file diff --git a/help/html/classCocoaTweet_1_1Exception_1_1Exception__inherit__graph.png b/help/html/classCocoaTweet_1_1Exception_1_1Exception__inherit__graph.png deleted file mode 100644 index 39c60af..0000000 Binary files a/help/html/classCocoaTweet_1_1Exception_1_1Exception__inherit__graph.png and /dev/null differ diff --git a/help/html/classCocoaTweet_1_1Exception_1_1InvalidParameterException-members.html b/help/html/classCocoaTweet_1_1Exception_1_1InvalidParameterException-members.html deleted file mode 100644 index cb17d63..0000000 --- a/help/html/classCocoaTweet_1_1Exception_1_1InvalidParameterException-members.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
CocoaTweet::Exception::InvalidParameterException Member List
-
-
- -

This is the complete list of members for CocoaTweet::Exception::InvalidParameterException, including all inherited members.

- - - - - - -
CocoaTweet::Exception::Exception::Exception(const char *_msg)CocoaTweet::Exception::Exceptioninline
CocoaTweet::Exception::Exception::Exception(const std::string &_msg)CocoaTweet::Exception::Exceptioninline
msg_CocoaTweet::Exception::Exceptionprotected
what()CocoaTweet::Exception::Exceptioninline
~Exception()=defaultCocoaTweet::Exception::Exceptionvirtual
- - - - diff --git a/help/html/classCocoaTweet_1_1Exception_1_1InvalidParameterException.html b/help/html/classCocoaTweet_1_1Exception_1_1InvalidParameterException.html deleted file mode 100644 index c92a29b..0000000 --- a/help/html/classCocoaTweet_1_1Exception_1_1InvalidParameterException.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - - -CocoaTweet: CocoaTweet::Exception::InvalidParameterException Class Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
CocoaTweet::Exception::InvalidParameterException Class Referencefinal
-
-
- -

#include <invalidParameterException.h>

-
-Inheritance diagram for CocoaTweet::Exception::InvalidParameterException:
-
-
Inheritance graph
- - - - - -
[legend]
-
-Collaboration diagram for CocoaTweet::Exception::InvalidParameterException:
-
-
Collaboration graph
- - - - - -
[legend]
- - - - - - - - - - - - - - -

-Additional Inherited Members

- Public Member Functions inherited from CocoaTweet::Exception::Exception
 Exception (const char *_msg)
 
 Exception (const std::string &_msg)
 
const std::string & what ()
 
virtual ~Exception ()=default
 
- Protected Attributes inherited from CocoaTweet::Exception::Exception
std::string msg_
 
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/help/html/classCocoaTweet_1_1Exception_1_1InvalidParameterException__coll__graph.map b/help/html/classCocoaTweet_1_1Exception_1_1InvalidParameterException__coll__graph.map deleted file mode 100644 index 5b37bc5..0000000 --- a/help/html/classCocoaTweet_1_1Exception_1_1InvalidParameterException__coll__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/help/html/classCocoaTweet_1_1Exception_1_1InvalidParameterException__coll__graph.md5 b/help/html/classCocoaTweet_1_1Exception_1_1InvalidParameterException__coll__graph.md5 deleted file mode 100644 index 7e9e05e..0000000 --- a/help/html/classCocoaTweet_1_1Exception_1_1InvalidParameterException__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -39a933b5a72f919dcd392d016d278312 \ No newline at end of file diff --git a/help/html/classCocoaTweet_1_1Exception_1_1InvalidParameterException__coll__graph.png b/help/html/classCocoaTweet_1_1Exception_1_1InvalidParameterException__coll__graph.png deleted file mode 100644 index 9d580ff..0000000 Binary files a/help/html/classCocoaTweet_1_1Exception_1_1InvalidParameterException__coll__graph.png and /dev/null differ diff --git a/help/html/classCocoaTweet_1_1Exception_1_1InvalidParameterException__inherit__graph.map b/help/html/classCocoaTweet_1_1Exception_1_1InvalidParameterException__inherit__graph.map deleted file mode 100644 index 5b37bc5..0000000 --- a/help/html/classCocoaTweet_1_1Exception_1_1InvalidParameterException__inherit__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/help/html/classCocoaTweet_1_1Exception_1_1InvalidParameterException__inherit__graph.md5 b/help/html/classCocoaTweet_1_1Exception_1_1InvalidParameterException__inherit__graph.md5 deleted file mode 100644 index 7e9e05e..0000000 --- a/help/html/classCocoaTweet_1_1Exception_1_1InvalidParameterException__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -39a933b5a72f919dcd392d016d278312 \ No newline at end of file diff --git a/help/html/classCocoaTweet_1_1Exception_1_1InvalidParameterException__inherit__graph.png b/help/html/classCocoaTweet_1_1Exception_1_1InvalidParameterException__inherit__graph.png deleted file mode 100644 index 9d580ff..0000000 Binary files a/help/html/classCocoaTweet_1_1Exception_1_1InvalidParameterException__inherit__graph.png and /dev/null differ diff --git a/help/html/classCocoaTweet_1_1Exception_1_1RateLimitException-members.html b/help/html/classCocoaTweet_1_1Exception_1_1RateLimitException-members.html deleted file mode 100644 index 132a97a..0000000 --- a/help/html/classCocoaTweet_1_1Exception_1_1RateLimitException-members.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
CocoaTweet::Exception::RateLimitException Member List
-
-
- -

This is the complete list of members for CocoaTweet::Exception::RateLimitException, including all inherited members.

- - - - - - -
CocoaTweet::Exception::Exception::Exception(const char *_msg)CocoaTweet::Exception::Exceptioninline
CocoaTweet::Exception::Exception::Exception(const std::string &_msg)CocoaTweet::Exception::Exceptioninline
msg_CocoaTweet::Exception::Exceptionprotected
what()CocoaTweet::Exception::Exceptioninline
~Exception()=defaultCocoaTweet::Exception::Exceptionvirtual
- - - - diff --git a/help/html/classCocoaTweet_1_1Exception_1_1RateLimitException.html b/help/html/classCocoaTweet_1_1Exception_1_1RateLimitException.html deleted file mode 100644 index 975394c..0000000 --- a/help/html/classCocoaTweet_1_1Exception_1_1RateLimitException.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - - -CocoaTweet: CocoaTweet::Exception::RateLimitException Class Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
CocoaTweet::Exception::RateLimitException Class Referencefinal
-
-
- -

#include <rateLimitException.h>

-
-Inheritance diagram for CocoaTweet::Exception::RateLimitException:
-
-
Inheritance graph
- - - - - -
[legend]
-
-Collaboration diagram for CocoaTweet::Exception::RateLimitException:
-
-
Collaboration graph
- - - - - -
[legend]
- - - - - - - - - - - - - - -

-Additional Inherited Members

- Public Member Functions inherited from CocoaTweet::Exception::Exception
 Exception (const char *_msg)
 
 Exception (const std::string &_msg)
 
const std::string & what ()
 
virtual ~Exception ()=default
 
- Protected Attributes inherited from CocoaTweet::Exception::Exception
std::string msg_
 
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/help/html/classCocoaTweet_1_1Exception_1_1RateLimitException__coll__graph.map b/help/html/classCocoaTweet_1_1Exception_1_1RateLimitException__coll__graph.map deleted file mode 100644 index ee35550..0000000 --- a/help/html/classCocoaTweet_1_1Exception_1_1RateLimitException__coll__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/help/html/classCocoaTweet_1_1Exception_1_1RateLimitException__coll__graph.md5 b/help/html/classCocoaTweet_1_1Exception_1_1RateLimitException__coll__graph.md5 deleted file mode 100644 index d6db927..0000000 --- a/help/html/classCocoaTweet_1_1Exception_1_1RateLimitException__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -8becaec0c585f3b361a43dc0b778ef6d \ No newline at end of file diff --git a/help/html/classCocoaTweet_1_1Exception_1_1RateLimitException__coll__graph.png b/help/html/classCocoaTweet_1_1Exception_1_1RateLimitException__coll__graph.png deleted file mode 100644 index 0c7bb6f..0000000 Binary files a/help/html/classCocoaTweet_1_1Exception_1_1RateLimitException__coll__graph.png and /dev/null differ diff --git a/help/html/classCocoaTweet_1_1Exception_1_1RateLimitException__inherit__graph.map b/help/html/classCocoaTweet_1_1Exception_1_1RateLimitException__inherit__graph.map deleted file mode 100644 index ee35550..0000000 --- a/help/html/classCocoaTweet_1_1Exception_1_1RateLimitException__inherit__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/help/html/classCocoaTweet_1_1Exception_1_1RateLimitException__inherit__graph.md5 b/help/html/classCocoaTweet_1_1Exception_1_1RateLimitException__inherit__graph.md5 deleted file mode 100644 index d6db927..0000000 --- a/help/html/classCocoaTweet_1_1Exception_1_1RateLimitException__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -8becaec0c585f3b361a43dc0b778ef6d \ No newline at end of file diff --git a/help/html/classCocoaTweet_1_1Exception_1_1RateLimitException__inherit__graph.png b/help/html/classCocoaTweet_1_1Exception_1_1RateLimitException__inherit__graph.png deleted file mode 100644 index 0c7bb6f..0000000 Binary files a/help/html/classCocoaTweet_1_1Exception_1_1RateLimitException__inherit__graph.png and /dev/null differ diff --git a/help/html/classCocoaTweet_1_1Exception_1_1TokenInvalidException-members.html b/help/html/classCocoaTweet_1_1Exception_1_1TokenInvalidException-members.html deleted file mode 100644 index e74c91d..0000000 --- a/help/html/classCocoaTweet_1_1Exception_1_1TokenInvalidException-members.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
CocoaTweet::Exception::TokenInvalidException Member List
-
-
- -

This is the complete list of members for CocoaTweet::Exception::TokenInvalidException, including all inherited members.

- - - - - - -
CocoaTweet::Exception::Exception::Exception(const char *_msg)CocoaTweet::Exception::Exceptioninline
CocoaTweet::Exception::Exception::Exception(const std::string &_msg)CocoaTweet::Exception::Exceptioninline
msg_CocoaTweet::Exception::Exceptionprotected
what()CocoaTweet::Exception::Exceptioninline
~Exception()=defaultCocoaTweet::Exception::Exceptionvirtual
- - - - diff --git a/help/html/classCocoaTweet_1_1Exception_1_1TokenInvalidException.html b/help/html/classCocoaTweet_1_1Exception_1_1TokenInvalidException.html deleted file mode 100644 index 6500322..0000000 --- a/help/html/classCocoaTweet_1_1Exception_1_1TokenInvalidException.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - - -CocoaTweet: CocoaTweet::Exception::TokenInvalidException Class Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
CocoaTweet::Exception::TokenInvalidException Class Referencefinal
-
-
- -

#include <tokenInvalidException.h>

-
-Inheritance diagram for CocoaTweet::Exception::TokenInvalidException:
-
-
Inheritance graph
- - - - - -
[legend]
-
-Collaboration diagram for CocoaTweet::Exception::TokenInvalidException:
-
-
Collaboration graph
- - - - - -
[legend]
- - - - - - - - - - - - - - -

-Additional Inherited Members

- Public Member Functions inherited from CocoaTweet::Exception::Exception
 Exception (const char *_msg)
 
 Exception (const std::string &_msg)
 
const std::string & what ()
 
virtual ~Exception ()=default
 
- Protected Attributes inherited from CocoaTweet::Exception::Exception
std::string msg_
 
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/help/html/classCocoaTweet_1_1Exception_1_1TokenInvalidException__coll__graph.map b/help/html/classCocoaTweet_1_1Exception_1_1TokenInvalidException__coll__graph.map deleted file mode 100644 index 8e96bf6..0000000 --- a/help/html/classCocoaTweet_1_1Exception_1_1TokenInvalidException__coll__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/help/html/classCocoaTweet_1_1Exception_1_1TokenInvalidException__coll__graph.md5 b/help/html/classCocoaTweet_1_1Exception_1_1TokenInvalidException__coll__graph.md5 deleted file mode 100644 index 3b6ee0d..0000000 --- a/help/html/classCocoaTweet_1_1Exception_1_1TokenInvalidException__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -9c60e8593e3091d143378d4807405ec0 \ No newline at end of file diff --git a/help/html/classCocoaTweet_1_1Exception_1_1TokenInvalidException__coll__graph.png b/help/html/classCocoaTweet_1_1Exception_1_1TokenInvalidException__coll__graph.png deleted file mode 100644 index cc5e622..0000000 Binary files a/help/html/classCocoaTweet_1_1Exception_1_1TokenInvalidException__coll__graph.png and /dev/null differ diff --git a/help/html/classCocoaTweet_1_1Exception_1_1TokenInvalidException__inherit__graph.map b/help/html/classCocoaTweet_1_1Exception_1_1TokenInvalidException__inherit__graph.map deleted file mode 100644 index 8e96bf6..0000000 --- a/help/html/classCocoaTweet_1_1Exception_1_1TokenInvalidException__inherit__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/help/html/classCocoaTweet_1_1Exception_1_1TokenInvalidException__inherit__graph.md5 b/help/html/classCocoaTweet_1_1Exception_1_1TokenInvalidException__inherit__graph.md5 deleted file mode 100644 index 3b6ee0d..0000000 --- a/help/html/classCocoaTweet_1_1Exception_1_1TokenInvalidException__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -9c60e8593e3091d143378d4807405ec0 \ No newline at end of file diff --git a/help/html/classCocoaTweet_1_1Exception_1_1TokenInvalidException__inherit__graph.png b/help/html/classCocoaTweet_1_1Exception_1_1TokenInvalidException__inherit__graph.png deleted file mode 100644 index cc5e622..0000000 Binary files a/help/html/classCocoaTweet_1_1Exception_1_1TokenInvalidException__inherit__graph.png and /dev/null differ diff --git a/help/html/classCocoaTweet_1_1Exception_1_1TweetDuplicateException-members.html b/help/html/classCocoaTweet_1_1Exception_1_1TweetDuplicateException-members.html deleted file mode 100644 index af069e1..0000000 --- a/help/html/classCocoaTweet_1_1Exception_1_1TweetDuplicateException-members.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
CocoaTweet::Exception::TweetDuplicateException Member List
-
-
- -

This is the complete list of members for CocoaTweet::Exception::TweetDuplicateException, including all inherited members.

- - - - - - -
CocoaTweet::Exception::Exception::Exception(const char *_msg)CocoaTweet::Exception::Exceptioninline
CocoaTweet::Exception::Exception::Exception(const std::string &_msg)CocoaTweet::Exception::Exceptioninline
msg_CocoaTweet::Exception::Exceptionprotected
what()CocoaTweet::Exception::Exceptioninline
~Exception()=defaultCocoaTweet::Exception::Exceptionvirtual
- - - - diff --git a/help/html/classCocoaTweet_1_1Exception_1_1TweetDuplicateException.html b/help/html/classCocoaTweet_1_1Exception_1_1TweetDuplicateException.html deleted file mode 100644 index 9671e5f..0000000 --- a/help/html/classCocoaTweet_1_1Exception_1_1TweetDuplicateException.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - - -CocoaTweet: CocoaTweet::Exception::TweetDuplicateException Class Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
CocoaTweet::Exception::TweetDuplicateException Class Referencefinal
-
-
- -

#include <tweetDuplicateException.h>

-
-Inheritance diagram for CocoaTweet::Exception::TweetDuplicateException:
-
-
Inheritance graph
- - - - - -
[legend]
-
-Collaboration diagram for CocoaTweet::Exception::TweetDuplicateException:
-
-
Collaboration graph
- - - - - -
[legend]
- - - - - - - - - - - - - - -

-Additional Inherited Members

- Public Member Functions inherited from CocoaTweet::Exception::Exception
 Exception (const char *_msg)
 
 Exception (const std::string &_msg)
 
const std::string & what ()
 
virtual ~Exception ()=default
 
- Protected Attributes inherited from CocoaTweet::Exception::Exception
std::string msg_
 
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/help/html/classCocoaTweet_1_1Exception_1_1TweetDuplicateException__coll__graph.map b/help/html/classCocoaTweet_1_1Exception_1_1TweetDuplicateException__coll__graph.map deleted file mode 100644 index 1dba615..0000000 --- a/help/html/classCocoaTweet_1_1Exception_1_1TweetDuplicateException__coll__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/help/html/classCocoaTweet_1_1Exception_1_1TweetDuplicateException__coll__graph.md5 b/help/html/classCocoaTweet_1_1Exception_1_1TweetDuplicateException__coll__graph.md5 deleted file mode 100644 index 6a03b93..0000000 --- a/help/html/classCocoaTweet_1_1Exception_1_1TweetDuplicateException__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -2223c3f13eed064caf817f46cc5bc2ab \ No newline at end of file diff --git a/help/html/classCocoaTweet_1_1Exception_1_1TweetDuplicateException__coll__graph.png b/help/html/classCocoaTweet_1_1Exception_1_1TweetDuplicateException__coll__graph.png deleted file mode 100644 index 9c68636..0000000 Binary files a/help/html/classCocoaTweet_1_1Exception_1_1TweetDuplicateException__coll__graph.png and /dev/null differ diff --git a/help/html/classCocoaTweet_1_1Exception_1_1TweetDuplicateException__inherit__graph.map b/help/html/classCocoaTweet_1_1Exception_1_1TweetDuplicateException__inherit__graph.map deleted file mode 100644 index 1dba615..0000000 --- a/help/html/classCocoaTweet_1_1Exception_1_1TweetDuplicateException__inherit__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/help/html/classCocoaTweet_1_1Exception_1_1TweetDuplicateException__inherit__graph.md5 b/help/html/classCocoaTweet_1_1Exception_1_1TweetDuplicateException__inherit__graph.md5 deleted file mode 100644 index 6a03b93..0000000 --- a/help/html/classCocoaTweet_1_1Exception_1_1TweetDuplicateException__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -2223c3f13eed064caf817f46cc5bc2ab \ No newline at end of file diff --git a/help/html/classCocoaTweet_1_1Exception_1_1TweetDuplicateException__inherit__graph.png b/help/html/classCocoaTweet_1_1Exception_1_1TweetDuplicateException__inherit__graph.png deleted file mode 100644 index 9c68636..0000000 Binary files a/help/html/classCocoaTweet_1_1Exception_1_1TweetDuplicateException__inherit__graph.png and /dev/null differ diff --git a/help/html/classCocoaTweet_1_1Exception_1_1TweetNotFoundException-members.html b/help/html/classCocoaTweet_1_1Exception_1_1TweetNotFoundException-members.html deleted file mode 100644 index 6217d81..0000000 --- a/help/html/classCocoaTweet_1_1Exception_1_1TweetNotFoundException-members.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
CocoaTweet::Exception::TweetNotFoundException Member List
-
-
- -

This is the complete list of members for CocoaTweet::Exception::TweetNotFoundException, including all inherited members.

- - - - - - -
CocoaTweet::Exception::Exception::Exception(const char *_msg)CocoaTweet::Exception::Exceptioninline
CocoaTweet::Exception::Exception::Exception(const std::string &_msg)CocoaTweet::Exception::Exceptioninline
msg_CocoaTweet::Exception::Exceptionprotected
what()CocoaTweet::Exception::Exceptioninline
~Exception()=defaultCocoaTweet::Exception::Exceptionvirtual
- - - - diff --git a/help/html/classCocoaTweet_1_1Exception_1_1TweetNotFoundException.html b/help/html/classCocoaTweet_1_1Exception_1_1TweetNotFoundException.html deleted file mode 100644 index ee1db33..0000000 --- a/help/html/classCocoaTweet_1_1Exception_1_1TweetNotFoundException.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - - -CocoaTweet: CocoaTweet::Exception::TweetNotFoundException Class Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
CocoaTweet::Exception::TweetNotFoundException Class Referencefinal
-
-
- -

#include <tweetNotFoundException.h>

-
-Inheritance diagram for CocoaTweet::Exception::TweetNotFoundException:
-
-
Inheritance graph
- - - - - -
[legend]
-
-Collaboration diagram for CocoaTweet::Exception::TweetNotFoundException:
-
-
Collaboration graph
- - - - - -
[legend]
- - - - - - - - - - - - - - -

-Additional Inherited Members

- Public Member Functions inherited from CocoaTweet::Exception::Exception
 Exception (const char *_msg)
 
 Exception (const std::string &_msg)
 
const std::string & what ()
 
virtual ~Exception ()=default
 
- Protected Attributes inherited from CocoaTweet::Exception::Exception
std::string msg_
 
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/help/html/classCocoaTweet_1_1Exception_1_1TweetNotFoundException__coll__graph.map b/help/html/classCocoaTweet_1_1Exception_1_1TweetNotFoundException__coll__graph.map deleted file mode 100644 index d6d3edd..0000000 --- a/help/html/classCocoaTweet_1_1Exception_1_1TweetNotFoundException__coll__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/help/html/classCocoaTweet_1_1Exception_1_1TweetNotFoundException__coll__graph.md5 b/help/html/classCocoaTweet_1_1Exception_1_1TweetNotFoundException__coll__graph.md5 deleted file mode 100644 index 79cb229..0000000 --- a/help/html/classCocoaTweet_1_1Exception_1_1TweetNotFoundException__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -fad069102972647eb00ba79d28a2d96d \ No newline at end of file diff --git a/help/html/classCocoaTweet_1_1Exception_1_1TweetNotFoundException__coll__graph.png b/help/html/classCocoaTweet_1_1Exception_1_1TweetNotFoundException__coll__graph.png deleted file mode 100644 index 526b4ee..0000000 Binary files a/help/html/classCocoaTweet_1_1Exception_1_1TweetNotFoundException__coll__graph.png and /dev/null differ diff --git a/help/html/classCocoaTweet_1_1Exception_1_1TweetNotFoundException__inherit__graph.map b/help/html/classCocoaTweet_1_1Exception_1_1TweetNotFoundException__inherit__graph.map deleted file mode 100644 index d6d3edd..0000000 --- a/help/html/classCocoaTweet_1_1Exception_1_1TweetNotFoundException__inherit__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/help/html/classCocoaTweet_1_1Exception_1_1TweetNotFoundException__inherit__graph.md5 b/help/html/classCocoaTweet_1_1Exception_1_1TweetNotFoundException__inherit__graph.md5 deleted file mode 100644 index 79cb229..0000000 --- a/help/html/classCocoaTweet_1_1Exception_1_1TweetNotFoundException__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -fad069102972647eb00ba79d28a2d96d \ No newline at end of file diff --git a/help/html/classCocoaTweet_1_1Exception_1_1TweetNotFoundException__inherit__graph.png b/help/html/classCocoaTweet_1_1Exception_1_1TweetNotFoundException__inherit__graph.png deleted file mode 100644 index 526b4ee..0000000 Binary files a/help/html/classCocoaTweet_1_1Exception_1_1TweetNotFoundException__inherit__graph.png and /dev/null differ diff --git a/help/html/classCocoaTweet_1_1Exception_1_1TweetTooLongException-members.html b/help/html/classCocoaTweet_1_1Exception_1_1TweetTooLongException-members.html deleted file mode 100644 index fd2633f..0000000 --- a/help/html/classCocoaTweet_1_1Exception_1_1TweetTooLongException-members.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
CocoaTweet::Exception::TweetTooLongException Member List
-
-
- -

This is the complete list of members for CocoaTweet::Exception::TweetTooLongException, including all inherited members.

- - - - - - -
CocoaTweet::Exception::Exception::Exception(const char *_msg)CocoaTweet::Exception::Exceptioninline
CocoaTweet::Exception::Exception::Exception(const std::string &_msg)CocoaTweet::Exception::Exceptioninline
msg_CocoaTweet::Exception::Exceptionprotected
what()CocoaTweet::Exception::Exceptioninline
~Exception()=defaultCocoaTweet::Exception::Exceptionvirtual
- - - - diff --git a/help/html/classCocoaTweet_1_1Exception_1_1TweetTooLongException.html b/help/html/classCocoaTweet_1_1Exception_1_1TweetTooLongException.html deleted file mode 100644 index 8f4eadf..0000000 --- a/help/html/classCocoaTweet_1_1Exception_1_1TweetTooLongException.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - - -CocoaTweet: CocoaTweet::Exception::TweetTooLongException Class Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
CocoaTweet::Exception::TweetTooLongException Class Referencefinal
-
-
- -

#include <tweetTooLongException.h>

-
-Inheritance diagram for CocoaTweet::Exception::TweetTooLongException:
-
-
Inheritance graph
- - - - - -
[legend]
-
-Collaboration diagram for CocoaTweet::Exception::TweetTooLongException:
-
-
Collaboration graph
- - - - - -
[legend]
- - - - - - - - - - - - - - -

-Additional Inherited Members

- Public Member Functions inherited from CocoaTweet::Exception::Exception
 Exception (const char *_msg)
 
 Exception (const std::string &_msg)
 
const std::string & what ()
 
virtual ~Exception ()=default
 
- Protected Attributes inherited from CocoaTweet::Exception::Exception
std::string msg_
 
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/help/html/classCocoaTweet_1_1Exception_1_1TweetTooLongException__coll__graph.map b/help/html/classCocoaTweet_1_1Exception_1_1TweetTooLongException__coll__graph.map deleted file mode 100644 index 2407884..0000000 --- a/help/html/classCocoaTweet_1_1Exception_1_1TweetTooLongException__coll__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/help/html/classCocoaTweet_1_1Exception_1_1TweetTooLongException__coll__graph.md5 b/help/html/classCocoaTweet_1_1Exception_1_1TweetTooLongException__coll__graph.md5 deleted file mode 100644 index 267e647..0000000 --- a/help/html/classCocoaTweet_1_1Exception_1_1TweetTooLongException__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -44a23c622a7f356e9f22482b6664837f \ No newline at end of file diff --git a/help/html/classCocoaTweet_1_1Exception_1_1TweetTooLongException__coll__graph.png b/help/html/classCocoaTweet_1_1Exception_1_1TweetTooLongException__coll__graph.png deleted file mode 100644 index 19f9a26..0000000 Binary files a/help/html/classCocoaTweet_1_1Exception_1_1TweetTooLongException__coll__graph.png and /dev/null differ diff --git a/help/html/classCocoaTweet_1_1Exception_1_1TweetTooLongException__inherit__graph.map b/help/html/classCocoaTweet_1_1Exception_1_1TweetTooLongException__inherit__graph.map deleted file mode 100644 index 2407884..0000000 --- a/help/html/classCocoaTweet_1_1Exception_1_1TweetTooLongException__inherit__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/help/html/classCocoaTweet_1_1Exception_1_1TweetTooLongException__inherit__graph.md5 b/help/html/classCocoaTweet_1_1Exception_1_1TweetTooLongException__inherit__graph.md5 deleted file mode 100644 index 267e647..0000000 --- a/help/html/classCocoaTweet_1_1Exception_1_1TweetTooLongException__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -44a23c622a7f356e9f22482b6664837f \ No newline at end of file diff --git a/help/html/classCocoaTweet_1_1Exception_1_1TweetTooLongException__inherit__graph.png b/help/html/classCocoaTweet_1_1Exception_1_1TweetTooLongException__inherit__graph.png deleted file mode 100644 index 19f9a26..0000000 Binary files a/help/html/classCocoaTweet_1_1Exception_1_1TweetTooLongException__inherit__graph.png and /dev/null differ diff --git a/help/html/classCocoaTweet_1_1Exception_1_1UnsupportedMediaTypeException-members.html b/help/html/classCocoaTweet_1_1Exception_1_1UnsupportedMediaTypeException-members.html deleted file mode 100644 index 254ca80..0000000 --- a/help/html/classCocoaTweet_1_1Exception_1_1UnsupportedMediaTypeException-members.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
CocoaTweet::Exception::UnsupportedMediaTypeException Member List
-
-
- -

This is the complete list of members for CocoaTweet::Exception::UnsupportedMediaTypeException, including all inherited members.

- - - - - - -
CocoaTweet::Exception::Exception::Exception(const char *_msg)CocoaTweet::Exception::Exceptioninline
CocoaTweet::Exception::Exception::Exception(const std::string &_msg)CocoaTweet::Exception::Exceptioninline
msg_CocoaTweet::Exception::Exceptionprotected
what()CocoaTweet::Exception::Exceptioninline
~Exception()=defaultCocoaTweet::Exception::Exceptionvirtual
- - - - diff --git a/help/html/classCocoaTweet_1_1Exception_1_1UnsupportedMediaTypeException.html b/help/html/classCocoaTweet_1_1Exception_1_1UnsupportedMediaTypeException.html deleted file mode 100644 index 0d46959..0000000 --- a/help/html/classCocoaTweet_1_1Exception_1_1UnsupportedMediaTypeException.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - - -CocoaTweet: CocoaTweet::Exception::UnsupportedMediaTypeException Class Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
CocoaTweet::Exception::UnsupportedMediaTypeException Class Referencefinal
-
-
- -

#include <unsupportedMediaTypeException.h>

-
-Inheritance diagram for CocoaTweet::Exception::UnsupportedMediaTypeException:
-
-
Inheritance graph
- - - - - -
[legend]
-
-Collaboration diagram for CocoaTweet::Exception::UnsupportedMediaTypeException:
-
-
Collaboration graph
- - - - - -
[legend]
- - - - - - - - - - - - - - -

-Additional Inherited Members

- Public Member Functions inherited from CocoaTweet::Exception::Exception
 Exception (const char *_msg)
 
 Exception (const std::string &_msg)
 
const std::string & what ()
 
virtual ~Exception ()=default
 
- Protected Attributes inherited from CocoaTweet::Exception::Exception
std::string msg_
 
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/help/html/classCocoaTweet_1_1Exception_1_1UnsupportedMediaTypeException__coll__graph.map b/help/html/classCocoaTweet_1_1Exception_1_1UnsupportedMediaTypeException__coll__graph.map deleted file mode 100644 index 4f75e00..0000000 --- a/help/html/classCocoaTweet_1_1Exception_1_1UnsupportedMediaTypeException__coll__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/help/html/classCocoaTweet_1_1Exception_1_1UnsupportedMediaTypeException__coll__graph.md5 b/help/html/classCocoaTweet_1_1Exception_1_1UnsupportedMediaTypeException__coll__graph.md5 deleted file mode 100644 index b7c67d4..0000000 --- a/help/html/classCocoaTweet_1_1Exception_1_1UnsupportedMediaTypeException__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -62f8121d7ace16eaba4053bae6fe0a17 \ No newline at end of file diff --git a/help/html/classCocoaTweet_1_1Exception_1_1UnsupportedMediaTypeException__coll__graph.png b/help/html/classCocoaTweet_1_1Exception_1_1UnsupportedMediaTypeException__coll__graph.png deleted file mode 100644 index 59e7ea8..0000000 Binary files a/help/html/classCocoaTweet_1_1Exception_1_1UnsupportedMediaTypeException__coll__graph.png and /dev/null differ diff --git a/help/html/classCocoaTweet_1_1Exception_1_1UnsupportedMediaTypeException__inherit__graph.map b/help/html/classCocoaTweet_1_1Exception_1_1UnsupportedMediaTypeException__inherit__graph.map deleted file mode 100644 index 4f75e00..0000000 --- a/help/html/classCocoaTweet_1_1Exception_1_1UnsupportedMediaTypeException__inherit__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/help/html/classCocoaTweet_1_1Exception_1_1UnsupportedMediaTypeException__inherit__graph.md5 b/help/html/classCocoaTweet_1_1Exception_1_1UnsupportedMediaTypeException__inherit__graph.md5 deleted file mode 100644 index b7c67d4..0000000 --- a/help/html/classCocoaTweet_1_1Exception_1_1UnsupportedMediaTypeException__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -62f8121d7ace16eaba4053bae6fe0a17 \ No newline at end of file diff --git a/help/html/classCocoaTweet_1_1Exception_1_1UnsupportedMediaTypeException__inherit__graph.png b/help/html/classCocoaTweet_1_1Exception_1_1UnsupportedMediaTypeException__inherit__graph.png deleted file mode 100644 index 59e7ea8..0000000 Binary files a/help/html/classCocoaTweet_1_1Exception_1_1UnsupportedMediaTypeException__inherit__graph.png and /dev/null differ diff --git a/help/html/classCocoaTweet_1_1OAuth_1_1Key-members.html b/help/html/classCocoaTweet_1_1OAuth_1_1Key-members.html deleted file mode 100644 index de2b97a..0000000 --- a/help/html/classCocoaTweet_1_1OAuth_1_1Key-members.html +++ /dev/null @@ -1,99 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
CocoaTweet::OAuth::Key Member List
-
-
- -

This is the complete list of members for CocoaTweet::OAuth::Key, including all inherited members.

- - - - - - - - - - - - - - - - - -
accessToken(const std::string &_accessToken)CocoaTweet::OAuth::Keyinline
accessToken() constCocoaTweet::OAuth::Keyinline
accessTokenSecret(const std::string &_accessTokenSecret)CocoaTweet::OAuth::Keyinline
accessTokenSecret() constCocoaTweet::OAuth::Keyinline
bearerToken(const std::string &_bearer)CocoaTweet::OAuth::Keyinline
bearerToken() constCocoaTweet::OAuth::Keyinline
consumerKey(const std::string &_consumerKey)CocoaTweet::OAuth::Keyinline
consumerKey() constCocoaTweet::OAuth::Keyinline
consumerSecret(const std::string &_consumerSecret)CocoaTweet::OAuth::Keyinline
consumerSecret() constCocoaTweet::OAuth::Keyinline
fromJsonFile(const std::string _jsonFile)CocoaTweet::OAuth::Keystatic
Key()CocoaTweet::OAuth::Keyinline
Key(const std::string &_consumerKey, const std::string &_consumerSecret, const std::string &_accessToken, const std::string &_accessTokenSecret)CocoaTweet::OAuth::Keyinline
Key(const std::string &_consumerKey, const std::string &_consumerSecret)CocoaTweet::OAuth::Keyinline
noSecret() constCocoaTweet::OAuth::Keyinline
secret() constCocoaTweet::OAuth::Keyinline
- - - - diff --git a/help/html/classCocoaTweet_1_1OAuth_1_1Key.html b/help/html/classCocoaTweet_1_1OAuth_1_1Key.html deleted file mode 100644 index 42da754..0000000 --- a/help/html/classCocoaTweet_1_1OAuth_1_1Key.html +++ /dev/null @@ -1,571 +0,0 @@ - - - - - - - -CocoaTweet: CocoaTweet::OAuth::Key Class Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
CocoaTweet::OAuth::Key Class Reference
-
-
- -

#include <key.h>

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 Key ()
 
 Key (const std::string &_consumerKey, const std::string &_consumerSecret, const std::string &_accessToken, const std::string &_accessTokenSecret)
 
 Key (const std::string &_consumerKey, const std::string &_consumerSecret)
 
void consumerKey (const std::string &_consumerKey)
 
void consumerSecret (const std::string &_consumerSecret)
 
void accessToken (const std::string &_accessToken)
 
void accessTokenSecret (const std::string &_accessTokenSecret)
 
void bearerToken (const std::string &_bearer)
 
const std::string & consumerKey () const
 
const std::string & consumerSecret () const
 
const std::string & accessToken () const
 
const std::string & accessTokenSecret () const
 
const std::string & bearerToken () const
 
std::map< std::string, std::string > noSecret () const
 
const std::map< std::string, std::string > secret () const
 
- - - -

-Static Public Member Functions

static Key fromJsonFile (const std::string _jsonFile)
 
-

Constructor & Destructor Documentation

- -

◆ Key() [1/3]

- -
-
- - - - - -
- - - - - - - -
CocoaTweet::OAuth::Key::Key ()
-
-inline
-
- -
-
- -

◆ Key() [2/3]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
CocoaTweet::OAuth::Key::Key (const std::string & _consumerKey,
const std::string & _consumerSecret,
const std::string & _accessToken,
const std::string & _accessTokenSecret 
)
-
-inline
-
- -
-
- -

◆ Key() [3/3]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
CocoaTweet::OAuth::Key::Key (const std::string & _consumerKey,
const std::string & _consumerSecret 
)
-
-inline
-
- -
-
-

Member Function Documentation

- -

◆ accessToken() [1/2]

- -
-
- - - - - -
- - - - - - - -
const std::string& CocoaTweet::OAuth::Key::accessToken () const
-
-inline
-
- -
-
- -

◆ accessToken() [2/2]

- -
-
- - - - - -
- - - - - - - - -
void CocoaTweet::OAuth::Key::accessToken (const std::string & _accessToken)
-
-inline
-
- -
-
- -

◆ accessTokenSecret() [1/2]

- -
-
- - - - - -
- - - - - - - -
const std::string& CocoaTweet::OAuth::Key::accessTokenSecret () const
-
-inline
-
- -
-
- -

◆ accessTokenSecret() [2/2]

- -
-
- - - - - -
- - - - - - - - -
void CocoaTweet::OAuth::Key::accessTokenSecret (const std::string & _accessTokenSecret)
-
-inline
-
- -
-
- -

◆ bearerToken() [1/2]

- -
-
- - - - - -
- - - - - - - -
const std::string& CocoaTweet::OAuth::Key::bearerToken () const
-
-inline
-
- -
-
- -

◆ bearerToken() [2/2]

- -
-
- - - - - -
- - - - - - - - -
void CocoaTweet::OAuth::Key::bearerToken (const std::string & _bearer)
-
-inline
-
- -
-
- -

◆ consumerKey() [1/2]

- -
-
- - - - - -
- - - - - - - -
const std::string& CocoaTweet::OAuth::Key::consumerKey () const
-
-inline
-
- -
-
- -

◆ consumerKey() [2/2]

- -
-
- - - - - -
- - - - - - - - -
void CocoaTweet::OAuth::Key::consumerKey (const std::string & _consumerKey)
-
-inline
-
- -
-
- -

◆ consumerSecret() [1/2]

- -
-
- - - - - -
- - - - - - - -
const std::string& CocoaTweet::OAuth::Key::consumerSecret () const
-
-inline
-
- -
-
- -

◆ consumerSecret() [2/2]

- -
-
- - - - - -
- - - - - - - - -
void CocoaTweet::OAuth::Key::consumerSecret (const std::string & _consumerSecret)
-
-inline
-
- -
-
- -

◆ fromJsonFile()

- -
-
- - - - - -
- - - - - - - - -
Key CocoaTweet::OAuth::Key::fromJsonFile (const std::string _jsonFile)
-
-static
-
- -
-
- -

◆ noSecret()

- -
-
- - - - - -
- - - - - - - -
std::map<std::string, std::string> CocoaTweet::OAuth::Key::noSecret () const
-
-inline
-
- -
-
- -

◆ secret()

- -
-
- - - - - -
- - - - - - - -
const std::map<std::string, std::string> CocoaTweet::OAuth::Key::secret () const
-
-inline
-
- -
-
-
The documentation for this class was generated from the following files: -
- - - - diff --git a/help/html/classCocoaTweet_1_1OAuth_1_1OAuth1-members.html b/help/html/classCocoaTweet_1_1OAuth_1_1OAuth1-members.html deleted file mode 100644 index fec2d3f..0000000 --- a/help/html/classCocoaTweet_1_1OAuth_1_1OAuth1-members.html +++ /dev/null @@ -1,99 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
CocoaTweet::OAuth::OAuth1 Member List
-
-
- -

This is the complete list of members for CocoaTweet::OAuth::OAuth1, including all inherited members.

- - - - - - - - - - - - - - - - - -
AuthType enum nameCocoaTweet::OAuth::OAuth1
base64(const std::string &_raw)CocoaTweet::OAuth::OAuth1
Bearer enum valueCocoaTweet::OAuth::OAuth1
calculateAuthHeader(std::map< std::string, std::string > _bodyParam, const std::string &_method, const std::string &_url)CocoaTweet::OAuth::OAuth1
generateBearerToken()CocoaTweet::OAuth::OAuth1
hmacSha1(std::string _key, std::string _data)CocoaTweet::OAuth::OAuth1
key() constCocoaTweet::OAuth::OAuth1
method() constCocoaTweet::OAuth::OAuth1
nonce() constCocoaTweet::OAuth::OAuth1
OAuth enum valueCocoaTweet::OAuth::OAuth1
OAuth1()CocoaTweet::OAuth::OAuth1
OAuth1(const Key _key)CocoaTweet::OAuth::OAuth1
oauthParam() constCocoaTweet::OAuth::OAuth1
signature(const std::map< std::string, std::string > &_param, const std::string &_method, const std::string &_url)CocoaTweet::OAuth::OAuth1
timestamp() constCocoaTweet::OAuth::OAuth1
version() constCocoaTweet::OAuth::OAuth1
- - - - diff --git a/help/html/classCocoaTweet_1_1OAuth_1_1OAuth1.html b/help/html/classCocoaTweet_1_1OAuth_1_1OAuth1.html deleted file mode 100644 index 131e941..0000000 --- a/help/html/classCocoaTweet_1_1OAuth_1_1OAuth1.html +++ /dev/null @@ -1,416 +0,0 @@ - - - - - - - -CocoaTweet: CocoaTweet::OAuth::OAuth1 Class Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
CocoaTweet::OAuth::OAuth1 Class Reference
-
-
- -

#include <oauth.h>

- - - - -

-Public Types

enum  AuthType { OAuth, -Bearer - }
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 OAuth1 ()
 
 OAuth1 (const Key _key)
 
std::map< std::string, std::string > signature (const std::map< std::string, std::string > &_param, const std::string &_method, const std::string &_url)
 
const std::string & generateBearerToken ()
 
const std::string calculateAuthHeader (std::map< std::string, std::string > _bodyParam, const std::string &_method, const std::string &_url)
 
const std::string nonce () const
 
const std::string timestamp () const
 
const std::string method () const
 
const std::string version () const
 
const Key key () const
 
std::map< std::string, std::string > oauthParam () const
 
std::string hmacSha1 (std::string _key, std::string _data)
 
const std::string base64 (const std::string &_raw)
 
-

Member Enumeration Documentation

- -

◆ AuthType

- -
-
- - - -
Enumerator
OAuth 
Bearer 
- -
-
-

Constructor & Destructor Documentation

- -

◆ OAuth1() [1/2]

- -
-
- - - - - - - -
CocoaTweet::OAuth::OAuth1::OAuth1 ()
-
- -
-
- -

◆ OAuth1() [2/2]

- -
-
- - - - - - - - -
CocoaTweet::OAuth::OAuth1::OAuth1 (const Key _key)
-
- -
-
-

Member Function Documentation

- -

◆ base64()

- -
-
- - - - - - - - -
const std::string CocoaTweet::OAuth::OAuth1::base64 (const std::string & _raw)
-
- -
-
- -

◆ calculateAuthHeader()

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
const std::string CocoaTweet::OAuth::OAuth1::calculateAuthHeader (std::map< std::string, std::string > _bodyParam,
const std::string & _method,
const std::string & _url 
)
-
- -
-
- -

◆ generateBearerToken()

- -
-
- - - - - - - -
const std::string & CocoaTweet::OAuth::OAuth1::generateBearerToken ()
-
- -
-
- -

◆ hmacSha1()

- -
-
- - - - - - - - - - - - - - - - - - -
std::string CocoaTweet::OAuth::OAuth1::hmacSha1 (std::string _key,
std::string _data 
)
-
- -
-
- -

◆ key()

- -
-
- - - - - - - -
const Key CocoaTweet::OAuth::OAuth1::key () const
-
- -
-
- -

◆ method()

- -
-
- - - - - - - -
const std::string CocoaTweet::OAuth::OAuth1::method () const
-
- -
-
- -

◆ nonce()

- -
-
- - - - - - - -
const std::string CocoaTweet::OAuth::OAuth1::nonce () const
-
- -
-
- -

◆ oauthParam()

- -
-
- - - - - - - -
std::map< std::string, std::string > CocoaTweet::OAuth::OAuth1::oauthParam () const
-
- -
-
- -

◆ signature()

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
std::map< std::string, std::string > CocoaTweet::OAuth::OAuth1::signature (const std::map< std::string, std::string > & _param,
const std::string & _method,
const std::string & _url 
)
-
- -
-
- -

◆ timestamp()

- -
-
- - - - - - - -
const std::string CocoaTweet::OAuth::OAuth1::timestamp () const
-
- -
-
- -

◆ version()

- -
-
- - - - - - - -
const std::string CocoaTweet::OAuth::OAuth1::version () const
-
- -
-
-
The documentation for this class was generated from the following files: -
- - - - diff --git a/help/html/classes.html b/help/html/classes.html deleted file mode 100644 index 018f046..0000000 --- a/help/html/classes.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - - -CocoaTweet: Class Index - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
-
Class Index
-
-
-
a | c | d | e | f | g | h | i | k | m | n | o | r | s | t | u
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  a  
-
  f  
-
  k  
-
Status::Options (CocoaTweet::API::Statuses)   TweetNotFoundException (CocoaTweet::Exception)   
  r  
-
TweetTooLongException (CocoaTweet::Exception)   
API (CocoaTweet::API)   Favorite (CocoaTweet::API::Favorites)   Key (CocoaTweet::OAuth)   
  u  
-
AuthenticateException (CocoaTweet::Exception)   
  g  
-
  m  
-
RateLimitException (CocoaTweet::Exception)   
  c  
-
Retweet (CocoaTweet::API::Statuses)   Unretweet (CocoaTweet::API::Statuses)   
groupInterface (CocoaTweet::API)   Media (CocoaTweet::API::Medias)   
  s  
-
UnsupportedMediaTypeException (CocoaTweet::Exception)   
Create (CocoaTweet::API::Favorites)   
  h  
-
MediaStore (CocoaTweet::API::Model)   Update (CocoaTweet::API::Statuses)   
  d  
-
  n  
-
Status (CocoaTweet::API::Statuses)   Upload (CocoaTweet::API::Medias)   
HttpBase (CocoaTweet::API::Interface)   
  t  
-
User (CocoaTweet::API::Model)   
Destroy (CocoaTweet::API::Statuses)   HttpGet (CocoaTweet::API::Interface)   New (CocoaTweet::API::DirectMessages)   UserTimeline (CocoaTweet::API::Statuses)   
Destroy (CocoaTweet::API::Favorites)   HttpPost (CocoaTweet::API::Interface)   
  o  
-
TokenInvalidException (CocoaTweet::Exception)   
DirectMessage (CocoaTweet::API::DirectMessages)   
  i  
-
Tweet (CocoaTweet::API::Model)   
  e  
-
OAuth1 (CocoaTweet::OAuth)   TweetDuplicateException (CocoaTweet::Exception)   
InvalidParameterException (CocoaTweet::Exception)   
Exception (CocoaTweet::Exception)   
-
a | c | d | e | f | g | h | i | k | m | n | o | r | s | t | u
-
- - - - diff --git a/help/html/classnlohmann_1_1basic__json-members.html b/help/html/classnlohmann_1_1basic__json-members.html deleted file mode 100644 index bf9a528..0000000 --- a/help/html/classnlohmann_1_1basic__json-members.html +++ /dev/null @@ -1,528 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
nlohmann::basic_json Member List
-
-
- -

This is the complete list of members for nlohmann::basic_json, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
::nlohmann::detail::binary_reader classnlohmann::basic_jsonfriend
::nlohmann::detail::binary_writer classnlohmann::basic_jsonfriend
::nlohmann::detail::iter_impl classnlohmann::basic_jsonfriend
::nlohmann::detail::json_sax_dom_callback_parser classnlohmann::basic_jsonfriend
::nlohmann::detail::json_sax_dom_parser classnlohmann::basic_jsonfriend
::nlohmann::detail::parser classnlohmann::basic_jsonfriend
accept(detail::input_adapter &&i)nlohmann::basic_jsoninlinestatic
accept(IteratorType first, IteratorType last)nlohmann::basic_jsoninlinestatic
accept(InputType &&i, const bool ignore_comments=false)nlohmann::basic_jsoninlinestatic
accept(IteratorType first, IteratorType last, const bool ignore_comments=false)nlohmann::basic_jsoninlinestatic
accept(detail::span_input_adapter &&i, const bool ignore_comments=false)nlohmann::basic_jsoninlinestatic
allocator_type typedefnlohmann::basic_json
allocator_type typedefnlohmann::basic_json
array(initializer_list_t init={})nlohmann::basic_jsoninlinestatic
array(initializer_list_t init={})nlohmann::basic_jsoninlinestatic
array_t typedefnlohmann::basic_json
array_t typedefnlohmann::basic_json
at(size_type idx)nlohmann::basic_jsoninline
at(size_type idx) constnlohmann::basic_jsoninline
at(const typename object_t::key_type &key)nlohmann::basic_jsoninline
at(const typename object_t::key_type &key) constnlohmann::basic_jsoninline
at(const json_pointer &ptr)nlohmann::basic_jsoninline
at(const json_pointer &ptr) constnlohmann::basic_jsoninline
at(size_type idx)nlohmann::basic_jsoninline
at(size_type idx) constnlohmann::basic_jsoninline
at(const typename object_t::key_type &key)nlohmann::basic_jsoninline
at(const typename object_t::key_type &key) constnlohmann::basic_jsoninline
at(const json_pointer &ptr)nlohmann::basic_jsoninline
at(const json_pointer &ptr) constnlohmann::basic_jsoninline
back()nlohmann::basic_jsoninline
back() constnlohmann::basic_jsoninline
back()nlohmann::basic_jsoninline
back() constnlohmann::basic_jsoninline
basic_json(const value_t v)nlohmann::basic_jsoninline
basic_json(std::nullptr_t=nullptr) noexceptnlohmann::basic_jsoninline
basic_json(CompatibleType &&val) noexcept(noexcept(JSONSerializer< U >::to_json(std::declval< basic_json_t & >(), std::forward< CompatibleType >(val))))nlohmann::basic_jsoninline
basic_json(const BasicJsonType &val)nlohmann::basic_jsoninline
basic_json(initializer_list_t init, bool type_deduction=true, value_t manual_type=value_t::array)nlohmann::basic_jsoninline
basic_json(size_type cnt, const basic_json &val)nlohmann::basic_jsoninline
basic_json(InputIT first, InputIT last)nlohmann::basic_jsoninline
basic_json(const basic_json &other)nlohmann::basic_jsoninline
basic_json(basic_json &&other) noexceptnlohmann::basic_jsoninline
basic_json(const value_t v)nlohmann::basic_jsoninline
basic_json(std::nullptr_t=nullptr) noexceptnlohmann::basic_jsoninline
basic_json(CompatibleType &&val) noexcept(noexcept(JSONSerializer< U >::to_json(std::declval< basic_json_t & >(), std::forward< CompatibleType >(val))))nlohmann::basic_jsoninline
basic_json(const BasicJsonType &val)nlohmann::basic_jsoninline
basic_json(initializer_list_t init, bool type_deduction=true, value_t manual_type=value_t::array)nlohmann::basic_jsoninline
basic_json(size_type cnt, const basic_json &val)nlohmann::basic_jsoninline
basic_json(InputIT first, InputIT last)nlohmann::basic_jsoninline
basic_json(const JsonRef &ref)nlohmann::basic_jsoninline
basic_json(const basic_json &other)nlohmann::basic_jsoninline
basic_json(basic_json &&other) noexceptnlohmann::basic_jsoninline
begin() noexceptnlohmann::basic_jsoninline
begin() const noexceptnlohmann::basic_jsoninline
begin() noexceptnlohmann::basic_jsoninline
begin() const noexceptnlohmann::basic_jsoninline
binary(const typename binary_t::container_type &init)nlohmann::basic_jsoninlinestatic
binary(const typename binary_t::container_type &init, std::uint8_t subtype)nlohmann::basic_jsoninlinestatic
binary(typename binary_t::container_type &&init)nlohmann::basic_jsoninlinestatic
binary(typename binary_t::container_type &&init, std::uint8_t subtype)nlohmann::basic_jsoninlinestatic
binary_t typedefnlohmann::basic_json
boolean_t typedefnlohmann::basic_json
boolean_t typedefnlohmann::basic_json
cbegin() const noexceptnlohmann::basic_jsoninline
cbegin() const noexceptnlohmann::basic_jsoninline
cbor_tag_handler_t typedefnlohmann::basic_json
cend() const noexceptnlohmann::basic_jsoninline
cend() const noexceptnlohmann::basic_jsoninline
clear() noexceptnlohmann::basic_jsoninline
clear() noexceptnlohmann::basic_jsoninline
const_iterator typedefnlohmann::basic_json
const_iterator typedefnlohmann::basic_json
const_pointer typedefnlohmann::basic_json
const_pointer typedefnlohmann::basic_json
const_reference typedefnlohmann::basic_json
const_reference typedefnlohmann::basic_json
const_reverse_iterator typedefnlohmann::basic_json
const_reverse_iterator typedefnlohmann::basic_json
contains(KeyT &&key) constnlohmann::basic_jsoninline
contains(const json_pointer &ptr) constnlohmann::basic_jsoninline
contains(KeyT &&key) constnlohmann::basic_jsoninline
contains(const json_pointer &ptr) constnlohmann::basic_jsoninline
count(KeyT &&key) constnlohmann::basic_jsoninline
count(KeyT &&key) constnlohmann::basic_jsoninline
crbegin() const noexceptnlohmann::basic_jsoninline
crbegin() const noexceptnlohmann::basic_jsoninline
crend() const noexceptnlohmann::basic_jsoninline
crend() const noexceptnlohmann::basic_jsoninline
detail::external_constructornlohmann::basic_jsonfriend
detail::external_constructornlohmann::basic_jsonfriend
diff(const basic_json &source, const basic_json &target, const std::string &path="")nlohmann::basic_jsoninlinestatic
diff(const basic_json &source, const basic_json &target, const std::string &path="")nlohmann::basic_jsoninlinestatic
difference_type typedefnlohmann::basic_json
difference_type typedefnlohmann::basic_json
dump(const int indent=-1, const char indent_char=' ', const bool ensure_ascii=false, const error_handler_t error_handler=error_handler_t::strict) constnlohmann::basic_jsoninline
dump(const int indent=-1, const char indent_char=' ', const bool ensure_ascii=false, const error_handler_t error_handler=error_handler_t::strict) constnlohmann::basic_jsoninline
emplace(Args &&... args)nlohmann::basic_jsoninline
emplace(Args &&... args)nlohmann::basic_jsoninline
emplace_back(Args &&... args)nlohmann::basic_jsoninline
emplace_back(Args &&... args)nlohmann::basic_jsoninline
empty() const noexceptnlohmann::basic_jsoninline
empty() const noexceptnlohmann::basic_jsoninline
end() noexceptnlohmann::basic_jsoninline
end() const noexceptnlohmann::basic_jsoninline
end() noexceptnlohmann::basic_jsoninline
end() const noexceptnlohmann::basic_jsoninline
erase(IteratorType pos)nlohmann::basic_jsoninline
erase(IteratorType first, IteratorType last)nlohmann::basic_jsoninline
erase(const typename object_t::key_type &key)nlohmann::basic_jsoninline
erase(const size_type idx)nlohmann::basic_jsoninline
erase(IteratorType pos)nlohmann::basic_jsoninline
erase(IteratorType first, IteratorType last)nlohmann::basic_jsoninline
erase(const typename object_t::key_type &key)nlohmann::basic_jsoninline
erase(const size_type idx)nlohmann::basic_jsoninline
error_handler_t typedefnlohmann::basic_json
error_handler_t typedefnlohmann::basic_json
exception typedefnlohmann::basic_json
exception typedefnlohmann::basic_json
find(KeyT &&key)nlohmann::basic_jsoninline
find(KeyT &&key) constnlohmann::basic_jsoninline
find(KeyT &&key)nlohmann::basic_jsoninline
find(KeyT &&key) constnlohmann::basic_jsoninline
flatten() constnlohmann::basic_jsoninline
flatten() constnlohmann::basic_jsoninline
from_bson(detail::input_adapter &&i, const bool strict=true, const bool allow_exceptions=true)nlohmann::basic_jsoninlinestatic
from_bson(A1 &&a1, A2 &&a2, const bool strict=true, const bool allow_exceptions=true)nlohmann::basic_jsoninlinestatic
from_bson(InputType &&i, const bool strict=true, const bool allow_exceptions=true)nlohmann::basic_jsoninlinestatic
from_bson(IteratorType first, IteratorType last, const bool strict=true, const bool allow_exceptions=true)nlohmann::basic_jsoninlinestatic
from_bson(const T *ptr, std::size_t len, const bool strict=true, const bool allow_exceptions=true)nlohmann::basic_jsoninlinestatic
from_bson(detail::span_input_adapter &&i, const bool strict=true, const bool allow_exceptions=true)nlohmann::basic_jsoninlinestatic
from_cbor(detail::input_adapter &&i, const bool strict=true, const bool allow_exceptions=true)nlohmann::basic_jsoninlinestatic
from_cbor(A1 &&a1, A2 &&a2, const bool strict=true, const bool allow_exceptions=true)nlohmann::basic_jsoninlinestatic
from_cbor(InputType &&i, const bool strict=true, const bool allow_exceptions=true, const cbor_tag_handler_t tag_handler=cbor_tag_handler_t::error)nlohmann::basic_jsoninlinestatic
from_cbor(IteratorType first, IteratorType last, const bool strict=true, const bool allow_exceptions=true, const cbor_tag_handler_t tag_handler=cbor_tag_handler_t::error)nlohmann::basic_jsoninlinestatic
from_cbor(const T *ptr, std::size_t len, const bool strict=true, const bool allow_exceptions=true, const cbor_tag_handler_t tag_handler=cbor_tag_handler_t::error)nlohmann::basic_jsoninlinestatic
from_cbor(detail::span_input_adapter &&i, const bool strict=true, const bool allow_exceptions=true, const cbor_tag_handler_t tag_handler=cbor_tag_handler_t::error)nlohmann::basic_jsoninlinestatic
from_msgpack(detail::input_adapter &&i, const bool strict=true, const bool allow_exceptions=true)nlohmann::basic_jsoninlinestatic
from_msgpack(A1 &&a1, A2 &&a2, const bool strict=true, const bool allow_exceptions=true)nlohmann::basic_jsoninlinestatic
from_msgpack(InputType &&i, const bool strict=true, const bool allow_exceptions=true)nlohmann::basic_jsoninlinestatic
from_msgpack(IteratorType first, IteratorType last, const bool strict=true, const bool allow_exceptions=true)nlohmann::basic_jsoninlinestatic
from_msgpack(const T *ptr, std::size_t len, const bool strict=true, const bool allow_exceptions=true)nlohmann::basic_jsoninlinestatic
from_msgpack(detail::span_input_adapter &&i, const bool strict=true, const bool allow_exceptions=true)nlohmann::basic_jsoninlinestatic
from_ubjson(detail::input_adapter &&i, const bool strict=true, const bool allow_exceptions=true)nlohmann::basic_jsoninlinestatic
from_ubjson(A1 &&a1, A2 &&a2, const bool strict=true, const bool allow_exceptions=true)nlohmann::basic_jsoninlinestatic
from_ubjson(InputType &&i, const bool strict=true, const bool allow_exceptions=true)nlohmann::basic_jsoninlinestatic
from_ubjson(IteratorType first, IteratorType last, const bool strict=true, const bool allow_exceptions=true)nlohmann::basic_jsoninlinestatic
from_ubjson(const T *ptr, std::size_t len, const bool strict=true, const bool allow_exceptions=true)nlohmann::basic_jsoninlinestatic
from_ubjson(detail::span_input_adapter &&i, const bool strict=true, const bool allow_exceptions=true)nlohmann::basic_jsoninlinestatic
front()nlohmann::basic_jsoninline
front() constnlohmann::basic_jsoninline
front()nlohmann::basic_jsoninline
front() constnlohmann::basic_jsoninline
get() constnlohmann::basic_jsoninline
get() constnlohmann::basic_jsoninline
get() const noexcept(noexcept(JSONSerializer< ValueType >::from_json(std::declval< const basic_json_t & >(), std::declval< ValueType & >())))nlohmann::basic_jsoninline
get() const noexcept(noexcept(JSONSerializer< ValueType >::from_json(std::declval< const basic_json_t & >())))nlohmann::basic_jsoninline
get() noexcept -> decltype(std::declval< basic_json_t & >().template get_ptr< PointerType >())nlohmann::basic_jsoninline
get() const noexcept -> decltype(std::declval< const basic_json_t & >().template get_ptr< PointerType >())nlohmann::basic_jsoninline
get() constnlohmann::basic_jsoninline
get() constnlohmann::basic_jsoninline
get() const noexcept(noexcept(JSONSerializer< ValueType >::from_json(std::declval< const basic_json_t & >(), std::declval< ValueType & >())))nlohmann::basic_jsoninline
get() const noexcept(noexcept(JSONSerializer< ValueType >::from_json(std::declval< const basic_json_t & >())))nlohmann::basic_jsoninline
get() noexcept -> decltype(std::declval< basic_json_t & >().template get_ptr< PointerType >())nlohmann::basic_jsoninline
get() const noexcept -> decltype(std::declval< const basic_json_t & >().template get_ptr< PointerType >())nlohmann::basic_jsoninline
get_allocator()nlohmann::basic_jsoninlinestatic
get_allocator()nlohmann::basic_jsoninlinestatic
get_binary()nlohmann::basic_jsoninline
get_binary() constnlohmann::basic_jsoninline
get_ptr() noexcept -> decltype(std::declval< basic_json_t & >().get_impl_ptr(std::declval< PointerType >()))nlohmann::basic_jsoninline
get_ptr() const noexcept -> decltype(std::declval< const basic_json_t & >().get_impl_ptr(std::declval< PointerType >()))nlohmann::basic_jsoninline
get_ptr() noexcept -> decltype(std::declval< basic_json_t & >().get_impl_ptr(std::declval< PointerType >()))nlohmann::basic_jsoninline
get_ptr() const noexcept -> decltype(std::declval< const basic_json_t & >().get_impl_ptr(std::declval< PointerType >()))nlohmann::basic_jsoninline
get_ref()nlohmann::basic_jsoninline
get_ref() constnlohmann::basic_jsoninline
get_ref()nlohmann::basic_jsoninline
get_ref() constnlohmann::basic_jsoninline
get_to(ValueType &v) const noexcept(noexcept(JSONSerializer< ValueType >::from_json(std::declval< const basic_json_t & >(), v)))nlohmann::basic_jsoninline
get_to(T(&v)[N]) const noexcept(noexcept(JSONSerializer< Array >::from_json(std::declval< const basic_json_t & >(), v)))nlohmann::basic_jsoninline
get_to(ValueType &v) const noexcept(noexcept(JSONSerializer< ValueType >::from_json(std::declval< const basic_json_t & >(), v)))nlohmann::basic_jsoninline
get_to(ValueType &v) constnlohmann::basic_jsoninline
get_to(T(&v)[N]) const noexcept(noexcept(JSONSerializer< Array >::from_json(std::declval< const basic_json_t & >(), v)))nlohmann::basic_jsoninline
initializer_list_t typedefnlohmann::basic_json
initializer_list_t typedefnlohmann::basic_json
input_format_t typedefnlohmann::basic_json
input_format_t typedefnlohmann::basic_json
insert(const_iterator pos, const basic_json &val)nlohmann::basic_jsoninline
insert(const_iterator pos, basic_json &&val)nlohmann::basic_jsoninline
insert(const_iterator pos, size_type cnt, const basic_json &val)nlohmann::basic_jsoninline
insert(const_iterator pos, const_iterator first, const_iterator last)nlohmann::basic_jsoninline
insert(const_iterator pos, initializer_list_t ilist)nlohmann::basic_jsoninline
insert(const_iterator first, const_iterator last)nlohmann::basic_jsoninline
insert(const_iterator pos, const basic_json &val)nlohmann::basic_jsoninline
insert(const_iterator pos, basic_json &&val)nlohmann::basic_jsoninline
insert(const_iterator pos, size_type cnt, const basic_json &val)nlohmann::basic_jsoninline
insert(const_iterator pos, const_iterator first, const_iterator last)nlohmann::basic_jsoninline
insert(const_iterator pos, initializer_list_t ilist)nlohmann::basic_jsoninline
insert(const_iterator first, const_iterator last)nlohmann::basic_jsoninline
insert_iterator(const_iterator pos, Args &&... args)nlohmann::basic_jsoninline
insert_iterator(const_iterator pos, Args &&... args)nlohmann::basic_jsoninline
invalid_iterator typedefnlohmann::basic_json
invalid_iterator typedefnlohmann::basic_json
is_array() const noexceptnlohmann::basic_jsoninline
is_array() const noexceptnlohmann::basic_jsoninline
is_binary() const noexceptnlohmann::basic_jsoninline
is_boolean() const noexceptnlohmann::basic_jsoninline
is_boolean() const noexceptnlohmann::basic_jsoninline
is_discarded() const noexceptnlohmann::basic_jsoninline
is_discarded() const noexceptnlohmann::basic_jsoninline
is_null() const noexceptnlohmann::basic_jsoninline
is_null() const noexceptnlohmann::basic_jsoninline
is_number() const noexceptnlohmann::basic_jsoninline
is_number() const noexceptnlohmann::basic_jsoninline
is_number_float() const noexceptnlohmann::basic_jsoninline
is_number_float() const noexceptnlohmann::basic_jsoninline
is_number_integer() const noexceptnlohmann::basic_jsoninline
is_number_integer() const noexceptnlohmann::basic_jsoninline
is_number_unsigned() const noexceptnlohmann::basic_jsoninline
is_number_unsigned() const noexceptnlohmann::basic_jsoninline
is_object() const noexceptnlohmann::basic_jsoninline
is_object() const noexceptnlohmann::basic_jsoninline
is_primitive() const noexceptnlohmann::basic_jsoninline
is_primitive() const noexceptnlohmann::basic_jsoninline
is_string() const noexceptnlohmann::basic_jsoninline
is_string() const noexceptnlohmann::basic_jsoninline
is_structured() const noexceptnlohmann::basic_jsoninline
is_structured() const noexceptnlohmann::basic_jsoninline
items() noexceptnlohmann::basic_jsoninline
items() const noexceptnlohmann::basic_jsoninline
items() noexceptnlohmann::basic_jsoninline
items() const noexceptnlohmann::basic_jsoninline
iterator typedefnlohmann::basic_json
iterator typedefnlohmann::basic_json
iterator_wrapper(reference ref) noexceptnlohmann::basic_jsoninlinestatic
iterator_wrapper(const_reference ref) noexceptnlohmann::basic_jsoninlinestatic
iterator_wrapper(reference ref) noexceptnlohmann::basic_jsoninlinestatic
iterator_wrapper(const_reference ref) noexceptnlohmann::basic_jsoninlinestatic
json_pointer typedefnlohmann::basic_json
json_pointer typedefnlohmann::basic_json
json_sax_t typedefnlohmann::basic_json
json_sax_t typedefnlohmann::basic_json
json_serializer typedefnlohmann::basic_json
json_serializer typedefnlohmann::basic_json
max_size() const noexceptnlohmann::basic_jsoninline
max_size() const noexceptnlohmann::basic_jsoninline
merge_patch(const basic_json &apply_patch)nlohmann::basic_jsoninline
merge_patch(const basic_json &apply_patch)nlohmann::basic_jsoninline
meta()nlohmann::basic_jsoninlinestatic
meta()nlohmann::basic_jsoninlinestatic
number_float_t typedefnlohmann::basic_json
number_float_t typedefnlohmann::basic_json
number_integer_t typedefnlohmann::basic_json
number_integer_t typedefnlohmann::basic_json
number_unsigned_t typedefnlohmann::basic_json
number_unsigned_t typedefnlohmann::basic_json
object(initializer_list_t init={})nlohmann::basic_jsoninlinestatic
object(initializer_list_t init={})nlohmann::basic_jsoninlinestatic
object_comparator_t typedefnlohmann::basic_json
object_comparator_t typedefnlohmann::basic_json
object_t typedefnlohmann::basic_json
object_t typedefnlohmann::basic_json
operator value_t() const noexceptnlohmann::basic_jsoninline
operator value_t() const noexceptnlohmann::basic_jsoninline
operator ValueType() constnlohmann::basic_jsoninline
operator ValueType() constnlohmann::basic_jsoninline
operator!=(const_reference lhs, const_reference rhs) noexceptnlohmann::basic_jsonfriend
operator!=(const_reference lhs, const ScalarType rhs) noexceptnlohmann::basic_jsonfriend
operator!=(const ScalarType lhs, const_reference rhs) noexceptnlohmann::basic_jsonfriend
operator!=(const_reference lhs, const_reference rhs) noexceptnlohmann::basic_jsonfriend
operator!=(const_reference lhs, const ScalarType rhs) noexceptnlohmann::basic_jsonfriend
operator!=(const ScalarType lhs, const_reference rhs) noexceptnlohmann::basic_jsonfriend
operator+=(basic_json &&val)nlohmann::basic_jsoninline
operator+=(const basic_json &val)nlohmann::basic_jsoninline
operator+=(const typename object_t::value_type &val)nlohmann::basic_jsoninline
operator+=(initializer_list_t init)nlohmann::basic_jsoninline
operator+=(basic_json &&val)nlohmann::basic_jsoninline
operator+=(const basic_json &val)nlohmann::basic_jsoninline
operator+=(const typename object_t::value_type &val)nlohmann::basic_jsoninline
operator+=(initializer_list_t init)nlohmann::basic_jsoninline
operator<(const_reference lhs, const_reference rhs) noexceptnlohmann::basic_jsonfriend
operator<(const_reference lhs, const ScalarType rhs) noexceptnlohmann::basic_jsonfriend
operator<(const ScalarType lhs, const_reference rhs) noexceptnlohmann::basic_jsonfriend
operator<(const_reference lhs, const_reference rhs) noexceptnlohmann::basic_jsonfriend
operator<(const_reference lhs, const ScalarType rhs) noexceptnlohmann::basic_jsonfriend
operator<(const ScalarType lhs, const_reference rhs) noexceptnlohmann::basic_jsonfriend
operator<<(std::ostream &o, const basic_json &j)nlohmann::basic_jsonfriend
operator<<(basic_json &j, std::istream &i)nlohmann::basic_jsonfriend
operator<<(std::ostream &o, const basic_json &j)nlohmann::basic_jsonfriend
operator<<(basic_json &j, std::istream &i)nlohmann::basic_jsonfriend
operator<=(const_reference lhs, const_reference rhs) noexceptnlohmann::basic_jsonfriend
operator<=(const_reference lhs, const ScalarType rhs) noexceptnlohmann::basic_jsonfriend
operator<=(const ScalarType lhs, const_reference rhs) noexceptnlohmann::basic_jsonfriend
operator<=(const_reference lhs, const_reference rhs) noexceptnlohmann::basic_jsonfriend
operator<=(const_reference lhs, const ScalarType rhs) noexceptnlohmann::basic_jsonfriend
operator<=(const ScalarType lhs, const_reference rhs) noexceptnlohmann::basic_jsonfriend
operator=(basic_json other) noexcept(std::is_nothrow_move_constructible< value_t >::value and std::is_nothrow_move_assignable< value_t >::value and std::is_nothrow_move_constructible< json_value >::value and std::is_nothrow_move_assignable< json_value >::value)nlohmann::basic_jsoninline
operator=(basic_json other) noexcept(std::is_nothrow_move_constructible< value_t >::value &&std::is_nothrow_move_assignable< value_t >::value &&std::is_nothrow_move_constructible< json_value >::value &&std::is_nothrow_move_assignable< json_value >::value)nlohmann::basic_jsoninline
operator==(const_reference lhs, const_reference rhs) noexceptnlohmann::basic_jsonfriend
operator==(const_reference lhs, const ScalarType rhs) noexceptnlohmann::basic_jsonfriend
operator==(const ScalarType lhs, const_reference rhs) noexceptnlohmann::basic_jsonfriend
operator==(const_reference lhs, const_reference rhs) noexceptnlohmann::basic_jsonfriend
operator==(const_reference lhs, const ScalarType rhs) noexceptnlohmann::basic_jsonfriend
operator==(const ScalarType lhs, const_reference rhs) noexceptnlohmann::basic_jsonfriend
operator>(const_reference lhs, const_reference rhs) noexceptnlohmann::basic_jsonfriend
operator>(const_reference lhs, const ScalarType rhs) noexceptnlohmann::basic_jsonfriend
operator>(const ScalarType lhs, const_reference rhs) noexceptnlohmann::basic_jsonfriend
operator>(const_reference lhs, const_reference rhs) noexceptnlohmann::basic_jsonfriend
operator>(const_reference lhs, const ScalarType rhs) noexceptnlohmann::basic_jsonfriend
operator>(const ScalarType lhs, const_reference rhs) noexceptnlohmann::basic_jsonfriend
operator>=(const_reference lhs, const_reference rhs) noexceptnlohmann::basic_jsonfriend
operator>=(const_reference lhs, const ScalarType rhs) noexceptnlohmann::basic_jsonfriend
operator>=(const ScalarType lhs, const_reference rhs) noexceptnlohmann::basic_jsonfriend
operator>=(const_reference lhs, const_reference rhs) noexceptnlohmann::basic_jsonfriend
operator>=(const_reference lhs, const ScalarType rhs) noexceptnlohmann::basic_jsonfriend
operator>=(const ScalarType lhs, const_reference rhs) noexceptnlohmann::basic_jsonfriend
operator>>(const basic_json &j, std::ostream &o)nlohmann::basic_jsonfriend
operator>>(std::istream &i, basic_json &j)nlohmann::basic_jsonfriend
operator>>(const basic_json &j, std::ostream &o)nlohmann::basic_jsonfriend
operator>>(std::istream &i, basic_json &j)nlohmann::basic_jsonfriend
operator[](size_type idx)nlohmann::basic_jsoninline
operator[](size_type idx) constnlohmann::basic_jsoninline
operator[](const typename object_t::key_type &key)nlohmann::basic_jsoninline
operator[](const typename object_t::key_type &key) constnlohmann::basic_jsoninline
operator[](T *key)nlohmann::basic_jsoninline
operator[](T *key) constnlohmann::basic_jsoninline
operator[](const json_pointer &ptr)nlohmann::basic_jsoninline
operator[](const json_pointer &ptr) constnlohmann::basic_jsoninline
operator[](size_type idx)nlohmann::basic_jsoninline
operator[](size_type idx) constnlohmann::basic_jsoninline
operator[](const typename object_t::key_type &key)nlohmann::basic_jsoninline
operator[](const typename object_t::key_type &key) constnlohmann::basic_jsoninline
operator[](T *key)nlohmann::basic_jsoninline
operator[](T *key) constnlohmann::basic_jsoninline
operator[](const json_pointer &ptr)nlohmann::basic_jsoninline
operator[](const json_pointer &ptr) constnlohmann::basic_jsoninline
other_error typedefnlohmann::basic_json
other_error typedefnlohmann::basic_json
out_of_range typedefnlohmann::basic_json
out_of_range typedefnlohmann::basic_json
parse(detail::input_adapter &&i, const parser_callback_t cb=nullptr, const bool allow_exceptions=true)nlohmann::basic_jsoninlinestatic
parse(IteratorType first, IteratorType last, const parser_callback_t cb=nullptr, const bool allow_exceptions=true)nlohmann::basic_jsoninlinestatic
parse(InputType &&i, const parser_callback_t cb=nullptr, const bool allow_exceptions=true, const bool ignore_comments=false)nlohmann::basic_jsoninlinestatic
parse(IteratorType first, IteratorType last, const parser_callback_t cb=nullptr, const bool allow_exceptions=true, const bool ignore_comments=false)nlohmann::basic_jsoninlinestatic
parse(detail::span_input_adapter &&i, const parser_callback_t cb=nullptr, const bool allow_exceptions=true, const bool ignore_comments=false)nlohmann::basic_jsoninlinestatic
parse_error typedefnlohmann::basic_json
parse_error typedefnlohmann::basic_json
parse_event_t typedefnlohmann::basic_json
parse_event_t typedefnlohmann::basic_json
parser_callback_t typedefnlohmann::basic_json
parser_callback_t typedefnlohmann::basic_json
patch(const basic_json &json_patch) constnlohmann::basic_jsoninline
patch(const basic_json &json_patch) constnlohmann::basic_jsoninline
pointer typedefnlohmann::basic_json
pointer typedefnlohmann::basic_json
push_back(basic_json &&val)nlohmann::basic_jsoninline
push_back(const basic_json &val)nlohmann::basic_jsoninline
push_back(const typename object_t::value_type &val)nlohmann::basic_jsoninline
push_back(initializer_list_t init)nlohmann::basic_jsoninline
push_back(basic_json &&val)nlohmann::basic_jsoninline
push_back(const basic_json &val)nlohmann::basic_jsoninline
push_back(const typename object_t::value_type &val)nlohmann::basic_jsoninline
push_back(initializer_list_t init)nlohmann::basic_jsoninline
rbegin() noexceptnlohmann::basic_jsoninline
rbegin() const noexceptnlohmann::basic_jsoninline
rbegin() noexceptnlohmann::basic_jsoninline
rbegin() const noexceptnlohmann::basic_jsoninline
reference typedefnlohmann::basic_json
reference typedefnlohmann::basic_json
rend() noexceptnlohmann::basic_jsoninline
rend() const noexceptnlohmann::basic_jsoninline
rend() noexceptnlohmann::basic_jsoninline
rend() const noexceptnlohmann::basic_jsoninline
reverse_iterator typedefnlohmann::basic_json
reverse_iterator typedefnlohmann::basic_json
sax_parse(detail::input_adapter &&i, SAX *sax, input_format_t format=input_format_t::json, const bool strict=true)nlohmann::basic_jsoninlinestatic
sax_parse(IteratorType first, IteratorType last, SAX *sax)nlohmann::basic_jsoninlinestatic
sax_parse(InputType &&i, SAX *sax, input_format_t format=input_format_t::json, const bool strict=true, const bool ignore_comments=false)nlohmann::basic_jsoninlinestatic
sax_parse(IteratorType first, IteratorType last, SAX *sax, input_format_t format=input_format_t::json, const bool strict=true, const bool ignore_comments=false)nlohmann::basic_jsoninlinestatic
sax_parse(detail::span_input_adapter &&i, SAX *sax, input_format_t format=input_format_t::json, const bool strict=true, const bool ignore_comments=false)nlohmann::basic_jsoninlinestatic
size() const noexceptnlohmann::basic_jsoninline
size() const noexceptnlohmann::basic_jsoninline
size_type typedefnlohmann::basic_json
size_type typedefnlohmann::basic_json
string_t typedefnlohmann::basic_json
string_t typedefnlohmann::basic_json
swap(reference other) noexcept(std::is_nothrow_move_constructible< value_t >::value and std::is_nothrow_move_assignable< value_t >::value and std::is_nothrow_move_constructible< json_value >::value and std::is_nothrow_move_assignable< json_value >::value)nlohmann::basic_jsoninline
swap(array_t &other)nlohmann::basic_jsoninline
swap(object_t &other)nlohmann::basic_jsoninline
swap(string_t &other)nlohmann::basic_jsoninline
swap(reference other) noexcept(std::is_nothrow_move_constructible< value_t >::value &&std::is_nothrow_move_assignable< value_t >::value &&std::is_nothrow_move_constructible< json_value >::value &&std::is_nothrow_move_assignable< json_value >::value)nlohmann::basic_jsoninline
swap(reference left, reference right) noexcept(std::is_nothrow_move_constructible< value_t >::value &&std::is_nothrow_move_assignable< value_t >::value &&std::is_nothrow_move_constructible< json_value >::value &&std::is_nothrow_move_assignable< json_value >::value)nlohmann::basic_jsonfriend
swap(array_t &other)nlohmann::basic_jsoninline
swap(object_t &other)nlohmann::basic_jsoninline
swap(string_t &other)nlohmann::basic_jsoninline
swap(binary_t &other)nlohmann::basic_jsoninline
swap(typename binary_t::container_type &other)nlohmann::basic_jsoninline
to_bson(const basic_json &j)nlohmann::basic_jsoninlinestatic
to_bson(const basic_json &j, detail::output_adapter< uint8_t > o)nlohmann::basic_jsoninlinestatic
to_bson(const basic_json &j, detail::output_adapter< char > o)nlohmann::basic_jsoninlinestatic
to_bson(const basic_json &j)nlohmann::basic_jsoninlinestatic
to_bson(const basic_json &j, detail::output_adapter< uint8_t > o)nlohmann::basic_jsoninlinestatic
to_bson(const basic_json &j, detail::output_adapter< char > o)nlohmann::basic_jsoninlinestatic
to_cbor(const basic_json &j)nlohmann::basic_jsoninlinestatic
to_cbor(const basic_json &j, detail::output_adapter< uint8_t > o)nlohmann::basic_jsoninlinestatic
to_cbor(const basic_json &j, detail::output_adapter< char > o)nlohmann::basic_jsoninlinestatic
to_cbor(const basic_json &j)nlohmann::basic_jsoninlinestatic
to_cbor(const basic_json &j, detail::output_adapter< uint8_t > o)nlohmann::basic_jsoninlinestatic
to_cbor(const basic_json &j, detail::output_adapter< char > o)nlohmann::basic_jsoninlinestatic
to_msgpack(const basic_json &j)nlohmann::basic_jsoninlinestatic
to_msgpack(const basic_json &j, detail::output_adapter< uint8_t > o)nlohmann::basic_jsoninlinestatic
to_msgpack(const basic_json &j, detail::output_adapter< char > o)nlohmann::basic_jsoninlinestatic
to_msgpack(const basic_json &j)nlohmann::basic_jsoninlinestatic
to_msgpack(const basic_json &j, detail::output_adapter< uint8_t > o)nlohmann::basic_jsoninlinestatic
to_msgpack(const basic_json &j, detail::output_adapter< char > o)nlohmann::basic_jsoninlinestatic
to_ubjson(const basic_json &j, const bool use_size=false, const bool use_type=false)nlohmann::basic_jsoninlinestatic
to_ubjson(const basic_json &j, detail::output_adapter< uint8_t > o, const bool use_size=false, const bool use_type=false)nlohmann::basic_jsoninlinestatic
to_ubjson(const basic_json &j, detail::output_adapter< char > o, const bool use_size=false, const bool use_type=false)nlohmann::basic_jsoninlinestatic
to_ubjson(const basic_json &j, const bool use_size=false, const bool use_type=false)nlohmann::basic_jsoninlinestatic
to_ubjson(const basic_json &j, detail::output_adapter< uint8_t > o, const bool use_size=false, const bool use_type=false)nlohmann::basic_jsoninlinestatic
to_ubjson(const basic_json &j, detail::output_adapter< char > o, const bool use_size=false, const bool use_type=false)nlohmann::basic_jsoninlinestatic
type() const noexceptnlohmann::basic_jsoninline
type() const noexceptnlohmann::basic_jsoninline
type_error typedefnlohmann::basic_json
type_error typedefnlohmann::basic_json
type_name() const noexceptnlohmann::basic_jsoninline
type_name() const noexceptnlohmann::basic_jsoninline
unflatten() constnlohmann::basic_jsoninline
unflatten() constnlohmann::basic_jsoninline
update(const_reference j)nlohmann::basic_jsoninline
update(const_iterator first, const_iterator last)nlohmann::basic_jsoninline
update(const_reference j)nlohmann::basic_jsoninline
update(const_iterator first, const_iterator last)nlohmann::basic_jsoninline
value(const typename object_t::key_type &key, const ValueType &default_value) constnlohmann::basic_jsoninline
value(const typename object_t::key_type &key, const char *default_value) constnlohmann::basic_jsoninline
value(const json_pointer &ptr, const ValueType &default_value) constnlohmann::basic_jsoninline
value(const json_pointer &ptr, const char *default_value) constnlohmann::basic_jsoninline
value(const typename object_t::key_type &key, const ValueType &default_value) constnlohmann::basic_jsoninline
value(const typename object_t::key_type &key, const char *default_value) constnlohmann::basic_jsoninline
value(const json_pointer &ptr, const ValueType &default_value) constnlohmann::basic_jsoninline
value(const json_pointer &ptr, const char *default_value) constnlohmann::basic_jsoninline
value_t typedefnlohmann::basic_json
value_t typedefnlohmann::basic_json
value_type typedefnlohmann::basic_json
value_type typedefnlohmann::basic_json
~basic_json() noexceptnlohmann::basic_jsoninline
~basic_json() noexceptnlohmann::basic_jsoninline
- - - - diff --git a/help/html/classnlohmann_1_1basic__json.html b/help/html/classnlohmann_1_1basic__json.html deleted file mode 100644 index 66f48ec..0000000 --- a/help/html/classnlohmann_1_1basic__json.html +++ /dev/null @@ -1,23936 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::basic_json Class Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
nlohmann::basic_json Class Reference
-
-
- -

a class to store JSON values - More...

- -

#include <json.hpp>

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Types

using value_t = detail::value_t
 
using json_pointer = ::nlohmann::json_pointer< basic_json >
 JSON Pointer, see nlohmann::json_pointer. More...
 
template<typename T , typename SFINAE >
using json_serializer = JSONSerializer< T, SFINAE >
 
using error_handler_t = detail::error_handler_t
 how to treat decoding errors More...
 
using initializer_list_t = std::initializer_list< detail::json_ref< basic_json > >
 helper type for initializer lists of basic_json values More...
 
using input_format_t = detail::input_format_t
 
using json_sax_t = json_sax< basic_json >
 SAX interface type, see nlohmann::json_sax. More...
 
using parse_event_t = typename parser::parse_event_t
 parser event types More...
 
using parser_callback_t = typename parser::parser_callback_t
 per-element parser callback type More...
 
using value_t = detail::value_t
 
using json_pointer = ::nlohmann::json_pointer< basic_json >
 JSON Pointer, see nlohmann::json_pointer. More...
 
template<typename T , typename SFINAE >
using json_serializer = JSONSerializer< T, SFINAE >
 
using error_handler_t = detail::error_handler_t
 how to treat decoding errors More...
 
using cbor_tag_handler_t = detail::cbor_tag_handler_t
 how to treat CBOR tags More...
 
using initializer_list_t = std::initializer_list< detail::json_ref< basic_json > >
 helper type for initializer lists of basic_json values More...
 
using input_format_t = detail::input_format_t
 
using json_sax_t = json_sax< basic_json >
 SAX interface type, see nlohmann::json_sax. More...
 
using parse_event_t = detail::parse_event_t
 parser event types More...
 
using parser_callback_t = detail::parser_callback_t< basic_json >
 per-element parser callback type More...
 
- - - - - - - -

-Public Member Functions

const JSON_HEDLEY_RETURNS_NON_NULL char * type_name () const noexcept
 return the type as string More...
 
const JSON_HEDLEY_RETURNS_NON_NULL char * type_name () const noexcept
 return the type as string More...
 
- - - - - - - - - - - - - -

-Static Public Member Functions

static allocator_type get_allocator ()
 returns the allocator associated with the container More...
 
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json meta ()
 returns version information on the library More...
 
static allocator_type get_allocator ()
 returns the allocator associated with the container More...
 
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json meta ()
 returns version information on the library More...
 
- - - - - - - - - - - - - - - - - - - - - - - - - -

-Friends

template<detail::value_t >
struct detail::external_constructor
 
template<typename BasicJsonType >
class ::nlohmann::detail::iter_impl
 
template<typename BasicJsonType , typename CharType >
class ::nlohmann::detail::binary_writer
 
template<typename BasicJsonType , typename SAX >
class ::nlohmann::detail::binary_reader
 
template<typename BasicJsonType >
class ::nlohmann::detail::json_sax_dom_parser
 
template<typename BasicJsonType >
class ::nlohmann::detail::json_sax_dom_callback_parser
 
template<typename BasicJsonType , typename InputType >
class ::nlohmann::detail::parser
 
template<detail::value_t >
struct detail::external_constructor
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-exceptions

Classes to implement user-defined exceptions.

-
using exception = detail::exception
 general exception of the basic_json class More...
 
using parse_error = detail::parse_error
 exception indicating a parse error More...
 
using invalid_iterator = detail::invalid_iterator
 exception indicating errors with iterators More...
 
using type_error = detail::type_error
 exception indicating executing a member function with a wrong type More...
 
using out_of_range = detail::out_of_range
 exception indicating access out of the defined range More...
 
using other_error = detail::other_error
 exception indicating other library errors More...
 
using exception = detail::exception
 general exception of the basic_json class More...
 
using parse_error = detail::parse_error
 exception indicating a parse error More...
 
using invalid_iterator = detail::invalid_iterator
 exception indicating errors with iterators More...
 
using type_error = detail::type_error
 exception indicating executing a member function with a wrong type More...
 
using out_of_range = detail::out_of_range
 exception indicating access out of the defined range More...
 
using other_error = detail::other_error
 exception indicating other library errors More...
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-container types

The canonic container types to use basic_json like any other STL container.

-
using value_type = basic_json
 the type of elements in a basic_json container More...
 
using reference = value_type &
 the type of an element reference More...
 
using const_reference = const value_type &
 the type of an element const reference More...
 
using difference_type = std::ptrdiff_t
 a type to represent differences between iterators More...
 
using size_type = std::size_t
 a type to represent container sizes More...
 
using allocator_type = AllocatorType< basic_json >
 the allocator type More...
 
using pointer = typename std::allocator_traits< allocator_type >::pointer
 the type of an element pointer More...
 
using const_pointer = typename std::allocator_traits< allocator_type >::const_pointer
 the type of an element const pointer More...
 
using iterator = iter_impl< basic_json >
 an iterator for a basic_json container More...
 
using const_iterator = iter_impl< const basic_json >
 a const iterator for a basic_json container More...
 
using reverse_iterator = json_reverse_iterator< typename basic_json::iterator >
 a reverse iterator for a basic_json container More...
 
using const_reverse_iterator = json_reverse_iterator< typename basic_json::const_iterator >
 a const reverse iterator for a basic_json container More...
 
using value_type = basic_json
 the type of elements in a basic_json container More...
 
using reference = value_type &
 the type of an element reference More...
 
using const_reference = const value_type &
 the type of an element const reference More...
 
using difference_type = std::ptrdiff_t
 a type to represent differences between iterators More...
 
using size_type = std::size_t
 a type to represent container sizes More...
 
using allocator_type = AllocatorType< basic_json >
 the allocator type More...
 
using pointer = typename std::allocator_traits< allocator_type >::pointer
 the type of an element pointer More...
 
using const_pointer = typename std::allocator_traits< allocator_type >::const_pointer
 the type of an element const pointer More...
 
using iterator = iter_impl< basic_json >
 an iterator for a basic_json container More...
 
using const_iterator = iter_impl< const basic_json >
 a const iterator for a basic_json container More...
 
using reverse_iterator = json_reverse_iterator< typename basic_json::iterator >
 a reverse iterator for a basic_json container More...
 
using const_reverse_iterator = json_reverse_iterator< typename basic_json::const_iterator >
 a const reverse iterator for a basic_json container More...
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-JSON value data types

The data types to store a JSON value. These types are derived from the template arguments passed to class basic_json.

-
using object_comparator_t = std::less< StringType >
 
using object_t = ObjectType< StringType, basic_json, object_comparator_t, AllocatorType< std::pair< const StringType, basic_json > >>
 a type for an object More...
 
using array_t = ArrayType< basic_json, AllocatorType< basic_json > >
 a type for an array More...
 
using string_t = StringType
 a type for a string More...
 
using boolean_t = BooleanType
 a type for a boolean More...
 
using number_integer_t = NumberIntegerType
 a type for a number (integer) More...
 
using number_unsigned_t = NumberUnsignedType
 a type for a number (unsigned) More...
 
using number_float_t = NumberFloatType
 a type for a number (floating-point) More...
 
using object_comparator_t = std::less< StringType >
 
using object_t = ObjectType< StringType, basic_json, object_comparator_t, AllocatorType< std::pair< const StringType, basic_json > >>
 a type for an object More...
 
using array_t = ArrayType< basic_json, AllocatorType< basic_json > >
 a type for an array More...
 
using string_t = StringType
 a type for a string More...
 
using boolean_t = BooleanType
 a type for a boolean More...
 
using number_integer_t = NumberIntegerType
 a type for a number (integer) More...
 
using number_unsigned_t = NumberUnsignedType
 a type for a number (unsigned) More...
 
using number_float_t = NumberFloatType
 a type for a number (floating-point) More...
 
using binary_t = nlohmann::byte_container_with_subtype< BinaryType >
 a type for a packed binary type More...
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-constructors and destructors

Constructors of class basic_json, copy/move constructor, copy assignment, static functions creating objects, and the destructor.

-
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json array (initializer_list_t init={})
 explicitly create an array from an initializer list More...
 
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json object (initializer_list_t init={})
 explicitly create an object from an initializer list More...
 
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json binary (const typename binary_t::container_type &init)
 explicitly create a binary array (without subtype) More...
 
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json binary (const typename binary_t::container_type &init, std::uint8_t subtype)
 explicitly create a binary array (with subtype) More...
 
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json binary (typename binary_t::container_type &&init)
 explicitly create a binary array (without subtype) More...
 
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json binary (typename binary_t::container_type &&init, std::uint8_t subtype)
 explicitly create a binary array (with subtype) More...
 
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json array (initializer_list_t init={})
 explicitly create an array from an initializer list More...
 
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json object (initializer_list_t init={})
 explicitly create an object from an initializer list More...
 
 basic_json (const value_t v)
 create an empty value with a given type More...
 
 basic_json (std::nullptr_t=nullptr) noexcept
 create a null object More...
 
template<typename CompatibleType , typename U = detail::uncvref_t<CompatibleType>, detail::enable_if_t< not detail::is_basic_json< U >::value and detail::is_compatible_type< basic_json_t, U >::value, int > = 0>
 basic_json (CompatibleType &&val) noexcept(noexcept(JSONSerializer< U >::to_json(std::declval< basic_json_t & >(), std::forward< CompatibleType >(val))))
 create a JSON value More...
 
template<typename BasicJsonType , detail::enable_if_t< detail::is_basic_json< BasicJsonType >::value and not std::is_same< basic_json, BasicJsonType >::value, int > = 0>
 basic_json (const BasicJsonType &val)
 create a JSON value from an existing one More...
 
 basic_json (initializer_list_t init, bool type_deduction=true, value_t manual_type=value_t::array)
 create a container (array or object) from an initializer list More...
 
 basic_json (size_type cnt, const basic_json &val)
 construct an array with count copies of given value More...
 
template<class InputIT , typename std::enable_if< std::is_same< InputIT, typename basic_json_t::iterator >::value or std::is_same< InputIT, typename basic_json_t::const_iterator >::value, int >::type = 0>
 basic_json (InputIT first, InputIT last)
 construct a JSON container given an iterator range More...
 
 basic_json (const basic_json &other)
 copy constructor More...
 
 basic_json (basic_json &&other) noexcept
 move constructor More...
 
basic_jsonoperator= (basic_json other) noexcept(std::is_nothrow_move_constructible< value_t >::value and std::is_nothrow_move_assignable< value_t >::value and std::is_nothrow_move_constructible< json_value >::value and std::is_nothrow_move_assignable< json_value >::value)
 copy assignment More...
 
 ~basic_json () noexcept
 destructor More...
 
 basic_json (const value_t v)
 create an empty value with a given type More...
 
 basic_json (std::nullptr_t=nullptr) noexcept
 create a null object More...
 
template<typename CompatibleType , typename U = detail::uncvref_t<CompatibleType>, detail::enable_if_t< !detail::is_basic_json< U >::value &&detail::is_compatible_type< basic_json_t, U >::value, int > = 0>
 basic_json (CompatibleType &&val) noexcept(noexcept(JSONSerializer< U >::to_json(std::declval< basic_json_t & >(), std::forward< CompatibleType >(val))))
 create a JSON value More...
 
template<typename BasicJsonType , detail::enable_if_t< detail::is_basic_json< BasicJsonType >::value &&!std::is_same< basic_json, BasicJsonType >::value, int > = 0>
 basic_json (const BasicJsonType &val)
 create a JSON value from an existing one More...
 
 basic_json (initializer_list_t init, bool type_deduction=true, value_t manual_type=value_t::array)
 create a container (array or object) from an initializer list More...
 
 basic_json (size_type cnt, const basic_json &val)
 construct an array with count copies of given value More...
 
template<class InputIT , typename std::enable_if< std::is_same< InputIT, typename basic_json_t::iterator >::value||std::is_same< InputIT, typename basic_json_t::const_iterator >::value, int >::type = 0>
 basic_json (InputIT first, InputIT last)
 construct a JSON container given an iterator range More...
 
template<typename JsonRef , detail::enable_if_t< detail::conjunction< detail::is_json_ref< JsonRef >, std::is_same< typename JsonRef::value_type, basic_json >>::value, int > = 0>
 basic_json (const JsonRef &ref)
 
 basic_json (const basic_json &other)
 copy constructor More...
 
 basic_json (basic_json &&other) noexcept
 move constructor More...
 
basic_jsonoperator= (basic_json other) noexcept(std::is_nothrow_move_constructible< value_t >::value &&std::is_nothrow_move_assignable< value_t >::value &&std::is_nothrow_move_constructible< json_value >::value &&std::is_nothrow_move_assignable< json_value >::value)
 copy assignment More...
 
 ~basic_json () noexcept
 destructor More...
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-object inspection

Functions to inspect the type of a JSON value.

-
string_t dump (const int indent=-1, const char indent_char=' ', const bool ensure_ascii=false, const error_handler_t error_handler=error_handler_t::strict) const
 serialization More...
 
constexpr value_t type () const noexcept
 return the type of the JSON value (explicit) More...
 
constexpr bool is_primitive () const noexcept
 return whether type is primitive More...
 
constexpr bool is_structured () const noexcept
 return whether type is structured More...
 
constexpr bool is_null () const noexcept
 return whether value is null More...
 
constexpr bool is_boolean () const noexcept
 return whether value is a boolean More...
 
constexpr bool is_number () const noexcept
 return whether value is a number More...
 
constexpr bool is_number_integer () const noexcept
 return whether value is an integer number More...
 
constexpr bool is_number_unsigned () const noexcept
 return whether value is an unsigned integer number More...
 
constexpr bool is_number_float () const noexcept
 return whether value is a floating-point number More...
 
constexpr bool is_object () const noexcept
 return whether value is an object More...
 
constexpr bool is_array () const noexcept
 return whether value is an array More...
 
constexpr bool is_string () const noexcept
 return whether value is a string More...
 
constexpr bool is_discarded () const noexcept
 return whether value is discarded More...
 
constexpr operator value_t () const noexcept
 return the type of the JSON value (implicit) More...
 
string_t dump (const int indent=-1, const char indent_char=' ', const bool ensure_ascii=false, const error_handler_t error_handler=error_handler_t::strict) const
 serialization More...
 
constexpr value_t type () const noexcept
 return the type of the JSON value (explicit) More...
 
constexpr bool is_primitive () const noexcept
 return whether type is primitive More...
 
constexpr bool is_structured () const noexcept
 return whether type is structured More...
 
constexpr bool is_null () const noexcept
 return whether value is null More...
 
constexpr bool is_boolean () const noexcept
 return whether value is a boolean More...
 
constexpr bool is_number () const noexcept
 return whether value is a number More...
 
constexpr bool is_number_integer () const noexcept
 return whether value is an integer number More...
 
constexpr bool is_number_unsigned () const noexcept
 return whether value is an unsigned integer number More...
 
constexpr bool is_number_float () const noexcept
 return whether value is a floating-point number More...
 
constexpr bool is_object () const noexcept
 return whether value is an object More...
 
constexpr bool is_array () const noexcept
 return whether value is an array More...
 
constexpr bool is_string () const noexcept
 return whether value is a string More...
 
constexpr bool is_binary () const noexcept
 return whether value is a binary array More...
 
constexpr bool is_discarded () const noexcept
 return whether value is discarded More...
 
constexpr operator value_t () const noexcept
 return the type of the JSON value (implicit) More...
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-value access

Direct access to the stored value of a JSON value.

-
template<typename BasicJsonType , detail::enable_if_t< std::is_same< typename std::remove_const< BasicJsonType >::type, basic_json_t >::value, int > = 0>
basic_json get () const
 get special-case overload More...
 
template<typename BasicJsonType , detail::enable_if_t< not std::is_same< BasicJsonType, basic_json >::value and detail::is_basic_json< BasicJsonType >::value, int > = 0>
BasicJsonType get () const
 get special-case overload More...
 
template<typename ValueTypeCV , typename ValueType = detail::uncvref_t<ValueTypeCV>, detail::enable_if_t< not detail::is_basic_json< ValueType >::value and detail::has_from_json< basic_json_t, ValueType >::value and not detail::has_non_default_from_json< basic_json_t, ValueType >::value, int > = 0>
ValueType get () const noexcept(noexcept(JSONSerializer< ValueType >::from_json(std::declval< const basic_json_t & >(), std::declval< ValueType & >())))
 get a value (explicit) More...
 
template<typename ValueTypeCV , typename ValueType = detail::uncvref_t<ValueTypeCV>, detail::enable_if_t< not std::is_same< basic_json_t, ValueType >::value and detail::has_non_default_from_json< basic_json_t, ValueType >::value, int > = 0>
ValueType get () const noexcept(noexcept(JSONSerializer< ValueType >::from_json(std::declval< const basic_json_t & >())))
 get a value (explicit); special case More...
 
template<typename ValueType , detail::enable_if_t< not detail::is_basic_json< ValueType >::value and detail::has_from_json< basic_json_t, ValueType >::value, int > = 0>
ValueType & get_to (ValueType &v) const noexcept(noexcept(JSONSerializer< ValueType >::from_json(std::declval< const basic_json_t & >(), v)))
 get a value (explicit) More...
 
template<typename T , std::size_t N, typename Array = T (&)[N], detail::enable_if_t< detail::has_from_json< basic_json_t, Array >::value, int > = 0>
Array get_to (T(&v)[N]) const noexcept(noexcept(JSONSerializer< Array >::from_json(std::declval< const basic_json_t & >(), v)))
 
template<typename PointerType , typename std::enable_if< std::is_pointer< PointerType >::value, int >::type = 0>
auto get_ptr () noexcept -> decltype(std::declval< basic_json_t & >().get_impl_ptr(std::declval< PointerType >()))
 get a pointer value (implicit) More...
 
template<typename PointerType , typename std::enable_if< std::is_pointer< PointerType >::value and std::is_const< typename std::remove_pointer< PointerType >::type >::value, int >::type = 0>
constexpr auto get_ptr () const noexcept -> decltype(std::declval< const basic_json_t & >().get_impl_ptr(std::declval< PointerType >()))
 get a pointer value (implicit) More...
 
template<typename PointerType , typename std::enable_if< std::is_pointer< PointerType >::value, int >::type = 0>
auto get () noexcept -> decltype(std::declval< basic_json_t & >().template get_ptr< PointerType >())
 get a pointer value (explicit) More...
 
template<typename PointerType , typename std::enable_if< std::is_pointer< PointerType >::value, int >::type = 0>
constexpr auto get () const noexcept -> decltype(std::declval< const basic_json_t & >().template get_ptr< PointerType >())
 get a pointer value (explicit) More...
 
template<typename ReferenceType , typename std::enable_if< std::is_reference< ReferenceType >::value, int >::type = 0>
ReferenceType get_ref ()
 get a reference value (implicit) More...
 
template<typename ReferenceType , typename std::enable_if< std::is_reference< ReferenceType >::value and std::is_const< typename std::remove_reference< ReferenceType >::type >::value, int >::type = 0>
ReferenceType get_ref () const
 get a reference value (implicit) More...
 
template<typename ValueType , typename std::enable_if< not std::is_pointer< ValueType >::value and not std::is_same< ValueType, detail::json_ref< basic_json >>::value and not std::is_same< ValueType, typename string_t::value_type >::value and not detail::is_basic_json< ValueType >::value and not std::is_same< ValueType, std::initializer_list< typename string_t::value_type >>::value and not std::is_same< ValueType, typename std::string_view >::value and detail::is_detected< detail::get_template_function, const basic_json_t &, ValueType >::value, int >::type = 0>
 operator ValueType () const
 get a value (implicit) More...
 
template<typename BasicJsonType , detail::enable_if_t< std::is_same< typename std::remove_const< BasicJsonType >::type, basic_json_t >::value, int > = 0>
basic_json get () const
 get special-case overload More...
 
template<typename BasicJsonType , detail::enable_if_t< !std::is_same< BasicJsonType, basic_json >::value &&detail::is_basic_json< BasicJsonType >::value, int > = 0>
BasicJsonType get () const
 get special-case overload More...
 
template<typename ValueTypeCV , typename ValueType = detail::uncvref_t<ValueTypeCV>, detail::enable_if_t< !detail::is_basic_json< ValueType >::value &&detail::has_from_json< basic_json_t, ValueType >::value &&!detail::has_non_default_from_json< basic_json_t, ValueType >::value, int > = 0>
ValueType get () const noexcept(noexcept(JSONSerializer< ValueType >::from_json(std::declval< const basic_json_t & >(), std::declval< ValueType & >())))
 get a value (explicit) More...
 
template<typename ValueTypeCV , typename ValueType = detail::uncvref_t<ValueTypeCV>, detail::enable_if_t< !std::is_same< basic_json_t, ValueType >::value &&detail::has_non_default_from_json< basic_json_t, ValueType >::value, int > = 0>
ValueType get () const noexcept(noexcept(JSONSerializer< ValueType >::from_json(std::declval< const basic_json_t & >())))
 get a value (explicit); special case More...
 
template<typename ValueType , detail::enable_if_t< !detail::is_basic_json< ValueType >::value &&detail::has_from_json< basic_json_t, ValueType >::value, int > = 0>
ValueType & get_to (ValueType &v) const noexcept(noexcept(JSONSerializer< ValueType >::from_json(std::declval< const basic_json_t & >(), v)))
 get a value (explicit) More...
 
template<typename ValueType , detail::enable_if_t< detail::is_basic_json< ValueType >::value, int > = 0>
ValueType & get_to (ValueType &v) const
 
template<typename T , std::size_t N, typename Array = T (&)[N], detail::enable_if_t< detail::has_from_json< basic_json_t, Array >::value, int > = 0>
Array get_to (T(&v)[N]) const noexcept(noexcept(JSONSerializer< Array >::from_json(std::declval< const basic_json_t & >(), v)))
 
template<typename PointerType , typename std::enable_if< std::is_pointer< PointerType >::value, int >::type = 0>
auto get_ptr () noexcept -> decltype(std::declval< basic_json_t & >().get_impl_ptr(std::declval< PointerType >()))
 get a pointer value (implicit) More...
 
template<typename PointerType , typename std::enable_if< std::is_pointer< PointerType >::value &&std::is_const< typename std::remove_pointer< PointerType >::type >::value, int >::type = 0>
constexpr auto get_ptr () const noexcept -> decltype(std::declval< const basic_json_t & >().get_impl_ptr(std::declval< PointerType >()))
 get a pointer value (implicit) More...
 
template<typename PointerType , typename std::enable_if< std::is_pointer< PointerType >::value, int >::type = 0>
auto get () noexcept -> decltype(std::declval< basic_json_t & >().template get_ptr< PointerType >())
 get a pointer value (explicit) More...
 
template<typename PointerType , typename std::enable_if< std::is_pointer< PointerType >::value, int >::type = 0>
constexpr auto get () const noexcept -> decltype(std::declval< const basic_json_t & >().template get_ptr< PointerType >())
 get a pointer value (explicit) More...
 
template<typename ReferenceType , typename std::enable_if< std::is_reference< ReferenceType >::value, int >::type = 0>
ReferenceType get_ref ()
 get a reference value (implicit) More...
 
template<typename ReferenceType , typename std::enable_if< std::is_reference< ReferenceType >::value &&std::is_const< typename std::remove_reference< ReferenceType >::type >::value, int >::type = 0>
ReferenceType get_ref () const
 get a reference value (implicit) More...
 
template<typename ValueType , typename std::enable_if< !std::is_pointer< ValueType >::value &&!std::is_same< ValueType, detail::json_ref< basic_json >>::value &&!std::is_same< ValueType, typename string_t::value_type >::value &&!detail::is_basic_json< ValueType >::value &&!std::is_same< ValueType, std::initializer_list< typename string_t::value_type >>::value &&detail::is_detected< detail::get_template_function, const basic_json_t &, ValueType >::value, int >::type = 0>
JSON_EXPLICIT operator ValueType () const
 get a value (implicit) More...
 
binary_tget_binary ()
 
const binary_tget_binary () const
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-element access

Access to the JSON value.

-
reference at (size_type idx)
 access specified array element with bounds checking More...
 
const_reference at (size_type idx) const
 access specified array element with bounds checking More...
 
reference at (const typename object_t::key_type &key)
 access specified object element with bounds checking More...
 
const_reference at (const typename object_t::key_type &key) const
 access specified object element with bounds checking More...
 
reference operator[] (size_type idx)
 access specified array element More...
 
const_reference operator[] (size_type idx) const
 access specified array element More...
 
reference operator[] (const typename object_t::key_type &key)
 access specified object element More...
 
const_reference operator[] (const typename object_t::key_type &key) const
 read-only access specified object element More...
 
template<typename T >
reference operator[] (T *key)
 access specified object element More...
 
template<typename T >
const_reference operator[] (T *key) const
 read-only access specified object element More...
 
template<class ValueType , typename std::enable_if< std::is_convertible< basic_json_t, ValueType >::value, int >::type = 0>
ValueType value (const typename object_t::key_type &key, const ValueType &default_value) const
 access specified object element with default value More...
 
string_t value (const typename object_t::key_type &key, const char *default_value) const
 overload for a default value of type const char* More...
 
template<class ValueType , typename std::enable_if< std::is_convertible< basic_json_t, ValueType >::value, int >::type = 0>
ValueType value (const json_pointer &ptr, const ValueType &default_value) const
 access specified object element via JSON Pointer with default value More...
 
string_t value (const json_pointer &ptr, const char *default_value) const
 overload for a default value of type const char* More...
 
reference front ()
 access the first element More...
 
const_reference front () const
 access the first element More...
 
reference back ()
 access the last element More...
 
const_reference back () const
 access the last element More...
 
template<class IteratorType , typename std::enable_if< std::is_same< IteratorType, typename basic_json_t::iterator >::value or std::is_same< IteratorType, typename basic_json_t::const_iterator >::value, int >::type = 0>
IteratorType erase (IteratorType pos)
 remove element given an iterator More...
 
template<class IteratorType , typename std::enable_if< std::is_same< IteratorType, typename basic_json_t::iterator >::value or std::is_same< IteratorType, typename basic_json_t::const_iterator >::value, int >::type = 0>
IteratorType erase (IteratorType first, IteratorType last)
 remove elements given an iterator range More...
 
size_type erase (const typename object_t::key_type &key)
 remove element from a JSON object given a key More...
 
void erase (const size_type idx)
 remove element from a JSON array given an index More...
 
reference at (size_type idx)
 access specified array element with bounds checking More...
 
const_reference at (size_type idx) const
 access specified array element with bounds checking More...
 
reference at (const typename object_t::key_type &key)
 access specified object element with bounds checking More...
 
const_reference at (const typename object_t::key_type &key) const
 access specified object element with bounds checking More...
 
reference operator[] (size_type idx)
 access specified array element More...
 
const_reference operator[] (size_type idx) const
 access specified array element More...
 
reference operator[] (const typename object_t::key_type &key)
 access specified object element More...
 
const_reference operator[] (const typename object_t::key_type &key) const
 read-only access specified object element More...
 
template<typename T >
reference operator[] (T *key)
 access specified object element More...
 
template<typename T >
const_reference operator[] (T *key) const
 read-only access specified object element More...
 
template<class ValueType , typename std::enable_if< detail::is_getable< basic_json_t, ValueType >::value &&!std::is_same< value_t, ValueType >::value, int >::type = 0>
ValueType value (const typename object_t::key_type &key, const ValueType &default_value) const
 access specified object element with default value More...
 
string_t value (const typename object_t::key_type &key, const char *default_value) const
 overload for a default value of type const char* More...
 
template<class ValueType , typename std::enable_if< detail::is_getable< basic_json_t, ValueType >::value, int >::type = 0>
ValueType value (const json_pointer &ptr, const ValueType &default_value) const
 access specified object element via JSON Pointer with default value More...
 
string_t value (const json_pointer &ptr, const char *default_value) const
 overload for a default value of type const char* More...
 
reference front ()
 access the first element More...
 
const_reference front () const
 access the first element More...
 
reference back ()
 access the last element More...
 
const_reference back () const
 access the last element More...
 
template<class IteratorType , typename std::enable_if< std::is_same< IteratorType, typename basic_json_t::iterator >::value||std::is_same< IteratorType, typename basic_json_t::const_iterator >::value, int >::type = 0>
IteratorType erase (IteratorType pos)
 remove element given an iterator More...
 
template<class IteratorType , typename std::enable_if< std::is_same< IteratorType, typename basic_json_t::iterator >::value||std::is_same< IteratorType, typename basic_json_t::const_iterator >::value, int >::type = 0>
IteratorType erase (IteratorType first, IteratorType last)
 remove elements given an iterator range More...
 
size_type erase (const typename object_t::key_type &key)
 remove element from a JSON object given a key More...
 
void erase (const size_type idx)
 remove element from a JSON array given an index More...
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-lookup

template<typename KeyT >
iterator find (KeyT &&key)
 find an element in a JSON object More...
 
template<typename KeyT >
const_iterator find (KeyT &&key) const
 find an element in a JSON object More...
 
template<typename KeyT >
size_type count (KeyT &&key) const
 returns the number of occurrences of a key in a JSON object More...
 
template<typename KeyT , typename std::enable_if< not std::is_same< typename std::decay< KeyT >::type, json_pointer >::value, int >::type = 0>
bool contains (KeyT &&key) const
 check the existence of an element in a JSON object More...
 
bool contains (const json_pointer &ptr) const
 check the existence of an element in a JSON object given a JSON pointer More...
 
template<typename KeyT >
iterator find (KeyT &&key)
 find an element in a JSON object More...
 
template<typename KeyT >
const_iterator find (KeyT &&key) const
 find an element in a JSON object More...
 
template<typename KeyT >
size_type count (KeyT &&key) const
 returns the number of occurrences of a key in a JSON object More...
 
template<typename KeyT , typename std::enable_if< !std::is_same< typename std::decay< KeyT >::type, json_pointer >::value, int >::type = 0>
bool contains (KeyT &&key) const
 check the existence of an element in a JSON object More...
 
bool contains (const json_pointer &ptr) const
 check the existence of an element in a JSON object given a JSON pointer More...
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-iterators

static iteration_proxy< iteratoriterator_wrapper (reference ref) noexcept
 wrapper to access iterator member functions in range-based for More...
 
static iteration_proxy< const_iteratoriterator_wrapper (const_reference ref) noexcept
 wrapper to access iterator member functions in range-based for More...
 
static iteration_proxy< iteratoriterator_wrapper (reference ref) noexcept
 wrapper to access iterator member functions in range-based for More...
 
static iteration_proxy< const_iteratoriterator_wrapper (const_reference ref) noexcept
 wrapper to access iterator member functions in range-based for More...
 
iterator begin () noexcept
 returns an iterator to the first element More...
 
const_iterator begin () const noexcept
 returns a const iterator to the first element More...
 
const_iterator cbegin () const noexcept
 returns a const iterator to the first element More...
 
iterator end () noexcept
 returns an iterator to one past the last element More...
 
const_iterator end () const noexcept
 returns a const iterator to one past the last element More...
 
const_iterator cend () const noexcept
 returns a const iterator to one past the last element More...
 
reverse_iterator rbegin () noexcept
 returns an iterator to the reverse-beginning More...
 
const_reverse_iterator rbegin () const noexcept
 returns a const reverse iterator to the last element More...
 
reverse_iterator rend () noexcept
 returns an iterator to the reverse-end More...
 
const_reverse_iterator rend () const noexcept
 returns a const reverse iterator to one before the first More...
 
const_reverse_iterator crbegin () const noexcept
 returns a const reverse iterator to the last element More...
 
const_reverse_iterator crend () const noexcept
 returns a const reverse iterator to one before the first More...
 
iteration_proxy< iteratoritems () noexcept
 helper to access iterator member functions in range-based for More...
 
iteration_proxy< const_iteratoritems () const noexcept
 helper to access iterator member functions in range-based for More...
 
iterator begin () noexcept
 returns an iterator to the first element More...
 
const_iterator begin () const noexcept
 returns a const iterator to the first element More...
 
const_iterator cbegin () const noexcept
 returns a const iterator to the first element More...
 
iterator end () noexcept
 returns an iterator to one past the last element More...
 
const_iterator end () const noexcept
 returns a const iterator to one past the last element More...
 
const_iterator cend () const noexcept
 returns a const iterator to one past the last element More...
 
reverse_iterator rbegin () noexcept
 returns an iterator to the reverse-beginning More...
 
const_reverse_iterator rbegin () const noexcept
 returns a const reverse iterator to the last element More...
 
reverse_iterator rend () noexcept
 returns an iterator to the reverse-end More...
 
const_reverse_iterator rend () const noexcept
 returns a const reverse iterator to one before the first More...
 
const_reverse_iterator crbegin () const noexcept
 returns a const reverse iterator to the last element More...
 
const_reverse_iterator crend () const noexcept
 returns a const reverse iterator to one before the first More...
 
iteration_proxy< iteratoritems () noexcept
 helper to access iterator member functions in range-based for More...
 
iteration_proxy< const_iteratoritems () const noexcept
 helper to access iterator member functions in range-based for More...
 
- - - - - - - - - - - - - - - - - - - -

-capacity

bool empty () const noexcept
 checks whether the container is empty. More...
 
size_type size () const noexcept
 returns the number of elements More...
 
size_type max_size () const noexcept
 returns the maximum possible number of elements More...
 
bool empty () const noexcept
 checks whether the container is empty. More...
 
size_type size () const noexcept
 returns the number of elements More...
 
size_type max_size () const noexcept
 returns the maximum possible number of elements More...
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-modifiers

void swap (reference left, reference right) noexcept(std::is_nothrow_move_constructible< value_t >::value &&std::is_nothrow_move_assignable< value_t >::value &&std::is_nothrow_move_constructible< json_value >::value &&std::is_nothrow_move_assignable< json_value >::value)
 exchanges the values More...
 
void clear () noexcept
 clears the contents More...
 
void push_back (basic_json &&val)
 add an object to an array More...
 
reference operator+= (basic_json &&val)
 add an object to an array More...
 
void push_back (const basic_json &val)
 add an object to an array More...
 
reference operator+= (const basic_json &val)
 add an object to an array More...
 
void push_back (const typename object_t::value_type &val)
 add an object to an object More...
 
reference operator+= (const typename object_t::value_type &val)
 add an object to an object More...
 
void push_back (initializer_list_t init)
 add an object to an object More...
 
reference operator+= (initializer_list_t init)
 add an object to an object More...
 
template<class... Args>
reference emplace_back (Args &&... args)
 add an object to an array More...
 
template<class... Args>
std::pair< iterator, bool > emplace (Args &&... args)
 add an object to an object if key does not exist More...
 
template<typename... Args>
iterator insert_iterator (const_iterator pos, Args &&... args)
 
iterator insert (const_iterator pos, const basic_json &val)
 inserts element More...
 
iterator insert (const_iterator pos, basic_json &&val)
 inserts element More...
 
iterator insert (const_iterator pos, size_type cnt, const basic_json &val)
 inserts elements More...
 
iterator insert (const_iterator pos, const_iterator first, const_iterator last)
 inserts elements More...
 
iterator insert (const_iterator pos, initializer_list_t ilist)
 inserts elements More...
 
void insert (const_iterator first, const_iterator last)
 inserts elements More...
 
void update (const_reference j)
 updates a JSON object from another object, overwriting existing keys More...
 
void update (const_iterator first, const_iterator last)
 updates a JSON object from another object, overwriting existing keys More...
 
void swap (reference other) noexcept(std::is_nothrow_move_constructible< value_t >::value and std::is_nothrow_move_assignable< value_t >::value and std::is_nothrow_move_constructible< json_value >::value and std::is_nothrow_move_assignable< json_value >::value)
 exchanges the values More...
 
void swap (array_t &other)
 exchanges the values More...
 
void swap (object_t &other)
 exchanges the values More...
 
void swap (string_t &other)
 exchanges the values More...
 
void clear () noexcept
 clears the contents More...
 
void push_back (basic_json &&val)
 add an object to an array More...
 
reference operator+= (basic_json &&val)
 add an object to an array More...
 
void push_back (const basic_json &val)
 add an object to an array More...
 
reference operator+= (const basic_json &val)
 add an object to an array More...
 
void push_back (const typename object_t::value_type &val)
 add an object to an object More...
 
reference operator+= (const typename object_t::value_type &val)
 add an object to an object More...
 
void push_back (initializer_list_t init)
 add an object to an object More...
 
reference operator+= (initializer_list_t init)
 add an object to an object More...
 
template<class... Args>
reference emplace_back (Args &&... args)
 add an object to an array More...
 
template<class... Args>
std::pair< iterator, bool > emplace (Args &&... args)
 add an object to an object if key does not exist More...
 
template<typename... Args>
iterator insert_iterator (const_iterator pos, Args &&... args)
 
iterator insert (const_iterator pos, const basic_json &val)
 inserts element More...
 
iterator insert (const_iterator pos, basic_json &&val)
 inserts element More...
 
iterator insert (const_iterator pos, size_type cnt, const basic_json &val)
 inserts elements More...
 
iterator insert (const_iterator pos, const_iterator first, const_iterator last)
 inserts elements More...
 
iterator insert (const_iterator pos, initializer_list_t ilist)
 inserts elements More...
 
void insert (const_iterator first, const_iterator last)
 inserts elements More...
 
void update (const_reference j)
 updates a JSON object from another object, overwriting existing keys More...
 
void update (const_iterator first, const_iterator last)
 updates a JSON object from another object, overwriting existing keys More...
 
void swap (reference other) noexcept(std::is_nothrow_move_constructible< value_t >::value &&std::is_nothrow_move_assignable< value_t >::value &&std::is_nothrow_move_constructible< json_value >::value &&std::is_nothrow_move_assignable< json_value >::value)
 exchanges the values More...
 
void swap (array_t &other)
 exchanges the values More...
 
void swap (object_t &other)
 exchanges the values More...
 
void swap (string_t &other)
 exchanges the values More...
 
void swap (binary_t &other)
 exchanges the values More...
 
void swap (typename binary_t::container_type &other)
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-lexicographical comparison operators

bool operator== (const_reference lhs, const_reference rhs) noexcept
 comparison: equal More...
 
template<typename ScalarType , typename std::enable_if< std::is_scalar< ScalarType >::value, int >::type = 0>
bool operator== (const_reference lhs, const ScalarType rhs) noexcept
 comparison: equal More...
 
template<typename ScalarType , typename std::enable_if< std::is_scalar< ScalarType >::value, int >::type = 0>
bool operator== (const ScalarType lhs, const_reference rhs) noexcept
 comparison: equal More...
 
bool operator!= (const_reference lhs, const_reference rhs) noexcept
 comparison: not equal More...
 
template<typename ScalarType , typename std::enable_if< std::is_scalar< ScalarType >::value, int >::type = 0>
bool operator!= (const_reference lhs, const ScalarType rhs) noexcept
 comparison: not equal More...
 
template<typename ScalarType , typename std::enable_if< std::is_scalar< ScalarType >::value, int >::type = 0>
bool operator!= (const ScalarType lhs, const_reference rhs) noexcept
 comparison: not equal More...
 
bool operator< (const_reference lhs, const_reference rhs) noexcept
 comparison: less than More...
 
template<typename ScalarType , typename std::enable_if< std::is_scalar< ScalarType >::value, int >::type = 0>
bool operator< (const_reference lhs, const ScalarType rhs) noexcept
 comparison: less than More...
 
template<typename ScalarType , typename std::enable_if< std::is_scalar< ScalarType >::value, int >::type = 0>
bool operator< (const ScalarType lhs, const_reference rhs) noexcept
 comparison: less than More...
 
bool operator<= (const_reference lhs, const_reference rhs) noexcept
 comparison: less than or equal More...
 
template<typename ScalarType , typename std::enable_if< std::is_scalar< ScalarType >::value, int >::type = 0>
bool operator<= (const_reference lhs, const ScalarType rhs) noexcept
 comparison: less than or equal More...
 
template<typename ScalarType , typename std::enable_if< std::is_scalar< ScalarType >::value, int >::type = 0>
bool operator<= (const ScalarType lhs, const_reference rhs) noexcept
 comparison: less than or equal More...
 
bool operator> (const_reference lhs, const_reference rhs) noexcept
 comparison: greater than More...
 
template<typename ScalarType , typename std::enable_if< std::is_scalar< ScalarType >::value, int >::type = 0>
bool operator> (const_reference lhs, const ScalarType rhs) noexcept
 comparison: greater than More...
 
template<typename ScalarType , typename std::enable_if< std::is_scalar< ScalarType >::value, int >::type = 0>
bool operator> (const ScalarType lhs, const_reference rhs) noexcept
 comparison: greater than More...
 
bool operator>= (const_reference lhs, const_reference rhs) noexcept
 comparison: greater than or equal More...
 
template<typename ScalarType , typename std::enable_if< std::is_scalar< ScalarType >::value, int >::type = 0>
bool operator>= (const_reference lhs, const ScalarType rhs) noexcept
 comparison: greater than or equal More...
 
template<typename ScalarType , typename std::enable_if< std::is_scalar< ScalarType >::value, int >::type = 0>
bool operator>= (const ScalarType lhs, const_reference rhs) noexcept
 comparison: greater than or equal More...
 
bool operator== (const_reference lhs, const_reference rhs) noexcept
 comparison: equal More...
 
template<typename ScalarType , typename std::enable_if< std::is_scalar< ScalarType >::value, int >::type = 0>
bool operator== (const_reference lhs, const ScalarType rhs) noexcept
 comparison: equal More...
 
template<typename ScalarType , typename std::enable_if< std::is_scalar< ScalarType >::value, int >::type = 0>
bool operator== (const ScalarType lhs, const_reference rhs) noexcept
 comparison: equal More...
 
bool operator!= (const_reference lhs, const_reference rhs) noexcept
 comparison: not equal More...
 
template<typename ScalarType , typename std::enable_if< std::is_scalar< ScalarType >::value, int >::type = 0>
bool operator!= (const_reference lhs, const ScalarType rhs) noexcept
 comparison: not equal More...
 
template<typename ScalarType , typename std::enable_if< std::is_scalar< ScalarType >::value, int >::type = 0>
bool operator!= (const ScalarType lhs, const_reference rhs) noexcept
 comparison: not equal More...
 
bool operator< (const_reference lhs, const_reference rhs) noexcept
 comparison: less than More...
 
template<typename ScalarType , typename std::enable_if< std::is_scalar< ScalarType >::value, int >::type = 0>
bool operator< (const_reference lhs, const ScalarType rhs) noexcept
 comparison: less than More...
 
template<typename ScalarType , typename std::enable_if< std::is_scalar< ScalarType >::value, int >::type = 0>
bool operator< (const ScalarType lhs, const_reference rhs) noexcept
 comparison: less than More...
 
bool operator<= (const_reference lhs, const_reference rhs) noexcept
 comparison: less than or equal More...
 
template<typename ScalarType , typename std::enable_if< std::is_scalar< ScalarType >::value, int >::type = 0>
bool operator<= (const_reference lhs, const ScalarType rhs) noexcept
 comparison: less than or equal More...
 
template<typename ScalarType , typename std::enable_if< std::is_scalar< ScalarType >::value, int >::type = 0>
bool operator<= (const ScalarType lhs, const_reference rhs) noexcept
 comparison: less than or equal More...
 
bool operator> (const_reference lhs, const_reference rhs) noexcept
 comparison: greater than More...
 
template<typename ScalarType , typename std::enable_if< std::is_scalar< ScalarType >::value, int >::type = 0>
bool operator> (const_reference lhs, const ScalarType rhs) noexcept
 comparison: greater than More...
 
template<typename ScalarType , typename std::enable_if< std::is_scalar< ScalarType >::value, int >::type = 0>
bool operator> (const ScalarType lhs, const_reference rhs) noexcept
 comparison: greater than More...
 
bool operator>= (const_reference lhs, const_reference rhs) noexcept
 comparison: greater than or equal More...
 
template<typename ScalarType , typename std::enable_if< std::is_scalar< ScalarType >::value, int >::type = 0>
bool operator>= (const_reference lhs, const ScalarType rhs) noexcept
 comparison: greater than or equal More...
 
template<typename ScalarType , typename std::enable_if< std::is_scalar< ScalarType >::value, int >::type = 0>
bool operator>= (const ScalarType lhs, const_reference rhs) noexcept
 comparison: greater than or equal More...
 
- - - - - - - - - - - - - -

-serialization

std::ostream & operator<< (std::ostream &o, const basic_json &j)
 serialize to stream More...
 
std::ostream & operator>> (const basic_json &j, std::ostream &o)
 serialize to stream More...
 
std::ostream & operator<< (std::ostream &o, const basic_json &j)
 serialize to stream More...
 
std::ostream & operator>> (const basic_json &j, std::ostream &o)
 serialize to stream More...
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-deserialization

std::istream & operator<< (basic_json &j, std::istream &i)
 deserialize from stream More...
 
std::istream & operator>> (std::istream &i, basic_json &j)
 deserialize from stream More...
 
std::istream & operator<< (basic_json &j, std::istream &i)
 deserialize from stream More...
 
std::istream & operator>> (std::istream &i, basic_json &j)
 deserialize from stream More...
 
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json parse (detail::input_adapter &&i, const parser_callback_t cb=nullptr, const bool allow_exceptions=true)
 deserialize from a compatible input More...
 
static bool accept (detail::input_adapter &&i)
 
template<typename SAX >
static bool sax_parse (detail::input_adapter &&i, SAX *sax, input_format_t format=input_format_t::json, const bool strict=true)
 generate SAX events More...
 
template<class IteratorType , typename std::enable_if< std::is_base_of< std::random_access_iterator_tag, typename std::iterator_traits< IteratorType >::iterator_category >::value, int >::type = 0>
static basic_json parse (IteratorType first, IteratorType last, const parser_callback_t cb=nullptr, const bool allow_exceptions=true)
 deserialize from an iterator range with contiguous storage More...
 
template<class IteratorType , typename std::enable_if< std::is_base_of< std::random_access_iterator_tag, typename std::iterator_traits< IteratorType >::iterator_category >::value, int >::type = 0>
static bool accept (IteratorType first, IteratorType last)
 
template<class IteratorType , class SAX , typename std::enable_if< std::is_base_of< std::random_access_iterator_tag, typename std::iterator_traits< IteratorType >::iterator_category >::value, int >::type = 0>
static bool sax_parse (IteratorType first, IteratorType last, SAX *sax)
 
template<typename InputType >
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json parse (InputType &&i, const parser_callback_t cb=nullptr, const bool allow_exceptions=true, const bool ignore_comments=false)
 deserialize from a compatible input More...
 
template<typename IteratorType >
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json parse (IteratorType first, IteratorType last, const parser_callback_t cb=nullptr, const bool allow_exceptions=true, const bool ignore_comments=false)
 deserialize from a pair of character iterators More...
 
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json parse (detail::span_input_adapter &&i, const parser_callback_t cb=nullptr, const bool allow_exceptions=true, const bool ignore_comments=false)
 
template<typename InputType >
static bool accept (InputType &&i, const bool ignore_comments=false)
 check if the input is valid JSON More...
 
template<typename IteratorType >
static bool accept (IteratorType first, IteratorType last, const bool ignore_comments=false)
 
static JSON_HEDLEY_WARN_UNUSED_RESULT bool accept (detail::span_input_adapter &&i, const bool ignore_comments=false)
 
template<typename InputType , typename SAX >
static bool sax_parse (InputType &&i, SAX *sax, input_format_t format=input_format_t::json, const bool strict=true, const bool ignore_comments=false)
 generate SAX events More...
 
template<class IteratorType , class SAX >
static bool sax_parse (IteratorType first, IteratorType last, SAX *sax, input_format_t format=input_format_t::json, const bool strict=true, const bool ignore_comments=false)
 
template<typename SAX >
static bool sax_parse (detail::span_input_adapter &&i, SAX *sax, input_format_t format=input_format_t::json, const bool strict=true, const bool ignore_comments=false)
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-binary serialization/deserialization support

static std::vector< uint8_t > to_cbor (const basic_json &j)
 create a CBOR serialization of a given JSON value More...
 
static void to_cbor (const basic_json &j, detail::output_adapter< uint8_t > o)
 
static void to_cbor (const basic_json &j, detail::output_adapter< char > o)
 
static std::vector< uint8_t > to_msgpack (const basic_json &j)
 create a MessagePack serialization of a given JSON value More...
 
static void to_msgpack (const basic_json &j, detail::output_adapter< uint8_t > o)
 
static void to_msgpack (const basic_json &j, detail::output_adapter< char > o)
 
static std::vector< uint8_t > to_ubjson (const basic_json &j, const bool use_size=false, const bool use_type=false)
 create a UBJSON serialization of a given JSON value More...
 
static void to_ubjson (const basic_json &j, detail::output_adapter< uint8_t > o, const bool use_size=false, const bool use_type=false)
 
static void to_ubjson (const basic_json &j, detail::output_adapter< char > o, const bool use_size=false, const bool use_type=false)
 
static std::vector< uint8_t > to_bson (const basic_json &j)
 Serializes the given JSON object j to BSON and returns a vector containing the corresponding BSON-representation. More...
 
static void to_bson (const basic_json &j, detail::output_adapter< uint8_t > o)
 Serializes the given JSON object j to BSON and forwards the corresponding BSON-representation to the given output_adapter o. More...
 
static void to_bson (const basic_json &j, detail::output_adapter< char > o)
 Serializes the given JSON object j to BSON and forwards the corresponding BSON-representation to the given output_adapter o. More...
 
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json from_cbor (detail::input_adapter &&i, const bool strict=true, const bool allow_exceptions=true)
 create a JSON value from an input in CBOR format More...
 
template<typename A1 , typename A2 , detail::enable_if_t< std::is_constructible< detail::input_adapter, A1, A2 >::value, int > = 0>
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json from_cbor (A1 &&a1, A2 &&a2, const bool strict=true, const bool allow_exceptions=true)
 create a JSON value from an input in CBOR format More...
 
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json from_msgpack (detail::input_adapter &&i, const bool strict=true, const bool allow_exceptions=true)
 create a JSON value from an input in MessagePack format More...
 
template<typename A1 , typename A2 , detail::enable_if_t< std::is_constructible< detail::input_adapter, A1, A2 >::value, int > = 0>
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json from_msgpack (A1 &&a1, A2 &&a2, const bool strict=true, const bool allow_exceptions=true)
 create a JSON value from an input in MessagePack format More...
 
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json from_ubjson (detail::input_adapter &&i, const bool strict=true, const bool allow_exceptions=true)
 create a JSON value from an input in UBJSON format More...
 
template<typename A1 , typename A2 , detail::enable_if_t< std::is_constructible< detail::input_adapter, A1, A2 >::value, int > = 0>
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json from_ubjson (A1 &&a1, A2 &&a2, const bool strict=true, const bool allow_exceptions=true)
 create a JSON value from an input in UBJSON format More...
 
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json from_bson (detail::input_adapter &&i, const bool strict=true, const bool allow_exceptions=true)
 Create a JSON value from an input in BSON format. More...
 
template<typename A1 , typename A2 , detail::enable_if_t< std::is_constructible< detail::input_adapter, A1, A2 >::value, int > = 0>
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json from_bson (A1 &&a1, A2 &&a2, const bool strict=true, const bool allow_exceptions=true)
 Create a JSON value from an input in BSON format. More...
 
static std::vector< uint8_t > to_cbor (const basic_json &j)
 create a CBOR serialization of a given JSON value More...
 
static void to_cbor (const basic_json &j, detail::output_adapter< uint8_t > o)
 
static void to_cbor (const basic_json &j, detail::output_adapter< char > o)
 
static std::vector< uint8_t > to_msgpack (const basic_json &j)
 create a MessagePack serialization of a given JSON value More...
 
static void to_msgpack (const basic_json &j, detail::output_adapter< uint8_t > o)
 
static void to_msgpack (const basic_json &j, detail::output_adapter< char > o)
 
static std::vector< uint8_t > to_ubjson (const basic_json &j, const bool use_size=false, const bool use_type=false)
 create a UBJSON serialization of a given JSON value More...
 
static void to_ubjson (const basic_json &j, detail::output_adapter< uint8_t > o, const bool use_size=false, const bool use_type=false)
 
static void to_ubjson (const basic_json &j, detail::output_adapter< char > o, const bool use_size=false, const bool use_type=false)
 
static std::vector< uint8_t > to_bson (const basic_json &j)
 Serializes the given JSON object j to BSON and returns a vector containing the corresponding BSON-representation. More...
 
static void to_bson (const basic_json &j, detail::output_adapter< uint8_t > o)
 Serializes the given JSON object j to BSON and forwards the corresponding BSON-representation to the given output_adapter o. More...
 
static void to_bson (const basic_json &j, detail::output_adapter< char > o)
 Serializes the given JSON object j to BSON and forwards the corresponding BSON-representation to the given output_adapter o. More...
 
template<typename InputType >
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json from_cbor (InputType &&i, const bool strict=true, const bool allow_exceptions=true, const cbor_tag_handler_t tag_handler=cbor_tag_handler_t::error)
 create a JSON value from an input in CBOR format More...
 
template<typename IteratorType >
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json from_cbor (IteratorType first, IteratorType last, const bool strict=true, const bool allow_exceptions=true, const cbor_tag_handler_t tag_handler=cbor_tag_handler_t::error)
 
template<typename T >
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json from_cbor (const T *ptr, std::size_t len, const bool strict=true, const bool allow_exceptions=true, const cbor_tag_handler_t tag_handler=cbor_tag_handler_t::error)
 
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json from_cbor (detail::span_input_adapter &&i, const bool strict=true, const bool allow_exceptions=true, const cbor_tag_handler_t tag_handler=cbor_tag_handler_t::error)
 
template<typename InputType >
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json from_msgpack (InputType &&i, const bool strict=true, const bool allow_exceptions=true)
 create a JSON value from an input in MessagePack format More...
 
template<typename IteratorType >
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json from_msgpack (IteratorType first, IteratorType last, const bool strict=true, const bool allow_exceptions=true)
 create a JSON value from an input in MessagePack format More...
 
template<typename T >
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json from_msgpack (const T *ptr, std::size_t len, const bool strict=true, const bool allow_exceptions=true)
 
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json from_msgpack (detail::span_input_adapter &&i, const bool strict=true, const bool allow_exceptions=true)
 
template<typename InputType >
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json from_ubjson (InputType &&i, const bool strict=true, const bool allow_exceptions=true)
 create a JSON value from an input in UBJSON format More...
 
template<typename IteratorType >
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json from_ubjson (IteratorType first, IteratorType last, const bool strict=true, const bool allow_exceptions=true)
 create a JSON value from an input in UBJSON format More...
 
template<typename T >
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json from_ubjson (const T *ptr, std::size_t len, const bool strict=true, const bool allow_exceptions=true)
 
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json from_ubjson (detail::span_input_adapter &&i, const bool strict=true, const bool allow_exceptions=true)
 
template<typename InputType >
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json from_bson (InputType &&i, const bool strict=true, const bool allow_exceptions=true)
 Create a JSON value from an input in BSON format. More...
 
template<typename IteratorType >
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json from_bson (IteratorType first, IteratorType last, const bool strict=true, const bool allow_exceptions=true)
 Create a JSON value from an input in BSON format. More...
 
template<typename T >
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json from_bson (const T *ptr, std::size_t len, const bool strict=true, const bool allow_exceptions=true)
 
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json from_bson (detail::span_input_adapter &&i, const bool strict=true, const bool allow_exceptions=true)
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-JSON Pointer functions

reference operator[] (const json_pointer &ptr)
 access specified element via JSON Pointer More...
 
const_reference operator[] (const json_pointer &ptr) const
 access specified element via JSON Pointer More...
 
reference at (const json_pointer &ptr)
 access specified element via JSON Pointer More...
 
const_reference at (const json_pointer &ptr) const
 access specified element via JSON Pointer More...
 
basic_json flatten () const
 return flattened JSON value More...
 
basic_json unflatten () const
 unflatten a previously flattened JSON value More...
 
reference operator[] (const json_pointer &ptr)
 access specified element via JSON Pointer More...
 
const_reference operator[] (const json_pointer &ptr) const
 access specified element via JSON Pointer More...
 
reference at (const json_pointer &ptr)
 access specified element via JSON Pointer More...
 
const_reference at (const json_pointer &ptr) const
 access specified element via JSON Pointer More...
 
basic_json flatten () const
 return flattened JSON value More...
 
basic_json unflatten () const
 unflatten a previously flattened JSON value More...
 
- - - - - - - - - - - - - -

-JSON Patch functions

static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json diff (const basic_json &source, const basic_json &target, const std::string &path="")
 creates a diff as a JSON patch More...
 
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json diff (const basic_json &source, const basic_json &target, const std::string &path="")
 creates a diff as a JSON patch More...
 
basic_json patch (const basic_json &json_patch) const
 applies a JSON patch More...
 
basic_json patch (const basic_json &json_patch) const
 applies a JSON patch More...
 
- - - - - - - -

-JSON Merge Patch functions

void merge_patch (const basic_json &apply_patch)
 applies a JSON Merge Patch More...
 
void merge_patch (const basic_json &apply_patch)
 applies a JSON Merge Patch More...
 
-

Detailed Description

-

a class to store JSON values

-
Template Parameters
- - - - - - - - - - -
ObjectTypetype for JSON objects (std::map by default; will be used in object_t)
ArrayTypetype for JSON arrays (std::vector by default; will be used in array_t)
StringTypetype for JSON strings and object keys (std::string by default; will be used in string_t)
BooleanTypetype for JSON booleans (bool by default; will be used in boolean_t)
NumberIntegerTypetype for JSON integer numbers (int64_t by default; will be used in number_integer_t)
NumberUnsignedTypetype for JSON unsigned integer numbers (uint64_t by default; will be used in number_unsigned_t)
NumberFloatTypetype for JSON floating-point numbers (double by default; will be used in number_float_t)
AllocatorTypetype of the allocator to use (std::allocator by default)
JSONSerializerthe serializer to resolve internal calls to to_json() and from_json() (adl_serializer by default)
-
-
-

@requirement The class satisfies the following concept requirements:

-
Invariant
The member variables m_value and m_type have the following relationship:
    -
  • If m_type == value_t::object, then m_value.object != nullptr.
  • -
  • If m_type == value_t::array, then m_value.array != nullptr.
  • -
  • If m_type == value_t::string, then m_value.string != nullptr. The invariants are checked by member function assert_invariant().
  • -
-
-
See also
RFC 7159: The JavaScript Object Notation (JSON) Data Interchange Format
-
Since
version 1.0.0
-
Template Parameters
- - - - - - - - - - - -
ObjectTypetype for JSON objects (std::map by default; will be used in object_t)
ArrayTypetype for JSON arrays (std::vector by default; will be used in array_t)
StringTypetype for JSON strings and object keys (std::string by default; will be used in string_t)
BooleanTypetype for JSON booleans (bool by default; will be used in boolean_t)
NumberIntegerTypetype for JSON integer numbers (int64_t by default; will be used in number_integer_t)
NumberUnsignedTypetype for JSON unsigned integer numbers (uint64_t by default; will be used in number_unsigned_t)
NumberFloatTypetype for JSON floating-point numbers (double by default; will be used in number_float_t)
BinaryTypetype for packed binary data for compatibility with binary serialization formats (std::vector<std::uint8_t> by default; will be used in binary_t)
AllocatorTypetype of the allocator to use (std::allocator by default)
JSONSerializerthe serializer to resolve internal calls to to_json() and from_json() (adl_serializer by default)
-
-
-

@requirement The class satisfies the following concept requirements:

-
Invariant
The member variables m_value and m_type have the following relationship:
    -
  • If m_type == value_t::object, then m_value.object != nullptr.
  • -
  • If m_type == value_t::array, then m_value.array != nullptr.
  • -
  • If m_type == value_t::string, then m_value.string != nullptr. The invariants are checked by member function assert_invariant().
  • -
-
-
See also
RFC 7159: The JavaScript Object Notation (JSON) Data Interchange Format
-
Since
version 1.0.0
-

Member Typedef Documentation

- -

◆ allocator_type [1/2]

- -
-
- - - - -
using nlohmann::basic_json::allocator_type = AllocatorType<basic_json>
-
- -

the allocator type

- -
-
- -

◆ allocator_type [2/2]

- -
-
- - - - -
using nlohmann::basic_json::allocator_type = AllocatorType<basic_json>
-
- -

the allocator type

- -
-
- -

◆ array_t [1/2]

- -
-
- - - - -
using nlohmann::basic_json::array_t = ArrayType<basic_json, AllocatorType<basic_json> >
-
- -

a type for an array

-

RFC 7159 describes JSON arrays as follows:

-

An array is an ordered sequence of zero or more values.

-
-

To store objects in C++, a type is defined by the template parameters explained below.

-
Template Parameters
- - - -
ArrayTypecontainer type to store arrays (e.g., std::vector or std::list)
AllocatorTypeallocator to use for arrays (e.g., std::allocator)
-
-
-

-Default type

-

With the default values for ArrayType (std::vector) and AllocatorType (std::allocator), the default value for array_t is:

-
std::vector<
-
basic_json, // value_type
-
std::allocator<basic_json> // allocator_type
-
>
-

-Limits

-

RFC 7159 specifies:

-

An implementation may set limits on the maximum depth of nesting.

-
-

In this class, the array's limit of nesting is not explicitly constrained. However, a maximum depth of nesting may be introduced by the compiler or runtime environment. A theoretical limit can be queried by calling the max_size function of a JSON array.

-

-Storage

-

Arrays are stored as pointers in a basic_json type. That is, for any access to array values, a pointer of type array_t* must be dereferenced.

-
See also
object_ttype for an object value
-
Since
version 1.0.0
- -
-
- -

◆ array_t [2/2]

- -
-
- - - - -
using nlohmann::basic_json::array_t = ArrayType<basic_json, AllocatorType<basic_json> >
-
- -

a type for an array

-

RFC 7159 describes JSON arrays as follows:

-

An array is an ordered sequence of zero or more values.

-
-

To store objects in C++, a type is defined by the template parameters explained below.

-
Template Parameters
- - - -
ArrayTypecontainer type to store arrays (e.g., std::vector or std::list)
AllocatorTypeallocator to use for arrays (e.g., std::allocator)
-
-
-

-Default type

-

With the default values for ArrayType (std::vector) and AllocatorType (std::allocator), the default value for array_t is:

-
std::vector<
-
basic_json, // value_type
-
std::allocator<basic_json> // allocator_type
-
>
-

-Limits

-

RFC 7159 specifies:

-

An implementation may set limits on the maximum depth of nesting.

-
-

In this class, the array's limit of nesting is not explicitly constrained. However, a maximum depth of nesting may be introduced by the compiler or runtime environment. A theoretical limit can be queried by calling the max_size function of a JSON array.

-

-Storage

-

Arrays are stored as pointers in a basic_json type. That is, for any access to array values, a pointer of type array_t* must be dereferenced.

-
See also
object_ttype for an object value
-
Since
version 1.0.0
- -
-
- -

◆ binary_t

- -
-
- -

a type for a packed binary type

-

This type is a type designed to carry binary data that appears in various serialized formats, such as CBOR's Major Type 2, MessagePack's bin, and BSON's generic binary subtype. This type is NOT a part of standard JSON and exists solely for compatibility with these binary types. As such, it is simply defined as an ordered sequence of zero or more byte values.

-

Additionally, as an implementation detail, the subtype of the binary data is carried around as a std::uint8_t, which is compatible with both of the binary data formats that use binary subtyping, (though the specific numbering is incompatible with each other, and it is up to the user to translate between them).

-

CBOR's RFC 7049 describes this type as:

-

Major type 2: a byte string. The string's length in bytes is represented following the rules for positive integers (major type 0).

-
-

MessagePack's documentation on the bin type family describes this type as:

-

Bin format family stores an byte array in 2, 3, or 5 bytes of extra bytes in addition to the size of the byte array.

-
-

BSON's specifications describe several binary types; however, this type is intended to represent the generic binary type which has the description:

-

Generic binary subtype - This is the most commonly used binary subtype and should be the 'default' for drivers and tools.

-
-

None of these impose any limitations on the internal representation other than the basic unit of storage be some type of array whose parts are decomposable into bytes.

-

The default representation of this binary format is a std::vector<std::uint8_t>, which is a very common way to represent a byte array in modern C++.

-

-Default type

-

The default values for BinaryType is std::vector<std::uint8_t>

-

-Storage

-

Binary Arrays are stored as pointers in a basic_json type. That is, for any access to array values, a pointer of the type binary_t* must be dereferenced.

-

-Notes on subtypes

-
    -
  • CBOR
      -
    • Binary values are represented as byte strings. No subtypes are supported and will be ignored when CBOR is written.
    • -
    -
  • -
  • MessagePack
      -
    • If a subtype is given and the binary array contains exactly 1, 2, 4, 8, or 16 elements, the fixext family (fixext1, fixext2, fixext4, fixext8) is used. For other sizes, the ext family (ext8, ext16, ext32) is used. The subtype is then added as singed 8-bit integer.
    • -
    • If no subtype is given, the bin family (bin8, bin16, bin32) is used.
    • -
    -
  • -
  • BSON
      -
    • If a subtype is given, it is used and added as unsigned 8-bit integer.
    • -
    • If no subtype is given, the generic binary subtype 0x00 is used.
    • -
    -
  • -
-
See also
binary – create a binary array
-
Since
version 3.8.0
- -
-
- -

◆ boolean_t [1/2]

- -
-
- - - - -
using nlohmann::basic_json::boolean_t = BooleanType
-
- -

a type for a boolean

-

RFC 7159 implicitly describes a boolean as a type which differentiates the two literals true and false.

-

To store objects in C++, a type is defined by the template parameter BooleanType which chooses the type to use.

-

-Default type

-

With the default values for BooleanType (bool), the default value for boolean_t is:

-
bool
-

-Storage

-

Boolean values are stored directly inside a basic_json type.

-
Since
version 1.0.0
- -
-
- -

◆ boolean_t [2/2]

- -
-
- - - - -
using nlohmann::basic_json::boolean_t = BooleanType
-
- -

a type for a boolean

-

RFC 7159 implicitly describes a boolean as a type which differentiates the two literals true and false.

-

To store objects in C++, a type is defined by the template parameter BooleanType which chooses the type to use.

-

-Default type

-

With the default values for BooleanType (bool), the default value for boolean_t is:

-
bool
-

-Storage

-

Boolean values are stored directly inside a basic_json type.

-
Since
version 1.0.0
- -
-
- -

◆ cbor_tag_handler_t

- -
-
- -

how to treat CBOR tags

- -
-
- -

◆ const_iterator [1/2]

- -
-
- -

a const iterator for a basic_json container

- -
-
- -

◆ const_iterator [2/2]

- -
-
- -

a const iterator for a basic_json container

- -
-
- -

◆ const_pointer [1/2]

- -
-
- - - - -
using nlohmann::basic_json::const_pointer = typename std::allocator_traits<allocator_type>::const_pointer
-
- -

the type of an element const pointer

- -
-
- -

◆ const_pointer [2/2]

- -
-
- - - - -
using nlohmann::basic_json::const_pointer = typename std::allocator_traits<allocator_type>::const_pointer
-
- -

the type of an element const pointer

- -
-
- -

◆ const_reference [1/2]

- -
-
- -

the type of an element const reference

- -
-
- -

◆ const_reference [2/2]

- -
-
- -

the type of an element const reference

- -
-
- -

◆ const_reverse_iterator [1/2]

- -
-
- -

a const reverse iterator for a basic_json container

- -
-
- -

◆ const_reverse_iterator [2/2]

- -
-
- -

a const reverse iterator for a basic_json container

- -
-
- -

◆ difference_type [1/2]

- -
-
- - - - -
using nlohmann::basic_json::difference_type = std::ptrdiff_t
-
- -

a type to represent differences between iterators

- -
-
- -

◆ difference_type [2/2]

- -
-
- - - - -
using nlohmann::basic_json::difference_type = std::ptrdiff_t
-
- -

a type to represent differences between iterators

- -
-
- -

◆ error_handler_t [1/2]

- -
-
- -

how to treat decoding errors

- -
-
- -

◆ error_handler_t [2/2]

- -
-
- -

how to treat decoding errors

- -
-
- -

◆ exception [1/2]

- -
-
- -

general exception of the basic_json class

-

This class is an extension of std::exception objects with a member id for exception ids. It is used as the base class for all exceptions thrown by the basic_json class. This class can hence be used as "wildcard" to catch exceptions.

-

Subclasses:

    -
  • parse_error for exceptions indicating a parse error
  • -
  • invalid_iterator for exceptions indicating errors with iterators
  • -
  • type_error for exceptions indicating executing a member function with a wrong type
  • -
  • out_of_range for exceptions indicating access out of the defined range
  • -
  • other_error for exceptions indicating other library errors
  • -
-

@liveexample{The following code shows how arbitrary library exceptions can be caught.,exception}

-
Since
version 3.0.0
- -
-
- -

◆ exception [2/2]

- -
-
- -

general exception of the basic_json class

-

This class is an extension of std::exception objects with a member id for exception ids. It is used as the base class for all exceptions thrown by the basic_json class. This class can hence be used as "wildcard" to catch exceptions.

-

Subclasses:

    -
  • parse_error for exceptions indicating a parse error
  • -
  • invalid_iterator for exceptions indicating errors with iterators
  • -
  • type_error for exceptions indicating executing a member function with a wrong type
  • -
  • out_of_range for exceptions indicating access out of the defined range
  • -
  • other_error for exceptions indicating other library errors
  • -
-

@liveexample{The following code shows how arbitrary library exceptions can be caught.,exception}

-
Since
version 3.0.0
- -
-
- -

◆ initializer_list_t [1/2]

- -
-
- - - - -
using nlohmann::basic_json::initializer_list_t = std::initializer_list<detail::json_ref<basic_json> >
-
- -

helper type for initializer lists of basic_json values

- -
-
- -

◆ initializer_list_t [2/2]

- -
-
- - - - -
using nlohmann::basic_json::initializer_list_t = std::initializer_list<detail::json_ref<basic_json> >
-
- -

helper type for initializer lists of basic_json values

- -
-
- -

◆ input_format_t [1/2]

- - - -

◆ input_format_t [2/2]

- - - -

◆ invalid_iterator [1/2]

- -
-
- -

exception indicating errors with iterators

-

This exception is thrown if iterators passed to a library function do not match the expected semantics.

-

Exceptions have ids 2xx.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
name / id example message description
json.exception.invalid_iterator.201 iterators are not compatible The iterators passed to constructor basic_json(InputIT first, InputIT last) are not compatible, meaning they do not belong to the same container. Therefore, the range (first, last) is invalid.
json.exception.invalid_iterator.202 iterator does not fit current value In an erase or insert function, the passed iterator pos does not belong to the JSON value for which the function was called. It hence does not define a valid position for the deletion/insertion.
json.exception.invalid_iterator.203 iterators do not fit current value Either iterator passed to function erase(IteratorType first, IteratorType last) does not belong to the JSON value from which values shall be erased. It hence does not define a valid range to delete values from.
json.exception.invalid_iterator.204 iterators out of range When an iterator range for a primitive type (number, boolean, or string) is passed to a constructor or an erase function, this range has to be exactly (begin(), end()), because this is the only way the single stored value is expressed. All other ranges are invalid.
json.exception.invalid_iterator.205 iterator out of range When an iterator for a primitive type (number, boolean, or string) is passed to an erase function, the iterator has to be the begin() iterator, because it is the only way to address the stored value. All other iterators are invalid.
json.exception.invalid_iterator.206 cannot construct with iterators from null The iterators passed to constructor basic_json(InputIT first, InputIT last) belong to a JSON null value and hence to not define a valid range.
json.exception.invalid_iterator.207 cannot use key() for non-object iterators The key() member function can only be used on iterators belonging to a JSON object, because other types do not have a concept of a key.
json.exception.invalid_iterator.208 cannot use operator[] for object iterators The operator[] to specify a concrete offset cannot be used on iterators belonging to a JSON object, because JSON objects are unordered.
json.exception.invalid_iterator.209 cannot use offsets with object iterators The offset operators (+, -, +=, -=) cannot be used on iterators belonging to a JSON object, because JSON objects are unordered.
json.exception.invalid_iterator.210 iterators do not fit The iterator range passed to the insert function are not compatible, meaning they do not belong to the same container. Therefore, the range (first, last) is invalid.
json.exception.invalid_iterator.211 passed iterators may not belong to container The iterator range passed to the insert function must not be a subrange of the container to insert to.
json.exception.invalid_iterator.212 cannot compare iterators of different containers When two iterators are compared, they must belong to the same container.
json.exception.invalid_iterator.213 cannot compare order of object iterators The order of object iterators cannot be compared, because JSON objects are unordered.
json.exception.invalid_iterator.214 cannot get value Cannot get value for iterator: Either the iterator belongs to a null value or it is an iterator to a primitive type (number, boolean, or string), but the iterator is different to begin().
-

@liveexample{The following code shows how an invalid_iterator exception can be caught.,invalid_iterator}

-
See also
- exception for the base class of the library exceptions
-
-- parse_error for exceptions indicating a parse error
-
-- type_error for exceptions indicating executing a member function with a wrong type
-
-- out_of_range for exceptions indicating access out of the defined range
-
-- other_error for exceptions indicating other library errors
-
Since
version 3.0.0
- -
-
- -

◆ invalid_iterator [2/2]

- -
-
- -

exception indicating errors with iterators

-

This exception is thrown if iterators passed to a library function do not match the expected semantics.

-

Exceptions have ids 2xx.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
name / id example message description
json.exception.invalid_iterator.201 iterators are not compatible The iterators passed to constructor basic_json(InputIT first, InputIT last) are not compatible, meaning they do not belong to the same container. Therefore, the range (first, last) is invalid.
json.exception.invalid_iterator.202 iterator does not fit current value In an erase or insert function, the passed iterator pos does not belong to the JSON value for which the function was called. It hence does not define a valid position for the deletion/insertion.
json.exception.invalid_iterator.203 iterators do not fit current value Either iterator passed to function erase(IteratorType first, IteratorType last) does not belong to the JSON value from which values shall be erased. It hence does not define a valid range to delete values from.
json.exception.invalid_iterator.204 iterators out of range When an iterator range for a primitive type (number, boolean, or string) is passed to a constructor or an erase function, this range has to be exactly (begin(), end()), because this is the only way the single stored value is expressed. All other ranges are invalid.
json.exception.invalid_iterator.205 iterator out of range When an iterator for a primitive type (number, boolean, or string) is passed to an erase function, the iterator has to be the begin() iterator, because it is the only way to address the stored value. All other iterators are invalid.
json.exception.invalid_iterator.206 cannot construct with iterators from null The iterators passed to constructor basic_json(InputIT first, InputIT last) belong to a JSON null value and hence to not define a valid range.
json.exception.invalid_iterator.207 cannot use key() for non-object iterators The key() member function can only be used on iterators belonging to a JSON object, because other types do not have a concept of a key.
json.exception.invalid_iterator.208 cannot use operator[] for object iterators The operator[] to specify a concrete offset cannot be used on iterators belonging to a JSON object, because JSON objects are unordered.
json.exception.invalid_iterator.209 cannot use offsets with object iterators The offset operators (+, -, +=, -=) cannot be used on iterators belonging to a JSON object, because JSON objects are unordered.
json.exception.invalid_iterator.210 iterators do not fit The iterator range passed to the insert function are not compatible, meaning they do not belong to the same container. Therefore, the range (first, last) is invalid.
json.exception.invalid_iterator.211 passed iterators may not belong to container The iterator range passed to the insert function must not be a subrange of the container to insert to.
json.exception.invalid_iterator.212 cannot compare iterators of different containers When two iterators are compared, they must belong to the same container.
json.exception.invalid_iterator.213 cannot compare order of object iterators The order of object iterators cannot be compared, because JSON objects are unordered.
json.exception.invalid_iterator.214 cannot get value Cannot get value for iterator: Either the iterator belongs to a null value or it is an iterator to a primitive type (number, boolean, or string), but the iterator is different to begin().
-

@liveexample{The following code shows how an invalid_iterator exception can be caught.,invalid_iterator}

-
See also
- exception for the base class of the library exceptions
-
-- parse_error for exceptions indicating a parse error
-
-- type_error for exceptions indicating executing a member function with a wrong type
-
-- out_of_range for exceptions indicating access out of the defined range
-
-- other_error for exceptions indicating other library errors
-
Since
version 3.0.0
- -
-
- -

◆ iterator [1/2]

- -
-
- -

an iterator for a basic_json container

- -
-
- -

◆ iterator [2/2]

- -
-
- -

an iterator for a basic_json container

- -
-
- -

◆ json_pointer [1/2]

- - - -

◆ json_pointer [2/2]

- - - -

◆ json_sax_t [1/2]

- -
-
- -

SAX interface type, see nlohmann::json_sax.

- -
-
- -

◆ json_sax_t [2/2]

- -
-
- -

SAX interface type, see nlohmann::json_sax.

- -
-
- -

◆ json_serializer [1/2]

- -
-
-
-template<typename T , typename SFINAE >
- - - - -
using nlohmann::basic_json::json_serializer = JSONSerializer<T, SFINAE>
-
- -
-
- -

◆ json_serializer [2/2]

- -
-
-
-template<typename T , typename SFINAE >
- - - - -
using nlohmann::basic_json::json_serializer = JSONSerializer<T, SFINAE>
-
- -
-
- -

◆ number_float_t [1/2]

- -
-
- - - - -
using nlohmann::basic_json::number_float_t = NumberFloatType
-
- -

a type for a number (floating-point)

-

RFC 7159 describes numbers as follows:

-

The representation of numbers is similar to that used in most programming languages. A number is represented in base 10 using decimal digits. It contains an integer component that may be prefixed with an optional minus sign, which may be followed by a fraction part and/or an exponent part. Leading zeros are not allowed. (...) Numeric values that cannot be represented in the grammar below (such as Infinity and NaN) are not permitted.

-
-

This description includes both integer and floating-point numbers. However, C++ allows more precise storage if it is known whether the number is a signed integer, an unsigned integer or a floating-point number. Therefore, three different types, number_integer_t, number_unsigned_t and number_float_t are used.

-

To store floating-point numbers in C++, a type is defined by the template parameter NumberFloatType which chooses the type to use.

-

-Default type

-

With the default values for NumberFloatType (double), the default value for number_float_t is:

-
double
-

-Default behavior

-
    -
  • The restrictions about leading zeros is not enforced in C++. Instead, leading zeros in floating-point literals will be ignored. Internally, the value will be stored as decimal number. For instance, the C++ floating-point literal 01.2 will be serialized to 1.2. During deserialization, leading zeros yield an error.
  • -
  • Not-a-number (NaN) values will be serialized to null.
  • -
-

-Limits

-

RFC 7159 states:

-

This specification allows implementations to set limits on the range and precision of numbers accepted. Since software that implements IEEE 754-2008 binary64 (double precision) numbers is generally available and widely used, good interoperability can be achieved by implementations that expect no more precision or range than these provide, in the sense that implementations will approximate JSON numbers within the expected precision.

-
-

This implementation does exactly follow this approach, as it uses double precision floating-point numbers. Note values smaller than -1.79769313486232e+308 and values greater than 1.79769313486232e+308 will be stored as NaN internally and be serialized to null.

-

-Storage

-

Floating-point number values are stored directly inside a basic_json type.

-
See also
number_integer_ttype for number values (integer)
-
-number_unsigned_ttype for number values (unsigned integer)
-
Since
version 1.0.0
- -
-
- -

◆ number_float_t [2/2]

- -
-
- - - - -
using nlohmann::basic_json::number_float_t = NumberFloatType
-
- -

a type for a number (floating-point)

-

RFC 7159 describes numbers as follows:

-

The representation of numbers is similar to that used in most programming languages. A number is represented in base 10 using decimal digits. It contains an integer component that may be prefixed with an optional minus sign, which may be followed by a fraction part and/or an exponent part. Leading zeros are not allowed. (...) Numeric values that cannot be represented in the grammar below (such as Infinity and NaN) are not permitted.

-
-

This description includes both integer and floating-point numbers. However, C++ allows more precise storage if it is known whether the number is a signed integer, an unsigned integer or a floating-point number. Therefore, three different types, number_integer_t, number_unsigned_t and number_float_t are used.

-

To store floating-point numbers in C++, a type is defined by the template parameter NumberFloatType which chooses the type to use.

-

-Default type

-

With the default values for NumberFloatType (double), the default value for number_float_t is:

-
double
-

-Default behavior

-
    -
  • The restrictions about leading zeros is not enforced in C++. Instead, leading zeros in floating-point literals will be ignored. Internally, the value will be stored as decimal number. For instance, the C++ floating-point literal 01.2 will be serialized to 1.2. During deserialization, leading zeros yield an error.
  • -
  • Not-a-number (NaN) values will be serialized to null.
  • -
-

-Limits

-

RFC 7159 states:

-

This specification allows implementations to set limits on the range and precision of numbers accepted. Since software that implements IEEE 754-2008 binary64 (double precision) numbers is generally available and widely used, good interoperability can be achieved by implementations that expect no more precision or range than these provide, in the sense that implementations will approximate JSON numbers within the expected precision.

-
-

This implementation does exactly follow this approach, as it uses double precision floating-point numbers. Note values smaller than -1.79769313486232e+308 and values greater than 1.79769313486232e+308 will be stored as NaN internally and be serialized to null.

-

-Storage

-

Floating-point number values are stored directly inside a basic_json type.

-
See also
number_integer_ttype for number values (integer)
-
-number_unsigned_ttype for number values (unsigned integer)
-
Since
version 1.0.0
- -
-
- -

◆ number_integer_t [1/2]

- -
-
- - - - -
using nlohmann::basic_json::number_integer_t = NumberIntegerType
-
- -

a type for a number (integer)

-

RFC 7159 describes numbers as follows:

-

The representation of numbers is similar to that used in most programming languages. A number is represented in base 10 using decimal digits. It contains an integer component that may be prefixed with an optional minus sign, which may be followed by a fraction part and/or an exponent part. Leading zeros are not allowed. (...) Numeric values that cannot be represented in the grammar below (such as Infinity and NaN) are not permitted.

-
-

This description includes both integer and floating-point numbers. However, C++ allows more precise storage if it is known whether the number is a signed integer, an unsigned integer or a floating-point number. Therefore, three different types, number_integer_t, number_unsigned_t and number_float_t are used.

-

To store integer numbers in C++, a type is defined by the template parameter NumberIntegerType which chooses the type to use.

-

-Default type

-

With the default values for NumberIntegerType (int64_t), the default value for number_integer_t is:

-
int64_t
-

-Default behavior

-
    -
  • The restrictions about leading zeros is not enforced in C++. Instead, leading zeros in integer literals lead to an interpretation as octal number. Internally, the value will be stored as decimal number. For instance, the C++ integer literal 010 will be serialized to 8. During deserialization, leading zeros yield an error.
  • -
  • Not-a-number (NaN) values will be serialized to null.
  • -
-

-Limits

-

RFC 7159 specifies:

-

An implementation may set limits on the range and precision of numbers.

-
-

When the default type is used, the maximal integer number that can be stored is 9223372036854775807 (INT64_MAX) and the minimal integer number that can be stored is -9223372036854775808 (INT64_MIN). Integer numbers that are out of range will yield over/underflow when used in a constructor. During deserialization, too large or small integer numbers will be automatically be stored as number_unsigned_t or number_float_t.

-

RFC 7159 further states:

-

Note that when such software is used, numbers that are integers and are in the range $[-2^{53}+1, 2^{53}-1]$ are interoperable in the sense that implementations will agree exactly on their numeric values.

-
-

As this range is a subrange of the exactly supported range [INT64_MIN, INT64_MAX], this class's integer type is interoperable.

-

-Storage

-

Integer number values are stored directly inside a basic_json type.

-
See also
number_float_ttype for number values (floating-point)
-
-number_unsigned_ttype for number values (unsigned integer)
-
Since
version 1.0.0
- -
-
- -

◆ number_integer_t [2/2]

- -
-
- - - - -
using nlohmann::basic_json::number_integer_t = NumberIntegerType
-
- -

a type for a number (integer)

-

RFC 7159 describes numbers as follows:

-

The representation of numbers is similar to that used in most programming languages. A number is represented in base 10 using decimal digits. It contains an integer component that may be prefixed with an optional minus sign, which may be followed by a fraction part and/or an exponent part. Leading zeros are not allowed. (...) Numeric values that cannot be represented in the grammar below (such as Infinity and NaN) are not permitted.

-
-

This description includes both integer and floating-point numbers. However, C++ allows more precise storage if it is known whether the number is a signed integer, an unsigned integer or a floating-point number. Therefore, three different types, number_integer_t, number_unsigned_t and number_float_t are used.

-

To store integer numbers in C++, a type is defined by the template parameter NumberIntegerType which chooses the type to use.

-

-Default type

-

With the default values for NumberIntegerType (int64_t), the default value for number_integer_t is:

-
int64_t
-

-Default behavior

-
    -
  • The restrictions about leading zeros is not enforced in C++. Instead, leading zeros in integer literals lead to an interpretation as octal number. Internally, the value will be stored as decimal number. For instance, the C++ integer literal 010 will be serialized to 8. During deserialization, leading zeros yield an error.
  • -
  • Not-a-number (NaN) values will be serialized to null.
  • -
-

-Limits

-

RFC 7159 specifies:

-

An implementation may set limits on the range and precision of numbers.

-
-

When the default type is used, the maximal integer number that can be stored is 9223372036854775807 (INT64_MAX) and the minimal integer number that can be stored is -9223372036854775808 (INT64_MIN). Integer numbers that are out of range will yield over/underflow when used in a constructor. During deserialization, too large or small integer numbers will be automatically be stored as number_unsigned_t or number_float_t.

-

RFC 7159 further states:

-

Note that when such software is used, numbers that are integers and are in the range $[-2^{53}+1, 2^{53}-1]$ are interoperable in the sense that implementations will agree exactly on their numeric values.

-
-

As this range is a subrange of the exactly supported range [INT64_MIN, INT64_MAX], this class's integer type is interoperable.

-

-Storage

-

Integer number values are stored directly inside a basic_json type.

-
See also
number_float_ttype for number values (floating-point)
-
-number_unsigned_ttype for number values (unsigned integer)
-
Since
version 1.0.0
- -
-
- -

◆ number_unsigned_t [1/2]

- -
-
- - - - -
using nlohmann::basic_json::number_unsigned_t = NumberUnsignedType
-
- -

a type for a number (unsigned)

-

RFC 7159 describes numbers as follows:

-

The representation of numbers is similar to that used in most programming languages. A number is represented in base 10 using decimal digits. It contains an integer component that may be prefixed with an optional minus sign, which may be followed by a fraction part and/or an exponent part. Leading zeros are not allowed. (...) Numeric values that cannot be represented in the grammar below (such as Infinity and NaN) are not permitted.

-
-

This description includes both integer and floating-point numbers. However, C++ allows more precise storage if it is known whether the number is a signed integer, an unsigned integer or a floating-point number. Therefore, three different types, number_integer_t, number_unsigned_t and number_float_t are used.

-

To store unsigned integer numbers in C++, a type is defined by the template parameter NumberUnsignedType which chooses the type to use.

-

-Default type

-

With the default values for NumberUnsignedType (uint64_t), the default value for number_unsigned_t is:

-
uint64_t
-

-Default behavior

-
    -
  • The restrictions about leading zeros is not enforced in C++. Instead, leading zeros in integer literals lead to an interpretation as octal number. Internally, the value will be stored as decimal number. For instance, the C++ integer literal 010 will be serialized to 8. During deserialization, leading zeros yield an error.
  • -
  • Not-a-number (NaN) values will be serialized to null.
  • -
-

-Limits

-

RFC 7159 specifies:

-

An implementation may set limits on the range and precision of numbers.

-
-

When the default type is used, the maximal integer number that can be stored is 18446744073709551615 (UINT64_MAX) and the minimal integer number that can be stored is 0. Integer numbers that are out of range will yield over/underflow when used in a constructor. During deserialization, too large or small integer numbers will be automatically be stored as number_integer_t or number_float_t.

-

RFC 7159 further states:

-

Note that when such software is used, numbers that are integers and are in the range $[-2^{53}+1, 2^{53}-1]$ are interoperable in the sense that implementations will agree exactly on their numeric values.

-
-

As this range is a subrange (when considered in conjunction with the number_integer_t type) of the exactly supported range [0, UINT64_MAX], this class's integer type is interoperable.

-

-Storage

-

Integer number values are stored directly inside a basic_json type.

-
See also
number_float_ttype for number values (floating-point)
-
-number_integer_ttype for number values (integer)
-
Since
version 2.0.0
- -
-
- -

◆ number_unsigned_t [2/2]

- -
-
- - - - -
using nlohmann::basic_json::number_unsigned_t = NumberUnsignedType
-
- -

a type for a number (unsigned)

-

RFC 7159 describes numbers as follows:

-

The representation of numbers is similar to that used in most programming languages. A number is represented in base 10 using decimal digits. It contains an integer component that may be prefixed with an optional minus sign, which may be followed by a fraction part and/or an exponent part. Leading zeros are not allowed. (...) Numeric values that cannot be represented in the grammar below (such as Infinity and NaN) are not permitted.

-
-

This description includes both integer and floating-point numbers. However, C++ allows more precise storage if it is known whether the number is a signed integer, an unsigned integer or a floating-point number. Therefore, three different types, number_integer_t, number_unsigned_t and number_float_t are used.

-

To store unsigned integer numbers in C++, a type is defined by the template parameter NumberUnsignedType which chooses the type to use.

-

-Default type

-

With the default values for NumberUnsignedType (uint64_t), the default value for number_unsigned_t is:

-
uint64_t
-

-Default behavior

-
    -
  • The restrictions about leading zeros is not enforced in C++. Instead, leading zeros in integer literals lead to an interpretation as octal number. Internally, the value will be stored as decimal number. For instance, the C++ integer literal 010 will be serialized to 8. During deserialization, leading zeros yield an error.
  • -
  • Not-a-number (NaN) values will be serialized to null.
  • -
-

-Limits

-

RFC 7159 specifies:

-

An implementation may set limits on the range and precision of numbers.

-
-

When the default type is used, the maximal integer number that can be stored is 18446744073709551615 (UINT64_MAX) and the minimal integer number that can be stored is 0. Integer numbers that are out of range will yield over/underflow when used in a constructor. During deserialization, too large or small integer numbers will be automatically be stored as number_integer_t or number_float_t.

-

RFC 7159 further states:

-

Note that when such software is used, numbers that are integers and are in the range $[-2^{53}+1, 2^{53}-1]$ are interoperable in the sense that implementations will agree exactly on their numeric values.

-
-

As this range is a subrange (when considered in conjunction with the number_integer_t type) of the exactly supported range [0, UINT64_MAX], this class's integer type is interoperable.

-

-Storage

-

Integer number values are stored directly inside a basic_json type.

-
See also
number_float_ttype for number values (floating-point)
-
-number_integer_ttype for number values (integer)
-
Since
version 2.0.0
- -
-
- -

◆ object_comparator_t [1/2]

- -
-
- - - - -
using nlohmann::basic_json::object_comparator_t = std::less<StringType>
-
- -
-
- -

◆ object_comparator_t [2/2]

- -
-
- - - - -
using nlohmann::basic_json::object_comparator_t = std::less<StringType>
-
- -
-
- -

◆ object_t [1/2]

- -
-
- - - - -
using nlohmann::basic_json::object_t = ObjectType<StringType, basic_json, object_comparator_t, AllocatorType<std::pair<const StringType, basic_json> >>
-
- -

a type for an object

-

RFC 7159 describes JSON objects as follows:

-

An object is an unordered collection of zero or more name/value pairs, where a name is a string and a value is a string, number, boolean, null, object, or array.

-
-

To store objects in C++, a type is defined by the template parameters described below.

-
Template Parameters
- - - - -
ObjectTypethe container to store objects (e.g., std::map or std::unordered_map)
StringTypethe type of the keys or names (e.g., std::string). The comparison function std::less<StringType> is used to order elements inside the container.
AllocatorTypethe allocator to use for objects (e.g., std::allocator)
-
-
-

-Default type

-

With the default values for ObjectType (std::map), StringType (std::string), and AllocatorType (std::allocator), the default value for object_t is:

-
std::map<
-
std::string, // key_type
-
basic_json, // value_type
-
std::less<std::string>, // key_compare
-
std::allocator<std::pair<const std::string, basic_json>> // allocator_type
-
>
-

-Behavior

-

The choice of object_t influences the behavior of the JSON class. With the default type, objects have the following behavior:

-
    -
  • When all names are unique, objects will be interoperable in the sense that all software implementations receiving that object will agree on the name-value mappings.
  • -
  • When the names within an object are not unique, it is unspecified which one of the values for a given key will be chosen. For instance, {"key": 2, "key": 1} could be equal to either {"key": 1} or {"key": 2}.
  • -
  • Internally, name/value pairs are stored in lexicographical order of the names. Objects will also be serialized (see dump) in this order. For instance, {"b": 1, "a": 2} and {"a": 2, "b": 1} will be stored and serialized as {"a": 2, "b": 1}.
  • -
  • When comparing objects, the order of the name/value pairs is irrelevant. This makes objects interoperable in the sense that they will not be affected by these differences. For instance, {"b": 1, "a": 2} and {"a": 2, "b": 1} will be treated as equal.
  • -
-

-Limits

-

RFC 7159 specifies:

-

An implementation may set limits on the maximum depth of nesting.

-
-

In this class, the object's limit of nesting is not explicitly constrained. However, a maximum depth of nesting may be introduced by the compiler or runtime environment. A theoretical limit can be queried by calling the max_size function of a JSON object.

-

-Storage

-

Objects are stored as pointers in a basic_json type. That is, for any access to object values, a pointer of type object_t* must be dereferenced.

-
See also
array_ttype for an array value
-
Since
version 1.0.0
-
Note
The order name/value pairs are added to the object is not preserved by the library. Therefore, iterating an object may return name/value pairs in a different order than they were originally stored. In fact, keys will be traversed in alphabetical order as std::map with std::less is used by default. Please note this behavior conforms to RFC 7159, because any order implements the specified "unordered" nature of JSON objects.
- -
-
- -

◆ object_t [2/2]

- -
-
- - - - -
using nlohmann::basic_json::object_t = ObjectType<StringType, basic_json, object_comparator_t, AllocatorType<std::pair<const StringType, basic_json> >>
-
- -

a type for an object

-

RFC 7159 describes JSON objects as follows:

-

An object is an unordered collection of zero or more name/value pairs, where a name is a string and a value is a string, number, boolean, null, object, or array.

-
-

To store objects in C++, a type is defined by the template parameters described below.

-
Template Parameters
- - - - -
ObjectTypethe container to store objects (e.g., std::map or std::unordered_map)
StringTypethe type of the keys or names (e.g., std::string). The comparison function std::less<StringType> is used to order elements inside the container.
AllocatorTypethe allocator to use for objects (e.g., std::allocator)
-
-
-

-Default type

-

With the default values for ObjectType (std::map), StringType (std::string), and AllocatorType (std::allocator), the default value for object_t is:

-
std::map<
-
std::string, // key_type
-
basic_json, // value_type
-
std::less<std::string>, // key_compare
-
std::allocator<std::pair<const std::string, basic_json>> // allocator_type
-
>
-

-Behavior

-

The choice of object_t influences the behavior of the JSON class. With the default type, objects have the following behavior:

-
    -
  • When all names are unique, objects will be interoperable in the sense that all software implementations receiving that object will agree on the name-value mappings.
  • -
  • When the names within an object are not unique, it is unspecified which one of the values for a given key will be chosen. For instance, {"key": 2, "key": 1} could be equal to either {"key": 1} or {"key": 2}.
  • -
  • Internally, name/value pairs are stored in lexicographical order of the names. Objects will also be serialized (see dump) in this order. For instance, {"b": 1, "a": 2} and {"a": 2, "b": 1} will be stored and serialized as {"a": 2, "b": 1}.
  • -
  • When comparing objects, the order of the name/value pairs is irrelevant. This makes objects interoperable in the sense that they will not be affected by these differences. For instance, {"b": 1, "a": 2} and {"a": 2, "b": 1} will be treated as equal.
  • -
-

-Limits

-

RFC 7159 specifies:

-

An implementation may set limits on the maximum depth of nesting.

-
-

In this class, the object's limit of nesting is not explicitly constrained. However, a maximum depth of nesting may be introduced by the compiler or runtime environment. A theoretical limit can be queried by calling the max_size function of a JSON object.

-

-Storage

-

Objects are stored as pointers in a basic_json type. That is, for any access to object values, a pointer of type object_t* must be dereferenced.

-
See also
array_ttype for an array value
-
Since
version 1.0.0
-
Note
The order name/value pairs are added to the object is not preserved by the library. Therefore, iterating an object may return name/value pairs in a different order than they were originally stored. In fact, keys will be traversed in alphabetical order as std::map with std::less is used by default. Please note this behavior conforms to RFC 7159, because any order implements the specified "unordered" nature of JSON objects.
- -
-
- -

◆ other_error [1/2]

- -
-
- -

exception indicating other library errors

-

This exception is thrown in case of errors that cannot be classified with the other exception types.

-

Exceptions have ids 5xx.

- - - - - -
name / id example message description
json.exception.other_error.501 unsuccessful: {"op":"test","path":"/baz", "value":"bar"} A JSON Patch operation 'test' failed. The unsuccessful operation is also printed.
-
See also
- exception for the base class of the library exceptions
-
-- parse_error for exceptions indicating a parse error
-
-- invalid_iterator for exceptions indicating errors with iterators
-
-- type_error for exceptions indicating executing a member function with a wrong type
-
-- out_of_range for exceptions indicating access out of the defined range
-

@liveexample{The following code shows how an other_error exception can be caught.,other_error}

-
Since
version 3.0.0
- -
-
- -

◆ other_error [2/2]

- -
-
- -

exception indicating other library errors

-

This exception is thrown in case of errors that cannot be classified with the other exception types.

-

Exceptions have ids 5xx.

- - - - - -
name / id example message description
json.exception.other_error.501 unsuccessful: {"op":"test","path":"/baz", "value":"bar"} A JSON Patch operation 'test' failed. The unsuccessful operation is also printed.
-
See also
- exception for the base class of the library exceptions
-
-- parse_error for exceptions indicating a parse error
-
-- invalid_iterator for exceptions indicating errors with iterators
-
-- type_error for exceptions indicating executing a member function with a wrong type
-
-- out_of_range for exceptions indicating access out of the defined range
-

@liveexample{The following code shows how an other_error exception can be caught.,other_error}

-
Since
version 3.0.0
- -
-
- -

◆ out_of_range [1/2]

- -
-
- -

exception indicating access out of the defined range

-

This exception is thrown in case a library function is called on an input parameter that exceeds the expected range, for instance in case of array indices or nonexisting object keys.

-

Exceptions have ids 4xx.

- - - - - - - - - - - - - - - - - - - - - -
name / id example message description
json.exception.out_of_range.401 array index 3 is out of range The provided array index i is larger than size-1.
json.exception.out_of_range.402 array index '-' (3) is out of range The special array index - in a JSON Pointer never describes a valid element of the array, but the index past the end. That is, it can only be used to add elements at this position, but not to read it.
json.exception.out_of_range.403 key 'foo' not found The provided key was not found in the JSON object.
json.exception.out_of_range.404 unresolved reference token 'foo' A reference token in a JSON Pointer could not be resolved.
json.exception.out_of_range.405 JSON pointer has no parent The JSON Patch operations 'remove' and 'add' can not be applied to the root element of the JSON value.
json.exception.out_of_range.406 number overflow parsing '10E1000' A parsed number could not be stored as without changing it to NaN or INF.
json.exception.out_of_range.407 number overflow serializing '9223372036854775808' UBJSON and BSON only support integer numbers up to 9223372036854775807.
json.exception.out_of_range.408 excessive array size: 8658170730974374167 The size (following #) of an UBJSON array or object exceeds the maximal capacity.
json.exception.out_of_range.409 BSON key cannot contain code point U+0000 (at byte 2) Key identifiers to be serialized to BSON cannot contain code point U+0000, since the key is stored as zero-terminated c-string
-

@liveexample{The following code shows how an out_of_range exception can be caught.,out_of_range}

-
See also
- exception for the base class of the library exceptions
-
-- parse_error for exceptions indicating a parse error
-
-- invalid_iterator for exceptions indicating errors with iterators
-
-- type_error for exceptions indicating executing a member function with a wrong type
-
-- other_error for exceptions indicating other library errors
-
Since
version 3.0.0
-

This exception is thrown in case a library function is called on an input parameter that exceeds the expected range, for instance in case of array indices or nonexisting object keys.

-

Exceptions have ids 4xx.

- - - - - - - - - - - - - - - - - - - - - -
name / id example message description
json.exception.out_of_range.401 array index 3 is out of range The provided array index i is larger than size-1.
json.exception.out_of_range.402 array index '-' (3) is out of range The special array index - in a JSON Pointer never describes a valid element of the array, but the index past the end. That is, it can only be used to add elements at this position, but not to read it.
json.exception.out_of_range.403 key 'foo' not found The provided key was not found in the JSON object.
json.exception.out_of_range.404 unresolved reference token 'foo' A reference token in a JSON Pointer could not be resolved.
json.exception.out_of_range.405 JSON pointer has no parent The JSON Patch operations 'remove' and 'add' can not be applied to the root element of the JSON value.
json.exception.out_of_range.406 number overflow parsing '10E1000' A parsed number could not be stored as without changing it to NaN or INF.
json.exception.out_of_range.407 number overflow serializing '9223372036854775808' UBJSON and BSON only support integer numbers up to 9223372036854775807. (until version 3.8.0)
json.exception.out_of_range.408 excessive array size: 8658170730974374167 The size (following #) of an UBJSON array or object exceeds the maximal capacity.
json.exception.out_of_range.409 BSON key cannot contain code point U+0000 (at byte 2) Key identifiers to be serialized to BSON cannot contain code point U+0000, since the key is stored as zero-terminated c-string
-

@liveexample{The following code shows how an out_of_range exception can be caught.,out_of_range}

-
See also
- exception for the base class of the library exceptions
-
-- parse_error for exceptions indicating a parse error
-
-- invalid_iterator for exceptions indicating errors with iterators
-
-- type_error for exceptions indicating executing a member function with a wrong type
-
-- other_error for exceptions indicating other library errors
-
Since
version 3.0.0
- -
-
- -

◆ out_of_range [2/2]

- -
-
- -

exception indicating access out of the defined range

-

This exception is thrown in case a library function is called on an input parameter that exceeds the expected range, for instance in case of array indices or nonexisting object keys.

-

Exceptions have ids 4xx.

- - - - - - - - - - - - - - - - - - - - - -
name / id example message description
json.exception.out_of_range.401 array index 3 is out of range The provided array index i is larger than size-1.
json.exception.out_of_range.402 array index '-' (3) is out of range The special array index - in a JSON Pointer never describes a valid element of the array, but the index past the end. That is, it can only be used to add elements at this position, but not to read it.
json.exception.out_of_range.403 key 'foo' not found The provided key was not found in the JSON object.
json.exception.out_of_range.404 unresolved reference token 'foo' A reference token in a JSON Pointer could not be resolved.
json.exception.out_of_range.405 JSON pointer has no parent The JSON Patch operations 'remove' and 'add' can not be applied to the root element of the JSON value.
json.exception.out_of_range.406 number overflow parsing '10E1000' A parsed number could not be stored as without changing it to NaN or INF.
json.exception.out_of_range.407 number overflow serializing '9223372036854775808' UBJSON and BSON only support integer numbers up to 9223372036854775807.
json.exception.out_of_range.408 excessive array size: 8658170730974374167 The size (following #) of an UBJSON array or object exceeds the maximal capacity.
json.exception.out_of_range.409 BSON key cannot contain code point U+0000 (at byte 2) Key identifiers to be serialized to BSON cannot contain code point U+0000, since the key is stored as zero-terminated c-string
-

@liveexample{The following code shows how an out_of_range exception can be caught.,out_of_range}

-
See also
- exception for the base class of the library exceptions
-
-- parse_error for exceptions indicating a parse error
-
-- invalid_iterator for exceptions indicating errors with iterators
-
-- type_error for exceptions indicating executing a member function with a wrong type
-
-- other_error for exceptions indicating other library errors
-
Since
version 3.0.0
-

This exception is thrown in case a library function is called on an input parameter that exceeds the expected range, for instance in case of array indices or nonexisting object keys.

-

Exceptions have ids 4xx.

- - - - - - - - - - - - - - - - - - - - - -
name / id example message description
json.exception.out_of_range.401 array index 3 is out of range The provided array index i is larger than size-1.
json.exception.out_of_range.402 array index '-' (3) is out of range The special array index - in a JSON Pointer never describes a valid element of the array, but the index past the end. That is, it can only be used to add elements at this position, but not to read it.
json.exception.out_of_range.403 key 'foo' not found The provided key was not found in the JSON object.
json.exception.out_of_range.404 unresolved reference token 'foo' A reference token in a JSON Pointer could not be resolved.
json.exception.out_of_range.405 JSON pointer has no parent The JSON Patch operations 'remove' and 'add' can not be applied to the root element of the JSON value.
json.exception.out_of_range.406 number overflow parsing '10E1000' A parsed number could not be stored as without changing it to NaN or INF.
json.exception.out_of_range.407 number overflow serializing '9223372036854775808' UBJSON and BSON only support integer numbers up to 9223372036854775807. (until version 3.8.0)
json.exception.out_of_range.408 excessive array size: 8658170730974374167 The size (following #) of an UBJSON array or object exceeds the maximal capacity.
json.exception.out_of_range.409 BSON key cannot contain code point U+0000 (at byte 2) Key identifiers to be serialized to BSON cannot contain code point U+0000, since the key is stored as zero-terminated c-string
-

@liveexample{The following code shows how an out_of_range exception can be caught.,out_of_range}

-
See also
- exception for the base class of the library exceptions
-
-- parse_error for exceptions indicating a parse error
-
-- invalid_iterator for exceptions indicating errors with iterators
-
-- type_error for exceptions indicating executing a member function with a wrong type
-
-- other_error for exceptions indicating other library errors
-
Since
version 3.0.0
- -
-
- -

◆ parse_error [1/2]

- -
-
- -

exception indicating a parse error

-

This exception is thrown by the library when a parse error occurs. Parse errors can occur during the deserialization of JSON text, CBOR, MessagePack, as well as when using JSON Patch.

-

Member byte holds the byte index of the last read character in the input file.

-

Exceptions have ids 1xx.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
name / id example message description
json.exception.parse_error.101 parse error at 2: unexpected end of input; expected string literal This error indicates a syntax error while deserializing a JSON text. The error message describes that an unexpected token (character) was encountered, and the member byte indicates the error position.
json.exception.parse_error.102 parse error at 14: missing or wrong low surrogate JSON uses the \uxxxx format to describe Unicode characters. Code points above above 0xFFFF are split into two \uxxxx entries ("surrogate pairs"). This error indicates that the surrogate pair is incomplete or contains an invalid code point.
json.exception.parse_error.103 parse error: code points above 0x10FFFF are invalid Unicode supports code points up to 0x10FFFF. Code points above 0x10FFFF are invalid.
json.exception.parse_error.104 parse error: JSON patch must be an array of objects RFC 6902 requires a JSON Patch document to be a JSON document that represents an array of objects.
json.exception.parse_error.105 parse error: operation must have string member 'op' An operation of a JSON Patch document must contain exactly one "op" member, whose value indicates the operation to perform. Its value must be one of "add", "remove", "replace", "move", "copy", or "test"; other values are errors.
json.exception.parse_error.106 parse error: array index '01' must not begin with '0' An array index in a JSON Pointer (RFC 6901) may be 0 or any number without a leading 0.
json.exception.parse_error.107 parse error: JSON pointer must be empty or begin with '/' - was: 'foo' A JSON Pointer must be a Unicode string containing a sequence of zero or more reference tokens, each prefixed by a / character.
json.exception.parse_error.108 parse error: escape character '~' must be followed with '0' or '1' In a JSON Pointer, only ~0 and ~1 are valid escape sequences.
json.exception.parse_error.109 parse error: array index 'one' is not a number A JSON Pointer array index must be a number.
json.exception.parse_error.110 parse error at 1: cannot read 2 bytes from vector When parsing CBOR or MessagePack, the byte vector ends before the complete value has been read.
json.exception.parse_error.112 parse error at 1: error reading CBOR; last byte: 0xF8 Not all types of CBOR or MessagePack are supported. This exception occurs if an unsupported byte was read.
json.exception.parse_error.113 parse error at 2: expected a CBOR string; last byte: 0x98 While parsing a map key, a value that is not a string has been read.
json.exception.parse_error.114 parse error: Unsupported BSON record type 0x0F The parsing of the corresponding BSON record type is not implemented (yet).
-
Note
For an input with n bytes, 1 is the index of the first character and n+1 is the index of the terminating null byte or the end of file. This also holds true when reading a byte vector (CBOR or MessagePack).
-

@liveexample{The following code shows how a parse_error exception can be caught.,parse_error}

-
See also
- exception for the base class of the library exceptions
-
-- invalid_iterator for exceptions indicating errors with iterators
-
-- type_error for exceptions indicating executing a member function with a wrong type
-
-- out_of_range for exceptions indicating access out of the defined range
-
-- other_error for exceptions indicating other library errors
-
Since
version 3.0.0
-

This exception is thrown by the library when a parse error occurs. Parse errors can occur during the deserialization of JSON text, CBOR, MessagePack, as well as when using JSON Patch.

-

Member byte holds the byte index of the last read character in the input file.

-

Exceptions have ids 1xx.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
name / id example message description
json.exception.parse_error.101 parse error at 2: unexpected end of input; expected string literal This error indicates a syntax error while deserializing a JSON text. The error message describes that an unexpected token (character) was encountered, and the member byte indicates the error position.
json.exception.parse_error.102 parse error at 14: missing or wrong low surrogate JSON uses the \uxxxx format to describe Unicode characters. Code points above above 0xFFFF are split into two \uxxxx entries ("surrogate pairs"). This error indicates that the surrogate pair is incomplete or contains an invalid code point.
json.exception.parse_error.103 parse error: code points above 0x10FFFF are invalid Unicode supports code points up to 0x10FFFF. Code points above 0x10FFFF are invalid.
json.exception.parse_error.104 parse error: JSON patch must be an array of objects RFC 6902 requires a JSON Patch document to be a JSON document that represents an array of objects.
json.exception.parse_error.105 parse error: operation must have string member 'op' An operation of a JSON Patch document must contain exactly one "op" member, whose value indicates the operation to perform. Its value must be one of "add", "remove", "replace", "move", "copy", or "test"; other values are errors.
json.exception.parse_error.106 parse error: array index '01' must not begin with '0' An array index in a JSON Pointer (RFC 6901) may be 0 or any number without a leading 0.
json.exception.parse_error.107 parse error: JSON pointer must be empty or begin with '/' - was: 'foo' A JSON Pointer must be a Unicode string containing a sequence of zero or more reference tokens, each prefixed by a / character.
json.exception.parse_error.108 parse error: escape character '~' must be followed with '0' or '1' In a JSON Pointer, only ~0 and ~1 are valid escape sequences.
json.exception.parse_error.109 parse error: array index 'one' is not a number A JSON Pointer array index must be a number.
json.exception.parse_error.110 parse error at 1: cannot read 2 bytes from vector When parsing CBOR or MessagePack, the byte vector ends before the complete value has been read.
json.exception.parse_error.112 parse error at 1: error reading CBOR; last byte: 0xF8 Not all types of CBOR or MessagePack are supported. This exception occurs if an unsupported byte was read.
json.exception.parse_error.113 parse error at 2: expected a CBOR string; last byte: 0x98 While parsing a map key, a value that is not a string has been read.
json.exception.parse_error.114 parse error: Unsupported BSON record type 0x0F The parsing of the corresponding BSON record type is not implemented (yet).
json.exception.parse_error.115 parse error at byte 5: syntax error while parsing UBJSON high-precision number: invalid number text: 1A A UBJSON high-precision number could not be parsed.
-
Note
For an input with n bytes, 1 is the index of the first character and n+1 is the index of the terminating null byte or the end of file. This also holds true when reading a byte vector (CBOR or MessagePack).
-

@liveexample{The following code shows how a parse_error exception can be caught.,parse_error}

-
See also
- exception for the base class of the library exceptions
-
-- invalid_iterator for exceptions indicating errors with iterators
-
-- type_error for exceptions indicating executing a member function with a wrong type
-
-- out_of_range for exceptions indicating access out of the defined range
-
-- other_error for exceptions indicating other library errors
-
Since
version 3.0.0
- -
-
- -

◆ parse_error [2/2]

- -
-
- -

exception indicating a parse error

-

This exception is thrown by the library when a parse error occurs. Parse errors can occur during the deserialization of JSON text, CBOR, MessagePack, as well as when using JSON Patch.

-

Member byte holds the byte index of the last read character in the input file.

-

Exceptions have ids 1xx.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
name / id example message description
json.exception.parse_error.101 parse error at 2: unexpected end of input; expected string literal This error indicates a syntax error while deserializing a JSON text. The error message describes that an unexpected token (character) was encountered, and the member byte indicates the error position.
json.exception.parse_error.102 parse error at 14: missing or wrong low surrogate JSON uses the \uxxxx format to describe Unicode characters. Code points above above 0xFFFF are split into two \uxxxx entries ("surrogate pairs"). This error indicates that the surrogate pair is incomplete or contains an invalid code point.
json.exception.parse_error.103 parse error: code points above 0x10FFFF are invalid Unicode supports code points up to 0x10FFFF. Code points above 0x10FFFF are invalid.
json.exception.parse_error.104 parse error: JSON patch must be an array of objects RFC 6902 requires a JSON Patch document to be a JSON document that represents an array of objects.
json.exception.parse_error.105 parse error: operation must have string member 'op' An operation of a JSON Patch document must contain exactly one "op" member, whose value indicates the operation to perform. Its value must be one of "add", "remove", "replace", "move", "copy", or "test"; other values are errors.
json.exception.parse_error.106 parse error: array index '01' must not begin with '0' An array index in a JSON Pointer (RFC 6901) may be 0 or any number without a leading 0.
json.exception.parse_error.107 parse error: JSON pointer must be empty or begin with '/' - was: 'foo' A JSON Pointer must be a Unicode string containing a sequence of zero or more reference tokens, each prefixed by a / character.
json.exception.parse_error.108 parse error: escape character '~' must be followed with '0' or '1' In a JSON Pointer, only ~0 and ~1 are valid escape sequences.
json.exception.parse_error.109 parse error: array index 'one' is not a number A JSON Pointer array index must be a number.
json.exception.parse_error.110 parse error at 1: cannot read 2 bytes from vector When parsing CBOR or MessagePack, the byte vector ends before the complete value has been read.
json.exception.parse_error.112 parse error at 1: error reading CBOR; last byte: 0xF8 Not all types of CBOR or MessagePack are supported. This exception occurs if an unsupported byte was read.
json.exception.parse_error.113 parse error at 2: expected a CBOR string; last byte: 0x98 While parsing a map key, a value that is not a string has been read.
json.exception.parse_error.114 parse error: Unsupported BSON record type 0x0F The parsing of the corresponding BSON record type is not implemented (yet).
-
Note
For an input with n bytes, 1 is the index of the first character and n+1 is the index of the terminating null byte or the end of file. This also holds true when reading a byte vector (CBOR or MessagePack).
-

@liveexample{The following code shows how a parse_error exception can be caught.,parse_error}

-
See also
- exception for the base class of the library exceptions
-
-- invalid_iterator for exceptions indicating errors with iterators
-
-- type_error for exceptions indicating executing a member function with a wrong type
-
-- out_of_range for exceptions indicating access out of the defined range
-
-- other_error for exceptions indicating other library errors
-
Since
version 3.0.0
-

This exception is thrown by the library when a parse error occurs. Parse errors can occur during the deserialization of JSON text, CBOR, MessagePack, as well as when using JSON Patch.

-

Member byte holds the byte index of the last read character in the input file.

-

Exceptions have ids 1xx.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
name / id example message description
json.exception.parse_error.101 parse error at 2: unexpected end of input; expected string literal This error indicates a syntax error while deserializing a JSON text. The error message describes that an unexpected token (character) was encountered, and the member byte indicates the error position.
json.exception.parse_error.102 parse error at 14: missing or wrong low surrogate JSON uses the \uxxxx format to describe Unicode characters. Code points above above 0xFFFF are split into two \uxxxx entries ("surrogate pairs"). This error indicates that the surrogate pair is incomplete or contains an invalid code point.
json.exception.parse_error.103 parse error: code points above 0x10FFFF are invalid Unicode supports code points up to 0x10FFFF. Code points above 0x10FFFF are invalid.
json.exception.parse_error.104 parse error: JSON patch must be an array of objects RFC 6902 requires a JSON Patch document to be a JSON document that represents an array of objects.
json.exception.parse_error.105 parse error: operation must have string member 'op' An operation of a JSON Patch document must contain exactly one "op" member, whose value indicates the operation to perform. Its value must be one of "add", "remove", "replace", "move", "copy", or "test"; other values are errors.
json.exception.parse_error.106 parse error: array index '01' must not begin with '0' An array index in a JSON Pointer (RFC 6901) may be 0 or any number without a leading 0.
json.exception.parse_error.107 parse error: JSON pointer must be empty or begin with '/' - was: 'foo' A JSON Pointer must be a Unicode string containing a sequence of zero or more reference tokens, each prefixed by a / character.
json.exception.parse_error.108 parse error: escape character '~' must be followed with '0' or '1' In a JSON Pointer, only ~0 and ~1 are valid escape sequences.
json.exception.parse_error.109 parse error: array index 'one' is not a number A JSON Pointer array index must be a number.
json.exception.parse_error.110 parse error at 1: cannot read 2 bytes from vector When parsing CBOR or MessagePack, the byte vector ends before the complete value has been read.
json.exception.parse_error.112 parse error at 1: error reading CBOR; last byte: 0xF8 Not all types of CBOR or MessagePack are supported. This exception occurs if an unsupported byte was read.
json.exception.parse_error.113 parse error at 2: expected a CBOR string; last byte: 0x98 While parsing a map key, a value that is not a string has been read.
json.exception.parse_error.114 parse error: Unsupported BSON record type 0x0F The parsing of the corresponding BSON record type is not implemented (yet).
json.exception.parse_error.115 parse error at byte 5: syntax error while parsing UBJSON high-precision number: invalid number text: 1A A UBJSON high-precision number could not be parsed.
-
Note
For an input with n bytes, 1 is the index of the first character and n+1 is the index of the terminating null byte or the end of file. This also holds true when reading a byte vector (CBOR or MessagePack).
-

@liveexample{The following code shows how a parse_error exception can be caught.,parse_error}

-
See also
- exception for the base class of the library exceptions
-
-- invalid_iterator for exceptions indicating errors with iterators
-
-- type_error for exceptions indicating executing a member function with a wrong type
-
-- out_of_range for exceptions indicating access out of the defined range
-
-- other_error for exceptions indicating other library errors
-
Since
version 3.0.0
- -
-
- -

◆ parse_event_t [1/2]

- -
-
- -

parser event types

-

The parser callback distinguishes the following events:

    -
  • object_start: the parser read { and started to process a JSON object
  • -
  • key: the parser read a key of a value in an object
  • -
  • object_end: the parser read } and finished processing a JSON object
  • -
  • array_start: the parser read [ and started to process a JSON array
  • -
  • array_end: the parser read ] and finished processing a JSON array
  • -
  • value: the parser finished reading a JSON value
  • -
-
- -
-Example when certain parse events are triggered
-
See also
parser_callback_t for more information and examples
- -
-
- -

◆ parse_event_t [2/2]

- -
-
- -

parser event types

-

The parser callback distinguishes the following events:

    -
  • object_start: the parser read { and started to process a JSON object
  • -
  • key: the parser read a key of a value in an object
  • -
  • object_end: the parser read } and finished processing a JSON object
  • -
  • array_start: the parser read [ and started to process a JSON array
  • -
  • array_end: the parser read ] and finished processing a JSON array
  • -
  • value: the parser finished reading a JSON value
  • -
-
- -
-Example when certain parse events are triggered
-
See also
parser_callback_t for more information and examples
- -
-
- -

◆ parser_callback_t [1/2]

- -
-
- -

per-element parser callback type

-

With a parser callback function, the result of parsing a JSON text can be influenced. When passed to parse, it is called on certain events (passed as parse_event_t via parameter event) with a set recursion depth depth and context JSON value parsed. The return value of the callback function is a boolean indicating whether the element that emitted the callback shall be kept or not.

-

We distinguish six scenarios (determined by the event type) in which the callback function can be called. The following table describes the values of the parameters depth, event, and parsed.

- - - - - - - - - - - - - - - -
parameter event description parameter depth parameter parsed
parse_event_t::object_start the parser read { and started to process a JSON object depth of the parent of the JSON object a JSON value with type discarded
parse_event_t::key the parser read a key of a value in an object depth of the currently parsed JSON object a JSON string containing the key
parse_event_t::object_end the parser read } and finished processing a JSON object depth of the parent of the JSON object the parsed JSON object
parse_event_t::array_start the parser read [ and started to process a JSON array depth of the parent of the JSON array a JSON value with type discarded
parse_event_t::array_end the parser read ] and finished processing a JSON array depth of the parent of the JSON array the parsed JSON array
parse_event_t::value the parser finished reading a JSON value depth of the value the parsed JSON value
-
- -
-Example when certain parse events are triggered
-

Discarding a value (i.e., returning false) has different effects depending on the context in which function was called:

-
    -
  • Discarded values in structured types are skipped. That is, the parser will behave as if the discarded value was never read.
  • -
  • In case a value outside a structured type is skipped, it is replaced with null. This case happens if the top-level element is skipped.
  • -
-
Parameters
- - - - -
[in]depththe depth of the recursion during parsing
[in]eventan event of type parse_event_t indicating the context in the callback function has been called
[in,out]parsedthe current intermediate parse result; note that writing to this value has no effect for parse_event_t::key events
-
-
-
Returns
Whether the JSON value which called the function during parsing should be kept (true) or not (false). In the latter case, it is either skipped completely or replaced by an empty discarded object.
-
See also
parse for examples
-
Since
version 1.0.0
- -
-
- -

◆ parser_callback_t [2/2]

- -
-
- -

per-element parser callback type

-

With a parser callback function, the result of parsing a JSON text can be influenced. When passed to parse, it is called on certain events (passed as parse_event_t via parameter event) with a set recursion depth depth and context JSON value parsed. The return value of the callback function is a boolean indicating whether the element that emitted the callback shall be kept or not.

-

We distinguish six scenarios (determined by the event type) in which the callback function can be called. The following table describes the values of the parameters depth, event, and parsed.

- - - - - - - - - - - - - - - -
parameter event description parameter depth parameter parsed
parse_event_t::object_start the parser read { and started to process a JSON object depth of the parent of the JSON object a JSON value with type discarded
parse_event_t::key the parser read a key of a value in an object depth of the currently parsed JSON object a JSON string containing the key
parse_event_t::object_end the parser read } and finished processing a JSON object depth of the parent of the JSON object the parsed JSON object
parse_event_t::array_start the parser read [ and started to process a JSON array depth of the parent of the JSON array a JSON value with type discarded
parse_event_t::array_end the parser read ] and finished processing a JSON array depth of the parent of the JSON array the parsed JSON array
parse_event_t::value the parser finished reading a JSON value depth of the value the parsed JSON value
-
- -
-Example when certain parse events are triggered
-

Discarding a value (i.e., returning false) has different effects depending on the context in which function was called:

-
    -
  • Discarded values in structured types are skipped. That is, the parser will behave as if the discarded value was never read.
  • -
  • In case a value outside a structured type is skipped, it is replaced with null. This case happens if the top-level element is skipped.
  • -
-
Parameters
- - - - -
[in]depththe depth of the recursion during parsing
[in]eventan event of type parse_event_t indicating the context in the callback function has been called
[in,out]parsedthe current intermediate parse result; note that writing to this value has no effect for parse_event_t::key events
-
-
-
Returns
Whether the JSON value which called the function during parsing should be kept (true) or not (false). In the latter case, it is either skipped completely or replaced by an empty discarded object.
-
See also
parse for examples
-
Since
version 1.0.0
- -
-
- -

◆ pointer [1/2]

- -
-
- - - - -
using nlohmann::basic_json::pointer = typename std::allocator_traits<allocator_type>::pointer
-
- -

the type of an element pointer

- -
-
- -

◆ pointer [2/2]

- -
-
- - - - -
using nlohmann::basic_json::pointer = typename std::allocator_traits<allocator_type>::pointer
-
- -

the type of an element pointer

- -
-
- -

◆ reference [1/2]

- -
-
- -

the type of an element reference

- -
-
- -

◆ reference [2/2]

- -
-
- -

the type of an element reference

- -
-
- -

◆ reverse_iterator [1/2]

- -
-
- -

a reverse iterator for a basic_json container

- -
-
- -

◆ reverse_iterator [2/2]

- -
-
- -

a reverse iterator for a basic_json container

- -
-
- -

◆ size_type [1/2]

- -
-
- - - - -
using nlohmann::basic_json::size_type = std::size_t
-
- -

a type to represent container sizes

- -
-
- -

◆ size_type [2/2]

- -
-
- - - - -
using nlohmann::basic_json::size_type = std::size_t
-
- -

a type to represent container sizes

- -
-
- -

◆ string_t [1/2]

- -
-
- - - - -
using nlohmann::basic_json::string_t = StringType
-
- -

a type for a string

-

RFC 7159 describes JSON strings as follows:

-

A string is a sequence of zero or more Unicode characters.

-
-

To store objects in C++, a type is defined by the template parameter described below. Unicode values are split by the JSON class into byte-sized characters during deserialization.

-
Template Parameters
- - -
StringTypethe container to store strings (e.g., std::string). Note this container is used for keys/names in objects, see object_t.
-
-
-

-Default type

-

With the default values for StringType (std::string), the default value for string_t is:

-
std::string
-

-Encoding

-

Strings are stored in UTF-8 encoding. Therefore, functions like std::string::size() or std::string::length() return the number of bytes in the string rather than the number of characters or glyphs.

-

-String comparison

-

RFC 7159 states:

-

Software implementations are typically required to test names of object members for equality. Implementations that transform the textual representation into sequences of Unicode code units and then perform the comparison numerically, code unit by code unit, are interoperable in the sense that implementations will agree in all cases on equality or inequality of two strings. For example, implementations that compare strings with escaped characters unconverted may incorrectly find that "a\\b" and "a\u005Cb" are not equal.

-
-

This implementation is interoperable as it does compare strings code unit by code unit.

-

-Storage

-

String values are stored as pointers in a basic_json type. That is, for any access to string values, a pointer of type string_t* must be dereferenced.

-
Since
version 1.0.0
- -
-
- -

◆ string_t [2/2]

- -
-
- - - - -
using nlohmann::basic_json::string_t = StringType
-
- -

a type for a string

-

RFC 7159 describes JSON strings as follows:

-

A string is a sequence of zero or more Unicode characters.

-
-

To store objects in C++, a type is defined by the template parameter described below. Unicode values are split by the JSON class into byte-sized characters during deserialization.

-
Template Parameters
- - -
StringTypethe container to store strings (e.g., std::string). Note this container is used for keys/names in objects, see object_t.
-
-
-

-Default type

-

With the default values for StringType (std::string), the default value for string_t is:

-
std::string
-

-Encoding

-

Strings are stored in UTF-8 encoding. Therefore, functions like std::string::size() or std::string::length() return the number of bytes in the string rather than the number of characters or glyphs.

-

-String comparison

-

RFC 7159 states:

-

Software implementations are typically required to test names of object members for equality. Implementations that transform the textual representation into sequences of Unicode code units and then perform the comparison numerically, code unit by code unit, are interoperable in the sense that implementations will agree in all cases on equality or inequality of two strings. For example, implementations that compare strings with escaped characters unconverted may incorrectly find that "a\\b" and "a\u005Cb" are not equal.

-
-

This implementation is interoperable as it does compare strings code unit by code unit.

-

-Storage

-

String values are stored as pointers in a basic_json type. That is, for any access to string values, a pointer of type string_t* must be dereferenced.

-
Since
version 1.0.0
- -
-
- -

◆ type_error [1/2]

- -
-
- -

exception indicating executing a member function with a wrong type

-

This exception is thrown in case of a type error; that is, a library function is executed on a JSON value whose type does not match the expected semantics.

-

Exceptions have ids 3xx.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
name / id example message description
json.exception.type_error.301 cannot create object from initializer list To create an object from an initializer list, the initializer list must consist only of a list of pairs whose first element is a string. When this constraint is violated, an array is created instead.
json.exception.type_error.302 type must be object, but is array During implicit or explicit value conversion, the JSON type must be compatible to the target type. For instance, a JSON string can only be converted into string types, but not into numbers or boolean types.
json.exception.type_error.303 incompatible ReferenceType for get_ref, actual type is object To retrieve a reference to a value stored in a basic_json object with get_ref, the type of the reference must match the value type. For instance, for a JSON array, the ReferenceType must be array_t &.
json.exception.type_error.304 cannot use at() with string The at() member functions can only be executed for certain JSON types.
json.exception.type_error.305 cannot use operator[] with string The operator[] member functions can only be executed for certain JSON types.
json.exception.type_error.306 cannot use value() with string The value() member functions can only be executed for certain JSON types.
json.exception.type_error.307 cannot use erase() with string The erase() member functions can only be executed for certain JSON types.
json.exception.type_error.308 cannot use push_back() with string The push_back() and operator+= member functions can only be executed for certain JSON types.
json.exception.type_error.309 cannot use insert() with The insert() member functions can only be executed for certain JSON types.
json.exception.type_error.310 cannot use swap() with number The swap() member functions can only be executed for certain JSON types.
json.exception.type_error.311 cannot use emplace_back() with string The emplace_back() member function can only be executed for certain JSON types.
json.exception.type_error.312 cannot use update() with string The update() member functions can only be executed for certain JSON types.
json.exception.type_error.313 invalid value to unflatten The unflatten function converts an object whose keys are JSON Pointers back into an arbitrary nested JSON value. The JSON Pointers must not overlap, because then the resulting value would not be well defined.
json.exception.type_error.314 only objects can be unflattened The unflatten function only works for an object whose keys are JSON Pointers.
json.exception.type_error.315 values in object must be primitive The unflatten function only works for an object whose keys are JSON Pointers and whose values are primitive.
json.exception.type_error.316 invalid UTF-8 byte at index 10: 0x7E The dump function only works with UTF-8 encoded strings; that is, if you assign a std::string to a JSON value, make sure it is UTF-8 encoded.
json.exception.type_error.317 JSON value cannot be serialized to requested format The dynamic type of the object cannot be represented in the requested serialization format (e.g. a raw true or null JSON object cannot be serialized to BSON)
-

@liveexample{The following code shows how a type_error exception can be caught.,type_error}

-
See also
- exception for the base class of the library exceptions
-
-- parse_error for exceptions indicating a parse error
-
-- invalid_iterator for exceptions indicating errors with iterators
-
-- out_of_range for exceptions indicating access out of the defined range
-
-- other_error for exceptions indicating other library errors
-
Since
version 3.0.0
- -
-
- -

◆ type_error [2/2]

- -
-
- -

exception indicating executing a member function with a wrong type

-

This exception is thrown in case of a type error; that is, a library function is executed on a JSON value whose type does not match the expected semantics.

-

Exceptions have ids 3xx.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
name / id example message description
json.exception.type_error.301 cannot create object from initializer list To create an object from an initializer list, the initializer list must consist only of a list of pairs whose first element is a string. When this constraint is violated, an array is created instead.
json.exception.type_error.302 type must be object, but is array During implicit or explicit value conversion, the JSON type must be compatible to the target type. For instance, a JSON string can only be converted into string types, but not into numbers or boolean types.
json.exception.type_error.303 incompatible ReferenceType for get_ref, actual type is object To retrieve a reference to a value stored in a basic_json object with get_ref, the type of the reference must match the value type. For instance, for a JSON array, the ReferenceType must be array_t &.
json.exception.type_error.304 cannot use at() with string The at() member functions can only be executed for certain JSON types.
json.exception.type_error.305 cannot use operator[] with string The operator[] member functions can only be executed for certain JSON types.
json.exception.type_error.306 cannot use value() with string The value() member functions can only be executed for certain JSON types.
json.exception.type_error.307 cannot use erase() with string The erase() member functions can only be executed for certain JSON types.
json.exception.type_error.308 cannot use push_back() with string The push_back() and operator+= member functions can only be executed for certain JSON types.
json.exception.type_error.309 cannot use insert() with The insert() member functions can only be executed for certain JSON types.
json.exception.type_error.310 cannot use swap() with number The swap() member functions can only be executed for certain JSON types.
json.exception.type_error.311 cannot use emplace_back() with string The emplace_back() member function can only be executed for certain JSON types.
json.exception.type_error.312 cannot use update() with string The update() member functions can only be executed for certain JSON types.
json.exception.type_error.313 invalid value to unflatten The unflatten function converts an object whose keys are JSON Pointers back into an arbitrary nested JSON value. The JSON Pointers must not overlap, because then the resulting value would not be well defined.
json.exception.type_error.314 only objects can be unflattened The unflatten function only works for an object whose keys are JSON Pointers.
json.exception.type_error.315 values in object must be primitive The unflatten function only works for an object whose keys are JSON Pointers and whose values are primitive.
json.exception.type_error.316 invalid UTF-8 byte at index 10: 0x7E The dump function only works with UTF-8 encoded strings; that is, if you assign a std::string to a JSON value, make sure it is UTF-8 encoded.
json.exception.type_error.317 JSON value cannot be serialized to requested format The dynamic type of the object cannot be represented in the requested serialization format (e.g. a raw true or null JSON object cannot be serialized to BSON)
-

@liveexample{The following code shows how a type_error exception can be caught.,type_error}

-
See also
- exception for the base class of the library exceptions
-
-- parse_error for exceptions indicating a parse error
-
-- invalid_iterator for exceptions indicating errors with iterators
-
-- out_of_range for exceptions indicating access out of the defined range
-
-- other_error for exceptions indicating other library errors
-
Since
version 3.0.0
- -
-
- -

◆ value_t [1/2]

- -
-
- -
-
- -

◆ value_t [2/2]

- -
-
- -
-
- -

◆ value_type [1/2]

- -
-
- -

the type of elements in a basic_json container

- -
-
- -

◆ value_type [2/2]

- -
-
- -

the type of elements in a basic_json container

- -
-
-

Constructor & Destructor Documentation

- -

◆ basic_json() [1/19]

- -
-
- - - - - -
- - - - - - - - -
nlohmann::basic_json::basic_json (const value_t v)
-
-inline
-
- -

create an empty value with a given type

-

Create an empty JSON value with a given type. The value will be default initialized with an empty value which depends on the type:

- - - - - - - - - - - - - - - -
Value type initial value
null null
boolean false
string ""
number 0
object {}
array []
-
Parameters
- - -
[in]vthe type of the value to create
-
-
-

@complexity Constant.

-

@exceptionsafety Strong guarantee: if an exception is thrown, there are no changes to any JSON value.

-

@liveexample{The following code shows the constructor for different value_t values,basic_json__value_t}

-
See also
clear() – restores the postcondition of this constructor
-
Since
version 1.0.0
- -
-
- -

◆ basic_json() [2/19]

- -
-
- - - - - -
- - - - - - - - -
nlohmann::basic_json::basic_json (std::nullptr_t  = nullptr)
-
-inlinenoexcept
-
- -

create a null object

-

Create a null JSON value. It either takes a null pointer as parameter (explicitly creating null) or no parameter (implicitly creating null). The passed null pointer itself is not read – it is only used to choose the right constructor.

-

@complexity Constant.

-

@exceptionsafety No-throw guarantee: this constructor never throws exceptions.

-

@liveexample{The following code shows the constructor with and without a null pointer parameter.,basic_json__nullptr_t}

-
Since
version 1.0.0
- -
-
- -

◆ basic_json() [3/19]

- -
-
-
-template<typename CompatibleType , typename U = detail::uncvref_t<CompatibleType>, detail::enable_if_t< not detail::is_basic_json< U >::value and detail::is_compatible_type< basic_json_t, U >::value, int > = 0>
- - - - - -
- - - - - - - - -
nlohmann::basic_json::basic_json (CompatibleType && val)
-
-inlinenoexcept
-
- -

create a JSON value

-

This is a "catch all" constructor for all compatible JSON types; that is, types for which a to_json() method exists. The constructor forwards the parameter val to that method (to json_serializer<U>::to_json method with U = uncvref_t<CompatibleType>, to be exact).

-

Template type CompatibleType includes, but is not limited to, the following types:

    -
  • arrays: array_t and all kinds of compatible containers such as std::vector, std::deque, std::list, std::forward_list, std::array, std::valarray, std::set, std::unordered_set, std::multiset, and std::unordered_multiset with a value_type from which a basic_json value can be constructed.
  • -
  • objects: object_t and all kinds of compatible associative containers such as std::map, std::unordered_map, std::multimap, and std::unordered_multimap with a key_type compatible to string_t and a value_type from which a basic_json value can be constructed.
  • -
  • strings: string_t, string literals, and all compatible string containers can be used.
  • -
  • numbers: number_integer_t, number_unsigned_t, number_float_t, and all convertible number types such as int, size_t, int64_t, float or double can be used.
  • -
  • boolean: boolean_t / bool can be used.
  • -
-

See the examples below.

-
Template Parameters
- - - -
CompatibleTypea type such that:
    -
  • CompatibleType is not derived from std::istream,
  • -
  • CompatibleType is not basic_json (to avoid hijacking copy/move constructors),
  • -
  • CompatibleType is not a different basic_json type (i.e. with different template arguments)
  • -
  • CompatibleType is not a basic_json nested type (e.g., json_pointer, iterator, etc ...)
  • -
  • json_serializer has a to_json(basic_json_t&, CompatibleType&&) method
  • -
-
U= uncvref_t<CompatibleType>
-
-
-
Parameters
- - -
[in]valthe value to be forwarded to the respective constructor
-
-
-

@complexity Usually linear in the size of the passed val, also depending on the implementation of the called to_json() method.

-

@exceptionsafety Depends on the called constructor. For types directly supported by the library (i.e., all types for which no to_json() function was provided), strong guarantee holds: if an exception is thrown, there are no changes to any JSON value.

-

@liveexample{The following code shows the constructor with several compatible types.,basic_json__CompatibleType}

-
Since
version 2.1.0
- -
-
- -

◆ basic_json() [4/19]

- -
-
-
-template<typename BasicJsonType , detail::enable_if_t< detail::is_basic_json< BasicJsonType >::value and not std::is_same< basic_json, BasicJsonType >::value, int > = 0>
- - - - - -
- - - - - - - - -
nlohmann::basic_json::basic_json (const BasicJsonType & val)
-
-inline
-
- -

create a JSON value from an existing one

-

This is a constructor for existing basic_json types. It does not hijack copy/move constructors, since the parameter has different template arguments than the current ones.

-

The constructor tries to convert the internal m_value of the parameter.

-
Template Parameters
- - -
BasicJsonTypea type such that:
    -
  • BasicJsonType is a basic_json type.
  • -
  • BasicJsonType has different template arguments than basic_json_t.
  • -
-
-
-
-
Parameters
- - -
[in]valthe basic_json value to be converted.
-
-
-

@complexity Usually linear in the size of the passed val, also depending on the implementation of the called to_json() method.

-

@exceptionsafety Depends on the called constructor. For types directly supported by the library (i.e., all types for which no to_json() function was provided), strong guarantee holds: if an exception is thrown, there are no changes to any JSON value.

-
Since
version 3.2.0
- -
-
- -

◆ basic_json() [5/19]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
nlohmann::basic_json::basic_json (initializer_list_t init,
bool type_deduction = true,
value_t manual_type = value_t::array 
)
-
-inline
-
- -

create a container (array or object) from an initializer list

-

Creates a JSON value of type array or object from the passed initializer list init. In case type_deduction is true (default), the type of the JSON value to be created is deducted from the initializer list init according to the following rules:

-
    -
  1. If the list is empty, an empty JSON object value {} is created.
  2. -
  3. If the list consists of pairs whose first element is a string, a JSON object value is created where the first elements of the pairs are treated as keys and the second elements are as values.
  4. -
  5. In all other cases, an array is created.
  6. -
-

The rules aim to create the best fit between a C++ initializer list and JSON values. The rationale is as follows:

-
    -
  1. The empty initializer list is written as {} which is exactly an empty JSON object.
  2. -
  3. C++ has no way of describing mapped types other than to list a list of pairs. As JSON requires that keys must be of type string, rule 2 is the weakest constraint one can pose on initializer lists to interpret them as an object.
  4. -
  5. In all other cases, the initializer list could not be interpreted as JSON object type, so interpreting it as JSON array type is safe.
  6. -
-

With the rules described above, the following JSON values cannot be expressed by an initializer list:

- -
Note
When used without parentheses around an empty initializer list, basic_json() is called instead of this function, yielding the JSON null value.
-
Parameters
- - - - -
[in]initinitializer list with JSON values
[in]type_deductioninternal parameter; when set to true, the type of the JSON value is deducted from the initializer list init; when set to false, the type provided via manual_type is forced. This mode is used by the functions array(initializer_list_t) and object(initializer_list_t).
[in]manual_typeinternal parameter; when type_deduction is set to false, the created JSON value will use the provided type (only value_t::array and value_t::object are valid); when type_deduction is set to true, this parameter has no effect
-
-
-
Exceptions
- - -
type_error.301if type_deduction is false, manual_type is value_t::object, but init contains an element which is not a pair whose first element is a string. In this case, the constructor could not create an object. If type_deduction would have be true, an array would have been created. See object(initializer_list_t) for an example.
-
-
-

@complexity Linear in the size of the initializer list init.

-

@exceptionsafety Strong guarantee: if an exception is thrown, there are no changes to any JSON value.

-

@liveexample{The example below shows how JSON values are created from initializer lists.,basic_json__list_init_t}

-
See also
array(initializer_list_t) – create a JSON array value from an initializer list
-
-object(initializer_list_t) – create a JSON object value from an initializer list
-
Since
version 1.0.0
- -
-
- -

◆ basic_json() [6/19]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
nlohmann::basic_json::basic_json (size_type cnt,
const basic_jsonval 
)
-
-inline
-
- -

construct an array with count copies of given value

-

Constructs a JSON array value by creating cnt copies of a passed value. In case cnt is 0, an empty array is created.

-
Parameters
- - - -
[in]cntthe number of JSON copies of val to create
[in]valthe JSON value to copy
-
-
-
Postcondition
std::distance(begin(),end()) == cnt holds.
-

@complexity Linear in cnt.

-

@exceptionsafety Strong guarantee: if an exception is thrown, there are no changes to any JSON value.

-

@liveexample{The following code shows examples for the basic_json(size_type\, const basic_json&) constructor.,basic_json__size_type_basic_json}

-
Since
version 1.0.0
- -
-
- -

◆ basic_json() [7/19]

- -
-
-
-template<class InputIT , typename std::enable_if< std::is_same< InputIT, typename basic_json_t::iterator >::value or std::is_same< InputIT, typename basic_json_t::const_iterator >::value, int >::type = 0>
- - - - - -
- - - - - - - - - - - - - - - - - - -
nlohmann::basic_json::basic_json (InputIT first,
InputIT last 
)
-
-inline
-
- -

construct a JSON container given an iterator range

-

Constructs the JSON value with the contents of the range [first, last). The semantics depends on the different types a JSON value can have:

    -
  • In case of a null type, invalid_iterator.206 is thrown.
  • -
  • In case of other primitive types (number, boolean, or string), first must be begin() and last must be end(). In this case, the value is copied. Otherwise, invalid_iterator.204 is thrown.
  • -
  • In case of structured types (array, object), the constructor behaves as similar versions for std::vector or std::map; that is, a JSON array or object is constructed from the values in the range.
  • -
-
Template Parameters
- - -
InputITan input iterator type (iterator or const_iterator)
-
-
-
Parameters
- - - -
[in]firstbegin of the range to copy from (included)
[in]lastend of the range to copy from (excluded)
-
-
-
Precondition
Iterators first and last must be initialized. This precondition is enforced with an assertion (see warning). If assertions are switched off, a violation of this precondition yields undefined behavior.
-
-Range [first, last) is valid. Usually, this precondition cannot be checked efficiently. Only certain edge cases are detected; see the description of the exceptions below. A violation of this precondition yields undefined behavior.
-
Warning
A precondition is enforced with a runtime assertion that will result in calling std::abort if this precondition is not met. Assertions can be disabled by defining NDEBUG at compile time. See https://en.cppreference.com/w/cpp/error/assert for more information.
-
Exceptions
- - - - -
invalid_iterator.201if iterators first and last are not compatible (i.e., do not belong to the same JSON value). In this case, the range [first, last) is undefined.
invalid_iterator.204if iterators first and last belong to a primitive type (number, boolean, or string), but first does not point to the first element any more. In this case, the range [first, last) is undefined. See example code below.
invalid_iterator.206if iterators first and last belong to a null value. In this case, the range [first, last) is undefined.
-
-
-

@complexity Linear in distance between first and last.

-

@exceptionsafety Strong guarantee: if an exception is thrown, there are no changes to any JSON value.

-

@liveexample{The example below shows several ways to create JSON values by specifying a subrange with iterators.,basic_json__InputIt_InputIt}

-
Since
version 1.0.0
- -
-
- -

◆ basic_json() [8/19]

- -
-
- - - - - -
- - - - - - - - -
nlohmann::basic_json::basic_json (const basic_jsonother)
-
-inline
-
- -

copy constructor

-

Creates a copy of a given JSON value.

-
Parameters
- - -
[in]otherthe JSON value to copy
-
-
-
Postcondition
*this == other
-

@complexity Linear in the size of other.

-

@exceptionsafety Strong guarantee: if an exception is thrown, there are no changes to any JSON value.

-

@requirement This function helps basic_json satisfying the Container requirements:

    -
  • The complexity is linear.
  • -
  • As postcondition, it holds: other == basic_json(other).
  • -
-

@liveexample{The following code shows an example for the copy constructor.,basic_json__basic_json}

-
Since
version 1.0.0
- -
-
- -

◆ basic_json() [9/19]

- -
-
- - - - - -
- - - - - - - - -
nlohmann::basic_json::basic_json (basic_json && other)
-
-inlinenoexcept
-
- -

move constructor

-

Move constructor. Constructs a JSON value with the contents of the given value other using move semantics. It "steals" the resources from other and leaves it as JSON null value.

-
Parameters
- - -
[in,out]othervalue to move to this object
-
-
-
Postcondition
*this has the same value as other before the call.
-
-other is a JSON null value.
-

@complexity Constant.

-

@exceptionsafety No-throw guarantee: this constructor never throws exceptions.

-

@requirement This function helps basic_json satisfying the MoveConstructible requirements.

-

@liveexample{The code below shows the move constructor explicitly called via std::move.,basic_json__moveconstructor}

-
Since
version 1.0.0
- -
-
- -

◆ ~basic_json() [1/2]

- -
-
- - - - - -
- - - - - - - -
nlohmann::basic_json::~basic_json ()
-
-inlinenoexcept
-
- -

destructor

-

Destroys the JSON value and frees all allocated memory.

-

@complexity Linear.

-

@requirement This function helps basic_json satisfying the Container requirements:

    -
  • The complexity is linear.
  • -
  • All stored elements are destroyed and all memory is freed.
  • -
-
Since
version 1.0.0
- -
-
- -

◆ basic_json() [10/19]

- -
-
- - - - - -
- - - - - - - - -
nlohmann::basic_json::basic_json (const value_t v)
-
-inline
-
- -

create an empty value with a given type

-

Create an empty JSON value with a given type. The value will be default initialized with an empty value which depends on the type:

- - - - - - - - - - - - - - - - - -
Value type initial value
null null
boolean false
string ""
number 0
object {}
array []
binary empty array
-
Parameters
- - -
[in]vthe type of the value to create
-
-
-

@complexity Constant.

-

@exceptionsafety Strong guarantee: if an exception is thrown, there are no changes to any JSON value.

-

@liveexample{The following code shows the constructor for different value_t values,basic_json__value_t}

-
See also
clear() – restores the postcondition of this constructor
-
Since
version 1.0.0
- -
-
- -

◆ basic_json() [11/19]

- -
-
- - - - - -
- - - - - - - - -
nlohmann::basic_json::basic_json (std::nullptr_t  = nullptr)
-
-inlinenoexcept
-
- -

create a null object

-

Create a null JSON value. It either takes a null pointer as parameter (explicitly creating null) or no parameter (implicitly creating null). The passed null pointer itself is not read – it is only used to choose the right constructor.

-

@complexity Constant.

-

@exceptionsafety No-throw guarantee: this constructor never throws exceptions.

-

@liveexample{The following code shows the constructor with and without a null pointer parameter.,basic_json__nullptr_t}

-
Since
version 1.0.0
- -
-
- -

◆ basic_json() [12/19]

- -
-
-
-template<typename CompatibleType , typename U = detail::uncvref_t<CompatibleType>, detail::enable_if_t< !detail::is_basic_json< U >::value &&detail::is_compatible_type< basic_json_t, U >::value, int > = 0>
- - - - - -
- - - - - - - - -
nlohmann::basic_json::basic_json (CompatibleType && val)
-
-inlinenoexcept
-
- -

create a JSON value

-

This is a "catch all" constructor for all compatible JSON types; that is, types for which a to_json() method exists. The constructor forwards the parameter val to that method (to json_serializer<U>::to_json method with U = uncvref_t<CompatibleType>, to be exact).

-

Template type CompatibleType includes, but is not limited to, the following types:

    -
  • arrays: array_t and all kinds of compatible containers such as std::vector, std::deque, std::list, std::forward_list, std::array, std::valarray, std::set, std::unordered_set, std::multiset, and std::unordered_multiset with a value_type from which a basic_json value can be constructed.
  • -
  • objects: object_t and all kinds of compatible associative containers such as std::map, std::unordered_map, std::multimap, and std::unordered_multimap with a key_type compatible to string_t and a value_type from which a basic_json value can be constructed.
  • -
  • strings: string_t, string literals, and all compatible string containers can be used.
  • -
  • numbers: number_integer_t, number_unsigned_t, number_float_t, and all convertible number types such as int, size_t, int64_t, float or double can be used.
  • -
  • boolean: boolean_t / bool can be used.
  • -
  • binary: binary_t / std::vector<uint8_t> may be used, unfortunately because string literals cannot be distinguished from binary character arrays by the C++ type system, all types compatible with const char* will be directed to the string constructor instead. This is both for backwards compatibility, and due to the fact that a binary type is not a standard JSON type.
  • -
-

See the examples below.

-
Template Parameters
- - - -
CompatibleTypea type such that:
    -
  • CompatibleType is not derived from std::istream,
  • -
  • CompatibleType is not basic_json (to avoid hijacking copy/move constructors),
  • -
  • CompatibleType is not a different basic_json type (i.e. with different template arguments)
  • -
  • CompatibleType is not a basic_json nested type (e.g., json_pointer, iterator, etc ...)
  • -
  • json_serializer has a to_json(basic_json_t&, CompatibleType&&) method
  • -
-
U= uncvref_t<CompatibleType>
-
-
-
Parameters
- - -
[in]valthe value to be forwarded to the respective constructor
-
-
-

@complexity Usually linear in the size of the passed val, also depending on the implementation of the called to_json() method.

-

@exceptionsafety Depends on the called constructor. For types directly supported by the library (i.e., all types for which no to_json() function was provided), strong guarantee holds: if an exception is thrown, there are no changes to any JSON value.

-

@liveexample{The following code shows the constructor with several compatible types.,basic_json__CompatibleType}

-
Since
version 2.1.0
- -
-
- -

◆ basic_json() [13/19]

- -
-
-
-template<typename BasicJsonType , detail::enable_if_t< detail::is_basic_json< BasicJsonType >::value &&!std::is_same< basic_json, BasicJsonType >::value, int > = 0>
- - - - - -
- - - - - - - - -
nlohmann::basic_json::basic_json (const BasicJsonType & val)
-
-inline
-
- -

create a JSON value from an existing one

-

This is a constructor for existing basic_json types. It does not hijack copy/move constructors, since the parameter has different template arguments than the current ones.

-

The constructor tries to convert the internal m_value of the parameter.

-
Template Parameters
- - -
BasicJsonTypea type such that:
    -
  • BasicJsonType is a basic_json type.
  • -
  • BasicJsonType has different template arguments than basic_json_t.
  • -
-
-
-
-
Parameters
- - -
[in]valthe basic_json value to be converted.
-
-
-

@complexity Usually linear in the size of the passed val, also depending on the implementation of the called to_json() method.

-

@exceptionsafety Depends on the called constructor. For types directly supported by the library (i.e., all types for which no to_json() function was provided), strong guarantee holds: if an exception is thrown, there are no changes to any JSON value.

-
Since
version 3.2.0
- -
-
- -

◆ basic_json() [14/19]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
nlohmann::basic_json::basic_json (initializer_list_t init,
bool type_deduction = true,
value_t manual_type = value_t::array 
)
-
-inline
-
- -

create a container (array or object) from an initializer list

-

Creates a JSON value of type array or object from the passed initializer list init. In case type_deduction is true (default), the type of the JSON value to be created is deducted from the initializer list init according to the following rules:

-
    -
  1. If the list is empty, an empty JSON object value {} is created.
  2. -
  3. If the list consists of pairs whose first element is a string, a JSON object value is created where the first elements of the pairs are treated as keys and the second elements are as values.
  4. -
  5. In all other cases, an array is created.
  6. -
-

The rules aim to create the best fit between a C++ initializer list and JSON values. The rationale is as follows:

-
    -
  1. The empty initializer list is written as {} which is exactly an empty JSON object.
  2. -
  3. C++ has no way of describing mapped types other than to list a list of pairs. As JSON requires that keys must be of type string, rule 2 is the weakest constraint one can pose on initializer lists to interpret them as an object.
  4. -
  5. In all other cases, the initializer list could not be interpreted as JSON object type, so interpreting it as JSON array type is safe.
  6. -
-

With the rules described above, the following JSON values cannot be expressed by an initializer list:

- -
Note
When used without parentheses around an empty initializer list, basic_json() is called instead of this function, yielding the JSON null value.
-
Parameters
- - - - -
[in]initinitializer list with JSON values
[in]type_deductioninternal parameter; when set to true, the type of the JSON value is deducted from the initializer list init; when set to false, the type provided via manual_type is forced. This mode is used by the functions array(initializer_list_t) and object(initializer_list_t).
[in]manual_typeinternal parameter; when type_deduction is set to false, the created JSON value will use the provided type (only value_t::array and value_t::object are valid); when type_deduction is set to true, this parameter has no effect
-
-
-
Exceptions
- - -
type_error.301if type_deduction is false, manual_type is value_t::object, but init contains an element which is not a pair whose first element is a string. In this case, the constructor could not create an object. If type_deduction would have be true, an array would have been created. See object(initializer_list_t) for an example.
-
-
-

@complexity Linear in the size of the initializer list init.

-

@exceptionsafety Strong guarantee: if an exception is thrown, there are no changes to any JSON value.

-

@liveexample{The example below shows how JSON values are created from initializer lists.,basic_json__list_init_t}

-
See also
array(initializer_list_t) – create a JSON array value from an initializer list
-
-object(initializer_list_t) – create a JSON object value from an initializer list
-
Since
version 1.0.0
- -
-
- -

◆ basic_json() [15/19]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
nlohmann::basic_json::basic_json (size_type cnt,
const basic_jsonval 
)
-
-inline
-
- -

construct an array with count copies of given value

-

Constructs a JSON array value by creating cnt copies of a passed value. In case cnt is 0, an empty array is created.

-
Parameters
- - - -
[in]cntthe number of JSON copies of val to create
[in]valthe JSON value to copy
-
-
-
Postcondition
std::distance(begin(),end()) == cnt holds.
-

@complexity Linear in cnt.

-

@exceptionsafety Strong guarantee: if an exception is thrown, there are no changes to any JSON value.

-

@liveexample{The following code shows examples for the basic_json(size_type\, const basic_json&) constructor.,basic_json__size_type_basic_json}

-
Since
version 1.0.0
- -
-
- -

◆ basic_json() [16/19]

- -
-
-
-template<class InputIT , typename std::enable_if< std::is_same< InputIT, typename basic_json_t::iterator >::value||std::is_same< InputIT, typename basic_json_t::const_iterator >::value, int >::type = 0>
- - - - - -
- - - - - - - - - - - - - - - - - - -
nlohmann::basic_json::basic_json (InputIT first,
InputIT last 
)
-
-inline
-
- -

construct a JSON container given an iterator range

-

Constructs the JSON value with the contents of the range [first, last). The semantics depends on the different types a JSON value can have:

    -
  • In case of a null type, invalid_iterator.206 is thrown.
  • -
  • In case of other primitive types (number, boolean, or string), first must be begin() and last must be end(). In this case, the value is copied. Otherwise, invalid_iterator.204 is thrown.
  • -
  • In case of structured types (array, object), the constructor behaves as similar versions for std::vector or std::map; that is, a JSON array or object is constructed from the values in the range.
  • -
-
Template Parameters
- - -
InputITan input iterator type (iterator or const_iterator)
-
-
-
Parameters
- - - -
[in]firstbegin of the range to copy from (included)
[in]lastend of the range to copy from (excluded)
-
-
-
Precondition
Iterators first and last must be initialized. This precondition is enforced with an assertion (see warning). If assertions are switched off, a violation of this precondition yields undefined behavior.
-
-Range [first, last) is valid. Usually, this precondition cannot be checked efficiently. Only certain edge cases are detected; see the description of the exceptions below. A violation of this precondition yields undefined behavior.
-
Warning
A precondition is enforced with a runtime assertion that will result in calling std::abort if this precondition is not met. Assertions can be disabled by defining NDEBUG at compile time. See https://en.cppreference.com/w/cpp/error/assert for more information.
-
Exceptions
- - - - -
invalid_iterator.201if iterators first and last are not compatible (i.e., do not belong to the same JSON value). In this case, the range [first, last) is undefined.
invalid_iterator.204if iterators first and last belong to a primitive type (number, boolean, or string), but first does not point to the first element any more. In this case, the range [first, last) is undefined. See example code below.
invalid_iterator.206if iterators first and last belong to a null value. In this case, the range [first, last) is undefined.
-
-
-

@complexity Linear in distance between first and last.

-

@exceptionsafety Strong guarantee: if an exception is thrown, there are no changes to any JSON value.

-

@liveexample{The example below shows several ways to create JSON values by specifying a subrange with iterators.,basic_json__InputIt_InputIt}

-
Since
version 1.0.0
- -
-
- -

◆ basic_json() [17/19]

- -
-
-
-template<typename JsonRef , detail::enable_if_t< detail::conjunction< detail::is_json_ref< JsonRef >, std::is_same< typename JsonRef::value_type, basic_json >>::value, int > = 0>
- - - - - -
- - - - - - - - -
nlohmann::basic_json::basic_json (const JsonRef & ref)
-
-inline
-
- -
-
- -

◆ basic_json() [18/19]

- -
-
- - - - - -
- - - - - - - - -
nlohmann::basic_json::basic_json (const basic_jsonother)
-
-inline
-
- -

copy constructor

-

Creates a copy of a given JSON value.

-
Parameters
- - -
[in]otherthe JSON value to copy
-
-
-
Postcondition
*this == other
-

@complexity Linear in the size of other.

-

@exceptionsafety Strong guarantee: if an exception is thrown, there are no changes to any JSON value.

-

@requirement This function helps basic_json satisfying the Container requirements:

    -
  • The complexity is linear.
  • -
  • As postcondition, it holds: other == basic_json(other).
  • -
-

@liveexample{The following code shows an example for the copy constructor.,basic_json__basic_json}

-
Since
version 1.0.0
- -
-
- -

◆ basic_json() [19/19]

- -
-
- - - - - -
- - - - - - - - -
nlohmann::basic_json::basic_json (basic_json && other)
-
-inlinenoexcept
-
- -

move constructor

-

Move constructor. Constructs a JSON value with the contents of the given value other using move semantics. It "steals" the resources from other and leaves it as JSON null value.

-
Parameters
- - -
[in,out]othervalue to move to this object
-
-
-
Postcondition
*this has the same value as other before the call.
-
-other is a JSON null value.
-

@complexity Constant.

-

@exceptionsafety No-throw guarantee: this constructor never throws exceptions.

-

@requirement This function helps basic_json satisfying the MoveConstructible requirements.

-

@liveexample{The code below shows the move constructor explicitly called via std::move.,basic_json__moveconstructor}

-
Since
version 1.0.0
- -
-
- -

◆ ~basic_json() [2/2]

- -
-
- - - - - -
- - - - - - - -
nlohmann::basic_json::~basic_json ()
-
-inlinenoexcept
-
- -

destructor

-

Destroys the JSON value and frees all allocated memory.

-

@complexity Linear.

-

@requirement This function helps basic_json satisfying the Container requirements:

    -
  • The complexity is linear.
  • -
  • All stored elements are destroyed and all memory is freed.
  • -
-
Since
version 1.0.0
- -
-
-

Member Function Documentation

- -

◆ accept() [1/5]

- -
-
- - - - - -
- - - - - - - - -
static bool nlohmann::basic_json::accept (detail::input_adapter && i)
-
-inlinestatic
-
- -
-
- -

◆ accept() [2/5]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
static JSON_HEDLEY_WARN_UNUSED_RESULT bool nlohmann::basic_json::accept (detail::span_input_adapter && i,
const bool ignore_comments = false 
)
-
-inlinestatic
-
- -
-
- -

◆ accept() [3/5]

- -
-
-
-template<typename InputType >
- - - - - -
- - - - - - - - - - - - - - - - - - -
static bool nlohmann::basic_json::accept (InputType && i,
const bool ignore_comments = false 
)
-
-inlinestatic
-
- -

check if the input is valid JSON

-

Unlike the parse(InputType&&, const parser_callback_t,const bool) function, this function neither throws an exception in case of invalid JSON input (i.e., a parse error) nor creates diagnostic information.

-
Template Parameters
- - -
InputTypeA compatible input, for instance
    -
  • an std::istream object
  • -
  • a FILE pointer
  • -
  • a C-style array of characters
  • -
  • a pointer to a null-terminated string of single byte characters
  • -
  • an object obj for which begin(obj) and end(obj) produces a valid pair of iterators.
  • -
-
-
-
-
Parameters
- - - -
[in]iinput to read from
[in]ignore_commentswhether comments should be ignored and treated like whitespace (true) or yield a parse error (true); (optional, false by default)
-
-
-
Returns
Whether the input read from i is valid JSON.
-

@complexity Linear in the length of the input. The parser is a predictive LL(1) parser.

-
Note
A UTF-8 byte order mark is silently ignored.
-

@liveexample{The example below demonstrates the accept() function reading from a string.,accept__string}

- -
-
- -

◆ accept() [4/5]

- -
-
-
-template<class IteratorType , typename std::enable_if< std::is_base_of< std::random_access_iterator_tag, typename std::iterator_traits< IteratorType >::iterator_category >::value, int >::type = 0>
- - - - - -
- - - - - - - - - - - - - - - - - - -
static bool nlohmann::basic_json::accept (IteratorType first,
IteratorType last 
)
-
-inlinestatic
-
- -
-
- -

◆ accept() [5/5]

- -
-
-
-template<typename IteratorType >
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
static bool nlohmann::basic_json::accept (IteratorType first,
IteratorType last,
const bool ignore_comments = false 
)
-
-inlinestatic
-
- -
-
- -

◆ array() [1/2]

- -
-
- - - - - -
- - - - - - - - -
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json nlohmann::basic_json::array (initializer_list_t init = {})
-
-inlinestatic
-
- -

explicitly create an array from an initializer list

-

Creates a JSON array value from a given initializer list. That is, given a list of values a, b, c, creates the JSON value [a, b, c]. If the initializer list is empty, the empty array [] is created.

-
Note
This function is only needed to express two edge cases that cannot be realized with the initializer list constructor (basic_json(initializer_list_t, bool, value_t)). These cases are:
    -
  1. creating an array whose elements are all pairs whose first element is a string – in this case, the initializer list constructor would create an object, taking the first elements as keys
  2. -
  3. creating an empty array – passing the empty initializer list to the initializer list constructor yields an empty object
  4. -
-
-
Parameters
- - -
[in]initinitializer list with JSON values to create an array from (optional)
-
-
-
Returns
JSON array value
-

@complexity Linear in the size of init.

-

@exceptionsafety Strong guarantee: if an exception is thrown, there are no changes to any JSON value.

-

@liveexample{The following code shows an example for the array function.,array}

-
See also
basic_json(initializer_list_t, bool, value_t) – create a JSON value from an initializer list
-
-object(initializer_list_t) – create a JSON object value from an initializer list
-
Since
version 1.0.0
- -
-
- -

◆ array() [2/2]

- -
-
- - - - - -
- - - - - - - - -
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json nlohmann::basic_json::array (initializer_list_t init = {})
-
-inlinestatic
-
- -

explicitly create an array from an initializer list

-

Creates a JSON array value from a given initializer list. That is, given a list of values a, b, c, creates the JSON value [a, b, c]. If the initializer list is empty, the empty array [] is created.

-
Note
This function is only needed to express two edge cases that cannot be realized with the initializer list constructor (basic_json(initializer_list_t, bool, value_t)). These cases are:
    -
  1. creating an array whose elements are all pairs whose first element is a string – in this case, the initializer list constructor would create an object, taking the first elements as keys
  2. -
  3. creating an empty array – passing the empty initializer list to the initializer list constructor yields an empty object
  4. -
-
-
Parameters
- - -
[in]initinitializer list with JSON values to create an array from (optional)
-
-
-
Returns
JSON array value
-

@complexity Linear in the size of init.

-

@exceptionsafety Strong guarantee: if an exception is thrown, there are no changes to any JSON value.

-

@liveexample{The following code shows an example for the array function.,array}

-
See also
basic_json(initializer_list_t, bool, value_t) – create a JSON value from an initializer list
-
-object(initializer_list_t) – create a JSON object value from an initializer list
-
Since
version 1.0.0
- -
-
- -

◆ at() [1/12]

- -
-
- - - - - -
- - - - - - - - -
reference nlohmann::basic_json::at (const json_pointerptr)
-
-inline
-
- -

access specified element via JSON Pointer

-

Returns a reference to the element at with specified JSON pointer ptr, with bounds checking.

-
Parameters
- - -
[in]ptrJSON pointer to the desired element
-
-
-
Returns
reference to the element pointed to by ptr
-
Exceptions
- - - - - - - -
parse_error.106if an array index in the passed JSON pointer ptr begins with '0'. See example below.
parse_error.109if an array index in the passed JSON pointer ptr is not a number. See example below.
out_of_range.401if an array index in the passed JSON pointer ptr is out of range. See example below.
out_of_range.402if the array index '-' is used in the passed JSON pointer ptr. As at provides checked access (and no elements are implicitly inserted), the index '-' is always invalid. See example below.
out_of_range.403if the JSON pointer describes a key of an object which cannot be found. See example below.
out_of_range.404if the JSON pointer ptr can not be resolved. See example below.
-
-
-

@exceptionsafety Strong guarantee: if an exception is thrown, there are no changes in the JSON value.

-

@complexity Constant.

-
Since
version 2.0.0
-

@liveexample{The behavior is shown in the example.,at_json_pointer}

- -
-
- -

◆ at() [2/12]

- -
-
- - - - - -
- - - - - - - - -
reference nlohmann::basic_json::at (const json_pointerptr)
-
-inline
-
- -

access specified element via JSON Pointer

-

Returns a reference to the element at with specified JSON pointer ptr, with bounds checking.

-
Parameters
- - -
[in]ptrJSON pointer to the desired element
-
-
-
Returns
reference to the element pointed to by ptr
-
Exceptions
- - - - - - - -
parse_error.106if an array index in the passed JSON pointer ptr begins with '0'. See example below.
parse_error.109if an array index in the passed JSON pointer ptr is not a number. See example below.
out_of_range.401if an array index in the passed JSON pointer ptr is out of range. See example below.
out_of_range.402if the array index '-' is used in the passed JSON pointer ptr. As at provides checked access (and no elements are implicitly inserted), the index '-' is always invalid. See example below.
out_of_range.403if the JSON pointer describes a key of an object which cannot be found. See example below.
out_of_range.404if the JSON pointer ptr can not be resolved. See example below.
-
-
-

@exceptionsafety Strong guarantee: if an exception is thrown, there are no changes in the JSON value.

-

@complexity Constant.

-
Since
version 2.0.0
-

@liveexample{The behavior is shown in the example.,at_json_pointer}

- -
-
- -

◆ at() [3/12]

- -
-
- - - - - -
- - - - - - - - -
const_reference nlohmann::basic_json::at (const json_pointerptr) const
-
-inline
-
- -

access specified element via JSON Pointer

-

Returns a const reference to the element at with specified JSON pointer ptr, with bounds checking.

-
Parameters
- - -
[in]ptrJSON pointer to the desired element
-
-
-
Returns
reference to the element pointed to by ptr
-
Exceptions
- - - - - - - -
parse_error.106if an array index in the passed JSON pointer ptr begins with '0'. See example below.
parse_error.109if an array index in the passed JSON pointer ptr is not a number. See example below.
out_of_range.401if an array index in the passed JSON pointer ptr is out of range. See example below.
out_of_range.402if the array index '-' is used in the passed JSON pointer ptr. As at provides checked access (and no elements are implicitly inserted), the index '-' is always invalid. See example below.
out_of_range.403if the JSON pointer describes a key of an object which cannot be found. See example below.
out_of_range.404if the JSON pointer ptr can not be resolved. See example below.
-
-
-

@exceptionsafety Strong guarantee: if an exception is thrown, there are no changes in the JSON value.

-

@complexity Constant.

-
Since
version 2.0.0
-

@liveexample{The behavior is shown in the example.,at_json_pointer_const}

- -
-
- -

◆ at() [4/12]

- -
-
- - - - - -
- - - - - - - - -
const_reference nlohmann::basic_json::at (const json_pointerptr) const
-
-inline
-
- -

access specified element via JSON Pointer

-

Returns a const reference to the element at with specified JSON pointer ptr, with bounds checking.

-
Parameters
- - -
[in]ptrJSON pointer to the desired element
-
-
-
Returns
reference to the element pointed to by ptr
-
Exceptions
- - - - - - - -
parse_error.106if an array index in the passed JSON pointer ptr begins with '0'. See example below.
parse_error.109if an array index in the passed JSON pointer ptr is not a number. See example below.
out_of_range.401if an array index in the passed JSON pointer ptr is out of range. See example below.
out_of_range.402if the array index '-' is used in the passed JSON pointer ptr. As at provides checked access (and no elements are implicitly inserted), the index '-' is always invalid. See example below.
out_of_range.403if the JSON pointer describes a key of an object which cannot be found. See example below.
out_of_range.404if the JSON pointer ptr can not be resolved. See example below.
-
-
-

@exceptionsafety Strong guarantee: if an exception is thrown, there are no changes in the JSON value.

-

@complexity Constant.

-
Since
version 2.0.0
-

@liveexample{The behavior is shown in the example.,at_json_pointer_const}

- -
-
- -

◆ at() [5/12]

- -
-
- - - - - -
- - - - - - - - -
reference nlohmann::basic_json::at (const typename object_t::key_type & key)
-
-inline
-
- -

access specified object element with bounds checking

-

Returns a reference to the element at with specified key key, with bounds checking.

-
Parameters
- - -
[in]keykey of the element to access
-
-
-
Returns
reference to the element at key key
-
Exceptions
- - - -
type_error.304if the JSON value is not an object; in this case, calling at with a key makes no sense. See example below.
out_of_range.403if the key key is is not stored in the object; that is, find(key) == end(). See example below.
-
-
-

@exceptionsafety Strong guarantee: if an exception is thrown, there are no changes in the JSON value.

-

@complexity Logarithmic in the size of the container.

-
See also
operator[](const typename object_t::key_type&) for unchecked access by reference
-
-value() for access by value with a default value
-
Since
version 1.0.0
-

@liveexample{The example below shows how object elements can be read and written using at(). It also demonstrates the different exceptions that can be thrown.,at__object_t_key_type}

- -
-
- -

◆ at() [6/12]

- -
-
- - - - - -
- - - - - - - - -
reference nlohmann::basic_json::at (const typename object_t::key_type & key)
-
-inline
-
- -

access specified object element with bounds checking

-

Returns a reference to the element at with specified key key, with bounds checking.

-
Parameters
- - -
[in]keykey of the element to access
-
-
-
Returns
reference to the element at key key
-
Exceptions
- - - -
type_error.304if the JSON value is not an object; in this case, calling at with a key makes no sense. See example below.
out_of_range.403if the key key is is not stored in the object; that is, find(key) == end(). See example below.
-
-
-

@exceptionsafety Strong guarantee: if an exception is thrown, there are no changes in the JSON value.

-

@complexity Logarithmic in the size of the container.

-
See also
operator[](const typename object_t::key_type&) for unchecked access by reference
-
-value() for access by value with a default value
-
Since
version 1.0.0
-

@liveexample{The example below shows how object elements can be read and written using at(). It also demonstrates the different exceptions that can be thrown.,at__object_t_key_type}

- -
-
- -

◆ at() [7/12]

- -
-
- - - - - -
- - - - - - - - -
const_reference nlohmann::basic_json::at (const typename object_t::key_type & key) const
-
-inline
-
- -

access specified object element with bounds checking

-

Returns a const reference to the element at with specified key key, with bounds checking.

-
Parameters
- - -
[in]keykey of the element to access
-
-
-
Returns
const reference to the element at key key
-
Exceptions
- - - -
type_error.304if the JSON value is not an object; in this case, calling at with a key makes no sense. See example below.
out_of_range.403if the key key is is not stored in the object; that is, find(key) == end(). See example below.
-
-
-

@exceptionsafety Strong guarantee: if an exception is thrown, there are no changes in the JSON value.

-

@complexity Logarithmic in the size of the container.

-
See also
operator[](const typename object_t::key_type&) for unchecked access by reference
-
-value() for access by value with a default value
-
Since
version 1.0.0
-

@liveexample{The example below shows how object elements can be read using at(). It also demonstrates the different exceptions that can be thrown., at__object_t_key_type_const}

- -
-
- -

◆ at() [8/12]

- -
-
- - - - - -
- - - - - - - - -
const_reference nlohmann::basic_json::at (const typename object_t::key_type & key) const
-
-inline
-
- -

access specified object element with bounds checking

-

Returns a const reference to the element at with specified key key, with bounds checking.

-
Parameters
- - -
[in]keykey of the element to access
-
-
-
Returns
const reference to the element at key key
-
Exceptions
- - - -
type_error.304if the JSON value is not an object; in this case, calling at with a key makes no sense. See example below.
out_of_range.403if the key key is is not stored in the object; that is, find(key) == end(). See example below.
-
-
-

@exceptionsafety Strong guarantee: if an exception is thrown, there are no changes in the JSON value.

-

@complexity Logarithmic in the size of the container.

-
See also
operator[](const typename object_t::key_type&) for unchecked access by reference
-
-value() for access by value with a default value
-
Since
version 1.0.0
-

@liveexample{The example below shows how object elements can be read using at(). It also demonstrates the different exceptions that can be thrown., at__object_t_key_type_const}

- -
-
- -

◆ at() [9/12]

- -
-
- - - - - -
- - - - - - - - -
reference nlohmann::basic_json::at (size_type idx)
-
-inline
-
- -

access specified array element with bounds checking

-

Returns a reference to the element at specified location idx, with bounds checking.

-
Parameters
- - -
[in]idxindex of the element to access
-
-
-
Returns
reference to the element at index idx
-
Exceptions
- - - -
type_error.304if the JSON value is not an array; in this case, calling at with an index makes no sense. See example below.
out_of_range.401if the index idx is out of range of the array; that is, idx >= size(). See example below.
-
-
-

@exceptionsafety Strong guarantee: if an exception is thrown, there are no changes in the JSON value.

-

@complexity Constant.

-
Since
version 1.0.0
-

@liveexample{The example below shows how array elements can be read and written using at(). It also demonstrates the different exceptions that can be thrown.,at__size_type}

- -
-
- -

◆ at() [10/12]

- -
-
- - - - - -
- - - - - - - - -
reference nlohmann::basic_json::at (size_type idx)
-
-inline
-
- -

access specified array element with bounds checking

-

Returns a reference to the element at specified location idx, with bounds checking.

-
Parameters
- - -
[in]idxindex of the element to access
-
-
-
Returns
reference to the element at index idx
-
Exceptions
- - - -
type_error.304if the JSON value is not an array; in this case, calling at with an index makes no sense. See example below.
out_of_range.401if the index idx is out of range of the array; that is, idx >= size(). See example below.
-
-
-

@exceptionsafety Strong guarantee: if an exception is thrown, there are no changes in the JSON value.

-

@complexity Constant.

-
Since
version 1.0.0
-

@liveexample{The example below shows how array elements can be read and written using at(). It also demonstrates the different exceptions that can be thrown.,at__size_type}

- -
-
- -

◆ at() [11/12]

- -
-
- - - - - -
- - - - - - - - -
const_reference nlohmann::basic_json::at (size_type idx) const
-
-inline
-
- -

access specified array element with bounds checking

-

Returns a const reference to the element at specified location idx, with bounds checking.

-
Parameters
- - -
[in]idxindex of the element to access
-
-
-
Returns
const reference to the element at index idx
-
Exceptions
- - - -
type_error.304if the JSON value is not an array; in this case, calling at with an index makes no sense. See example below.
out_of_range.401if the index idx is out of range of the array; that is, idx >= size(). See example below.
-
-
-

@exceptionsafety Strong guarantee: if an exception is thrown, there are no changes in the JSON value.

-

@complexity Constant.

-
Since
version 1.0.0
-

@liveexample{The example below shows how array elements can be read using at(). It also demonstrates the different exceptions that can be thrown., at__size_type_const}

- -
-
- -

◆ at() [12/12]

- -
-
- - - - - -
- - - - - - - - -
const_reference nlohmann::basic_json::at (size_type idx) const
-
-inline
-
- -

access specified array element with bounds checking

-

Returns a const reference to the element at specified location idx, with bounds checking.

-
Parameters
- - -
[in]idxindex of the element to access
-
-
-
Returns
const reference to the element at index idx
-
Exceptions
- - - -
type_error.304if the JSON value is not an array; in this case, calling at with an index makes no sense. See example below.
out_of_range.401if the index idx is out of range of the array; that is, idx >= size(). See example below.
-
-
-

@exceptionsafety Strong guarantee: if an exception is thrown, there are no changes in the JSON value.

-

@complexity Constant.

-
Since
version 1.0.0
-

@liveexample{The example below shows how array elements can be read using at(). It also demonstrates the different exceptions that can be thrown., at__size_type_const}

- -
-
- -

◆ back() [1/4]

- -
-
- - - - - -
- - - - - - - -
reference nlohmann::basic_json::back ()
-
-inline
-
- -

access the last element

-

Returns a reference to the last element in the container. For a JSON container c, the expression c.back() is equivalent to

auto tmp = c.end();
-
--tmp;
-
return *tmp;
-
Returns
In case of a structured type (array or object), a reference to the last element is returned. In case of number, string, or boolean values, a reference to the value is returned.
-

@complexity Constant.

-
Precondition
The JSON value must not be null (would throw std::out_of_range) or an empty array or object (undefined behavior, guarded by assertions).
-
Postcondition
The JSON value remains unchanged.
-
Exceptions
- - -
invalid_iterator.214when called on a null value. See example below.
-
-
-

@liveexample{The following code shows an example for back().,back}

-
See also
front() – access the first element
-
Since
version 1.0.0
- -
-
- -

◆ back() [2/4]

- -
-
- - - - - -
- - - - - - - -
reference nlohmann::basic_json::back ()
-
-inline
-
- -

access the last element

-

Returns a reference to the last element in the container. For a JSON container c, the expression c.back() is equivalent to

auto tmp = c.end();
-
--tmp;
-
return *tmp;
-
Returns
In case of a structured type (array or object), a reference to the last element is returned. In case of number, string, boolean, or binary values, a reference to the value is returned.
-

@complexity Constant.

-
Precondition
The JSON value must not be null (would throw std::out_of_range) or an empty array or object (undefined behavior, guarded by assertions).
-
Postcondition
The JSON value remains unchanged.
-
Exceptions
- - -
invalid_iterator.214when called on a null value. See example below.
-
-
-

@liveexample{The following code shows an example for back().,back}

-
See also
front() – access the first element
-
Since
version 1.0.0
- -
-
- -

◆ back() [3/4]

- -
-
- - - - - -
- - - - - - - -
const_reference nlohmann::basic_json::back () const
-
-inline
-
- -

access the last element

-

Returns a reference to the last element in the container. For a JSON container c, the expression c.back() is equivalent to

auto tmp = c.end();
-
--tmp;
-
return *tmp;
-
Returns
In case of a structured type (array or object), a reference to the last element is returned. In case of number, string, or boolean values, a reference to the value is returned.
-

@complexity Constant.

-
Precondition
The JSON value must not be null (would throw std::out_of_range) or an empty array or object (undefined behavior, guarded by assertions).
-
Postcondition
The JSON value remains unchanged.
-
Exceptions
- - -
invalid_iterator.214when called on a null value. See example below.
-
-
-

@liveexample{The following code shows an example for back().,back}

-
See also
front() – access the first element
-
Since
version 1.0.0
- -
-
- -

◆ back() [4/4]

- -
-
- - - - - -
- - - - - - - -
const_reference nlohmann::basic_json::back () const
-
-inline
-
- -

access the last element

-

Returns a reference to the last element in the container. For a JSON container c, the expression c.back() is equivalent to

auto tmp = c.end();
-
--tmp;
-
return *tmp;
-
Returns
In case of a structured type (array or object), a reference to the last element is returned. In case of number, string, or boolean values, a reference to the value is returned.
-

@complexity Constant.

-
Precondition
The JSON value must not be null (would throw std::out_of_range) or an empty array or object (undefined behavior, guarded by assertions).
-
Postcondition
The JSON value remains unchanged.
-
Exceptions
- - -
invalid_iterator.214when called on a null value. See example below.
-
-
-

@liveexample{The following code shows an example for back().,back}

-
See also
front() – access the first element
-
Since
version 1.0.0
- -
-
- -

◆ begin() [1/4]

- -
-
- - - - - -
- - - - - - - -
const_iterator nlohmann::basic_json::begin () const
-
-inlinenoexcept
-
- -

returns a const iterator to the first element

-

Returns a const iterator to the first element.

-
- -
-Illustration from cppreference.com
-
Returns
const iterator to the first element
-

@complexity Constant.

-

@requirement This function helps basic_json satisfying the Container requirements:

    -
  • The complexity is constant.
  • -
  • Has the semantics of const_cast<const basic_json&>(*this).begin().
  • -
-

@liveexample{The following code shows an example for cbegin().,cbegin}

-
See also
begin() – returns an iterator to the beginning
-
-end() – returns an iterator to the end
-
-cend() – returns a const iterator to the end
-
Since
version 1.0.0
- -
-
- -

◆ begin() [2/4]

- -
-
- - - - - -
- - - - - - - -
const_iterator nlohmann::basic_json::begin () const
-
-inlinenoexcept
-
- -

returns a const iterator to the first element

-

Returns a const iterator to the first element.

-
- -
-Illustration from cppreference.com
-
Returns
const iterator to the first element
-

@complexity Constant.

-

@requirement This function helps basic_json satisfying the Container requirements:

    -
  • The complexity is constant.
  • -
  • Has the semantics of const_cast<const basic_json&>(*this).begin().
  • -
-

@liveexample{The following code shows an example for cbegin().,cbegin}

-
See also
begin() – returns an iterator to the beginning
-
-end() – returns an iterator to the end
-
-cend() – returns a const iterator to the end
-
Since
version 1.0.0
- -
-
- -

◆ begin() [3/4]

- -
-
- - - - - -
- - - - - - - -
iterator nlohmann::basic_json::begin ()
-
-inlinenoexcept
-
- -

returns an iterator to the first element

-

Returns an iterator to the first element.

-
- -
-Illustration from cppreference.com
-
Returns
iterator to the first element
-

@complexity Constant.

-

@requirement This function helps basic_json satisfying the Container requirements:

    -
  • The complexity is constant.
  • -
-

@liveexample{The following code shows an example for begin().,begin}

-
See also
cbegin() – returns a const iterator to the beginning
-
-end() – returns an iterator to the end
-
-cend() – returns a const iterator to the end
-
Since
version 1.0.0
- -
-
- -

◆ begin() [4/4]

- -
-
- - - - - -
- - - - - - - -
iterator nlohmann::basic_json::begin ()
-
-inlinenoexcept
-
- -

returns an iterator to the first element

-

Returns an iterator to the first element.

-
- -
-Illustration from cppreference.com
-
Returns
iterator to the first element
-

@complexity Constant.

-

@requirement This function helps basic_json satisfying the Container requirements:

    -
  • The complexity is constant.
  • -
-

@liveexample{The following code shows an example for begin().,begin}

-
See also
cbegin() – returns a const iterator to the beginning
-
-end() – returns an iterator to the end
-
-cend() – returns a const iterator to the end
-
Since
version 1.0.0
- -
-
- -

◆ binary() [1/4]

- -
-
- - - - - -
- - - - - - - - -
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json nlohmann::basic_json::binary (const typename binary_t::container_typeinit)
-
-inlinestatic
-
- -

explicitly create a binary array (without subtype)

-

Creates a JSON binary array value from a given binary container. Binary values are part of various binary formats, such as CBOR, MessagePack, and BSON. This constructor is used to create a value for serialization to those formats.

-
Note
Note, this function exists because of the difficulty in correctly specifying the correct template overload in the standard value ctor, as both JSON arrays and JSON binary arrays are backed with some form of a std::vector. Because JSON binary arrays are a non-standard extension it was decided that it would be best to prevent automatic initialization of a binary array type, for backwards compatibility and so it does not happen on accident.
-
Parameters
- - -
[in]initcontainer containing bytes to use as binary type
-
-
-
Returns
JSON binary array value
-

@complexity Linear in the size of init.

-

@exceptionsafety Strong guarantee: if an exception is thrown, there are no changes to any JSON value.

-
Since
version 3.8.0
- -
-
- -

◆ binary() [2/4]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json nlohmann::basic_json::binary (const typename binary_t::container_typeinit,
std::uint8_t subtype 
)
-
-inlinestatic
-
- -

explicitly create a binary array (with subtype)

-

Creates a JSON binary array value from a given binary container. Binary values are part of various binary formats, such as CBOR, MessagePack, and BSON. This constructor is used to create a value for serialization to those formats.

-
Note
Note, this function exists because of the difficulty in correctly specifying the correct template overload in the standard value ctor, as both JSON arrays and JSON binary arrays are backed with some form of a std::vector. Because JSON binary arrays are a non-standard extension it was decided that it would be best to prevent automatic initialization of a binary array type, for backwards compatibility and so it does not happen on accident.
-
Parameters
- - - -
[in]initcontainer containing bytes to use as binary type
[in]subtypesubtype to use in MessagePack and BSON
-
-
-
Returns
JSON binary array value
-

@complexity Linear in the size of init.

-

@exceptionsafety Strong guarantee: if an exception is thrown, there are no changes to any JSON value.

-
Since
version 3.8.0
- -
-
- -

◆ binary() [3/4]

- -
-
- - - - - -
- - - - - - - - -
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json nlohmann::basic_json::binary (typename binary_t::container_type && init)
-
-inlinestatic
-
- -

explicitly create a binary array (without subtype)

-

Creates a JSON binary array value from a given binary container. Binary values are part of various binary formats, such as CBOR, MessagePack, and BSON. This constructor is used to create a value for serialization to those formats.

-
Note
Note, this function exists because of the difficulty in correctly specifying the correct template overload in the standard value ctor, as both JSON arrays and JSON binary arrays are backed with some form of a std::vector. Because JSON binary arrays are a non-standard extension it was decided that it would be best to prevent automatic initialization of a binary array type, for backwards compatibility and so it does not happen on accident.
-
Parameters
- - -
[in]initcontainer containing bytes to use as binary type
-
-
-
Returns
JSON binary array value
-

@complexity Linear in the size of init.

-

@exceptionsafety Strong guarantee: if an exception is thrown, there are no changes to any JSON value.

-
Since
version 3.8.0
- -
-
- -

◆ binary() [4/4]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json nlohmann::basic_json::binary (typename binary_t::container_type && init,
std::uint8_t subtype 
)
-
-inlinestatic
-
- -

explicitly create a binary array (with subtype)

-

Creates a JSON binary array value from a given binary container. Binary values are part of various binary formats, such as CBOR, MessagePack, and BSON. This constructor is used to create a value for serialization to those formats.

-
Note
Note, this function exists because of the difficulty in correctly specifying the correct template overload in the standard value ctor, as both JSON arrays and JSON binary arrays are backed with some form of a std::vector. Because JSON binary arrays are a non-standard extension it was decided that it would be best to prevent automatic initialization of a binary array type, for backwards compatibility and so it does not happen on accident.
-
Parameters
- - - -
[in]initcontainer containing bytes to use as binary type
[in]subtypesubtype to use in MessagePack and BSON
-
-
-
Returns
JSON binary array value
-

@complexity Linear in the size of init.

-

@exceptionsafety Strong guarantee: if an exception is thrown, there are no changes to any JSON value.

-
Since
version 3.8.0
- -
-
- -

◆ cbegin() [1/2]

- -
-
- - - - - -
- - - - - - - -
const_iterator nlohmann::basic_json::cbegin () const
-
-inlinenoexcept
-
- -

returns a const iterator to the first element

-

Returns a const iterator to the first element.

-
- -
-Illustration from cppreference.com
-
Returns
const iterator to the first element
-

@complexity Constant.

-

@requirement This function helps basic_json satisfying the Container requirements:

    -
  • The complexity is constant.
  • -
  • Has the semantics of const_cast<const basic_json&>(*this).begin().
  • -
-

@liveexample{The following code shows an example for cbegin().,cbegin}

-
See also
begin() – returns an iterator to the beginning
-
-end() – returns an iterator to the end
-
-cend() – returns a const iterator to the end
-
Since
version 1.0.0
- -
-
- -

◆ cbegin() [2/2]

- -
-
- - - - - -
- - - - - - - -
const_iterator nlohmann::basic_json::cbegin () const
-
-inlinenoexcept
-
- -

returns a const iterator to the first element

-

Returns a const iterator to the first element.

-
- -
-Illustration from cppreference.com
-
Returns
const iterator to the first element
-

@complexity Constant.

-

@requirement This function helps basic_json satisfying the Container requirements:

    -
  • The complexity is constant.
  • -
  • Has the semantics of const_cast<const basic_json&>(*this).begin().
  • -
-

@liveexample{The following code shows an example for cbegin().,cbegin}

-
See also
begin() – returns an iterator to the beginning
-
-end() – returns an iterator to the end
-
-cend() – returns a const iterator to the end
-
Since
version 1.0.0
- -
-
- -

◆ cend() [1/2]

- -
-
- - - - - -
- - - - - - - -
const_iterator nlohmann::basic_json::cend () const
-
-inlinenoexcept
-
- -

returns a const iterator to one past the last element

-

Returns a const iterator to one past the last element.

-
- -
-Illustration from cppreference.com
-
Returns
const iterator one past the last element
-

@complexity Constant.

-

@requirement This function helps basic_json satisfying the Container requirements:

    -
  • The complexity is constant.
  • -
  • Has the semantics of const_cast<const basic_json&>(*this).end().
  • -
-

@liveexample{The following code shows an example for cend().,cend}

-
See also
end() – returns an iterator to the end
-
-begin() – returns an iterator to the beginning
-
-cbegin() – returns a const iterator to the beginning
-
Since
version 1.0.0
- -
-
- -

◆ cend() [2/2]

- -
-
- - - - - -
- - - - - - - -
const_iterator nlohmann::basic_json::cend () const
-
-inlinenoexcept
-
- -

returns a const iterator to one past the last element

-

Returns a const iterator to one past the last element.

-
- -
-Illustration from cppreference.com
-
Returns
const iterator one past the last element
-

@complexity Constant.

-

@requirement This function helps basic_json satisfying the Container requirements:

    -
  • The complexity is constant.
  • -
  • Has the semantics of const_cast<const basic_json&>(*this).end().
  • -
-

@liveexample{The following code shows an example for cend().,cend}

-
See also
end() – returns an iterator to the end
-
-begin() – returns an iterator to the beginning
-
-cbegin() – returns a const iterator to the beginning
-
Since
version 1.0.0
- -
-
- -

◆ clear() [1/2]

- -
-
- - - - - -
- - - - - - - -
void nlohmann::basic_json::clear ()
-
-inlinenoexcept
-
- -

clears the contents

-

Clears the content of a JSON value and resets it to the default value as if basic_json(value_t) would have been called with the current value type from type():

- - - - - - - - - - - - - - - -
Value type initial value
null null
boolean false
string ""
number 0
object {}
array []
-
Postcondition
Has the same effect as calling
*this = basic_json(type());
-
-

@liveexample{The example below shows the effect of clear() to different JSON types.,clear}

-

@complexity Linear in the size of the JSON value.

-

@iterators All iterators, pointers and references related to this container are invalidated.

-

@exceptionsafety No-throw guarantee: this function never throws exceptions.

-
See also
basic_json(value_t) – constructor that creates an object with the same value than calling clear()
-
Since
version 1.0.0
- -
-
- -

◆ clear() [2/2]

- -
-
- - - - - -
- - - - - - - -
void nlohmann::basic_json::clear ()
-
-inlinenoexcept
-
- -

clears the contents

-

Clears the content of a JSON value and resets it to the default value as if basic_json(value_t) would have been called with the current value type from type():

- - - - - - - - - - - - - - - - - -
Value type initial value
null null
boolean false
string ""
number 0
binary An empty byte vector
object {}
array []
-
Postcondition
Has the same effect as calling
*this = basic_json(type());
-
-

@liveexample{The example below shows the effect of clear() to different JSON types.,clear}

-

@complexity Linear in the size of the JSON value.

-

@iterators All iterators, pointers and references related to this container are invalidated.

-

@exceptionsafety No-throw guarantee: this function never throws exceptions.

-
See also
basic_json(value_t) – constructor that creates an object with the same value than calling clear()
-
Since
version 1.0.0
- -
-
- -

◆ contains() [1/4]

- -
-
- - - - - -
- - - - - - - - -
bool nlohmann::basic_json::contains (const json_pointerptr) const
-
-inline
-
- -

check the existence of an element in a JSON object given a JSON pointer

-

Check whether the given JSON pointer ptr can be resolved in the current JSON value.

-
Note
This method can be executed on any JSON value type.
-
Parameters
- - -
[in]ptrJSON pointer to check its existence.
-
-
-
Returns
true if the JSON pointer can be resolved to a stored value, false otherwise.
-
Postcondition
If j.contains(ptr) returns true, it is safe to call j[ptr].
-
Exceptions
- - - -
parse_error.106if an array index begins with '0'
parse_error.109if an array index was not a number
-
-
-

@complexity Logarithmic in the size of the JSON object.

-

@liveexample{The following code shows an example for contains().,contains_json_pointer}

-
See also
contains(KeyT &&) const – checks the existence of a key
-
Since
version 3.7.0
- -
-
- -

◆ contains() [2/4]

- -
-
- - - - - -
- - - - - - - - -
bool nlohmann::basic_json::contains (const json_pointerptr) const
-
-inline
-
- -

check the existence of an element in a JSON object given a JSON pointer

-

Check whether the given JSON pointer ptr can be resolved in the current JSON value.

-
Note
This method can be executed on any JSON value type.
-
Parameters
- - -
[in]ptrJSON pointer to check its existence.
-
-
-
Returns
true if the JSON pointer can be resolved to a stored value, false otherwise.
-
Postcondition
If j.contains(ptr) returns true, it is safe to call j[ptr].
-
Exceptions
- - - -
parse_error.106if an array index begins with '0'
parse_error.109if an array index was not a number
-
-
-

@complexity Logarithmic in the size of the JSON object.

-

@liveexample{The following code shows an example for contains().,contains_json_pointer}

-
See also
contains(KeyT &&) const – checks the existence of a key
-
Since
version 3.7.0
- -
-
- -

◆ contains() [3/4]

- -
-
-
-template<typename KeyT , typename std::enable_if< not std::is_same< typename std::decay< KeyT >::type, json_pointer >::value, int >::type = 0>
- - - - - -
- - - - - - - - -
bool nlohmann::basic_json::contains (KeyT && key) const
-
-inline
-
- -

check the existence of an element in a JSON object

-

Check whether an element exists in a JSON object with key equivalent to key. If the element is not found or the JSON value is not an object, false is returned.

-
Note
This method always returns false when executed on a JSON type that is not an object.
-
Parameters
- - -
[in]keykey value to check its existence.
-
-
-
Returns
true if an element with specified key exists. If no such element with such key is found or the JSON value is not an object, false is returned.
-

@complexity Logarithmic in the size of the JSON object.

-

@liveexample{The following code shows an example for contains().,contains}

-
See also
find(KeyT&&) – returns an iterator to an object element
-
-contains(const json_pointer&) const – checks the existence for a JSON pointer
-
Since
version 3.6.0
- -
-
- -

◆ contains() [4/4]

- -
-
-
-template<typename KeyT , typename std::enable_if< !std::is_same< typename std::decay< KeyT >::type, json_pointer >::value, int >::type = 0>
- - - - - -
- - - - - - - - -
bool nlohmann::basic_json::contains (KeyT && key) const
-
-inline
-
- -

check the existence of an element in a JSON object

-

Check whether an element exists in a JSON object with key equivalent to key. If the element is not found or the JSON value is not an object, false is returned.

-
Note
This method always returns false when executed on a JSON type that is not an object.
-
Parameters
- - -
[in]keykey value to check its existence.
-
-
-
Returns
true if an element with specified key exists. If no such element with such key is found or the JSON value is not an object, false is returned.
-

@complexity Logarithmic in the size of the JSON object.

-

@liveexample{The following code shows an example for contains().,contains}

-
See also
find(KeyT&&) – returns an iterator to an object element
-
-contains(const json_pointer&) const – checks the existence for a JSON pointer
-
Since
version 3.6.0
- -
-
- -

◆ count() [1/2]

- -
-
-
-template<typename KeyT >
- - - - - -
- - - - - - - - -
size_type nlohmann::basic_json::count (KeyT && key) const
-
-inline
-
- -

returns the number of occurrences of a key in a JSON object

-

Returns the number of elements with key key. If ObjectType is the default std::map type, the return value will always be 0 (key was not found) or 1 (key was found).

-
Note
This method always returns 0 when executed on a JSON type that is not an object.
-
Parameters
- - -
[in]keykey value of the element to count
-
-
-
Returns
Number of elements with key key. If the JSON value is not an object, the return value will be 0.
-

@complexity Logarithmic in the size of the JSON object.

-

@liveexample{The example shows how count() is used.,count}

-
Since
version 1.0.0
- -
-
- -

◆ count() [2/2]

- -
-
-
-template<typename KeyT >
- - - - - -
- - - - - - - - -
size_type nlohmann::basic_json::count (KeyT && key) const
-
-inline
-
- -

returns the number of occurrences of a key in a JSON object

-

Returns the number of elements with key key. If ObjectType is the default std::map type, the return value will always be 0 (key was not found) or 1 (key was found).

-
Note
This method always returns 0 when executed on a JSON type that is not an object.
-
Parameters
- - -
[in]keykey value of the element to count
-
-
-
Returns
Number of elements with key key. If the JSON value is not an object, the return value will be 0.
-

@complexity Logarithmic in the size of the JSON object.

-

@liveexample{The example shows how count() is used.,count}

-
Since
version 1.0.0
- -
-
- -

◆ crbegin() [1/2]

- -
-
- - - - - -
- - - - - - - -
const_reverse_iterator nlohmann::basic_json::crbegin () const
-
-inlinenoexcept
-
- -

returns a const reverse iterator to the last element

-

Returns a const iterator to the reverse-beginning; that is, the last element.

-
- -
-Illustration from cppreference.com
-

@complexity Constant.

-

@requirement This function helps basic_json satisfying the ReversibleContainer requirements:

    -
  • The complexity is constant.
  • -
  • Has the semantics of const_cast<const basic_json&>(*this).rbegin().
  • -
-

@liveexample{The following code shows an example for crbegin().,crbegin}

-
See also
rbegin() – returns a reverse iterator to the beginning
-
-rend() – returns a reverse iterator to the end
-
-crend() – returns a const reverse iterator to the end
-
Since
version 1.0.0
- -
-
- -

◆ crbegin() [2/2]

- -
-
- - - - - -
- - - - - - - -
const_reverse_iterator nlohmann::basic_json::crbegin () const
-
-inlinenoexcept
-
- -

returns a const reverse iterator to the last element

-

Returns a const iterator to the reverse-beginning; that is, the last element.

-
- -
-Illustration from cppreference.com
-

@complexity Constant.

-

@requirement This function helps basic_json satisfying the ReversibleContainer requirements:

    -
  • The complexity is constant.
  • -
  • Has the semantics of const_cast<const basic_json&>(*this).rbegin().
  • -
-

@liveexample{The following code shows an example for crbegin().,crbegin}

-
See also
rbegin() – returns a reverse iterator to the beginning
-
-rend() – returns a reverse iterator to the end
-
-crend() – returns a const reverse iterator to the end
-
Since
version 1.0.0
- -
-
- -

◆ crend() [1/2]

- -
-
- - - - - -
- - - - - - - -
const_reverse_iterator nlohmann::basic_json::crend () const
-
-inlinenoexcept
-
- -

returns a const reverse iterator to one before the first

-

Returns a const reverse iterator to the reverse-end; that is, one before the first element.

-
- -
-Illustration from cppreference.com
-

@complexity Constant.

-

@requirement This function helps basic_json satisfying the ReversibleContainer requirements:

    -
  • The complexity is constant.
  • -
  • Has the semantics of const_cast<const basic_json&>(*this).rend().
  • -
-

@liveexample{The following code shows an example for crend().,crend}

-
See also
rend() – returns a reverse iterator to the end
-
-rbegin() – returns a reverse iterator to the beginning
-
-crbegin() – returns a const reverse iterator to the beginning
-
Since
version 1.0.0
- -
-
- -

◆ crend() [2/2]

- -
-
- - - - - -
- - - - - - - -
const_reverse_iterator nlohmann::basic_json::crend () const
-
-inlinenoexcept
-
- -

returns a const reverse iterator to one before the first

-

Returns a const reverse iterator to the reverse-end; that is, one before the first element.

-
- -
-Illustration from cppreference.com
-

@complexity Constant.

-

@requirement This function helps basic_json satisfying the ReversibleContainer requirements:

    -
  • The complexity is constant.
  • -
  • Has the semantics of const_cast<const basic_json&>(*this).rend().
  • -
-

@liveexample{The following code shows an example for crend().,crend}

-
See also
rend() – returns a reverse iterator to the end
-
-rbegin() – returns a reverse iterator to the beginning
-
-crbegin() – returns a const reverse iterator to the beginning
-
Since
version 1.0.0
- -
-
- -

◆ diff() [1/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json nlohmann::basic_json::diff (const basic_jsonsource,
const basic_jsontarget,
const std::string & path = "" 
)
-
-inlinestatic
-
- -

creates a diff as a JSON patch

-

Creates a JSON Patch so that value source can be changed into the value target by calling patch function.

-
Invariant
For two JSON values source and target, the following code yields always true:
source.patch(diff(source, target)) == target;
-
-
Note
Currently, only remove, add, and replace operations are generated.
-
Parameters
- - - - -
[in]sourceJSON value to compare from
[in]targetJSON value to compare against
[in]pathhelper value to create JSON pointers
-
-
-
Returns
a JSON patch to convert the source to target
-

@complexity Linear in the lengths of source and target.

-

@liveexample{The following code shows how a JSON patch is created as a diff for two JSON values.,diff}

-
See also
patch – apply a JSON patch
-
-merge_patch – apply a JSON Merge Patch
-
-RFC 6902 (JSON Patch)
-
Since
version 2.0.0
- -
-
- -

◆ diff() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json nlohmann::basic_json::diff (const basic_jsonsource,
const basic_jsontarget,
const std::string & path = "" 
)
-
-inlinestatic
-
- -

creates a diff as a JSON patch

-

Creates a JSON Patch so that value source can be changed into the value target by calling patch function.

-
Invariant
For two JSON values source and target, the following code yields always true:
source.patch(diff(source, target)) == target;
-
-
Note
Currently, only remove, add, and replace operations are generated.
-
Parameters
- - - - -
[in]sourceJSON value to compare from
[in]targetJSON value to compare against
[in]pathhelper value to create JSON pointers
-
-
-
Returns
a JSON patch to convert the source to target
-

@complexity Linear in the lengths of source and target.

-

@liveexample{The following code shows how a JSON patch is created as a diff for two JSON values.,diff}

-
See also
patch – apply a JSON patch
-
-merge_patch – apply a JSON Merge Patch
-
-RFC 6902 (JSON Patch)
-
Since
version 2.0.0
- -
-
- -

◆ dump() [1/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
string_t nlohmann::basic_json::dump (const int indent = -1,
const char indent_char = ' ',
const bool ensure_ascii = false,
const error_handler_t error_handler = error_handler_t::strict 
) const
-
-inline
-
- -

serialization

-

Serialization function for JSON values. The function tries to mimic Python's json.dumps() function, and currently supports its indent and ensure_ascii parameters.

-
Parameters
- - - - - -
[in]indentIf indent is nonnegative, then array elements and object members will be pretty-printed with that indent level. An indent level of 0 will only insert newlines. -1 (the default) selects the most compact representation.
[in]indent_charThe character to use for indentation if indent is greater than 0. The default is (space).
[in]ensure_asciiIf ensure_ascii is true, all non-ASCII characters in the output are escaped with \uXXXX sequences, and the result consists of ASCII characters only.
[in]error_handlerhow to react on decoding errors; there are three possible values: strict (throws and exception in case a decoding error occurs; default), replace (replace invalid UTF-8 sequences with U+FFFD), and ignore (ignore invalid UTF-8 sequences during serialization).
-
-
-
Returns
string containing the serialization of the JSON value
-
Exceptions
- - -
type_error.316if a string stored inside the JSON value is not UTF-8 encoded
-
-
-

@complexity Linear.

-

@exceptionsafety Strong guarantee: if an exception is thrown, there are no changes in the JSON value.

-

@liveexample{The following example shows the effect of different indent\, indent_char\, and ensure_ascii parameters to the result of the serialization.,dump}

-
See also
https://docs.python.org/2/library/json.html#json.dump
-
Since
version 1.0.0; indentation character indent_char, option ensure_ascii and exceptions added in version 3.0.0; error handlers added in version 3.4.0.
- -
-
- -

◆ dump() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
string_t nlohmann::basic_json::dump (const int indent = -1,
const char indent_char = ' ',
const bool ensure_ascii = false,
const error_handler_t error_handler = error_handler_t::strict 
) const
-
-inline
-
- -

serialization

-

Serialization function for JSON values. The function tries to mimic Python's json.dumps() function, and currently supports its indent and ensure_ascii parameters.

-
Parameters
- - - - - -
[in]indentIf indent is nonnegative, then array elements and object members will be pretty-printed with that indent level. An indent level of 0 will only insert newlines. -1 (the default) selects the most compact representation.
[in]indent_charThe character to use for indentation if indent is greater than 0. The default is (space).
[in]ensure_asciiIf ensure_ascii is true, all non-ASCII characters in the output are escaped with \uXXXX sequences, and the result consists of ASCII characters only.
[in]error_handlerhow to react on decoding errors; there are three possible values: strict (throws and exception in case a decoding error occurs; default), replace (replace invalid UTF-8 sequences with U+FFFD), and ignore (ignore invalid UTF-8 sequences during serialization; all bytes are copied to the output unchanged).
-
-
-
Returns
string containing the serialization of the JSON value
-
Exceptions
- - -
type_error.316if a string stored inside the JSON value is not UTF-8 encoded and error_handler is set to strict
-
-
-
Note
Binary values are serialized as object containing two keys:
    -
  • "bytes": an array of bytes as integers
  • -
  • "subtype": the subtype as integer or "null" if the binary has no subtype
  • -
-
-

@complexity Linear.

-

@exceptionsafety Strong guarantee: if an exception is thrown, there are no changes in the JSON value.

-

@liveexample{The following example shows the effect of different indent\, indent_char\, and ensure_ascii parameters to the result of the serialization.,dump}

-
See also
https://docs.python.org/2/library/json.html#json.dump
-
Since
version 1.0.0; indentation character indent_char, option ensure_ascii and exceptions added in version 3.0.0; error handlers added in version 3.4.0; serialization of binary values added in version 3.8.0.
- -
-
- -

◆ emplace() [1/2]

- -
-
-
-template<class... Args>
- - - - - -
- - - - - - - - -
std::pair<iterator, bool> nlohmann::basic_json::emplace (Args &&... args)
-
-inline
-
- -

add an object to an object if key does not exist

-

Inserts a new element into a JSON object constructed in-place with the given args if there is no element with the key in the container. If the function is called on a JSON null value, an empty object is created before appending the value created from args.

-
Parameters
- - -
[in]argsarguments to forward to a constructor of basic_json
-
-
-
Template Parameters
- - -
Argscompatible types to create a basic_json object
-
-
-
Returns
a pair consisting of an iterator to the inserted element, or the already-existing element if no insertion happened, and a bool denoting whether the insertion took place.
-
Exceptions
- - -
type_error.311when called on a type other than JSON object or null; example: "cannot use emplace() with number"
-
-
-

@complexity Logarithmic in the size of the container, O(log(size())).

-

@liveexample{The example shows how emplace() can be used to add elements to a JSON object. Note how the null value was silently converted to a JSON object. Further note how no value is added if there was already one value stored with the same key.,emplace}

-
Since
version 2.0.8
- -
-
- -

◆ emplace() [2/2]

- -
-
-
-template<class... Args>
- - - - - -
- - - - - - - - -
std::pair<iterator, bool> nlohmann::basic_json::emplace (Args &&... args)
-
-inline
-
- -

add an object to an object if key does not exist

-

Inserts a new element into a JSON object constructed in-place with the given args if there is no element with the key in the container. If the function is called on a JSON null value, an empty object is created before appending the value created from args.

-
Parameters
- - -
[in]argsarguments to forward to a constructor of basic_json
-
-
-
Template Parameters
- - -
Argscompatible types to create a basic_json object
-
-
-
Returns
a pair consisting of an iterator to the inserted element, or the already-existing element if no insertion happened, and a bool denoting whether the insertion took place.
-
Exceptions
- - -
type_error.311when called on a type other than JSON object or null; example: "cannot use emplace() with number"
-
-
-

@complexity Logarithmic in the size of the container, O(log(size())).

-

@liveexample{The example shows how emplace() can be used to add elements to a JSON object. Note how the null value was silently converted to a JSON object. Further note how no value is added if there was already one value stored with the same key.,emplace}

-
Since
version 2.0.8
- -
-
- -

◆ emplace_back() [1/2]

- -
-
-
-template<class... Args>
- - - - - -
- - - - - - - - -
reference nlohmann::basic_json::emplace_back (Args &&... args)
-
-inline
-
- -

add an object to an array

-

Creates a JSON value from the passed parameters args to the end of the JSON value. If the function is called on a JSON null value, an empty array is created before appending the value created from args.

-
Parameters
- - -
[in]argsarguments to forward to a constructor of basic_json
-
-
-
Template Parameters
- - -
Argscompatible types to create a basic_json object
-
-
-
Returns
reference to the inserted element
-
Exceptions
- - -
type_error.311when called on a type other than JSON array or null; example: "cannot use emplace_back() with number"
-
-
-

@complexity Amortized constant.

-

@liveexample{The example shows how push_back() can be used to add elements to a JSON array. Note how the null value was silently converted to a JSON array.,emplace_back}

-
Since
version 2.0.8, returns reference since 3.7.0
- -
-
- -

◆ emplace_back() [2/2]

- -
-
-
-template<class... Args>
- - - - - -
- - - - - - - - -
reference nlohmann::basic_json::emplace_back (Args &&... args)
-
-inline
-
- -

add an object to an array

-

Creates a JSON value from the passed parameters args to the end of the JSON value. If the function is called on a JSON null value, an empty array is created before appending the value created from args.

-
Parameters
- - -
[in]argsarguments to forward to a constructor of basic_json
-
-
-
Template Parameters
- - -
Argscompatible types to create a basic_json object
-
-
-
Returns
reference to the inserted element
-
Exceptions
- - -
type_error.311when called on a type other than JSON array or null; example: "cannot use emplace_back() with number"
-
-
-

@complexity Amortized constant.

-

@liveexample{The example shows how push_back() can be used to add elements to a JSON array. Note how the null value was silently converted to a JSON array.,emplace_back}

-
Since
version 2.0.8, returns reference since 3.7.0
- -
-
- -

◆ empty() [1/2]

- -
-
- - - - - -
- - - - - - - -
bool nlohmann::basic_json::empty () const
-
-inlinenoexcept
-
- -

checks whether the container is empty.

-

Checks if a JSON value has no elements (i.e. whether its size is 0).

-
Returns
The return value depends on the different types and is defined as follows: - - - - - - - - - - - - - - -
Value type return value
null true
boolean false
string false
number false
object result of function object_t::empty()
array result of function array_t::empty()
-
-

@liveexample{The following code uses empty() to check if a JSON object contains any elements.,empty}

-

@complexity Constant, as long as array_t and object_t satisfy the Container concept; that is, their empty() functions have constant complexity.

-

@iterators No changes.

-

@exceptionsafety No-throw guarantee: this function never throws exceptions.

-
Note
This function does not return whether a string stored as JSON value is empty - it returns whether the JSON container itself is empty which is false in the case of a string.
-

@requirement This function helps basic_json satisfying the Container requirements:

    -
  • The complexity is constant.
  • -
  • Has the semantics of begin() == end().
  • -
-
See also
size() – returns the number of elements
-
Since
version 1.0.0
- -
-
- -

◆ empty() [2/2]

- -
-
- - - - - -
- - - - - - - -
bool nlohmann::basic_json::empty () const
-
-inlinenoexcept
-
- -

checks whether the container is empty.

-

Checks if a JSON value has no elements (i.e. whether its size is 0).

-
Returns
The return value depends on the different types and is defined as follows: - - - - - - - - - - - - - - - - -
Value type return value
null true
boolean false
string false
number false
binary false
object result of function object_t::empty()
array result of function array_t::empty()
-
-

@liveexample{The following code uses empty() to check if a JSON object contains any elements.,empty}

-

@complexity Constant, as long as array_t and object_t satisfy the Container concept; that is, their empty() functions have constant complexity.

-

@iterators No changes.

-

@exceptionsafety No-throw guarantee: this function never throws exceptions.

-
Note
This function does not return whether a string stored as JSON value is empty - it returns whether the JSON container itself is empty which is false in the case of a string.
-

@requirement This function helps basic_json satisfying the Container requirements:

    -
  • The complexity is constant.
  • -
  • Has the semantics of begin() == end().
  • -
-
See also
size() – returns the number of elements
-
Since
version 1.0.0
- -
-
- -

◆ end() [1/4]

- -
-
- - - - - -
- - - - - - - -
const_iterator nlohmann::basic_json::end () const
-
-inlinenoexcept
-
- -

returns a const iterator to one past the last element

-

Returns a const iterator to one past the last element.

-
- -
-Illustration from cppreference.com
-
Returns
const iterator one past the last element
-

@complexity Constant.

-

@requirement This function helps basic_json satisfying the Container requirements:

    -
  • The complexity is constant.
  • -
  • Has the semantics of const_cast<const basic_json&>(*this).end().
  • -
-

@liveexample{The following code shows an example for cend().,cend}

-
See also
end() – returns an iterator to the end
-
-begin() – returns an iterator to the beginning
-
-cbegin() – returns a const iterator to the beginning
-
Since
version 1.0.0
- -
-
- -

◆ end() [2/4]

- -
-
- - - - - -
- - - - - - - -
const_iterator nlohmann::basic_json::end () const
-
-inlinenoexcept
-
- -

returns a const iterator to one past the last element

-

Returns a const iterator to one past the last element.

-
- -
-Illustration from cppreference.com
-
Returns
const iterator one past the last element
-

@complexity Constant.

-

@requirement This function helps basic_json satisfying the Container requirements:

    -
  • The complexity is constant.
  • -
  • Has the semantics of const_cast<const basic_json&>(*this).end().
  • -
-

@liveexample{The following code shows an example for cend().,cend}

-
See also
end() – returns an iterator to the end
-
-begin() – returns an iterator to the beginning
-
-cbegin() – returns a const iterator to the beginning
-
Since
version 1.0.0
- -
-
- -

◆ end() [3/4]

- -
-
- - - - - -
- - - - - - - -
iterator nlohmann::basic_json::end ()
-
-inlinenoexcept
-
- -

returns an iterator to one past the last element

-

Returns an iterator to one past the last element.

-
- -
-Illustration from cppreference.com
-
Returns
iterator one past the last element
-

@complexity Constant.

-

@requirement This function helps basic_json satisfying the Container requirements:

    -
  • The complexity is constant.
  • -
-

@liveexample{The following code shows an example for end().,end}

-
See also
cend() – returns a const iterator to the end
-
-begin() – returns an iterator to the beginning
-
-cbegin() – returns a const iterator to the beginning
-
Since
version 1.0.0
- -
-
- -

◆ end() [4/4]

- -
-
- - - - - -
- - - - - - - -
iterator nlohmann::basic_json::end ()
-
-inlinenoexcept
-
- -

returns an iterator to one past the last element

-

Returns an iterator to one past the last element.

-
- -
-Illustration from cppreference.com
-
Returns
iterator one past the last element
-

@complexity Constant.

-

@requirement This function helps basic_json satisfying the Container requirements:

    -
  • The complexity is constant.
  • -
-

@liveexample{The following code shows an example for end().,end}

-
See also
cend() – returns a const iterator to the end
-
-begin() – returns an iterator to the beginning
-
-cbegin() – returns a const iterator to the beginning
-
Since
version 1.0.0
- -
-
- -

◆ erase() [1/8]

- -
-
- - - - - -
- - - - - - - - -
void nlohmann::basic_json::erase (const size_type idx)
-
-inline
-
- -

remove element from a JSON array given an index

-

Removes element from a JSON array at the index idx.

-
Parameters
- - -
[in]idxindex of the element to remove
-
-
-
Exceptions
- - - -
type_error.307when called on a type other than JSON object; example: "cannot use erase() with null"
out_of_range.401when idx >= size(); example: "array index 17 -is out of range"
-
-
-

@complexity Linear in distance between idx and the end of the container.

-

@liveexample{The example shows the effect of erase().,erase__size_type}

-
See also
erase(IteratorType) – removes the element at a given position
-
-erase(IteratorType, IteratorType) – removes the elements in the given range
-
-erase(const typename object_t::key_type&) – removes the element from an object at the given key
-
Since
version 1.0.0
- -
-
- -

◆ erase() [2/8]

- -
-
- - - - - -
- - - - - - - - -
void nlohmann::basic_json::erase (const size_type idx)
-
-inline
-
- -

remove element from a JSON array given an index

-

Removes element from a JSON array at the index idx.

-
Parameters
- - -
[in]idxindex of the element to remove
-
-
-
Exceptions
- - - -
type_error.307when called on a type other than JSON object; example: "cannot use erase() with null"
out_of_range.401when idx >= size(); example: "array index 17 -is out of range"
-
-
-

@complexity Linear in distance between idx and the end of the container.

-

@liveexample{The example shows the effect of erase().,erase__size_type}

-
See also
erase(IteratorType) – removes the element at a given position
-
-erase(IteratorType, IteratorType) – removes the elements in the given range
-
-erase(const typename object_t::key_type&) – removes the element from an object at the given key
-
Since
version 1.0.0
- -
-
- -

◆ erase() [3/8]

- -
-
- - - - - -
- - - - - - - - -
size_type nlohmann::basic_json::erase (const typename object_t::key_type & key)
-
-inline
-
- -

remove element from a JSON object given a key

-

Removes elements from a JSON object with the key value key.

-
Parameters
- - -
[in]keyvalue of the elements to remove
-
-
-
Returns
Number of elements removed. If ObjectType is the default std::map type, the return value will always be 0 (key was not found) or 1 (key was found).
-
Postcondition
References and iterators to the erased elements are invalidated. Other references and iterators are not affected.
-
Exceptions
- - -
type_error.307when called on a type other than JSON object; example: "cannot use erase() with null"
-
-
-

@complexity log(size()) + count(key)

-

@liveexample{The example shows the effect of erase().,erase__key_type}

-
See also
erase(IteratorType) – removes the element at a given position
-
-erase(IteratorType, IteratorType) – removes the elements in the given range
-
-erase(const size_type) – removes the element from an array at the given index
-
Since
version 1.0.0
- -
-
- -

◆ erase() [4/8]

- -
-
- - - - - -
- - - - - - - - -
size_type nlohmann::basic_json::erase (const typename object_t::key_type & key)
-
-inline
-
- -

remove element from a JSON object given a key

-

Removes elements from a JSON object with the key value key.

-
Parameters
- - -
[in]keyvalue of the elements to remove
-
-
-
Returns
Number of elements removed. If ObjectType is the default std::map type, the return value will always be 0 (key was not found) or 1 (key was found).
-
Postcondition
References and iterators to the erased elements are invalidated. Other references and iterators are not affected.
-
Exceptions
- - -
type_error.307when called on a type other than JSON object; example: "cannot use erase() with null"
-
-
-

@complexity log(size()) + count(key)

-

@liveexample{The example shows the effect of erase().,erase__key_type}

-
See also
erase(IteratorType) – removes the element at a given position
-
-erase(IteratorType, IteratorType) – removes the elements in the given range
-
-erase(const size_type) – removes the element from an array at the given index
-
Since
version 1.0.0
- -
-
- -

◆ erase() [5/8]

- -
-
-
-template<class IteratorType , typename std::enable_if< std::is_same< IteratorType, typename basic_json_t::iterator >::value or std::is_same< IteratorType, typename basic_json_t::const_iterator >::value, int >::type = 0>
- - - - - -
- - - - - - - - - - - - - - - - - - -
IteratorType nlohmann::basic_json::erase (IteratorType first,
IteratorType last 
)
-
-inline
-
- -

remove elements given an iterator range

-

Removes the element specified by the range [first; last). The iterator first does not need to be dereferenceable if first == last: erasing an empty range is a no-op.

-

If called on a primitive type other than null, the resulting JSON value will be null.

-
Parameters
- - - -
[in]firstiterator to the beginning of the range to remove
[in]lastiterator past the end of the range to remove
-
-
-
Returns
Iterator following the last removed element. If the iterator second refers to the last element, the end() iterator is returned.
-
Template Parameters
- - -
IteratorTypean iterator or const_iterator
-
-
-
Postcondition
Invalidates iterators and references at or after the point of the erase, including the end() iterator.
-
Exceptions
- - - - -
type_error.307if called on a null value; example: "cannot use -erase() with null"
invalid_iterator.203if called on iterators which does not belong to the current JSON value; example: "iterators do not fit current value"
invalid_iterator.204if called on a primitive type with invalid iterators (i.e., if first != begin() and last != end()); example: "iterators out of range"
-
-
-

@complexity The complexity depends on the type:

    -
  • objects: log(size()) + std::distance(first, last)
  • -
  • arrays: linear in the distance between first and last, plus linear in the distance between last and end of the container
  • -
  • strings: linear in the length of the string
  • -
  • other types: constant
  • -
-

@liveexample{The example shows the result of erase() for different JSON types.,erase__IteratorType_IteratorType}

-
See also
erase(IteratorType) – removes the element at a given position
-
-erase(const typename object_t::key_type&) – removes the element from an object at the given key
-
-erase(const size_type) – removes the element from an array at the given index
-
Since
version 1.0.0
- -
-
- -

◆ erase() [6/8]

- -
-
-
-template<class IteratorType , typename std::enable_if< std::is_same< IteratorType, typename basic_json_t::iterator >::value||std::is_same< IteratorType, typename basic_json_t::const_iterator >::value, int >::type = 0>
- - - - - -
- - - - - - - - - - - - - - - - - - -
IteratorType nlohmann::basic_json::erase (IteratorType first,
IteratorType last 
)
-
-inline
-
- -

remove elements given an iterator range

-

Removes the element specified by the range [first; last). The iterator first does not need to be dereferenceable if first == last: erasing an empty range is a no-op.

-

If called on a primitive type other than null, the resulting JSON value will be null.

-
Parameters
- - - -
[in]firstiterator to the beginning of the range to remove
[in]lastiterator past the end of the range to remove
-
-
-
Returns
Iterator following the last removed element. If the iterator second refers to the last element, the end() iterator is returned.
-
Template Parameters
- - -
IteratorTypean iterator or const_iterator
-
-
-
Postcondition
Invalidates iterators and references at or after the point of the erase, including the end() iterator.
-
Exceptions
- - - - -
type_error.307if called on a null value; example: "cannot use -erase() with null"
invalid_iterator.203if called on iterators which does not belong to the current JSON value; example: "iterators do not fit current value"
invalid_iterator.204if called on a primitive type with invalid iterators (i.e., if first != begin() and last != end()); example: "iterators out of range"
-
-
-

@complexity The complexity depends on the type:

    -
  • objects: log(size()) + std::distance(first, last)
  • -
  • arrays: linear in the distance between first and last, plus linear in the distance between last and end of the container
  • -
  • strings and binary: linear in the length of the member
  • -
  • other types: constant
  • -
-

@liveexample{The example shows the result of erase() for different JSON types.,erase__IteratorType_IteratorType}

-
See also
erase(IteratorType) – removes the element at a given position
-
-erase(const typename object_t::key_type&) – removes the element from an object at the given key
-
-erase(const size_type) – removes the element from an array at the given index
-
Since
version 1.0.0
- -
-
- -

◆ erase() [7/8]

- -
-
-
-template<class IteratorType , typename std::enable_if< std::is_same< IteratorType, typename basic_json_t::iterator >::value or std::is_same< IteratorType, typename basic_json_t::const_iterator >::value, int >::type = 0>
- - - - - -
- - - - - - - - -
IteratorType nlohmann::basic_json::erase (IteratorType pos)
-
-inline
-
- -

remove element given an iterator

-

Removes the element specified by iterator pos. The iterator pos must be valid and dereferenceable. Thus the end() iterator (which is valid, but is not dereferenceable) cannot be used as a value for pos.

-

If called on a primitive type other than null, the resulting JSON value will be null.

-
Parameters
- - -
[in]positerator to the element to remove
-
-
-
Returns
Iterator following the last removed element. If the iterator pos refers to the last element, the end() iterator is returned.
-
Template Parameters
- - -
IteratorTypean iterator or const_iterator
-
-
-
Postcondition
Invalidates iterators and references at or after the point of the erase, including the end() iterator.
-
Exceptions
- - - - -
type_error.307if called on a null value; example: "cannot use -erase() with null"
invalid_iterator.202if called on an iterator which does not belong to the current JSON value; example: "iterator does not fit current -value"
invalid_iterator.205if called on a primitive type with invalid iterator (i.e., any iterator which is not begin()); example: "iterator -out of range"
-
-
-

@complexity The complexity depends on the type:

    -
  • objects: amortized constant
  • -
  • arrays: linear in distance between pos and the end of the container
  • -
  • strings: linear in the length of the string
  • -
  • other types: constant
  • -
-

@liveexample{The example shows the result of erase() for different JSON types.,erase__IteratorType}

-
See also
erase(IteratorType, IteratorType) – removes the elements in the given range
-
-erase(const typename object_t::key_type&) – removes the element from an object at the given key
-
-erase(const size_type) – removes the element from an array at the given index
-
Since
version 1.0.0
- -
-
- -

◆ erase() [8/8]

- -
-
-
-template<class IteratorType , typename std::enable_if< std::is_same< IteratorType, typename basic_json_t::iterator >::value||std::is_same< IteratorType, typename basic_json_t::const_iterator >::value, int >::type = 0>
- - - - - -
- - - - - - - - -
IteratorType nlohmann::basic_json::erase (IteratorType pos)
-
-inline
-
- -

remove element given an iterator

-

Removes the element specified by iterator pos. The iterator pos must be valid and dereferenceable. Thus the end() iterator (which is valid, but is not dereferenceable) cannot be used as a value for pos.

-

If called on a primitive type other than null, the resulting JSON value will be null.

-
Parameters
- - -
[in]positerator to the element to remove
-
-
-
Returns
Iterator following the last removed element. If the iterator pos refers to the last element, the end() iterator is returned.
-
Template Parameters
- - -
IteratorTypean iterator or const_iterator
-
-
-
Postcondition
Invalidates iterators and references at or after the point of the erase, including the end() iterator.
-
Exceptions
- - - - -
type_error.307if called on a null value; example: "cannot use -erase() with null"
invalid_iterator.202if called on an iterator which does not belong to the current JSON value; example: "iterator does not fit current -value"
invalid_iterator.205if called on a primitive type with invalid iterator (i.e., any iterator which is not begin()); example: "iterator -out of range"
-
-
-

@complexity The complexity depends on the type:

    -
  • objects: amortized constant
  • -
  • arrays: linear in distance between pos and the end of the container
  • -
  • strings and binary: linear in the length of the member
  • -
  • other types: constant
  • -
-

@liveexample{The example shows the result of erase() for different JSON types.,erase__IteratorType}

-
See also
erase(IteratorType, IteratorType) – removes the elements in the given range
-
-erase(const typename object_t::key_type&) – removes the element from an object at the given key
-
-erase(const size_type) – removes the element from an array at the given index
-
Since
version 1.0.0
- -
-
- -

◆ find() [1/4]

- -
-
-
-template<typename KeyT >
- - - - - -
- - - - - - - - -
iterator nlohmann::basic_json::find (KeyT && key)
-
-inline
-
- -

find an element in a JSON object

-

Finds an element in a JSON object with key equivalent to key. If the element is not found or the JSON value is not an object, end() is returned.

-
Note
This method always returns end() when executed on a JSON type that is not an object.
-
Parameters
- - -
[in]keykey value of the element to search for.
-
-
-
Returns
Iterator to an element with key equivalent to key. If no such element is found or the JSON value is not an object, past-the-end (see end()) iterator is returned.
-

@complexity Logarithmic in the size of the JSON object.

-

@liveexample{The example shows how find() is used.,find__key_type}

-
See also
contains(KeyT&&) const – checks whether a key exists
-
Since
version 1.0.0
- -
-
- -

◆ find() [2/4]

- -
-
-
-template<typename KeyT >
- - - - - -
- - - - - - - - -
iterator nlohmann::basic_json::find (KeyT && key)
-
-inline
-
- -

find an element in a JSON object

-

Finds an element in a JSON object with key equivalent to key. If the element is not found or the JSON value is not an object, end() is returned.

-
Note
This method always returns end() when executed on a JSON type that is not an object.
-
Parameters
- - -
[in]keykey value of the element to search for.
-
-
-
Returns
Iterator to an element with key equivalent to key. If no such element is found or the JSON value is not an object, past-the-end (see end()) iterator is returned.
-

@complexity Logarithmic in the size of the JSON object.

-

@liveexample{The example shows how find() is used.,find__key_type}

-
See also
contains(KeyT&&) const – checks whether a key exists
-
Since
version 1.0.0
- -
-
- -

◆ find() [3/4]

- -
-
-
-template<typename KeyT >
- - - - - -
- - - - - - - - -
const_iterator nlohmann::basic_json::find (KeyT && key) const
-
-inline
-
- -

find an element in a JSON object

-

find an element in a JSON object Finds an element in a JSON object with key equivalent to key. If the element is not found or the JSON value is not an object, end() is returned.

-
Note
This method always returns end() when executed on a JSON type that is not an object.
-
Parameters
- - -
[in]keykey value of the element to search for.
-
-
-
Returns
Iterator to an element with key equivalent to key. If no such element is found or the JSON value is not an object, past-the-end (see end()) iterator is returned.
-

@complexity Logarithmic in the size of the JSON object.

-

@liveexample{The example shows how find() is used.,find__key_type}

-
See also
contains(KeyT&&) const – checks whether a key exists
-
Since
version 1.0.0
- -
-
- -

◆ find() [4/4]

- -
-
-
-template<typename KeyT >
- - - - - -
- - - - - - - - -
const_iterator nlohmann::basic_json::find (KeyT && key) const
-
-inline
-
- -

find an element in a JSON object

-

find an element in a JSON object Finds an element in a JSON object with key equivalent to key. If the element is not found or the JSON value is not an object, end() is returned.

-
Note
This method always returns end() when executed on a JSON type that is not an object.
-
Parameters
- - -
[in]keykey value of the element to search for.
-
-
-
Returns
Iterator to an element with key equivalent to key. If no such element is found or the JSON value is not an object, past-the-end (see end()) iterator is returned.
-

@complexity Logarithmic in the size of the JSON object.

-

@liveexample{The example shows how find() is used.,find__key_type}

-
See also
contains(KeyT&&) const – checks whether a key exists
-
Since
version 1.0.0
- -
-
- -

◆ flatten() [1/2]

- -
-
- - - - - -
- - - - - - - -
basic_json nlohmann::basic_json::flatten () const
-
-inline
-
- -

return flattened JSON value

-

The function creates a JSON object whose keys are JSON pointers (see RFC 6901) and whose values are all primitive. The original JSON value can be restored using the unflatten() function.

-
Returns
an object that maps JSON pointers to primitive values
-
Note
Empty objects and arrays are flattened to null and will not be reconstructed correctly by the unflatten() function.
-

@complexity Linear in the size the JSON value.

-

@liveexample{The following code shows how a JSON object is flattened to an object whose keys consist of JSON pointers.,flatten}

-
See also
unflatten() for the reverse function
-
Since
version 2.0.0
- -
-
- -

◆ flatten() [2/2]

- -
-
- - - - - -
- - - - - - - -
basic_json nlohmann::basic_json::flatten () const
-
-inline
-
- -

return flattened JSON value

-

The function creates a JSON object whose keys are JSON pointers (see RFC 6901) and whose values are all primitive. The original JSON value can be restored using the unflatten() function.

-
Returns
an object that maps JSON pointers to primitive values
-
Note
Empty objects and arrays are flattened to null and will not be reconstructed correctly by the unflatten() function.
-

@complexity Linear in the size the JSON value.

-

@liveexample{The following code shows how a JSON object is flattened to an object whose keys consist of JSON pointers.,flatten}

-
See also
unflatten() for the reverse function
-
Since
version 2.0.0
- -
-
- -

◆ from_bson() [1/6]

- -
-
-
-template<typename A1 , typename A2 , detail::enable_if_t< std::is_constructible< detail::input_adapter, A1, A2 >::value, int > = 0>
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json nlohmann::basic_json::from_bson (A1 && a1,
A2 && a2,
const bool strict = true,
const bool allow_exceptions = true 
)
-
-inlinestatic
-
- -

Create a JSON value from an input in BSON format.

-

Deserializes a given input i to a JSON value using the BSON (Binary JSON) serialization format.

-

The library maps BSON record types to JSON value types as follows:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
BSON type BSON marker byte JSON value type
double 0x01 number_float
string 0x02 string
document 0x03 object
array 0x04 array
binary 0x05 still unsupported
undefined 0x06 still unsupported
ObjectId 0x07 still unsupported
boolean 0x08 boolean
UTC Date-Time 0x09 still unsupported
null 0x0A null
Regular Expr. 0x0B still unsupported
DB Pointer 0x0C still unsupported
JavaScript Code 0x0D still unsupported
Symbol 0x0E still unsupported
JavaScript Code 0x0F still unsupported
int32 0x10 number_integer
Timestamp 0x11 still unsupported
128-bit decimal float 0x13 still unsupported
Max Key 0x7F still unsupported
Min Key 0xFF still unsupported
-
Warning
The mapping is incomplete. The unsupported mappings are indicated in the table above.
-
Parameters
- - - - -
[in]ian input in BSON format convertible to an input adapter
[in]strictwhether to expect the input to be consumed until EOF (true by default)
[in]allow_exceptionswhether to throw exceptions in case of a parse error (optional, true by default)
-
-
-
Returns
deserialized JSON value; in case of a parse error and allow_exceptions set to false, the return value will be value_t::discarded.
-
Exceptions
- - -
parse_error.114if an unsupported BSON record type is encountered
-
-
-

@complexity Linear in the size of the input i.

-

@liveexample{The example shows the deserialization of a byte vector in BSON format to a JSON value.,from_bson}

-
See also
http://bsonspec.org/spec.html
-
-to_bson(const basic_json&) for the analogous serialization
-
-from_cbor(detail::input_adapter&&, const bool, const bool) for the related CBOR format
-
-from_msgpack(detail::input_adapter&&, const bool, const bool) for the related MessagePack format
-
-from_ubjson(detail::input_adapter&&, const bool, const bool) for the related UBJSON format
- -
-
- -

◆ from_bson() [2/6]

- -
-
-
-template<typename T >
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json nlohmann::basic_json::from_bson (const T * ptr,
std::size_t len,
const bool strict = true,
const bool allow_exceptions = true 
)
-
-inlinestatic
-
- -
-
- -

◆ from_bson() [3/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json nlohmann::basic_json::from_bson (detail::input_adapter && i,
const bool strict = true,
const bool allow_exceptions = true 
)
-
-inlinestatic
-
- -

Create a JSON value from an input in BSON format.

-

Deserializes a given input i to a JSON value using the BSON (Binary JSON) serialization format.

-

The library maps BSON record types to JSON value types as follows:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
BSON type BSON marker byte JSON value type
double 0x01 number_float
string 0x02 string
document 0x03 object
array 0x04 array
binary 0x05 still unsupported
undefined 0x06 still unsupported
ObjectId 0x07 still unsupported
boolean 0x08 boolean
UTC Date-Time 0x09 still unsupported
null 0x0A null
Regular Expr. 0x0B still unsupported
DB Pointer 0x0C still unsupported
JavaScript Code 0x0D still unsupported
Symbol 0x0E still unsupported
JavaScript Code 0x0F still unsupported
int32 0x10 number_integer
Timestamp 0x11 still unsupported
128-bit decimal float 0x13 still unsupported
Max Key 0x7F still unsupported
Min Key 0xFF still unsupported
-
Warning
The mapping is incomplete. The unsupported mappings are indicated in the table above.
-
Parameters
- - - - -
[in]ian input in BSON format convertible to an input adapter
[in]strictwhether to expect the input to be consumed until EOF (true by default)
[in]allow_exceptionswhether to throw exceptions in case of a parse error (optional, true by default)
-
-
-
Returns
deserialized JSON value; in case of a parse error and allow_exceptions set to false, the return value will be value_t::discarded.
-
Exceptions
- - -
parse_error.114if an unsupported BSON record type is encountered
-
-
-

@complexity Linear in the size of the input i.

-

@liveexample{The example shows the deserialization of a byte vector in BSON format to a JSON value.,from_bson}

-
See also
http://bsonspec.org/spec.html
-
-to_bson(const basic_json&) for the analogous serialization
-
-from_cbor(detail::input_adapter&&, const bool, const bool) for the related CBOR format
-
-from_msgpack(detail::input_adapter&&, const bool, const bool) for the related MessagePack format
-
-from_ubjson(detail::input_adapter&&, const bool, const bool) for the related UBJSON format
- -
-
- -

◆ from_bson() [4/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json nlohmann::basic_json::from_bson (detail::span_input_adapter && i,
const bool strict = true,
const bool allow_exceptions = true 
)
-
-inlinestatic
-
- -
-
- -

◆ from_bson() [5/6]

- -
-
-
-template<typename InputType >
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json nlohmann::basic_json::from_bson (InputType && i,
const bool strict = true,
const bool allow_exceptions = true 
)
-
-inlinestatic
-
- -

Create a JSON value from an input in BSON format.

-

Deserializes a given input i to a JSON value using the BSON (Binary JSON) serialization format.

-

The library maps BSON record types to JSON value types as follows:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
BSON type BSON marker byte JSON value type
double 0x01 number_float
string 0x02 string
document 0x03 object
array 0x04 array
binary 0x05 still unsupported
undefined 0x06 still unsupported
ObjectId 0x07 still unsupported
boolean 0x08 boolean
UTC Date-Time 0x09 still unsupported
null 0x0A null
Regular Expr. 0x0B still unsupported
DB Pointer 0x0C still unsupported
JavaScript Code 0x0D still unsupported
Symbol 0x0E still unsupported
JavaScript Code 0x0F still unsupported
int32 0x10 number_integer
Timestamp 0x11 still unsupported
128-bit decimal float 0x13 still unsupported
Max Key 0x7F still unsupported
Min Key 0xFF still unsupported
-
Warning
The mapping is incomplete. The unsupported mappings are indicated in the table above.
-
Parameters
- - - - -
[in]ian input in BSON format convertible to an input adapter
[in]strictwhether to expect the input to be consumed until EOF (true by default)
[in]allow_exceptionswhether to throw exceptions in case of a parse error (optional, true by default)
-
-
-
Returns
deserialized JSON value; in case of a parse error and allow_exceptions set to false, the return value will be value_t::discarded.
-
Exceptions
- - -
parse_error.114if an unsupported BSON record type is encountered
-
-
-

@complexity Linear in the size of the input i.

-

@liveexample{The example shows the deserialization of a byte vector in BSON format to a JSON value.,from_bson}

-
See also
http://bsonspec.org/spec.html
-
-to_bson(const basic_json&) for the analogous serialization
-
-from_cbor(detail::input_adapter&&, const bool, const bool, const cbor_tag_handler_t) for the related CBOR format
-
-from_msgpack(detail::input_adapter&&, const bool, const bool) for the related MessagePack format
-
-from_ubjson(detail::input_adapter&&, const bool, const bool) for the related UBJSON format
- -
-
- -

◆ from_bson() [6/6]

- -
-
-
-template<typename IteratorType >
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json nlohmann::basic_json::from_bson (IteratorType first,
IteratorType last,
const bool strict = true,
const bool allow_exceptions = true 
)
-
-inlinestatic
-
- -

Create a JSON value from an input in BSON format.

-

Deserializes a given input i to a JSON value using the BSON (Binary JSON) serialization format.

-

The library maps BSON record types to JSON value types as follows:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
BSON type BSON marker byte JSON value type
double 0x01 number_float
string 0x02 string
document 0x03 object
array 0x04 array
binary 0x05 still unsupported
undefined 0x06 still unsupported
ObjectId 0x07 still unsupported
boolean 0x08 boolean
UTC Date-Time 0x09 still unsupported
null 0x0A null
Regular Expr. 0x0B still unsupported
DB Pointer 0x0C still unsupported
JavaScript Code 0x0D still unsupported
Symbol 0x0E still unsupported
JavaScript Code 0x0F still unsupported
int32 0x10 number_integer
Timestamp 0x11 still unsupported
128-bit decimal float 0x13 still unsupported
Max Key 0x7F still unsupported
Min Key 0xFF still unsupported
-
Warning
The mapping is incomplete. The unsupported mappings are indicated in the table above.
-
Parameters
- - - - -
[in]ian input in BSON format convertible to an input adapter
[in]strictwhether to expect the input to be consumed until EOF (true by default)
[in]allow_exceptionswhether to throw exceptions in case of a parse error (optional, true by default)
-
-
-
Returns
deserialized JSON value; in case of a parse error and allow_exceptions set to false, the return value will be value_t::discarded.
-
Exceptions
- - -
parse_error.114if an unsupported BSON record type is encountered
-
-
-

@complexity Linear in the size of the input i.

-

@liveexample{The example shows the deserialization of a byte vector in BSON format to a JSON value.,from_bson}

-
See also
http://bsonspec.org/spec.html
-
-to_bson(const basic_json&) for the analogous serialization
-
-from_cbor(detail::input_adapter&&, const bool, const bool) for the related CBOR format
-
-from_msgpack(detail::input_adapter&&, const bool, const bool) for the related MessagePack format
-
-from_ubjson(detail::input_adapter&&, const bool, const bool) for the related UBJSON format
- -
-
- -

◆ from_cbor() [1/6]

- -
-
-
-template<typename A1 , typename A2 , detail::enable_if_t< std::is_constructible< detail::input_adapter, A1, A2 >::value, int > = 0>
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json nlohmann::basic_json::from_cbor (A1 && a1,
A2 && a2,
const bool strict = true,
const bool allow_exceptions = true 
)
-
-inlinestatic
-
- -

create a JSON value from an input in CBOR format

-

Deserializes a given input i to a JSON value using the CBOR (Concise Binary Object Representation) serialization format.

-

The library maps CBOR types to JSON value types as follows:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
CBOR type JSON value type first byte
Integer number_unsigned 0x00..0x17
Unsigned integer number_unsigned 0x18
Unsigned integer number_unsigned 0x19
Unsigned integer number_unsigned 0x1A
Unsigned integer number_unsigned 0x1B
Negative integer number_integer 0x20..0x37
Negative integer number_integer 0x38
Negative integer number_integer 0x39
Negative integer number_integer 0x3A
Negative integer number_integer 0x3B
Negative integer number_integer 0x40..0x57
UTF-8 string string 0x60..0x77
UTF-8 string string 0x78
UTF-8 string string 0x79
UTF-8 string string 0x7A
UTF-8 string string 0x7B
UTF-8 string string 0x7F
array array 0x80..0x97
array array 0x98
array array 0x99
array array 0x9A
array array 0x9B
array array 0x9F
map object 0xA0..0xB7
map object 0xB8
map object 0xB9
map object 0xBA
map object 0xBB
map object 0xBF
False false 0xF4
True true 0xF5
Null null 0xF6
Half-Precision Float number_float 0xF9
Single-Precision Float number_float 0xFA
Double-Precision Float number_float 0xFB
-
Warning
The mapping is incomplete in the sense that not all CBOR types can be converted to a JSON value. The following CBOR types are not supported and will yield parse errors (parse_error.112):
    -
  • byte strings (0x40..0x5F)
  • -
  • date/time (0xC0..0xC1)
  • -
  • bignum (0xC2..0xC3)
  • -
  • decimal fraction (0xC4)
  • -
  • bigfloat (0xC5)
  • -
  • tagged items (0xC6..0xD4, 0xD8..0xDB)
  • -
  • expected conversions (0xD5..0xD7)
  • -
  • simple values (0xE0..0xF3, 0xF8)
  • -
  • undefined (0xF7)
  • -
-
-
-CBOR allows map keys of any type, whereas JSON only allows strings as keys in object values. Therefore, CBOR maps with keys other than UTF-8 strings are rejected (parse_error.113).
-
Note
Any CBOR output created to_cbor can be successfully parsed by from_cbor.
-
Parameters
- - - - -
[in]ian input in CBOR format convertible to an input adapter
[in]strictwhether to expect the input to be consumed until EOF (true by default)
[in]allow_exceptionswhether to throw exceptions in case of a parse error (optional, true by default)
-
-
-
Returns
deserialized JSON value; in case of a parse error and allow_exceptions set to false, the return value will be value_t::discarded.
-
Exceptions
- - - - -
parse_error.110if the given input ends prematurely or the end of file was not reached when strict was set to true
parse_error.112if unsupported features from CBOR were used in the given input v or if the input is not valid CBOR
parse_error.113if a string was expected as map key, but not found
-
-
-

@complexity Linear in the size of the input i.

-

@liveexample{The example shows the deserialization of a byte vector in CBOR format to a JSON value.,from_cbor}

-
See also
http://cbor.io
-
-to_cbor(const basic_json&) for the analogous serialization
-
-from_msgpack(detail::input_adapter&&, const bool, const bool) for the related MessagePack format
-
-from_ubjson(detail::input_adapter&&, const bool, const bool) for the related UBJSON format
-
Since
version 2.0.9; parameter start_index since 2.1.1; changed to consume input adapters, removed start_index parameter, and added strict parameter since 3.0.0; added allow_exceptions parameter since 3.2.0
- -
-
- -

◆ from_cbor() [2/6]

- -
-
-
-template<typename T >
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json nlohmann::basic_json::from_cbor (const T * ptr,
std::size_t len,
const bool strict = true,
const bool allow_exceptions = true,
const cbor_tag_handler_t tag_handler = cbor_tag_handler_t::error 
)
-
-inlinestatic
-
- -
-
- -

◆ from_cbor() [3/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json nlohmann::basic_json::from_cbor (detail::input_adapter && i,
const bool strict = true,
const bool allow_exceptions = true 
)
-
-inlinestatic
-
- -

create a JSON value from an input in CBOR format

-

Deserializes a given input i to a JSON value using the CBOR (Concise Binary Object Representation) serialization format.

-

The library maps CBOR types to JSON value types as follows:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
CBOR type JSON value type first byte
Integer number_unsigned 0x00..0x17
Unsigned integer number_unsigned 0x18
Unsigned integer number_unsigned 0x19
Unsigned integer number_unsigned 0x1A
Unsigned integer number_unsigned 0x1B
Negative integer number_integer 0x20..0x37
Negative integer number_integer 0x38
Negative integer number_integer 0x39
Negative integer number_integer 0x3A
Negative integer number_integer 0x3B
Negative integer number_integer 0x40..0x57
UTF-8 string string 0x60..0x77
UTF-8 string string 0x78
UTF-8 string string 0x79
UTF-8 string string 0x7A
UTF-8 string string 0x7B
UTF-8 string string 0x7F
array array 0x80..0x97
array array 0x98
array array 0x99
array array 0x9A
array array 0x9B
array array 0x9F
map object 0xA0..0xB7
map object 0xB8
map object 0xB9
map object 0xBA
map object 0xBB
map object 0xBF
False false 0xF4
True true 0xF5
Null null 0xF6
Half-Precision Float number_float 0xF9
Single-Precision Float number_float 0xFA
Double-Precision Float number_float 0xFB
-
Warning
The mapping is incomplete in the sense that not all CBOR types can be converted to a JSON value. The following CBOR types are not supported and will yield parse errors (parse_error.112):
    -
  • byte strings (0x40..0x5F)
  • -
  • date/time (0xC0..0xC1)
  • -
  • bignum (0xC2..0xC3)
  • -
  • decimal fraction (0xC4)
  • -
  • bigfloat (0xC5)
  • -
  • tagged items (0xC6..0xD4, 0xD8..0xDB)
  • -
  • expected conversions (0xD5..0xD7)
  • -
  • simple values (0xE0..0xF3, 0xF8)
  • -
  • undefined (0xF7)
  • -
-
-
-CBOR allows map keys of any type, whereas JSON only allows strings as keys in object values. Therefore, CBOR maps with keys other than UTF-8 strings are rejected (parse_error.113).
-
Note
Any CBOR output created to_cbor can be successfully parsed by from_cbor.
-
Parameters
- - - - -
[in]ian input in CBOR format convertible to an input adapter
[in]strictwhether to expect the input to be consumed until EOF (true by default)
[in]allow_exceptionswhether to throw exceptions in case of a parse error (optional, true by default)
-
-
-
Returns
deserialized JSON value; in case of a parse error and allow_exceptions set to false, the return value will be value_t::discarded.
-
Exceptions
- - - - -
parse_error.110if the given input ends prematurely or the end of file was not reached when strict was set to true
parse_error.112if unsupported features from CBOR were used in the given input v or if the input is not valid CBOR
parse_error.113if a string was expected as map key, but not found
-
-
-

@complexity Linear in the size of the input i.

-

@liveexample{The example shows the deserialization of a byte vector in CBOR format to a JSON value.,from_cbor}

-
See also
http://cbor.io
-
-to_cbor(const basic_json&) for the analogous serialization
-
-from_msgpack(detail::input_adapter&&, const bool, const bool) for the related MessagePack format
-
-from_ubjson(detail::input_adapter&&, const bool, const bool) for the related UBJSON format
-
Since
version 2.0.9; parameter start_index since 2.1.1; changed to consume input adapters, removed start_index parameter, and added strict parameter since 3.0.0; added allow_exceptions parameter since 3.2.0
- -
-
- -

◆ from_cbor() [4/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json nlohmann::basic_json::from_cbor (detail::span_input_adapter && i,
const bool strict = true,
const bool allow_exceptions = true,
const cbor_tag_handler_t tag_handler = cbor_tag_handler_t::error 
)
-
-inlinestatic
-
- -
-
- -

◆ from_cbor() [5/6]

- -
-
-
-template<typename InputType >
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json nlohmann::basic_json::from_cbor (InputType && i,
const bool strict = true,
const bool allow_exceptions = true,
const cbor_tag_handler_t tag_handler = cbor_tag_handler_t::error 
)
-
-inlinestatic
-
- -

create a JSON value from an input in CBOR format

-

Deserializes a given input i to a JSON value using the CBOR (Concise Binary Object Representation) serialization format.

-

The library maps CBOR types to JSON value types as follows:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
CBOR type JSON value type first byte
Integer number_unsigned 0x00..0x17
Unsigned integer number_unsigned 0x18
Unsigned integer number_unsigned 0x19
Unsigned integer number_unsigned 0x1A
Unsigned integer number_unsigned 0x1B
Negative integer number_integer 0x20..0x37
Negative integer number_integer 0x38
Negative integer number_integer 0x39
Negative integer number_integer 0x3A
Negative integer number_integer 0x3B
Byte string binary 0x40..0x57
Byte string binary 0x58
Byte string binary 0x59
Byte string binary 0x5A
Byte string binary 0x5B
UTF-8 string string 0x60..0x77
UTF-8 string string 0x78
UTF-8 string string 0x79
UTF-8 string string 0x7A
UTF-8 string string 0x7B
UTF-8 string string 0x7F
array array 0x80..0x97
array array 0x98
array array 0x99
array array 0x9A
array array 0x9B
array array 0x9F
map object 0xA0..0xB7
map object 0xB8
map object 0xB9
map object 0xBA
map object 0xBB
map object 0xBF
False false 0xF4
True true 0xF5
Null null 0xF6
Half-Precision Float number_float 0xF9
Single-Precision Float number_float 0xFA
Double-Precision Float number_float 0xFB
-
Warning
The mapping is incomplete in the sense that not all CBOR types can be converted to a JSON value. The following CBOR types are not supported and will yield parse errors (parse_error.112):
    -
  • date/time (0xC0..0xC1)
  • -
  • bignum (0xC2..0xC3)
  • -
  • decimal fraction (0xC4)
  • -
  • bigfloat (0xC5)
  • -
  • expected conversions (0xD5..0xD7)
  • -
  • simple values (0xE0..0xF3, 0xF8)
  • -
  • undefined (0xF7)
  • -
-
-
-CBOR allows map keys of any type, whereas JSON only allows strings as keys in object values. Therefore, CBOR maps with keys other than UTF-8 strings are rejected (parse_error.113).
-
Note
Any CBOR output created to_cbor can be successfully parsed by from_cbor.
-
Parameters
- - - - - -
[in]ian input in CBOR format convertible to an input adapter
[in]strictwhether to expect the input to be consumed until EOF (true by default)
[in]allow_exceptionswhether to throw exceptions in case of a parse error (optional, true by default)
[in]tag_handlerhow to treat CBOR tags (optional, error by default)
-
-
-
Returns
deserialized JSON value; in case of a parse error and allow_exceptions set to false, the return value will be value_t::discarded.
-
Exceptions
- - - - -
parse_error.110if the given input ends prematurely or the end of file was not reached when strict was set to true
parse_error.112if unsupported features from CBOR were used in the given input v or if the input is not valid CBOR
parse_error.113if a string was expected as map key, but not found
-
-
-

@complexity Linear in the size of the input i.

-

@liveexample{The example shows the deserialization of a byte vector in CBOR format to a JSON value.,from_cbor}

-
See also
http://cbor.io
-
-to_cbor(const basic_json&) for the analogous serialization
-
-from_msgpack(detail::input_adapter&&, const bool, const bool) for the related MessagePack format
-
-from_ubjson(detail::input_adapter&&, const bool, const bool) for the related UBJSON format
-
Since
version 2.0.9; parameter start_index since 2.1.1; changed to consume input adapters, removed start_index parameter, and added strict parameter since 3.0.0; added allow_exceptions parameter since 3.2.0; added tag_handler parameter since 3.9.0.
- -
-
- -

◆ from_cbor() [6/6]

- -
-
-
-template<typename IteratorType >
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json nlohmann::basic_json::from_cbor (IteratorType first,
IteratorType last,
const bool strict = true,
const bool allow_exceptions = true,
const cbor_tag_handler_t tag_handler = cbor_tag_handler_t::error 
)
-
-inlinestatic
-
- -

- -
-
- -

◆ from_msgpack() [1/6]

- -
-
-
-template<typename A1 , typename A2 , detail::enable_if_t< std::is_constructible< detail::input_adapter, A1, A2 >::value, int > = 0>
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json nlohmann::basic_json::from_msgpack (A1 && a1,
A2 && a2,
const bool strict = true,
const bool allow_exceptions = true 
)
-
-inlinestatic
-
- -

create a JSON value from an input in MessagePack format

-

Deserializes a given input i to a JSON value using the MessagePack serialization format.

-

The library maps MessagePack types to JSON value types as follows:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
MessagePack type JSON value type first byte
positive fixint number_unsigned 0x00..0x7F
fixmap object 0x80..0x8F
fixarray array 0x90..0x9F
fixstr string 0xA0..0xBF
nil null 0xC0
false false 0xC2
true true 0xC3
float 32 number_float 0xCA
float 64 number_float 0xCB
uint 8 number_unsigned 0xCC
uint 16 number_unsigned 0xCD
uint 32 number_unsigned 0xCE
uint 64 number_unsigned 0xCF
int 8 number_integer 0xD0
int 16 number_integer 0xD1
int 32 number_integer 0xD2
int 64 number_integer 0xD3
str 8 string 0xD9
str 16 string 0xDA
str 32 string 0xDB
array 16 array 0xDC
array 32 array 0xDD
map 16 object 0xDE
map 32 object 0xDF
negative fixint number_integer 0xE0-0xFF
-
Warning
The mapping is incomplete in the sense that not all MessagePack types can be converted to a JSON value. The following MessagePack types are not supported and will yield parse errors:
    -
  • bin 8 - bin 32 (0xC4..0xC6)
  • -
  • ext 8 - ext 32 (0xC7..0xC9)
  • -
  • fixext 1 - fixext 16 (0xD4..0xD8)
  • -
-
-
Note
Any MessagePack output created to_msgpack can be successfully parsed by from_msgpack.
-
Parameters
- - - - -
[in]ian input in MessagePack format convertible to an input adapter
[in]strictwhether to expect the input to be consumed until EOF (true by default)
[in]allow_exceptionswhether to throw exceptions in case of a parse error (optional, true by default)
-
-
-
Returns
deserialized JSON value; in case of a parse error and allow_exceptions set to false, the return value will be value_t::discarded.
-
Exceptions
- - - - -
parse_error.110if the given input ends prematurely or the end of file was not reached when strict was set to true
parse_error.112if unsupported features from MessagePack were used in the given input i or if the input is not valid MessagePack
parse_error.113if a string was expected as map key, but not found
-
-
-

@complexity Linear in the size of the input i.

-

@liveexample{The example shows the deserialization of a byte vector in MessagePack format to a JSON value.,from_msgpack}

-
See also
http://msgpack.org
-
-to_msgpack(const basic_json&) for the analogous serialization
-
-from_cbor(detail::input_adapter&&, const bool, const bool) for the related CBOR format
-
-from_ubjson(detail::input_adapter&&, const bool, const bool) for the related UBJSON format
-
-from_bson(detail::input_adapter&&, const bool, const bool) for the related BSON format
-
Since
version 2.0.9; parameter start_index since 2.1.1; changed to consume input adapters, removed start_index parameter, and added strict parameter since 3.0.0; added allow_exceptions parameter since 3.2.0
- -
-
- -

◆ from_msgpack() [2/6]

- -
-
-
-template<typename T >
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json nlohmann::basic_json::from_msgpack (const T * ptr,
std::size_t len,
const bool strict = true,
const bool allow_exceptions = true 
)
-
-inlinestatic
-
- -
-
- -

◆ from_msgpack() [3/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json nlohmann::basic_json::from_msgpack (detail::input_adapter && i,
const bool strict = true,
const bool allow_exceptions = true 
)
-
-inlinestatic
-
- -

create a JSON value from an input in MessagePack format

-

Deserializes a given input i to a JSON value using the MessagePack serialization format.

-

The library maps MessagePack types to JSON value types as follows:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
MessagePack type JSON value type first byte
positive fixint number_unsigned 0x00..0x7F
fixmap object 0x80..0x8F
fixarray array 0x90..0x9F
fixstr string 0xA0..0xBF
nil null 0xC0
false false 0xC2
true true 0xC3
float 32 number_float 0xCA
float 64 number_float 0xCB
uint 8 number_unsigned 0xCC
uint 16 number_unsigned 0xCD
uint 32 number_unsigned 0xCE
uint 64 number_unsigned 0xCF
int 8 number_integer 0xD0
int 16 number_integer 0xD1
int 32 number_integer 0xD2
int 64 number_integer 0xD3
str 8 string 0xD9
str 16 string 0xDA
str 32 string 0xDB
array 16 array 0xDC
array 32 array 0xDD
map 16 object 0xDE
map 32 object 0xDF
negative fixint number_integer 0xE0-0xFF
-
Warning
The mapping is incomplete in the sense that not all MessagePack types can be converted to a JSON value. The following MessagePack types are not supported and will yield parse errors:
    -
  • bin 8 - bin 32 (0xC4..0xC6)
  • -
  • ext 8 - ext 32 (0xC7..0xC9)
  • -
  • fixext 1 - fixext 16 (0xD4..0xD8)
  • -
-
-
Note
Any MessagePack output created to_msgpack can be successfully parsed by from_msgpack.
-
Parameters
- - - - -
[in]ian input in MessagePack format convertible to an input adapter
[in]strictwhether to expect the input to be consumed until EOF (true by default)
[in]allow_exceptionswhether to throw exceptions in case of a parse error (optional, true by default)
-
-
-
Returns
deserialized JSON value; in case of a parse error and allow_exceptions set to false, the return value will be value_t::discarded.
-
Exceptions
- - - - -
parse_error.110if the given input ends prematurely or the end of file was not reached when strict was set to true
parse_error.112if unsupported features from MessagePack were used in the given input i or if the input is not valid MessagePack
parse_error.113if a string was expected as map key, but not found
-
-
-

@complexity Linear in the size of the input i.

-

@liveexample{The example shows the deserialization of a byte vector in MessagePack format to a JSON value.,from_msgpack}

-
See also
http://msgpack.org
-
-to_msgpack(const basic_json&) for the analogous serialization
-
-from_cbor(detail::input_adapter&&, const bool, const bool) for the related CBOR format
-
-from_ubjson(detail::input_adapter&&, const bool, const bool) for the related UBJSON format
-
-from_bson(detail::input_adapter&&, const bool, const bool) for the related BSON format
-
Since
version 2.0.9; parameter start_index since 2.1.1; changed to consume input adapters, removed start_index parameter, and added strict parameter since 3.0.0; added allow_exceptions parameter since 3.2.0
- -
-
- -

◆ from_msgpack() [4/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json nlohmann::basic_json::from_msgpack (detail::span_input_adapter && i,
const bool strict = true,
const bool allow_exceptions = true 
)
-
-inlinestatic
-
- -
-
- -

◆ from_msgpack() [5/6]

- -
-
-
-template<typename InputType >
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json nlohmann::basic_json::from_msgpack (InputType && i,
const bool strict = true,
const bool allow_exceptions = true 
)
-
-inlinestatic
-
- -

create a JSON value from an input in MessagePack format

-

Deserializes a given input i to a JSON value using the MessagePack serialization format.

-

The library maps MessagePack types to JSON value types as follows:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
MessagePack type JSON value type first byte
positive fixint number_unsigned 0x00..0x7F
fixmap object 0x80..0x8F
fixarray array 0x90..0x9F
fixstr string 0xA0..0xBF
nil null 0xC0
false false 0xC2
true true 0xC3
float 32 number_float 0xCA
float 64 number_float 0xCB
uint 8 number_unsigned 0xCC
uint 16 number_unsigned 0xCD
uint 32 number_unsigned 0xCE
uint 64 number_unsigned 0xCF
int 8 number_integer 0xD0
int 16 number_integer 0xD1
int 32 number_integer 0xD2
int 64 number_integer 0xD3
str 8 string 0xD9
str 16 string 0xDA
str 32 string 0xDB
array 16 array 0xDC
array 32 array 0xDD
map 16 object 0xDE
map 32 object 0xDF
bin 8 binary 0xC4
bin 16 binary 0xC5
bin 32 binary 0xC6
ext 8 binary 0xC7
ext 16 binary 0xC8
ext 32 binary 0xC9
fixext 1 binary 0xD4
fixext 2 binary 0xD5
fixext 4 binary 0xD6
fixext 8 binary 0xD7
fixext 16 binary 0xD8
negative fixint number_integer 0xE0-0xFF
-
Note
Any MessagePack output created to_msgpack can be successfully parsed by from_msgpack.
-
Parameters
- - - - -
[in]ian input in MessagePack format convertible to an input adapter
[in]strictwhether to expect the input to be consumed until EOF (true by default)
[in]allow_exceptionswhether to throw exceptions in case of a parse error (optional, true by default)
-
-
-
Returns
deserialized JSON value; in case of a parse error and allow_exceptions set to false, the return value will be value_t::discarded.
-
Exceptions
- - - - -
parse_error.110if the given input ends prematurely or the end of file was not reached when strict was set to true
parse_error.112if unsupported features from MessagePack were used in the given input i or if the input is not valid MessagePack
parse_error.113if a string was expected as map key, but not found
-
-
-

@complexity Linear in the size of the input i.

-

@liveexample{The example shows the deserialization of a byte vector in MessagePack format to a JSON value.,from_msgpack}

-
See also
http://msgpack.org
-
-to_msgpack(const basic_json&) for the analogous serialization
-
-from_cbor(detail::input_adapter&&, const bool, const bool, const cbor_tag_handler_t) for the related CBOR format
-
-from_ubjson(detail::input_adapter&&, const bool, const bool) for the related UBJSON format
-
-from_bson(detail::input_adapter&&, const bool, const bool) for the related BSON format
-
Since
version 2.0.9; parameter start_index since 2.1.1; changed to consume input adapters, removed start_index parameter, and added strict parameter since 3.0.0; added allow_exceptions parameter since 3.2.0
- -
-
- -

◆ from_msgpack() [6/6]

- -
-
-
-template<typename IteratorType >
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json nlohmann::basic_json::from_msgpack (IteratorType first,
IteratorType last,
const bool strict = true,
const bool allow_exceptions = true 
)
-
-inlinestatic
-
- -

create a JSON value from an input in MessagePack format

-

Deserializes a given input i to a JSON value using the MessagePack serialization format.

-

The library maps MessagePack types to JSON value types as follows:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
MessagePack type JSON value type first byte
positive fixint number_unsigned 0x00..0x7F
fixmap object 0x80..0x8F
fixarray array 0x90..0x9F
fixstr string 0xA0..0xBF
nil null 0xC0
false false 0xC2
true true 0xC3
float 32 number_float 0xCA
float 64 number_float 0xCB
uint 8 number_unsigned 0xCC
uint 16 number_unsigned 0xCD
uint 32 number_unsigned 0xCE
uint 64 number_unsigned 0xCF
int 8 number_integer 0xD0
int 16 number_integer 0xD1
int 32 number_integer 0xD2
int 64 number_integer 0xD3
str 8 string 0xD9
str 16 string 0xDA
str 32 string 0xDB
array 16 array 0xDC
array 32 array 0xDD
map 16 object 0xDE
map 32 object 0xDF
negative fixint number_integer 0xE0-0xFF
-
Warning
The mapping is incomplete in the sense that not all MessagePack types can be converted to a JSON value. The following MessagePack types are not supported and will yield parse errors:
    -
  • bin 8 - bin 32 (0xC4..0xC6)
  • -
  • ext 8 - ext 32 (0xC7..0xC9)
  • -
  • fixext 1 - fixext 16 (0xD4..0xD8)
  • -
-
-
Note
Any MessagePack output created to_msgpack can be successfully parsed by from_msgpack.
-
Parameters
- - - - -
[in]ian input in MessagePack format convertible to an input adapter
[in]strictwhether to expect the input to be consumed until EOF (true by default)
[in]allow_exceptionswhether to throw exceptions in case of a parse error (optional, true by default)
-
-
-
Returns
deserialized JSON value; in case of a parse error and allow_exceptions set to false, the return value will be value_t::discarded.
-
Exceptions
- - - - -
parse_error.110if the given input ends prematurely or the end of file was not reached when strict was set to true
parse_error.112if unsupported features from MessagePack were used in the given input i or if the input is not valid MessagePack
parse_error.113if a string was expected as map key, but not found
-
-
-

@complexity Linear in the size of the input i.

-

@liveexample{The example shows the deserialization of a byte vector in MessagePack format to a JSON value.,from_msgpack}

-
See also
http://msgpack.org
-
-to_msgpack(const basic_json&) for the analogous serialization
-
-from_cbor(detail::input_adapter&&, const bool, const bool) for the related CBOR format
-
-from_ubjson(detail::input_adapter&&, const bool, const bool) for the related UBJSON format
-
-from_bson(detail::input_adapter&&, const bool, const bool) for the related BSON format
-
Since
version 2.0.9; parameter start_index since 2.1.1; changed to consume input adapters, removed start_index parameter, and added strict parameter since 3.0.0; added allow_exceptions parameter since 3.2.0
- -
-
- -

◆ from_ubjson() [1/6]

- -
-
-
-template<typename A1 , typename A2 , detail::enable_if_t< std::is_constructible< detail::input_adapter, A1, A2 >::value, int > = 0>
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json nlohmann::basic_json::from_ubjson (A1 && a1,
A2 && a2,
const bool strict = true,
const bool allow_exceptions = true 
)
-
-inlinestatic
-
- -

create a JSON value from an input in UBJSON format

-

Deserializes a given input i to a JSON value using the UBJSON (Universal Binary JSON) serialization format.

-

The library maps UBJSON types to JSON value types as follows:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
UBJSON type JSON value type marker
no-op no value, next value is read N
null null Z
false false F
true true T
float32 number_float d
float64 number_float D
uint8 number_unsigned U
int8 number_integer i
int16 number_integer I
int32 number_integer l
int64 number_integer L
string string S
char string C
array array (optimized values are supported) [
object object (optimized values are supported) {
-
Note
The mapping is complete in the sense that any UBJSON value can be converted to a JSON value.
-
Parameters
- - - - -
[in]ian input in UBJSON format convertible to an input adapter
[in]strictwhether to expect the input to be consumed until EOF (true by default)
[in]allow_exceptionswhether to throw exceptions in case of a parse error (optional, true by default)
-
-
-
Returns
deserialized JSON value; in case of a parse error and allow_exceptions set to false, the return value will be value_t::discarded.
-
Exceptions
- - - - -
parse_error.110if the given input ends prematurely or the end of file was not reached when strict was set to true
parse_error.112if a parse error occurs
parse_error.113if a string could not be parsed successfully
-
-
-

@complexity Linear in the size of the input i.

-

@liveexample{The example shows the deserialization of a byte vector in UBJSON format to a JSON value.,from_ubjson}

-
See also
http://ubjson.org
-
-to_ubjson(const basic_json&, const bool, const bool) for the analogous serialization
-
-from_cbor(detail::input_adapter&&, const bool, const bool) for the related CBOR format
-
-from_msgpack(detail::input_adapter&&, const bool, const bool) for the related MessagePack format
-
-from_bson(detail::input_adapter&&, const bool, const bool) for the related BSON format
-
Since
version 3.1.0; added allow_exceptions parameter since 3.2.0
- -
-
- -

◆ from_ubjson() [2/6]

- -
-
-
-template<typename T >
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json nlohmann::basic_json::from_ubjson (const T * ptr,
std::size_t len,
const bool strict = true,
const bool allow_exceptions = true 
)
-
-inlinestatic
-
- -
-
- -

◆ from_ubjson() [3/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json nlohmann::basic_json::from_ubjson (detail::input_adapter && i,
const bool strict = true,
const bool allow_exceptions = true 
)
-
-inlinestatic
-
- -

create a JSON value from an input in UBJSON format

-

Deserializes a given input i to a JSON value using the UBJSON (Universal Binary JSON) serialization format.

-

The library maps UBJSON types to JSON value types as follows:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
UBJSON type JSON value type marker
no-op no value, next value is read N
null null Z
false false F
true true T
float32 number_float d
float64 number_float D
uint8 number_unsigned U
int8 number_integer i
int16 number_integer I
int32 number_integer l
int64 number_integer L
string string S
char string C
array array (optimized values are supported) [
object object (optimized values are supported) {
-
Note
The mapping is complete in the sense that any UBJSON value can be converted to a JSON value.
-
Parameters
- - - - -
[in]ian input in UBJSON format convertible to an input adapter
[in]strictwhether to expect the input to be consumed until EOF (true by default)
[in]allow_exceptionswhether to throw exceptions in case of a parse error (optional, true by default)
-
-
-
Returns
deserialized JSON value; in case of a parse error and allow_exceptions set to false, the return value will be value_t::discarded.
-
Exceptions
- - - - -
parse_error.110if the given input ends prematurely or the end of file was not reached when strict was set to true
parse_error.112if a parse error occurs
parse_error.113if a string could not be parsed successfully
-
-
-

@complexity Linear in the size of the input i.

-

@liveexample{The example shows the deserialization of a byte vector in UBJSON format to a JSON value.,from_ubjson}

-
See also
http://ubjson.org
-
-to_ubjson(const basic_json&, const bool, const bool) for the analogous serialization
-
-from_cbor(detail::input_adapter&&, const bool, const bool) for the related CBOR format
-
-from_msgpack(detail::input_adapter&&, const bool, const bool) for the related MessagePack format
-
-from_bson(detail::input_adapter&&, const bool, const bool) for the related BSON format
-
Since
version 3.1.0; added allow_exceptions parameter since 3.2.0
- -
-
- -

◆ from_ubjson() [4/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json nlohmann::basic_json::from_ubjson (detail::span_input_adapter && i,
const bool strict = true,
const bool allow_exceptions = true 
)
-
-inlinestatic
-
- -
-
- -

◆ from_ubjson() [5/6]

- -
-
-
-template<typename InputType >
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json nlohmann::basic_json::from_ubjson (InputType && i,
const bool strict = true,
const bool allow_exceptions = true 
)
-
-inlinestatic
-
- -

create a JSON value from an input in UBJSON format

-

Deserializes a given input i to a JSON value using the UBJSON (Universal Binary JSON) serialization format.

-

The library maps UBJSON types to JSON value types as follows:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
UBJSON type JSON value type marker
no-op no value, next value is read N
null null Z
false false F
true true T
float32 number_float d
float64 number_float D
uint8 number_unsigned U
int8 number_integer i
int16 number_integer I
int32 number_integer l
int64 number_integer L
high-precision number number_integer, number_unsigned, or number_float - depends on number string 'H'
string string S
char string C
array array (optimized values are supported) [
object object (optimized values are supported) {
-
Note
The mapping is complete in the sense that any UBJSON value can be converted to a JSON value.
-
Parameters
- - - - -
[in]ian input in UBJSON format convertible to an input adapter
[in]strictwhether to expect the input to be consumed until EOF (true by default)
[in]allow_exceptionswhether to throw exceptions in case of a parse error (optional, true by default)
-
-
-
Returns
deserialized JSON value; in case of a parse error and allow_exceptions set to false, the return value will be value_t::discarded.
-
Exceptions
- - - - -
parse_error.110if the given input ends prematurely or the end of file was not reached when strict was set to true
parse_error.112if a parse error occurs
parse_error.113if a string could not be parsed successfully
-
-
-

@complexity Linear in the size of the input i.

-

@liveexample{The example shows the deserialization of a byte vector in UBJSON format to a JSON value.,from_ubjson}

-
See also
http://ubjson.org
-
-to_ubjson(const basic_json&, const bool, const bool) for the analogous serialization
-
-from_cbor(detail::input_adapter&&, const bool, const bool, const cbor_tag_handler_t) for the related CBOR format
-
-from_msgpack(detail::input_adapter&&, const bool, const bool) for the related MessagePack format
-
-from_bson(detail::input_adapter&&, const bool, const bool) for the related BSON format
-
Since
version 3.1.0; added allow_exceptions parameter since 3.2.0
- -
-
- -

◆ from_ubjson() [6/6]

- -
-
-
-template<typename IteratorType >
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json nlohmann::basic_json::from_ubjson (IteratorType first,
IteratorType last,
const bool strict = true,
const bool allow_exceptions = true 
)
-
-inlinestatic
-
- -

create a JSON value from an input in UBJSON format

-

Deserializes a given input i to a JSON value using the UBJSON (Universal Binary JSON) serialization format.

-

The library maps UBJSON types to JSON value types as follows:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
UBJSON type JSON value type marker
no-op no value, next value is read N
null null Z
false false F
true true T
float32 number_float d
float64 number_float D
uint8 number_unsigned U
int8 number_integer i
int16 number_integer I
int32 number_integer l
int64 number_integer L
string string S
char string C
array array (optimized values are supported) [
object object (optimized values are supported) {
-
Note
The mapping is complete in the sense that any UBJSON value can be converted to a JSON value.
-
Parameters
- - - - -
[in]ian input in UBJSON format convertible to an input adapter
[in]strictwhether to expect the input to be consumed until EOF (true by default)
[in]allow_exceptionswhether to throw exceptions in case of a parse error (optional, true by default)
-
-
-
Returns
deserialized JSON value; in case of a parse error and allow_exceptions set to false, the return value will be value_t::discarded.
-
Exceptions
- - - - -
parse_error.110if the given input ends prematurely or the end of file was not reached when strict was set to true
parse_error.112if a parse error occurs
parse_error.113if a string could not be parsed successfully
-
-
-

@complexity Linear in the size of the input i.

-

@liveexample{The example shows the deserialization of a byte vector in UBJSON format to a JSON value.,from_ubjson}

-
See also
http://ubjson.org
-
-to_ubjson(const basic_json&, const bool, const bool) for the analogous serialization
-
-from_cbor(detail::input_adapter&&, const bool, const bool) for the related CBOR format
-
-from_msgpack(detail::input_adapter&&, const bool, const bool) for the related MessagePack format
-
-from_bson(detail::input_adapter&&, const bool, const bool) for the related BSON format
-
Since
version 3.1.0; added allow_exceptions parameter since 3.2.0
- -
-
- -

◆ front() [1/4]

- -
-
- - - - - -
- - - - - - - -
reference nlohmann::basic_json::front ()
-
-inline
-
- -

access the first element

-

Returns a reference to the first element in the container. For a JSON container c, the expression c.front() is equivalent to *c.begin().

-
Returns
In case of a structured type (array or object), a reference to the first element is returned. In case of number, string, or boolean values, a reference to the value is returned.
-

@complexity Constant.

-
Precondition
The JSON value must not be null (would throw std::out_of_range) or an empty array or object (undefined behavior, guarded by assertions).
-
Postcondition
The JSON value remains unchanged.
-
Exceptions
- - -
invalid_iterator.214when called on null value
-
-
-

@liveexample{The following code shows an example for front().,front}

-
See also
back() – access the last element
-
Since
version 1.0.0
- -
-
- -

◆ front() [2/4]

- -
-
- - - - - -
- - - - - - - -
reference nlohmann::basic_json::front ()
-
-inline
-
- -

access the first element

-

Returns a reference to the first element in the container. For a JSON container c, the expression c.front() is equivalent to *c.begin().

-
Returns
In case of a structured type (array or object), a reference to the first element is returned. In case of number, string, boolean, or binary values, a reference to the value is returned.
-

@complexity Constant.

-
Precondition
The JSON value must not be null (would throw std::out_of_range) or an empty array or object (undefined behavior, guarded by assertions).
-
Postcondition
The JSON value remains unchanged.
-
Exceptions
- - -
invalid_iterator.214when called on null value
-
-
-

@liveexample{The following code shows an example for front().,front}

-
See also
back() – access the last element
-
Since
version 1.0.0
- -
-
- -

◆ front() [3/4]

- -
-
- - - - - -
- - - - - - - -
const_reference nlohmann::basic_json::front () const
-
-inline
-
- -

access the first element

-

Returns a reference to the first element in the container. For a JSON container c, the expression c.front() is equivalent to *c.begin().

-
Returns
In case of a structured type (array or object), a reference to the first element is returned. In case of number, string, or boolean values, a reference to the value is returned.
-

@complexity Constant.

-
Precondition
The JSON value must not be null (would throw std::out_of_range) or an empty array or object (undefined behavior, guarded by assertions).
-
Postcondition
The JSON value remains unchanged.
-
Exceptions
- - -
invalid_iterator.214when called on null value
-
-
-

@liveexample{The following code shows an example for front().,front}

-
See also
back() – access the last element
-
Since
version 1.0.0
- -
-
- -

◆ front() [4/4]

- -
-
- - - - - -
- - - - - - - -
const_reference nlohmann::basic_json::front () const
-
-inline
-
- -

access the first element

-

Returns a reference to the first element in the container. For a JSON container c, the expression c.front() is equivalent to *c.begin().

-
Returns
In case of a structured type (array or object), a reference to the first element is returned. In case of number, string, or boolean values, a reference to the value is returned.
-

@complexity Constant.

-
Precondition
The JSON value must not be null (would throw std::out_of_range) or an empty array or object (undefined behavior, guarded by assertions).
-
Postcondition
The JSON value remains unchanged.
-
Exceptions
- - -
invalid_iterator.214when called on null value
-
-
-

@liveexample{The following code shows an example for front().,front}

-
See also
back() – access the last element
-
Since
version 1.0.0
- -
-
- -

◆ get() [1/12]

- -
-
-
-template<typename BasicJsonType , detail::enable_if_t< std::is_same< typename std::remove_const< BasicJsonType >::type, basic_json_t >::value, int > = 0>
- - - - - -
- - - - - - - -
basic_json nlohmann::basic_json::get () const
-
-inline
-
- -

get special-case overload

-

This overloads avoids a lot of template boilerplate, it can be seen as the identity method

-
Template Parameters
- - -
BasicJsonType== basic_json
-
-
-
Returns
a copy of *this
-

@complexity Constant.

-
Since
version 2.1.0
- -
-
- -

◆ get() [2/12]

- -
-
-
-template<typename BasicJsonType , detail::enable_if_t< not std::is_same< BasicJsonType, basic_json >::value and detail::is_basic_json< BasicJsonType >::value, int > = 0>
- - - - - -
- - - - - - - -
BasicJsonType nlohmann::basic_json::get () const
-
-inline
-
- -

get special-case overload

-

This overloads converts the current basic_json in a different basic_json type

-
Template Parameters
- - -
BasicJsonType== basic_json
-
-
-
Returns
a copy of *this, converted into
-
Template Parameters
- - -
BasicJsonType@complexity Depending on the implementation of the called from_json() method.
-
-
-
Since
version 3.2.0
- -
-
- -

◆ get() [3/12]

- -
-
-
-template<typename BasicJsonType , detail::enable_if_t< std::is_same< typename std::remove_const< BasicJsonType >::type, basic_json_t >::value, int > = 0>
- - - - - -
- - - - - - - -
basic_json nlohmann::basic_json::get () const
-
-inline
-
- -

get special-case overload

-

This overloads avoids a lot of template boilerplate, it can be seen as the identity method

-
Template Parameters
- - -
BasicJsonType== basic_json
-
-
-
Returns
a copy of *this
-

@complexity Constant.

-
Since
version 2.1.0
- -
-
- -

◆ get() [4/12]

- -
-
-
-template<typename BasicJsonType , detail::enable_if_t< !std::is_same< BasicJsonType, basic_json >::value &&detail::is_basic_json< BasicJsonType >::value, int > = 0>
- - - - - -
- - - - - - - -
BasicJsonType nlohmann::basic_json::get () const
-
-inline
-
- -

get special-case overload

-

This overloads converts the current basic_json in a different basic_json type

-
Template Parameters
- - -
BasicJsonType== basic_json
-
-
-
Returns
a copy of *this, converted into
-
Template Parameters
- - -
BasicJsonType@complexity Depending on the implementation of the called from_json() method.
-
-
-
Since
version 3.2.0
- -
-
- -

◆ get() [5/12]

- -
-
-
-template<typename PointerType , typename std::enable_if< std::is_pointer< PointerType >::value, int >::type = 0>
- - - - - -
- - - - - - - -
constexpr auto nlohmann::basic_json::get () const -> decltype(std::declval<const basic_json_t&>().template get_ptr<PointerType>()) -
-
-inlineconstexprnoexcept
-
- -

get a pointer value (explicit)

-

get a pointer value (explicit) Explicit pointer access to the internally stored JSON value. No copies are made.

-
Warning
The pointer becomes invalid if the underlying JSON object changes.
-
Template Parameters
- - -
PointerTypepointer type; must be a pointer to array_t, object_t, string_t, boolean_t, number_integer_t, number_unsigned_t, or number_float_t.
-
-
-
Returns
pointer to the internally stored JSON value if the requested pointer type PointerType fits to the JSON value; nullptr otherwise
-

@complexity Constant.

-

@liveexample{The example below shows how pointers to internal values of a JSON value can be requested. Note that no type conversions are made and a nullptr is returned if the value and the requested pointer type does not match.,get__PointerType}

-
See also
get_ptr() for explicit pointer-member access
-
Since
version 1.0.0
- -
-
- -

◆ get() [6/12]

- -
-
-
-template<typename PointerType , typename std::enable_if< std::is_pointer< PointerType >::value, int >::type = 0>
- - - - - -
- - - - - - - -
constexpr auto nlohmann::basic_json::get () const -> decltype(std::declval<const basic_json_t&>().template get_ptr<PointerType>()) -
-
-inlineconstexprnoexcept
-
- -

get a pointer value (explicit)

-

get a pointer value (explicit) Explicit pointer access to the internally stored JSON value. No copies are made.

-
Warning
The pointer becomes invalid if the underlying JSON object changes.
-
Template Parameters
- - -
PointerTypepointer type; must be a pointer to array_t, object_t, string_t, boolean_t, number_integer_t, number_unsigned_t, or number_float_t.
-
-
-
Returns
pointer to the internally stored JSON value if the requested pointer type PointerType fits to the JSON value; nullptr otherwise
-

@complexity Constant.

-

@liveexample{The example below shows how pointers to internal values of a JSON value can be requested. Note that no type conversions are made and a nullptr is returned if the value and the requested pointer type does not match.,get__PointerType}

-
See also
get_ptr() for explicit pointer-member access
-
Since
version 1.0.0
- -
-
- -

◆ get() [7/12]

- -
-
-
-template<typename ValueTypeCV , typename ValueType = detail::uncvref_t<ValueTypeCV>, detail::enable_if_t< not std::is_same< basic_json_t, ValueType >::value and detail::has_non_default_from_json< basic_json_t, ValueType >::value, int > = 0>
- - - - - -
- - - - - - - -
ValueType nlohmann::basic_json::get () const
-
-inlinenoexcept
-
- -

get a value (explicit); special case

-

Explicit type conversion between the JSON value and a compatible value which is not CopyConstructible and not DefaultConstructible. The value is converted by calling the json_serializer<ValueType> from_json() method.

-

The function is equivalent to executing

This overloads is chosen if:

-
Note
If json_serializer<ValueType> has both overloads of from_json(), this one is chosen.
-
Template Parameters
- - - -
ValueTypeCVthe provided value type
ValueTypethe returned value type
-
-
-
Returns
copy of the JSON value, converted to ValueType
-
Exceptions
- - -
whatjson_serializer<ValueType> from_json() method throws
-
-
-
Since
version 2.1.0
- -
-
- -

◆ get() [8/12]

- -
-
-
-template<typename ValueTypeCV , typename ValueType = detail::uncvref_t<ValueTypeCV>, detail::enable_if_t< !std::is_same< basic_json_t, ValueType >::value &&detail::has_non_default_from_json< basic_json_t, ValueType >::value, int > = 0>
- - - - - -
- - - - - - - -
ValueType nlohmann::basic_json::get () const
-
-inlinenoexcept
-
- -

get a value (explicit); special case

-

Explicit type conversion between the JSON value and a compatible value which is not CopyConstructible and not DefaultConstructible. The value is converted by calling the json_serializer<ValueType> from_json() method.

-

The function is equivalent to executing

This overloads is chosen if:

-
Note
If json_serializer<ValueType> has both overloads of from_json(), this one is chosen.
-
Template Parameters
- - - -
ValueTypeCVthe provided value type
ValueTypethe returned value type
-
-
-
Returns
copy of the JSON value, converted to ValueType
-
Exceptions
- - -
whatjson_serializer<ValueType> from_json() method throws
-
-
-
Since
version 2.1.0
- -
-
- -

◆ get() [9/12]

- -
-
-
-template<typename ValueTypeCV , typename ValueType = detail::uncvref_t<ValueTypeCV>, detail::enable_if_t< not detail::is_basic_json< ValueType >::value and detail::has_from_json< basic_json_t, ValueType >::value and not detail::has_non_default_from_json< basic_json_t, ValueType >::value, int > = 0>
- - - - - -
- - - - - - - -
ValueType nlohmann::basic_json::get () const
-
-inlinenoexcept
-
- -

get a value (explicit)

-

Explicit type conversion between the JSON value and a compatible value which is CopyConstructible and DefaultConstructible. The value is converted by calling the json_serializer<ValueType> from_json() method.

-

The function is equivalent to executing

ValueType ret;
- -
return ret;
-

This overloads is chosen if:

-
Template Parameters
- - - -
ValueTypeCVthe provided value type
ValueTypethe returned value type
-
-
-
Returns
copy of the JSON value, converted to ValueType
-
Exceptions
- - -
whatjson_serializer<ValueType> from_json() method throws
-
-
-

@liveexample{The example below shows several conversions from JSON values to other types. There a few things to note: (1) Floating-point numbers can be converted to integers\, (2) A JSON array can be converted to a standard std::vector<short>\, (3) A JSON object can be converted to C++ associative containers such as std::unordered_map<std::string\, json>.,get__ValueType_const}

-
Since
version 2.1.0
- -
-
- -

◆ get() [10/12]

- -
-
-
-template<typename ValueTypeCV , typename ValueType = detail::uncvref_t<ValueTypeCV>, detail::enable_if_t< !detail::is_basic_json< ValueType >::value &&detail::has_from_json< basic_json_t, ValueType >::value &&!detail::has_non_default_from_json< basic_json_t, ValueType >::value, int > = 0>
- - - - - -
- - - - - - - -
ValueType nlohmann::basic_json::get () const
-
-inlinenoexcept
-
- -

get a value (explicit)

-

Explicit type conversion between the JSON value and a compatible value which is CopyConstructible and DefaultConstructible. The value is converted by calling the json_serializer<ValueType> from_json() method.

-

The function is equivalent to executing

ValueType ret;
- -
return ret;
-

This overloads is chosen if:

-
Template Parameters
- - - -
ValueTypeCVthe provided value type
ValueTypethe returned value type
-
-
-
Returns
copy of the JSON value, converted to ValueType
-
Exceptions
- - -
whatjson_serializer<ValueType> from_json() method throws
-
-
-

@liveexample{The example below shows several conversions from JSON values to other types. There a few things to note: (1) Floating-point numbers can be converted to integers\, (2) A JSON array can be converted to a standard std::vector<short>\, (3) A JSON object can be converted to C++ associative containers such as std::unordered_map<std::string\, json>.,get__ValueType_const}

-
Since
version 2.1.0
- -
-
- -

◆ get() [11/12]

- -
-
-
-template<typename PointerType , typename std::enable_if< std::is_pointer< PointerType >::value, int >::type = 0>
- - - - - -
- - - - - - - -
auto nlohmann::basic_json::get () -> decltype(std::declval<basic_json_t&>().template get_ptr<PointerType>()) -
-
-inlinenoexcept
-
- -

get a pointer value (explicit)

-

Explicit pointer access to the internally stored JSON value. No copies are made.

-
Warning
The pointer becomes invalid if the underlying JSON object changes.
-
Template Parameters
- - -
PointerTypepointer type; must be a pointer to array_t, object_t, string_t, boolean_t, number_integer_t, number_unsigned_t, or number_float_t.
-
-
-
Returns
pointer to the internally stored JSON value if the requested pointer type PointerType fits to the JSON value; nullptr otherwise
-

@complexity Constant.

-

@liveexample{The example below shows how pointers to internal values of a JSON value can be requested. Note that no type conversions are made and a nullptr is returned if the value and the requested pointer type does not match.,get__PointerType}

-
See also
get_ptr() for explicit pointer-member access
-
Since
version 1.0.0
- -
-
- -

◆ get() [12/12]

- -
-
-
-template<typename PointerType , typename std::enable_if< std::is_pointer< PointerType >::value, int >::type = 0>
- - - - - -
- - - - - - - -
auto nlohmann::basic_json::get () -> decltype(std::declval<basic_json_t&>().template get_ptr<PointerType>()) -
-
-inlinenoexcept
-
- -

get a pointer value (explicit)

-

Explicit pointer access to the internally stored JSON value. No copies are made.

-
Warning
The pointer becomes invalid if the underlying JSON object changes.
-
Template Parameters
- - -
PointerTypepointer type; must be a pointer to array_t, object_t, string_t, boolean_t, number_integer_t, number_unsigned_t, or number_float_t.
-
-
-
Returns
pointer to the internally stored JSON value if the requested pointer type PointerType fits to the JSON value; nullptr otherwise
-

@complexity Constant.

-

@liveexample{The example below shows how pointers to internal values of a JSON value can be requested. Note that no type conversions are made and a nullptr is returned if the value and the requested pointer type does not match.,get__PointerType}

-
See also
get_ptr() for explicit pointer-member access
-
Since
version 1.0.0
- -
-
- -

◆ get_allocator() [1/2]

- -
-
- - - - - -
- - - - - - - -
static allocator_type nlohmann::basic_json::get_allocator ()
-
-inlinestatic
-
- -

returns the allocator associated with the container

- -
-
- -

◆ get_allocator() [2/2]

- -
-
- - - - - -
- - - - - - - -
static allocator_type nlohmann::basic_json::get_allocator ()
-
-inlinestatic
-
- -

returns the allocator associated with the container

- -
-
- -

◆ get_binary() [1/2]

- -
-
- - - - - -
- - - - - - - -
binary_t& nlohmann::basic_json::get_binary ()
-
-inline
-
-
Returns
reference to the binary value
-
Exceptions
- - -
type_error.302if the value is not binary
-
-
-
See also
is_binary() to check if the value is binary
-
Since
version 3.8.0
- -
-
- -

◆ get_binary() [2/2]

- -
-
- - - - - -
- - - - - - - -
const binary_t& nlohmann::basic_json::get_binary () const
-
-inline
-
- -

-
Returns
reference to the binary value
-
Exceptions
- - -
type_error.302if the value is not binary
-
-
-
See also
is_binary() to check if the value is binary
-
Since
version 3.8.0
- -
-
- -

◆ get_ptr() [1/4]

- -
-
-
-template<typename PointerType , typename std::enable_if< std::is_pointer< PointerType >::value and std::is_const< typename std::remove_pointer< PointerType >::type >::value, int >::type = 0>
- - - - - -
- - - - - - - -
constexpr auto nlohmann::basic_json::get_ptr () const -> decltype(std::declval<const basic_json_t&>().get_impl_ptr(std::declval<PointerType>())) -
-
-inlineconstexprnoexcept
-
- -

get a pointer value (implicit)

-

get a pointer value (implicit) Implicit pointer access to the internally stored JSON value. No copies are made.

-
Warning
Writing data to the pointee of the result yields an undefined state.
-
Template Parameters
- - -
PointerTypepointer type; must be a pointer to array_t, object_t, string_t, boolean_t, number_integer_t, number_unsigned_t, or number_float_t. Enforced by a static assertion.
-
-
-
Returns
pointer to the internally stored JSON value if the requested pointer type PointerType fits to the JSON value; nullptr otherwise
-

@complexity Constant.

-

@liveexample{The example below shows how pointers to internal values of a JSON value can be requested. Note that no type conversions are made and a nullptr is returned if the value and the requested pointer type does not match.,get_ptr}

-
Since
version 1.0.0
- -
-
- -

◆ get_ptr() [2/4]

- -
-
-
-template<typename PointerType , typename std::enable_if< std::is_pointer< PointerType >::value &&std::is_const< typename std::remove_pointer< PointerType >::type >::value, int >::type = 0>
- - - - - -
- - - - - - - -
constexpr auto nlohmann::basic_json::get_ptr () const -> decltype(std::declval<const basic_json_t&>().get_impl_ptr(std::declval<PointerType>())) -
-
-inlineconstexprnoexcept
-
- -

get a pointer value (implicit)

-

get a pointer value (implicit) Implicit pointer access to the internally stored JSON value. No copies are made.

-
Warning
Writing data to the pointee of the result yields an undefined state.
-
Template Parameters
- - -
PointerTypepointer type; must be a pointer to array_t, object_t, string_t, boolean_t, number_integer_t, number_unsigned_t, or number_float_t. Enforced by a static assertion.
-
-
-
Returns
pointer to the internally stored JSON value if the requested pointer type PointerType fits to the JSON value; nullptr otherwise
-

@complexity Constant.

-

@liveexample{The example below shows how pointers to internal values of a JSON value can be requested. Note that no type conversions are made and a nullptr is returned if the value and the requested pointer type does not match.,get_ptr}

-
Since
version 1.0.0
- -
-
- -

◆ get_ptr() [3/4]

- -
-
-
-template<typename PointerType , typename std::enable_if< std::is_pointer< PointerType >::value, int >::type = 0>
- - - - - -
- - - - - - - -
auto nlohmann::basic_json::get_ptr () -> decltype(std::declval<basic_json_t&>().get_impl_ptr(std::declval<PointerType>())) -
-
-inlinenoexcept
-
- -

get a pointer value (implicit)

-

Implicit pointer access to the internally stored JSON value. No copies are made.

-
Warning
Writing data to the pointee of the result yields an undefined state.
-
Template Parameters
- - -
PointerTypepointer type; must be a pointer to array_t, object_t, string_t, boolean_t, number_integer_t, number_unsigned_t, or number_float_t. Enforced by a static assertion.
-
-
-
Returns
pointer to the internally stored JSON value if the requested pointer type PointerType fits to the JSON value; nullptr otherwise
-

@complexity Constant.

-

@liveexample{The example below shows how pointers to internal values of a JSON value can be requested. Note that no type conversions are made and a nullptr is returned if the value and the requested pointer type does not match.,get_ptr}

-
Since
version 1.0.0
- -
-
- -

◆ get_ptr() [4/4]

- -
-
-
-template<typename PointerType , typename std::enable_if< std::is_pointer< PointerType >::value, int >::type = 0>
- - - - - -
- - - - - - - -
auto nlohmann::basic_json::get_ptr () -> decltype(std::declval<basic_json_t&>().get_impl_ptr(std::declval<PointerType>())) -
-
-inlinenoexcept
-
- -

get a pointer value (implicit)

-

Implicit pointer access to the internally stored JSON value. No copies are made.

-
Warning
Writing data to the pointee of the result yields an undefined state.
-
Template Parameters
- - -
PointerTypepointer type; must be a pointer to array_t, object_t, string_t, boolean_t, number_integer_t, number_unsigned_t, or number_float_t. Enforced by a static assertion.
-
-
-
Returns
pointer to the internally stored JSON value if the requested pointer type PointerType fits to the JSON value; nullptr otherwise
-

@complexity Constant.

-

@liveexample{The example below shows how pointers to internal values of a JSON value can be requested. Note that no type conversions are made and a nullptr is returned if the value and the requested pointer type does not match.,get_ptr}

-
Since
version 1.0.0
- -
-
- -

◆ get_ref() [1/4]

- -
-
-
-template<typename ReferenceType , typename std::enable_if< std::is_reference< ReferenceType >::value, int >::type = 0>
- - - - - -
- - - - - - - -
ReferenceType nlohmann::basic_json::get_ref ()
-
-inline
-
- -

get a reference value (implicit)

-

Implicit reference access to the internally stored JSON value. No copies are made.

-
Warning
Writing data to the referee of the result yields an undefined state.
-
Template Parameters
- - -
ReferenceTypereference type; must be a reference to array_t, object_t, string_t, boolean_t, number_integer_t, or number_float_t. Enforced by static assertion.
-
-
-
Returns
reference to the internally stored JSON value if the requested reference type ReferenceType fits to the JSON value; throws type_error.303 otherwise
-
Exceptions
- - -
type_error.303in case passed type ReferenceType is incompatible with the stored JSON value; see example below
-
-
-

@complexity Constant.

-

@liveexample{The example shows several calls to get_ref().,get_ref}

-
Since
version 1.1.0
- -
-
- -

◆ get_ref() [2/4]

- -
-
-
-template<typename ReferenceType , typename std::enable_if< std::is_reference< ReferenceType >::value, int >::type = 0>
- - - - - -
- - - - - - - -
ReferenceType nlohmann::basic_json::get_ref ()
-
-inline
-
- -

get a reference value (implicit)

-

Implicit reference access to the internally stored JSON value. No copies are made.

-
Warning
Writing data to the referee of the result yields an undefined state.
-
Template Parameters
- - -
ReferenceTypereference type; must be a reference to array_t, object_t, string_t, boolean_t, number_integer_t, or number_float_t. Enforced by static assertion.
-
-
-
Returns
reference to the internally stored JSON value if the requested reference type ReferenceType fits to the JSON value; throws type_error.303 otherwise
-
Exceptions
- - -
type_error.303in case passed type ReferenceType is incompatible with the stored JSON value; see example below
-
-
-

@complexity Constant.

-

@liveexample{The example shows several calls to get_ref().,get_ref}

-
Since
version 1.1.0
- -
-
- -

◆ get_ref() [3/4]

- -
-
-
-template<typename ReferenceType , typename std::enable_if< std::is_reference< ReferenceType >::value and std::is_const< typename std::remove_reference< ReferenceType >::type >::value, int >::type = 0>
- - - - - -
- - - - - - - -
ReferenceType nlohmann::basic_json::get_ref () const
-
-inline
-
- -

get a reference value (implicit)

-

get a reference value (implicit) Implicit reference access to the internally stored JSON value. No copies are made.

-
Warning
Writing data to the referee of the result yields an undefined state.
-
Template Parameters
- - -
ReferenceTypereference type; must be a reference to array_t, object_t, string_t, boolean_t, number_integer_t, or number_float_t. Enforced by static assertion.
-
-
-
Returns
reference to the internally stored JSON value if the requested reference type ReferenceType fits to the JSON value; throws type_error.303 otherwise
-
Exceptions
- - -
type_error.303in case passed type ReferenceType is incompatible with the stored JSON value; see example below
-
-
-

@complexity Constant.

-

@liveexample{The example shows several calls to get_ref().,get_ref}

-
Since
version 1.1.0
- -
-
- -

◆ get_ref() [4/4]

- -
-
-
-template<typename ReferenceType , typename std::enable_if< std::is_reference< ReferenceType >::value &&std::is_const< typename std::remove_reference< ReferenceType >::type >::value, int >::type = 0>
- - - - - -
- - - - - - - -
ReferenceType nlohmann::basic_json::get_ref () const
-
-inline
-
- -

get a reference value (implicit)

-

get a reference value (implicit) Implicit reference access to the internally stored JSON value. No copies are made.

-
Warning
Writing data to the referee of the result yields an undefined state.
-
Template Parameters
- - -
ReferenceTypereference type; must be a reference to array_t, object_t, string_t, boolean_t, number_integer_t, or number_float_t. Enforced by static assertion.
-
-
-
Returns
reference to the internally stored JSON value if the requested reference type ReferenceType fits to the JSON value; throws type_error.303 otherwise
-
Exceptions
- - -
type_error.303in case passed type ReferenceType is incompatible with the stored JSON value; see example below
-
-
-

@complexity Constant.

-

@liveexample{The example shows several calls to get_ref().,get_ref}

-
Since
version 1.1.0
- -
-
- -

◆ get_to() [1/5]

- -
-
-
-template<typename T , std::size_t N, typename Array = T (&)[N], detail::enable_if_t< detail::has_from_json< basic_json_t, Array >::value, int > = 0>
- - - - - -
- - - - - - - - -
Array nlohmann::basic_json::get_to (T(&) v[N]) const
-
-inlinenoexcept
-
- -
-
- -

◆ get_to() [2/5]

- -
-
-
-template<typename T , std::size_t N, typename Array = T (&)[N], detail::enable_if_t< detail::has_from_json< basic_json_t, Array >::value, int > = 0>
- - - - - -
- - - - - - - - -
Array nlohmann::basic_json::get_to (T(&) v[N]) const
-
-inlinenoexcept
-
- -
-
- -

◆ get_to() [3/5]

- -
-
-
-template<typename ValueType , detail::enable_if_t< detail::is_basic_json< ValueType >::value, int > = 0>
- - - - - -
- - - - - - - - -
ValueType& nlohmann::basic_json::get_to (ValueType & v) const
-
-inline
-
- -
-
- -

◆ get_to() [4/5]

- -
-
-
-template<typename ValueType , detail::enable_if_t< not detail::is_basic_json< ValueType >::value and detail::has_from_json< basic_json_t, ValueType >::value, int > = 0>
- - - - - -
- - - - - - - - -
ValueType& nlohmann::basic_json::get_to (ValueType & v) const
-
-inlinenoexcept
-
- -

get a value (explicit)

-

Explicit type conversion between the JSON value and a compatible value. The value is filled into the input parameter by calling the json_serializer<ValueType> from_json() method.

-

The function is equivalent to executing

ValueType v;
- -

This overloads is chosen if:

-
Template Parameters
- - -
ValueTypethe input parameter type.
-
-
-
Returns
the input parameter, allowing chaining calls.
-
Exceptions
- - -
whatjson_serializer<ValueType> from_json() method throws
-
-
-

@liveexample{The example below shows several conversions from JSON values to other types. There a few things to note: (1) Floating-point numbers can be converted to integers\, (2) A JSON array can be converted to a standard std::vector<short>\, (3) A JSON object can be converted to C++ associative containers such as std::unordered_map<std::string\, json>.,get_to}

-
Since
version 3.3.0
- -
-
- -

◆ get_to() [5/5]

- -
-
-
-template<typename ValueType , detail::enable_if_t< !detail::is_basic_json< ValueType >::value &&detail::has_from_json< basic_json_t, ValueType >::value, int > = 0>
- - - - - -
- - - - - - - - -
ValueType& nlohmann::basic_json::get_to (ValueType & v) const
-
-inlinenoexcept
-
- -

get a value (explicit)

-

Explicit type conversion between the JSON value and a compatible value. The value is filled into the input parameter by calling the json_serializer<ValueType> from_json() method.

-

The function is equivalent to executing

ValueType v;
- -

This overloads is chosen if:

-
Template Parameters
- - -
ValueTypethe input parameter type.
-
-
-
Returns
the input parameter, allowing chaining calls.
-
Exceptions
- - -
whatjson_serializer<ValueType> from_json() method throws
-
-
-

@liveexample{The example below shows several conversions from JSON values to other types. There a few things to note: (1) Floating-point numbers can be converted to integers\, (2) A JSON array can be converted to a standard std::vector<short>\, (3) A JSON object can be converted to C++ associative containers such as std::unordered_map<std::string\, json>.,get_to}

-
Since
version 3.3.0
- -
-
- -

◆ insert() [1/12]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void nlohmann::basic_json::insert (const_iterator first,
const_iterator last 
)
-
-inline
-
- -

inserts elements

-

Inserts elements from range [first, last).

-
Parameters
- - - -
[in]firstbegin of the range of elements to insert
[in]lastend of the range of elements to insert
-
-
-
Exceptions
- - - - -
type_error.309if called on JSON values other than objects; example: "cannot use insert() with string"
invalid_iterator.202if iterator first or last does does not point to an object; example: "iterators first and last must point to -objects"
invalid_iterator.210if first and last do not belong to the same JSON value; example: "iterators do not fit"
-
-
-

@complexity Logarithmic: O(N*log(size() + N)), where N is the number of elements to insert.

-

@liveexample{The example shows how insert() is used.,insert__range_object}

-
Since
version 3.0.0
- -
-
- -

◆ insert() [2/12]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void nlohmann::basic_json::insert (const_iterator first,
const_iterator last 
)
-
-inline
-
- -

inserts elements

-

Inserts elements from range [first, last).

-
Parameters
- - - -
[in]firstbegin of the range of elements to insert
[in]lastend of the range of elements to insert
-
-
-
Exceptions
- - - - -
type_error.309if called on JSON values other than objects; example: "cannot use insert() with string"
invalid_iterator.202if iterator first or last does does not point to an object; example: "iterators first and last must point to -objects"
invalid_iterator.210if first and last do not belong to the same JSON value; example: "iterators do not fit"
-
-
-

@complexity Logarithmic: O(N*log(size() + N)), where N is the number of elements to insert.

-

@liveexample{The example shows how insert() is used.,insert__range_object}

-
Since
version 3.0.0
- -
-
- -

◆ insert() [3/12]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
iterator nlohmann::basic_json::insert (const_iterator pos,
basic_json && val 
)
-
-inline
-
- -

inserts element

-

inserts element Inserts element val before iterator pos.

-
Parameters
- - - -
[in]positerator before which the content will be inserted; may be the end() iterator
[in]valelement to insert
-
-
-
Returns
iterator pointing to the inserted val.
-
Exceptions
- - - -
type_error.309if called on JSON values other than arrays; example: "cannot use insert() with string"
invalid_iterator.202if pos is not an iterator of *this; example: "iterator does not fit current value"
-
-
-

@complexity Constant plus linear in the distance between pos and end of the container.

-

@liveexample{The example shows how insert() is used.,insert}

-
Since
version 1.0.0
- -
-
- -

◆ insert() [4/12]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
iterator nlohmann::basic_json::insert (const_iterator pos,
basic_json && val 
)
-
-inline
-
- -

inserts element

-

inserts element Inserts element val before iterator pos.

-
Parameters
- - - -
[in]positerator before which the content will be inserted; may be the end() iterator
[in]valelement to insert
-
-
-
Returns
iterator pointing to the inserted val.
-
Exceptions
- - - -
type_error.309if called on JSON values other than arrays; example: "cannot use insert() with string"
invalid_iterator.202if pos is not an iterator of *this; example: "iterator does not fit current value"
-
-
-

@complexity Constant plus linear in the distance between pos and end of the container.

-

@liveexample{The example shows how insert() is used.,insert}

-
Since
version 1.0.0
- -
-
- -

◆ insert() [5/12]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
iterator nlohmann::basic_json::insert (const_iterator pos,
const basic_jsonval 
)
-
-inline
-
- -

inserts element

-

Inserts element val before iterator pos.

-
Parameters
- - - -
[in]positerator before which the content will be inserted; may be the end() iterator
[in]valelement to insert
-
-
-
Returns
iterator pointing to the inserted val.
-
Exceptions
- - - -
type_error.309if called on JSON values other than arrays; example: "cannot use insert() with string"
invalid_iterator.202if pos is not an iterator of *this; example: "iterator does not fit current value"
-
-
-

@complexity Constant plus linear in the distance between pos and end of the container.

-

@liveexample{The example shows how insert() is used.,insert}

-
Since
version 1.0.0
- -
-
- -

◆ insert() [6/12]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
iterator nlohmann::basic_json::insert (const_iterator pos,
const basic_jsonval 
)
-
-inline
-
- -

inserts element

-

Inserts element val before iterator pos.

-
Parameters
- - - -
[in]positerator before which the content will be inserted; may be the end() iterator
[in]valelement to insert
-
-
-
Returns
iterator pointing to the inserted val.
-
Exceptions
- - - -
type_error.309if called on JSON values other than arrays; example: "cannot use insert() with string"
invalid_iterator.202if pos is not an iterator of *this; example: "iterator does not fit current value"
-
-
-

@complexity Constant plus linear in the distance between pos and end of the container.

-

@liveexample{The example shows how insert() is used.,insert}

-
Since
version 1.0.0
- -
-
- -

◆ insert() [7/12]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
iterator nlohmann::basic_json::insert (const_iterator pos,
const_iterator first,
const_iterator last 
)
-
-inline
-
- -

inserts elements

-

Inserts elements from range [first, last) before iterator pos.

-
Parameters
- - - - -
[in]positerator before which the content will be inserted; may be the end() iterator
[in]firstbegin of the range of elements to insert
[in]lastend of the range of elements to insert
-
-
-
Exceptions
- - - - - -
type_error.309if called on JSON values other than arrays; example: "cannot use insert() with string"
invalid_iterator.202if pos is not an iterator of *this; example: "iterator does not fit current value"
invalid_iterator.210if first and last do not belong to the same JSON value; example: "iterators do not fit"
invalid_iterator.211if first or last are iterators into container for which insert is called; example: "passed iterators may not -belong to container"
-
-
-
Returns
iterator pointing to the first element inserted, or pos if first==last
-

@complexity Linear in std::distance(first, last) plus linear in the distance between pos and end of the container.

-

@liveexample{The example shows how insert() is used.,insert__range}

-
Since
version 1.0.0
- -
-
- -

◆ insert() [8/12]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
iterator nlohmann::basic_json::insert (const_iterator pos,
const_iterator first,
const_iterator last 
)
-
-inline
-
- -

inserts elements

-

Inserts elements from range [first, last) before iterator pos.

-
Parameters
- - - - -
[in]positerator before which the content will be inserted; may be the end() iterator
[in]firstbegin of the range of elements to insert
[in]lastend of the range of elements to insert
-
-
-
Exceptions
- - - - - -
type_error.309if called on JSON values other than arrays; example: "cannot use insert() with string"
invalid_iterator.202if pos is not an iterator of *this; example: "iterator does not fit current value"
invalid_iterator.210if first and last do not belong to the same JSON value; example: "iterators do not fit"
invalid_iterator.211if first or last are iterators into container for which insert is called; example: "passed iterators may not -belong to container"
-
-
-
Returns
iterator pointing to the first element inserted, or pos if first==last
-

@complexity Linear in std::distance(first, last) plus linear in the distance between pos and end of the container.

-

@liveexample{The example shows how insert() is used.,insert__range}

-
Since
version 1.0.0
- -
-
- -

◆ insert() [9/12]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
iterator nlohmann::basic_json::insert (const_iterator pos,
initializer_list_t ilist 
)
-
-inline
-
- -

inserts elements

-

Inserts elements from initializer list ilist before iterator pos.

-
Parameters
- - - -
[in]positerator before which the content will be inserted; may be the end() iterator
[in]ilistinitializer list to insert the values from
-
-
-
Exceptions
- - - -
type_error.309if called on JSON values other than arrays; example: "cannot use insert() with string"
invalid_iterator.202if pos is not an iterator of *this; example: "iterator does not fit current value"
-
-
-
Returns
iterator pointing to the first element inserted, or pos if ilist is empty
-

@complexity Linear in ilist.size() plus linear in the distance between pos and end of the container.

-

@liveexample{The example shows how insert() is used.,insert__ilist}

-
Since
version 1.0.0
- -
-
- -

◆ insert() [10/12]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
iterator nlohmann::basic_json::insert (const_iterator pos,
initializer_list_t ilist 
)
-
-inline
-
- -

inserts elements

-

Inserts elements from initializer list ilist before iterator pos.

-
Parameters
- - - -
[in]positerator before which the content will be inserted; may be the end() iterator
[in]ilistinitializer list to insert the values from
-
-
-
Exceptions
- - - -
type_error.309if called on JSON values other than arrays; example: "cannot use insert() with string"
invalid_iterator.202if pos is not an iterator of *this; example: "iterator does not fit current value"
-
-
-
Returns
iterator pointing to the first element inserted, or pos if ilist is empty
-

@complexity Linear in ilist.size() plus linear in the distance between pos and end of the container.

-

@liveexample{The example shows how insert() is used.,insert__ilist}

-
Since
version 1.0.0
- -
-
- -

◆ insert() [11/12]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
iterator nlohmann::basic_json::insert (const_iterator pos,
size_type cnt,
const basic_jsonval 
)
-
-inline
-
- -

inserts elements

-

Inserts cnt copies of val before iterator pos.

-
Parameters
- - - - -
[in]positerator before which the content will be inserted; may be the end() iterator
[in]cntnumber of copies of val to insert
[in]valelement to insert
-
-
-
Returns
iterator pointing to the first element inserted, or pos if cnt==0
-
Exceptions
- - - -
type_error.309if called on JSON values other than arrays; example: "cannot use insert() with string"
invalid_iterator.202if pos is not an iterator of *this; example: "iterator does not fit current value"
-
-
-

@complexity Linear in cnt plus linear in the distance between pos and end of the container.

-

@liveexample{The example shows how insert() is used.,insert__count}

-
Since
version 1.0.0
- -
-
- -

◆ insert() [12/12]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
iterator nlohmann::basic_json::insert (const_iterator pos,
size_type cnt,
const basic_jsonval 
)
-
-inline
-
- -

inserts elements

-

Inserts cnt copies of val before iterator pos.

-
Parameters
- - - - -
[in]positerator before which the content will be inserted; may be the end() iterator
[in]cntnumber of copies of val to insert
[in]valelement to insert
-
-
-
Returns
iterator pointing to the first element inserted, or pos if cnt==0
-
Exceptions
- - - -
type_error.309if called on JSON values other than arrays; example: "cannot use insert() with string"
invalid_iterator.202if pos is not an iterator of *this; example: "iterator does not fit current value"
-
-
-

@complexity Linear in cnt plus linear in the distance between pos and end of the container.

-

@liveexample{The example shows how insert() is used.,insert__count}

-
Since
version 1.0.0
- -
-
- -

◆ insert_iterator() [1/2]

- -
-
-
-template<typename... Args>
- - - - - -
- - - - - - - - - - - - - - - - - - -
iterator nlohmann::basic_json::insert_iterator (const_iterator pos,
Args &&... args 
)
-
-inline
-
-

Helper for insertion of an iterator

Note
: This uses std::distance to support GCC 4.8, see https://github.com/nlohmann/json/pull/1257
- -
-
- -

◆ insert_iterator() [2/2]

- -
-
-
-template<typename... Args>
- - - - - -
- - - - - - - - - - - - - - - - - - -
iterator nlohmann::basic_json::insert_iterator (const_iterator pos,
Args &&... args 
)
-
-inline
-
-

Helper for insertion of an iterator

Note
: This uses std::distance to support GCC 4.8, see https://github.com/nlohmann/json/pull/1257
- -
-
- -

◆ is_array() [1/2]

- -
-
- - - - - -
- - - - - - - -
constexpr bool nlohmann::basic_json::is_array () const
-
-inlineconstexprnoexcept
-
- -

return whether value is an array

-

This function returns true if and only if the JSON value is an array.

-
Returns
true if type is array, false otherwise.
-

@complexity Constant.

-

@exceptionsafety No-throw guarantee: this member function never throws exceptions.

-

@liveexample{The following code exemplifies is_array() for all JSON types.,is_array}

-
Since
version 1.0.0
- -
-
- -

◆ is_array() [2/2]

- -
-
- - - - - -
- - - - - - - -
constexpr bool nlohmann::basic_json::is_array () const
-
-inlineconstexprnoexcept
-
- -

return whether value is an array

-

This function returns true if and only if the JSON value is an array.

-
Returns
true if type is array, false otherwise.
-

@complexity Constant.

-

@exceptionsafety No-throw guarantee: this member function never throws exceptions.

-

@liveexample{The following code exemplifies is_array() for all JSON types.,is_array}

-
Since
version 1.0.0
- -
-
- -

◆ is_binary()

- -
-
- - - - - -
- - - - - - - -
constexpr bool nlohmann::basic_json::is_binary () const
-
-inlineconstexprnoexcept
-
- -

return whether value is a binary array

-

This function returns true if and only if the JSON value is a binary array.

-
Returns
true if type is binary array, false otherwise.
-

@complexity Constant.

-

@exceptionsafety No-throw guarantee: this member function never throws exceptions.

-

@liveexample{The following code exemplifies is_binary() for all JSON types.,is_binary}

-
Since
version 3.8.0
- -
-
- -

◆ is_boolean() [1/2]

- -
-
- - - - - -
- - - - - - - -
constexpr bool nlohmann::basic_json::is_boolean () const
-
-inlineconstexprnoexcept
-
- -

return whether value is a boolean

-

This function returns true if and only if the JSON value is a boolean.

-
Returns
true if type is boolean, false otherwise.
-

@complexity Constant.

-

@exceptionsafety No-throw guarantee: this member function never throws exceptions.

-

@liveexample{The following code exemplifies is_boolean() for all JSON types.,is_boolean}

-
Since
version 1.0.0
- -
-
- -

◆ is_boolean() [2/2]

- -
-
- - - - - -
- - - - - - - -
constexpr bool nlohmann::basic_json::is_boolean () const
-
-inlineconstexprnoexcept
-
- -

return whether value is a boolean

-

This function returns true if and only if the JSON value is a boolean.

-
Returns
true if type is boolean, false otherwise.
-

@complexity Constant.

-

@exceptionsafety No-throw guarantee: this member function never throws exceptions.

-

@liveexample{The following code exemplifies is_boolean() for all JSON types.,is_boolean}

-
Since
version 1.0.0
- -
-
- -

◆ is_discarded() [1/2]

- -
-
- - - - - -
- - - - - - - -
constexpr bool nlohmann::basic_json::is_discarded () const
-
-inlineconstexprnoexcept
-
- -

return whether value is discarded

-

This function returns true if and only if the JSON value was discarded during parsing with a callback function (see parser_callback_t).

-
Note
This function will always be false for JSON values after parsing. That is, discarded values can only occur during parsing, but will be removed when inside a structured value or replaced by null in other cases.
-
Returns
true if type is discarded, false otherwise.
-

@complexity Constant.

-

@exceptionsafety No-throw guarantee: this member function never throws exceptions.

-

@liveexample{The following code exemplifies is_discarded() for all JSON types.,is_discarded}

-
Since
version 1.0.0
- -
-
- -

◆ is_discarded() [2/2]

- -
-
- - - - - -
- - - - - - - -
constexpr bool nlohmann::basic_json::is_discarded () const
-
-inlineconstexprnoexcept
-
- -

return whether value is discarded

-

This function returns true if and only if the JSON value was discarded during parsing with a callback function (see parser_callback_t).

-
Note
This function will always be false for JSON values after parsing. That is, discarded values can only occur during parsing, but will be removed when inside a structured value or replaced by null in other cases.
-
Returns
true if type is discarded, false otherwise.
-

@complexity Constant.

-

@exceptionsafety No-throw guarantee: this member function never throws exceptions.

-

@liveexample{The following code exemplifies is_discarded() for all JSON types.,is_discarded}

-
Since
version 1.0.0
- -
-
- -

◆ is_null() [1/2]

- -
-
- - - - - -
- - - - - - - -
constexpr bool nlohmann::basic_json::is_null () const
-
-inlineconstexprnoexcept
-
- -

return whether value is null

-

This function returns true if and only if the JSON value is null.

-
Returns
true if type is null, false otherwise.
-

@complexity Constant.

-

@exceptionsafety No-throw guarantee: this member function never throws exceptions.

-

@liveexample{The following code exemplifies is_null() for all JSON types.,is_null}

-
Since
version 1.0.0
- -
-
- -

◆ is_null() [2/2]

- -
-
- - - - - -
- - - - - - - -
constexpr bool nlohmann::basic_json::is_null () const
-
-inlineconstexprnoexcept
-
- -

return whether value is null

-

This function returns true if and only if the JSON value is null.

-
Returns
true if type is null, false otherwise.
-

@complexity Constant.

-

@exceptionsafety No-throw guarantee: this member function never throws exceptions.

-

@liveexample{The following code exemplifies is_null() for all JSON types.,is_null}

-
Since
version 1.0.0
- -
-
- -

◆ is_number() [1/2]

- -
-
- - - - - -
- - - - - - - -
constexpr bool nlohmann::basic_json::is_number () const
-
-inlineconstexprnoexcept
-
- -

return whether value is a number

-

This function returns true if and only if the JSON value is a number. This includes both integer (signed and unsigned) and floating-point values.

-
Returns
true if type is number (regardless whether integer, unsigned integer or floating-type), false otherwise.
-

@complexity Constant.

-

@exceptionsafety No-throw guarantee: this member function never throws exceptions.

-

@liveexample{The following code exemplifies is_number() for all JSON types.,is_number}

-
See also
is_number_integer() – check if value is an integer or unsigned integer number
-
-is_number_unsigned() – check if value is an unsigned integer number
-
-is_number_float() – check if value is a floating-point number
-
Since
version 1.0.0
- -
-
- -

◆ is_number() [2/2]

- -
-
- - - - - -
- - - - - - - -
constexpr bool nlohmann::basic_json::is_number () const
-
-inlineconstexprnoexcept
-
- -

return whether value is a number

-

This function returns true if and only if the JSON value is a number. This includes both integer (signed and unsigned) and floating-point values.

-
Returns
true if type is number (regardless whether integer, unsigned integer or floating-type), false otherwise.
-

@complexity Constant.

-

@exceptionsafety No-throw guarantee: this member function never throws exceptions.

-

@liveexample{The following code exemplifies is_number() for all JSON types.,is_number}

-
See also
is_number_integer() – check if value is an integer or unsigned integer number
-
-is_number_unsigned() – check if value is an unsigned integer number
-
-is_number_float() – check if value is a floating-point number
-
Since
version 1.0.0
- -
-
- -

◆ is_number_float() [1/2]

- -
-
- - - - - -
- - - - - - - -
constexpr bool nlohmann::basic_json::is_number_float () const
-
-inlineconstexprnoexcept
-
- -

return whether value is a floating-point number

-

This function returns true if and only if the JSON value is a floating-point number. This excludes signed and unsigned integer values.

-
Returns
true if type is a floating-point number, false otherwise.
-

@complexity Constant.

-

@exceptionsafety No-throw guarantee: this member function never throws exceptions.

-

@liveexample{The following code exemplifies is_number_float() for all JSON types.,is_number_float}

-
See also
is_number() – check if value is number
-
-is_number_integer() – check if value is an integer number
-
-is_number_unsigned() – check if value is an unsigned integer number
-
Since
version 1.0.0
- -
-
- -

◆ is_number_float() [2/2]

- -
-
- - - - - -
- - - - - - - -
constexpr bool nlohmann::basic_json::is_number_float () const
-
-inlineconstexprnoexcept
-
- -

return whether value is a floating-point number

-

This function returns true if and only if the JSON value is a floating-point number. This excludes signed and unsigned integer values.

-
Returns
true if type is a floating-point number, false otherwise.
-

@complexity Constant.

-

@exceptionsafety No-throw guarantee: this member function never throws exceptions.

-

@liveexample{The following code exemplifies is_number_float() for all JSON types.,is_number_float}

-
See also
is_number() – check if value is number
-
-is_number_integer() – check if value is an integer number
-
-is_number_unsigned() – check if value is an unsigned integer number
-
Since
version 1.0.0
- -
-
- -

◆ is_number_integer() [1/2]

- -
-
- - - - - -
- - - - - - - -
constexpr bool nlohmann::basic_json::is_number_integer () const
-
-inlineconstexprnoexcept
-
- -

return whether value is an integer number

-

This function returns true if and only if the JSON value is a signed or unsigned integer number. This excludes floating-point values.

-
Returns
true if type is an integer or unsigned integer number, false otherwise.
-

@complexity Constant.

-

@exceptionsafety No-throw guarantee: this member function never throws exceptions.

-

@liveexample{The following code exemplifies is_number_integer() for all JSON types.,is_number_integer}

-
See also
is_number() – check if value is a number
-
-is_number_unsigned() – check if value is an unsigned integer number
-
-is_number_float() – check if value is a floating-point number
-
Since
version 1.0.0
- -
-
- -

◆ is_number_integer() [2/2]

- -
-
- - - - - -
- - - - - - - -
constexpr bool nlohmann::basic_json::is_number_integer () const
-
-inlineconstexprnoexcept
-
- -

return whether value is an integer number

-

This function returns true if and only if the JSON value is a signed or unsigned integer number. This excludes floating-point values.

-
Returns
true if type is an integer or unsigned integer number, false otherwise.
-

@complexity Constant.

-

@exceptionsafety No-throw guarantee: this member function never throws exceptions.

-

@liveexample{The following code exemplifies is_number_integer() for all JSON types.,is_number_integer}

-
See also
is_number() – check if value is a number
-
-is_number_unsigned() – check if value is an unsigned integer number
-
-is_number_float() – check if value is a floating-point number
-
Since
version 1.0.0
- -
-
- -

◆ is_number_unsigned() [1/2]

- -
-
- - - - - -
- - - - - - - -
constexpr bool nlohmann::basic_json::is_number_unsigned () const
-
-inlineconstexprnoexcept
-
- -

return whether value is an unsigned integer number

-

This function returns true if and only if the JSON value is an unsigned integer number. This excludes floating-point and signed integer values.

-
Returns
true if type is an unsigned integer number, false otherwise.
-

@complexity Constant.

-

@exceptionsafety No-throw guarantee: this member function never throws exceptions.

-

@liveexample{The following code exemplifies is_number_unsigned() for all JSON types.,is_number_unsigned}

-
See also
is_number() – check if value is a number
-
-is_number_integer() – check if value is an integer or unsigned integer number
-
-is_number_float() – check if value is a floating-point number
-
Since
version 2.0.0
- -
-
- -

◆ is_number_unsigned() [2/2]

- -
-
- - - - - -
- - - - - - - -
constexpr bool nlohmann::basic_json::is_number_unsigned () const
-
-inlineconstexprnoexcept
-
- -

return whether value is an unsigned integer number

-

This function returns true if and only if the JSON value is an unsigned integer number. This excludes floating-point and signed integer values.

-
Returns
true if type is an unsigned integer number, false otherwise.
-

@complexity Constant.

-

@exceptionsafety No-throw guarantee: this member function never throws exceptions.

-

@liveexample{The following code exemplifies is_number_unsigned() for all JSON types.,is_number_unsigned}

-
See also
is_number() – check if value is a number
-
-is_number_integer() – check if value is an integer or unsigned integer number
-
-is_number_float() – check if value is a floating-point number
-
Since
version 2.0.0
- -
-
- -

◆ is_object() [1/2]

- -
-
- - - - - -
- - - - - - - -
constexpr bool nlohmann::basic_json::is_object () const
-
-inlineconstexprnoexcept
-
- -

return whether value is an object

-

This function returns true if and only if the JSON value is an object.

-
Returns
true if type is object, false otherwise.
-

@complexity Constant.

-

@exceptionsafety No-throw guarantee: this member function never throws exceptions.

-

@liveexample{The following code exemplifies is_object() for all JSON types.,is_object}

-
Since
version 1.0.0
- -
-
- -

◆ is_object() [2/2]

- -
-
- - - - - -
- - - - - - - -
constexpr bool nlohmann::basic_json::is_object () const
-
-inlineconstexprnoexcept
-
- -

return whether value is an object

-

This function returns true if and only if the JSON value is an object.

-
Returns
true if type is object, false otherwise.
-

@complexity Constant.

-

@exceptionsafety No-throw guarantee: this member function never throws exceptions.

-

@liveexample{The following code exemplifies is_object() for all JSON types.,is_object}

-
Since
version 1.0.0
- -
-
- -

◆ is_primitive() [1/2]

- -
-
- - - - - -
- - - - - - - -
constexpr bool nlohmann::basic_json::is_primitive () const
-
-inlineconstexprnoexcept
-
- -

return whether type is primitive

-

This function returns true if and only if the JSON type is primitive (string, number, boolean, or null).

-
Returns
true if type is primitive (string, number, boolean, or null), false otherwise.
-

@complexity Constant.

-

@exceptionsafety No-throw guarantee: this member function never throws exceptions.

-

@liveexample{The following code exemplifies is_primitive() for all JSON types.,is_primitive}

-
See also
is_structured() – returns whether JSON value is structured
-
-is_null() – returns whether JSON value is null
-
-is_string() – returns whether JSON value is a string
-
-is_boolean() – returns whether JSON value is a boolean
-
-is_number() – returns whether JSON value is a number
-
Since
version 1.0.0
- -
-
- -

◆ is_primitive() [2/2]

- -
-
- - - - - -
- - - - - - - -
constexpr bool nlohmann::basic_json::is_primitive () const
-
-inlineconstexprnoexcept
-
- -

return whether type is primitive

-

This function returns true if and only if the JSON type is primitive (string, number, boolean, or null).

-
Returns
true if type is primitive (string, number, boolean, or null), false otherwise.
-

@complexity Constant.

-

@exceptionsafety No-throw guarantee: this member function never throws exceptions.

-

@liveexample{The following code exemplifies is_primitive() for all JSON types.,is_primitive}

-
See also
is_structured() – returns whether JSON value is structured
-
-is_null() – returns whether JSON value is null
-
-is_string() – returns whether JSON value is a string
-
-is_boolean() – returns whether JSON value is a boolean
-
-is_number() – returns whether JSON value is a number
-
-is_binary() – returns whether JSON value is a binary array
-
Since
version 1.0.0
- -
-
- -

◆ is_string() [1/2]

- -
-
- - - - - -
- - - - - - - -
constexpr bool nlohmann::basic_json::is_string () const
-
-inlineconstexprnoexcept
-
- -

return whether value is a string

-

This function returns true if and only if the JSON value is a string.

-
Returns
true if type is string, false otherwise.
-

@complexity Constant.

-

@exceptionsafety No-throw guarantee: this member function never throws exceptions.

-

@liveexample{The following code exemplifies is_string() for all JSON types.,is_string}

-
Since
version 1.0.0
- -
-
- -

◆ is_string() [2/2]

- -
-
- - - - - -
- - - - - - - -
constexpr bool nlohmann::basic_json::is_string () const
-
-inlineconstexprnoexcept
-
- -

return whether value is a string

-

This function returns true if and only if the JSON value is a string.

-
Returns
true if type is string, false otherwise.
-

@complexity Constant.

-

@exceptionsafety No-throw guarantee: this member function never throws exceptions.

-

@liveexample{The following code exemplifies is_string() for all JSON types.,is_string}

-
Since
version 1.0.0
- -
-
- -

◆ is_structured() [1/2]

- -
-
- - - - - -
- - - - - - - -
constexpr bool nlohmann::basic_json::is_structured () const
-
-inlineconstexprnoexcept
-
- -

return whether type is structured

-

This function returns true if and only if the JSON type is structured (array or object).

-
Returns
true if type is structured (array or object), false otherwise.
-

@complexity Constant.

-

@exceptionsafety No-throw guarantee: this member function never throws exceptions.

-

@liveexample{The following code exemplifies is_structured() for all JSON types.,is_structured}

-
See also
is_primitive() – returns whether value is primitive
-
-is_array() – returns whether value is an array
-
-is_object() – returns whether value is an object
-
Since
version 1.0.0
- -
-
- -

◆ is_structured() [2/2]

- -
-
- - - - - -
- - - - - - - -
constexpr bool nlohmann::basic_json::is_structured () const
-
-inlineconstexprnoexcept
-
- -

return whether type is structured

-

This function returns true if and only if the JSON type is structured (array or object).

-
Returns
true if type is structured (array or object), false otherwise.
-

@complexity Constant.

-

@exceptionsafety No-throw guarantee: this member function never throws exceptions.

-

@liveexample{The following code exemplifies is_structured() for all JSON types.,is_structured}

-
See also
is_primitive() – returns whether value is primitive
-
-is_array() – returns whether value is an array
-
-is_object() – returns whether value is an object
-
Since
version 1.0.0
- -
-
- -

◆ items() [1/4]

- -
-
- - - - - -
- - - - - - - -
iteration_proxy<const_iterator> nlohmann::basic_json::items () const
-
-inlinenoexcept
-
- -

helper to access iterator member functions in range-based for

-

This function allows to access iterator::key() and iterator::value() during range-based for loops. In these loops, a reference to the JSON values is returned, so there is no access to the underlying iterator.

-

For loop without items() function:

-
for (auto it = j_object.begin(); it != j_object.end(); ++it)
-
{
-
std::cout << "key: " << it.key() << ", value:" << it.value() << '\n';
-
}
-

Range-based for loop without items() function:

-
for (auto it : j_object)
-
{
-
// "it" is of type json::reference and has no key() member
-
std::cout << "value: " << it << '\n';
-
}
-

Range-based for loop with items() function:

-
for (auto& el : j_object.items())
-
{
-
std::cout << "key: " << el.key() << ", value:" << el.value() << '\n';
-
}
-

The items() function also allows to use structured bindings (C++17):

-
for (auto& [key, val] : j_object.items())
-
{
-
std::cout << "key: " << key << ", value:" << val << '\n';
-
}
-
Note
When iterating over an array, key() will return the index of the element as string (see example). For primitive types (e.g., numbers), key() returns an empty string.
-
Returns
iteration proxy object wrapping ref with an interface to use in range-based for loops
-

@liveexample{The following code shows how the function is used.,items}

-

@exceptionsafety Strong guarantee: if an exception is thrown, there are no changes in the JSON value.

-

@complexity Constant.

-
Since
version 3.1.0, structured bindings support since 3.5.0.
- -
-
- -

◆ items() [2/4]

- -
-
- - - - - -
- - - - - - - -
iteration_proxy<const_iterator> nlohmann::basic_json::items () const
-
-inlinenoexcept
-
- -

helper to access iterator member functions in range-based for

-

This function allows to access iterator::key() and iterator::value() during range-based for loops. In these loops, a reference to the JSON values is returned, so there is no access to the underlying iterator.

-

For loop without items() function:

-
for (auto it = j_object.begin(); it != j_object.end(); ++it)
-
{
-
std::cout << "key: " << it.key() << ", value:" << it.value() << '\n';
-
}
-

Range-based for loop without items() function:

-
for (auto it : j_object)
-
{
-
// "it" is of type json::reference and has no key() member
-
std::cout << "value: " << it << '\n';
-
}
-

Range-based for loop with items() function:

-
for (auto& el : j_object.items())
-
{
-
std::cout << "key: " << el.key() << ", value:" << el.value() << '\n';
-
}
-

The items() function also allows to use structured bindings (C++17):

-
for (auto& [key, val] : j_object.items())
-
{
-
std::cout << "key: " << key << ", value:" << val << '\n';
-
}
-
Note
When iterating over an array, key() will return the index of the element as string (see example). For primitive types (e.g., numbers), key() returns an empty string.
-
Returns
iteration proxy object wrapping ref with an interface to use in range-based for loops
-

@liveexample{The following code shows how the function is used.,items}

-

@exceptionsafety Strong guarantee: if an exception is thrown, there are no changes in the JSON value.

-

@complexity Constant.

-
Since
version 3.1.0, structured bindings support since 3.5.0.
- -
-
- -

◆ items() [3/4]

- -
-
- - - - - -
- - - - - - - -
iteration_proxy<iterator> nlohmann::basic_json::items ()
-
-inlinenoexcept
-
- -

helper to access iterator member functions in range-based for

-

This function allows to access iterator::key() and iterator::value() during range-based for loops. In these loops, a reference to the JSON values is returned, so there is no access to the underlying iterator.

-

For loop without items() function:

-
for (auto it = j_object.begin(); it != j_object.end(); ++it)
-
{
-
std::cout << "key: " << it.key() << ", value:" << it.value() << '\n';
-
}
-

Range-based for loop without items() function:

-
for (auto it : j_object)
-
{
-
// "it" is of type json::reference and has no key() member
-
std::cout << "value: " << it << '\n';
-
}
-

Range-based for loop with items() function:

-
for (auto& el : j_object.items())
-
{
-
std::cout << "key: " << el.key() << ", value:" << el.value() << '\n';
-
}
-

The items() function also allows to use structured bindings (C++17):

-
for (auto& [key, val] : j_object.items())
-
{
-
std::cout << "key: " << key << ", value:" << val << '\n';
-
}
-
Note
When iterating over an array, key() will return the index of the element as string (see example). For primitive types (e.g., numbers), key() returns an empty string.
-
Returns
iteration proxy object wrapping ref with an interface to use in range-based for loops
-

@liveexample{The following code shows how the function is used.,items}

-

@exceptionsafety Strong guarantee: if an exception is thrown, there are no changes in the JSON value.

-

@complexity Constant.

-
Since
version 3.1.0, structured bindings support since 3.5.0.
- -
-
- -

◆ items() [4/4]

- -
-
- - - - - -
- - - - - - - -
iteration_proxy<iterator> nlohmann::basic_json::items ()
-
-inlinenoexcept
-
- -

helper to access iterator member functions in range-based for

-

This function allows to access iterator::key() and iterator::value() during range-based for loops. In these loops, a reference to the JSON values is returned, so there is no access to the underlying iterator.

-

For loop without items() function:

-
for (auto it = j_object.begin(); it != j_object.end(); ++it)
-
{
-
std::cout << "key: " << it.key() << ", value:" << it.value() << '\n';
-
}
-

Range-based for loop without items() function:

-
for (auto it : j_object)
-
{
-
// "it" is of type json::reference and has no key() member
-
std::cout << "value: " << it << '\n';
-
}
-

Range-based for loop with items() function:

-
for (auto& el : j_object.items())
-
{
-
std::cout << "key: " << el.key() << ", value:" << el.value() << '\n';
-
}
-

The items() function also allows to use structured bindings (C++17):

-
for (auto& [key, val] : j_object.items())
-
{
-
std::cout << "key: " << key << ", value:" << val << '\n';
-
}
-
Note
When iterating over an array, key() will return the index of the element as string (see example). For primitive types (e.g., numbers), key() returns an empty string.
-
Warning
Using items() on temporary objects is dangerous. Make sure the object's lifetime exeeds the iteration. See https://github.com/nlohmann/json/issues/2040 for more information.
-
Returns
iteration proxy object wrapping ref with an interface to use in range-based for loops
-

@liveexample{The following code shows how the function is used.,items}

-

@exceptionsafety Strong guarantee: if an exception is thrown, there are no changes in the JSON value.

-

@complexity Constant.

-
Since
version 3.1.0, structured bindings support since 3.5.0.
- -
-
- -

◆ iterator_wrapper() [1/4]

- -
-
- - - - - -
- - - - - - - - -
static iteration_proxy<const_iterator> nlohmann::basic_json::iterator_wrapper (const_reference ref)
-
-inlinestaticnoexcept
-
- -

wrapper to access iterator member functions in range-based for

-

This function allows to access iterator::key() and iterator::value() during range-based for loops. In these loops, a reference to the JSON values is returned, so there is no access to the underlying iterator.

-

For loop without iterator_wrapper:

-
for (auto it = j_object.begin(); it != j_object.end(); ++it)
-
{
-
std::cout << "key: " << it.key() << ", value:" << it.value() << '\n';
-
}
-

Range-based for loop without iterator proxy:

-
for (auto it : j_object)
-
{
-
// "it" is of type json::reference and has no key() member
-
std::cout << "value: " << it << '\n';
-
}
-

Range-based for loop with iterator proxy:

-
for (auto it : json::iterator_wrapper(j_object))
-
{
-
std::cout << "key: " << it.key() << ", value:" << it.value() << '\n';
-
}
-
Note
When iterating over an array, key() will return the index of the element as string (see example).
-
Parameters
- - -
[in]refreference to a JSON value
-
-
-
Returns
iteration proxy object wrapping ref with an interface to use in range-based for loops
-

@liveexample{The following code shows how the wrapper is used,iterator_wrapper}

-

@exceptionsafety Strong guarantee: if an exception is thrown, there are no changes in the JSON value.

-

@complexity Constant.

-
Note
The name of this function is not yet final and may change in the future.
-
Deprecated:
This stream operator is deprecated and will be removed in future 4.0.0 of the library. Please use items() instead; that is, replace json::iterator_wrapper(j) with j.items().
- -
-
- -

◆ iterator_wrapper() [2/4]

- -
-
- - - - - -
- - - - - - - - -
static iteration_proxy<const_iterator> nlohmann::basic_json::iterator_wrapper (const_reference ref)
-
-inlinestaticnoexcept
-
- -

wrapper to access iterator member functions in range-based for

-

This function allows to access iterator::key() and iterator::value() during range-based for loops. In these loops, a reference to the JSON values is returned, so there is no access to the underlying iterator.

-

For loop without iterator_wrapper:

-
for (auto it = j_object.begin(); it != j_object.end(); ++it)
-
{
-
std::cout << "key: " << it.key() << ", value:" << it.value() << '\n';
-
}
-

Range-based for loop without iterator proxy:

-
for (auto it : j_object)
-
{
-
// "it" is of type json::reference and has no key() member
-
std::cout << "value: " << it << '\n';
-
}
-

Range-based for loop with iterator proxy:

-
for (auto it : json::iterator_wrapper(j_object))
-
{
-
std::cout << "key: " << it.key() << ", value:" << it.value() << '\n';
-
}
-
Note
When iterating over an array, key() will return the index of the element as string (see example).
-
Parameters
- - -
[in]refreference to a JSON value
-
-
-
Returns
iteration proxy object wrapping ref with an interface to use in range-based for loops
-

@liveexample{The following code shows how the wrapper is used,iterator_wrapper}

-

@exceptionsafety Strong guarantee: if an exception is thrown, there are no changes in the JSON value.

-

@complexity Constant.

-
Note
The name of this function is not yet final and may change in the future.
-
Deprecated:
This stream operator is deprecated and will be removed in future 4.0.0 of the library. Please use items() instead; that is, replace json::iterator_wrapper(j) with j.items().
- -
-
- -

◆ iterator_wrapper() [3/4]

- -
-
- - - - - -
- - - - - - - - -
static iteration_proxy<iterator> nlohmann::basic_json::iterator_wrapper (reference ref)
-
-inlinestaticnoexcept
-
- -

wrapper to access iterator member functions in range-based for

-

This function allows to access iterator::key() and iterator::value() during range-based for loops. In these loops, a reference to the JSON values is returned, so there is no access to the underlying iterator.

-

For loop without iterator_wrapper:

-
for (auto it = j_object.begin(); it != j_object.end(); ++it)
-
{
-
std::cout << "key: " << it.key() << ", value:" << it.value() << '\n';
-
}
-

Range-based for loop without iterator proxy:

-
for (auto it : j_object)
-
{
-
// "it" is of type json::reference and has no key() member
-
std::cout << "value: " << it << '\n';
-
}
-

Range-based for loop with iterator proxy:

-
for (auto it : json::iterator_wrapper(j_object))
-
{
-
std::cout << "key: " << it.key() << ", value:" << it.value() << '\n';
-
}
-
Note
When iterating over an array, key() will return the index of the element as string (see example).
-
Parameters
- - -
[in]refreference to a JSON value
-
-
-
Returns
iteration proxy object wrapping ref with an interface to use in range-based for loops
-

@liveexample{The following code shows how the wrapper is used,iterator_wrapper}

-

@exceptionsafety Strong guarantee: if an exception is thrown, there are no changes in the JSON value.

-

@complexity Constant.

-
Note
The name of this function is not yet final and may change in the future.
-
Deprecated:
This stream operator is deprecated and will be removed in future 4.0.0 of the library. Please use items() instead; that is, replace json::iterator_wrapper(j) with j.items().
- -
-
- -

◆ iterator_wrapper() [4/4]

- -
-
- - - - - -
- - - - - - - - -
static iteration_proxy<iterator> nlohmann::basic_json::iterator_wrapper (reference ref)
-
-inlinestaticnoexcept
-
- -

wrapper to access iterator member functions in range-based for

-

This function allows to access iterator::key() and iterator::value() during range-based for loops. In these loops, a reference to the JSON values is returned, so there is no access to the underlying iterator.

-

For loop without iterator_wrapper:

-
for (auto it = j_object.begin(); it != j_object.end(); ++it)
-
{
-
std::cout << "key: " << it.key() << ", value:" << it.value() << '\n';
-
}
-

Range-based for loop without iterator proxy:

-
for (auto it : j_object)
-
{
-
// "it" is of type json::reference and has no key() member
-
std::cout << "value: " << it << '\n';
-
}
-

Range-based for loop with iterator proxy:

-
for (auto it : json::iterator_wrapper(j_object))
-
{
-
std::cout << "key: " << it.key() << ", value:" << it.value() << '\n';
-
}
-
Note
When iterating over an array, key() will return the index of the element as string (see example).
-
Parameters
- - -
[in]refreference to a JSON value
-
-
-
Returns
iteration proxy object wrapping ref with an interface to use in range-based for loops
-

@liveexample{The following code shows how the wrapper is used,iterator_wrapper}

-

@exceptionsafety Strong guarantee: if an exception is thrown, there are no changes in the JSON value.

-

@complexity Constant.

-
Note
The name of this function is not yet final and may change in the future.
-
Deprecated:
This stream operator is deprecated and will be removed in future 4.0.0 of the library. Please use items() instead; that is, replace json::iterator_wrapper(j) with j.items().
- -
-
- -

◆ max_size() [1/2]

- -
-
- - - - - -
- - - - - - - -
size_type nlohmann::basic_json::max_size () const
-
-inlinenoexcept
-
- -

returns the maximum possible number of elements

-

Returns the maximum number of elements a JSON value is able to hold due to system or library implementation limitations, i.e. std::distance(begin(), end()) for the JSON value.

-
Returns
The return value depends on the different types and is defined as follows: - - - - - - - - - - - - - - -
Value type return value
null 0 (same as size())
boolean 1 (same as size())
string 1 (same as size())
number 1 (same as size())
object result of function object_t::max_size()
array result of function array_t::max_size()
-
-

@liveexample{The following code calls max_size() on the different value types. Note the output is implementation specific.,max_size}

-

@complexity Constant, as long as array_t and object_t satisfy the Container concept; that is, their max_size() functions have constant complexity.

-

@iterators No changes.

-

@exceptionsafety No-throw guarantee: this function never throws exceptions.

-

@requirement This function helps basic_json satisfying the Container requirements:

    -
  • The complexity is constant.
  • -
  • Has the semantics of returning b.size() where b is the largest possible JSON value.
  • -
-
See also
size() – returns the number of elements
-
Since
version 1.0.0
- -
-
- -

◆ max_size() [2/2]

- -
-
- - - - - -
- - - - - - - -
size_type nlohmann::basic_json::max_size () const
-
-inlinenoexcept
-
- -

returns the maximum possible number of elements

-

Returns the maximum number of elements a JSON value is able to hold due to system or library implementation limitations, i.e. std::distance(begin(), end()) for the JSON value.

-
Returns
The return value depends on the different types and is defined as follows: - - - - - - - - - - - - - - - - -
Value type return value
null 0 (same as size())
boolean 1 (same as size())
string 1 (same as size())
number 1 (same as size())
binary 1 (same as size())
object result of function object_t::max_size()
array result of function array_t::max_size()
-
-

@liveexample{The following code calls max_size() on the different value types. Note the output is implementation specific.,max_size}

-

@complexity Constant, as long as array_t and object_t satisfy the Container concept; that is, their max_size() functions have constant complexity.

-

@iterators No changes.

-

@exceptionsafety No-throw guarantee: this function never throws exceptions.

-

@requirement This function helps basic_json satisfying the Container requirements:

    -
  • The complexity is constant.
  • -
  • Has the semantics of returning b.size() where b is the largest possible JSON value.
  • -
-
See also
size() – returns the number of elements
-
Since
version 1.0.0
- -
-
- -

◆ merge_patch() [1/2]

- -
-
- - - - - -
- - - - - - - - -
void nlohmann::basic_json::merge_patch (const basic_jsonapply_patch)
-
-inline
-
- -

applies a JSON Merge Patch

-

The merge patch format is primarily intended for use with the HTTP PATCH method as a means of describing a set of modifications to a target resource's content. This function applies a merge patch to the current JSON value.

-

The function implements the following algorithm from Section 2 of RFC 7396 (JSON Merge Patch):

-
define MergePatch(Target, Patch):
-
if Patch is an Object:
-
if Target is not an Object:
-
Target = {} // Ignore the contents and set it to an empty Object
-
for each Name/Value pair in Patch:
-
if Value is null:
-
if Name exists in Target:
-
remove the Name/Value pair from Target
-
else:
-
Target[Name] = MergePatch(Target[Name], Value)
-
return Target
-
else:
-
return Patch
-

Thereby, Target is the current object; that is, the patch is applied to the current value.

-
Parameters
- - -
[in]apply_patchthe patch to apply
-
-
-

@complexity Linear in the lengths of patch.

-

@liveexample{The following code shows how a JSON Merge Patch is applied to a JSON document.,merge_patch}

-
See also
patch – apply a JSON patch
-
-RFC 7396 (JSON Merge Patch)
-
Since
version 3.0.0
- -
-
- -

◆ merge_patch() [2/2]

- -
-
- - - - - -
- - - - - - - - -
void nlohmann::basic_json::merge_patch (const basic_jsonapply_patch)
-
-inline
-
- -

applies a JSON Merge Patch

-

The merge patch format is primarily intended for use with the HTTP PATCH method as a means of describing a set of modifications to a target resource's content. This function applies a merge patch to the current JSON value.

-

The function implements the following algorithm from Section 2 of RFC 7396 (JSON Merge Patch):

-
define MergePatch(Target, Patch):
-
if Patch is an Object:
-
if Target is not an Object:
-
Target = {} // Ignore the contents and set it to an empty Object
-
for each Name/Value pair in Patch:
-
if Value is null:
-
if Name exists in Target:
-
remove the Name/Value pair from Target
-
else:
-
Target[Name] = MergePatch(Target[Name], Value)
-
return Target
-
else:
-
return Patch
-

Thereby, Target is the current object; that is, the patch is applied to the current value.

-
Parameters
- - -
[in]apply_patchthe patch to apply
-
-
-

@complexity Linear in the lengths of patch.

-

@liveexample{The following code shows how a JSON Merge Patch is applied to a JSON document.,merge_patch}

-
See also
patch – apply a JSON patch
-
-RFC 7396 (JSON Merge Patch)
-
Since
version 3.0.0
- -
-
- -

◆ meta() [1/2]

- -
-
- - - - - -
- - - - - - - -
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json nlohmann::basic_json::meta ()
-
-inlinestatic
-
- -

returns version information on the library

-

This function returns a JSON object with information about the library, including the version number and information on the platform and compiler.

-
Returns
JSON object holding version information - - - - - - - - - - - - - - -
key description
compiler Information on the used compiler. It is an object with the following keys: c++ (the used C++ standard), family (the compiler family; possible values are clang, icc, gcc, ilecpp, msvc, pgcpp, sunpro, and unknown), and version (the compiler version).
copyright The copyright line for the library as string.
name The name of the library as string.
platform The used platform as string. Possible values are win32, linux, apple, unix, and unknown.
url The URL of the project as string.
version The version of the library. It is an object with the following keys: major, minor, and patch as defined by Semantic Versioning, and string (the version string).
-
-

@liveexample{The following code shows an example output of the meta() function.,meta}

-

@exceptionsafety Strong guarantee: if an exception is thrown, there are no changes to any JSON value.

-

@complexity Constant.

-
Since
2.1.0
- -
-
- -

◆ meta() [2/2]

- -
-
- - - - - -
- - - - - - - -
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json nlohmann::basic_json::meta ()
-
-inlinestatic
-
- -

returns version information on the library

-

This function returns a JSON object with information about the library, including the version number and information on the platform and compiler.

-
Returns
JSON object holding version information - - - - - - - - - - - - - - -
key description
compiler Information on the used compiler. It is an object with the following keys: c++ (the used C++ standard), family (the compiler family; possible values are clang, icc, gcc, ilecpp, msvc, pgcpp, sunpro, and unknown), and version (the compiler version).
copyright The copyright line for the library as string.
name The name of the library as string.
platform The used platform as string. Possible values are win32, linux, apple, unix, and unknown.
url The URL of the project as string.
version The version of the library. It is an object with the following keys: major, minor, and patch as defined by Semantic Versioning, and string (the version string).
-
-

@liveexample{The following code shows an example output of the meta() function.,meta}

-

@exceptionsafety Strong guarantee: if an exception is thrown, there are no changes to any JSON value.

-

@complexity Constant.

-
Since
2.1.0
- -
-
- -

◆ object() [1/2]

- -
-
- - - - - -
- - - - - - - - -
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json nlohmann::basic_json::object (initializer_list_t init = {})
-
-inlinestatic
-
- -

explicitly create an object from an initializer list

-

Creates a JSON object value from a given initializer list. The initializer lists elements must be pairs, and their first elements must be strings. If the initializer list is empty, the empty object {} is created.

-
Note
This function is only added for symmetry reasons. In contrast to the related function array(initializer_list_t), there are no cases which can only be expressed by this function. That is, any initializer list init can also be passed to the initializer list constructor basic_json(initializer_list_t, bool, value_t).
-
Parameters
- - -
[in]initinitializer list to create an object from (optional)
-
-
-
Returns
JSON object value
-
Exceptions
- - -
type_error.301if init is not a list of pairs whose first elements are strings. In this case, no object can be created. When such a value is passed to basic_json(initializer_list_t, bool, value_t), an array would have been created from the passed initializer list init. See example below.
-
-
-

@complexity Linear in the size of init.

-

@exceptionsafety Strong guarantee: if an exception is thrown, there are no changes to any JSON value.

-

@liveexample{The following code shows an example for the object function.,object}

-
See also
basic_json(initializer_list_t, bool, value_t) – create a JSON value from an initializer list
-
-array(initializer_list_t) – create a JSON array value from an initializer list
-
Since
version 1.0.0
- -
-
- -

◆ object() [2/2]

- -
-
- - - - - -
- - - - - - - - -
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json nlohmann::basic_json::object (initializer_list_t init = {})
-
-inlinestatic
-
- -

explicitly create an object from an initializer list

-

Creates a JSON object value from a given initializer list. The initializer lists elements must be pairs, and their first elements must be strings. If the initializer list is empty, the empty object {} is created.

-
Note
This function is only added for symmetry reasons. In contrast to the related function array(initializer_list_t), there are no cases which can only be expressed by this function. That is, any initializer list init can also be passed to the initializer list constructor basic_json(initializer_list_t, bool, value_t).
-
Parameters
- - -
[in]initinitializer list to create an object from (optional)
-
-
-
Returns
JSON object value
-
Exceptions
- - -
type_error.301if init is not a list of pairs whose first elements are strings. In this case, no object can be created. When such a value is passed to basic_json(initializer_list_t, bool, value_t), an array would have been created from the passed initializer list init. See example below.
-
-
-

@complexity Linear in the size of init.

-

@exceptionsafety Strong guarantee: if an exception is thrown, there are no changes to any JSON value.

-

@liveexample{The following code shows an example for the object function.,object}

-
See also
basic_json(initializer_list_t, bool, value_t) – create a JSON value from an initializer list
-
-array(initializer_list_t) – create a JSON array value from an initializer list
-
Since
version 1.0.0
- -
-
- -

◆ operator value_t() [1/2]

- -
-
- - - - - -
- - - - - - - -
constexpr nlohmann::basic_json::operator value_t () const
-
-inlineconstexprnoexcept
-
- -

return the type of the JSON value (implicit)

-

Implicitly return the type of the JSON value as a value from the value_t enumeration.

-
Returns
the type of the JSON value
-

@complexity Constant.

-

@exceptionsafety No-throw guarantee: this member function never throws exceptions.

-

@liveexample{The following code exemplifies the value_t operator for all JSON types.,operator__value_t}

-
See also
type() – return the type of the JSON value (explicit)
-
-type_name() – return the type as string
-
Since
version 1.0.0
- -
-
- -

◆ operator value_t() [2/2]

- -
-
- - - - - -
- - - - - - - -
constexpr nlohmann::basic_json::operator value_t () const
-
-inlineconstexprnoexcept
-
- -

return the type of the JSON value (implicit)

-

Implicitly return the type of the JSON value as a value from the value_t enumeration.

-
Returns
the type of the JSON value
-

@complexity Constant.

-

@exceptionsafety No-throw guarantee: this member function never throws exceptions.

-

@liveexample{The following code exemplifies the value_t operator for all JSON types.,operator__value_t}

-
See also
type() – return the type of the JSON value (explicit)
-
-type_name() – return the type as string
-
Since
version 1.0.0
- -
-
- -

◆ operator ValueType() [1/2]

- -
-
-
-template<typename ValueType , typename std::enable_if< not std::is_pointer< ValueType >::value and not std::is_same< ValueType, detail::json_ref< basic_json >>::value and not std::is_same< ValueType, typename string_t::value_type >::value and not detail::is_basic_json< ValueType >::value and not std::is_same< ValueType, std::initializer_list< typename string_t::value_type >>::value and not std::is_same< ValueType, typename std::string_view >::value and detail::is_detected< detail::get_template_function, const basic_json_t &, ValueType >::value, int >::type = 0>
- - - - - -
- - - - - - - -
nlohmann::basic_json::operator ValueType () const
-
-inline
-
- -

get a value (implicit)

-

Implicit type conversion between the JSON value and a compatible value. The call is realized by calling get() const.

-
Template Parameters
- - -
ValueTypenon-pointer type compatible to the JSON value, for instance int for JSON integer numbers, bool for JSON booleans, or std::vector types for JSON arrays. The character type of string_t as well as an initializer list of this type is excluded to avoid ambiguities as these types implicitly convert to std::string.
-
-
-
Returns
copy of the JSON value, converted to type ValueType
-
Exceptions
- - -
type_error.302in case passed type ValueType is incompatible to the JSON value type (e.g., the JSON value is of type boolean, but a string is requested); see example below
-
-
-

@complexity Linear in the size of the JSON value.

-

@liveexample{The example below shows several conversions from JSON values to other types. There a few things to note: (1) Floating-point numbers can be converted to integers\, (2) A JSON array can be converted to a standard std::vector<short>\, (3) A JSON object can be converted to C++ associative containers such as std::unordered_map<std::string\, json>.,operator__ValueType}

-
Since
version 1.0.0
- -
-
- -

◆ operator ValueType() [2/2]

- -
-
-
-template<typename ValueType , typename std::enable_if< !std::is_pointer< ValueType >::value &&!std::is_same< ValueType, detail::json_ref< basic_json >>::value &&!std::is_same< ValueType, typename string_t::value_type >::value &&!detail::is_basic_json< ValueType >::value &&!std::is_same< ValueType, std::initializer_list< typename string_t::value_type >>::value &&detail::is_detected< detail::get_template_function, const basic_json_t &, ValueType >::value, int >::type = 0>
- - - - - -
- - - - - - - -
JSON_EXPLICIT nlohmann::basic_json::operator ValueType () const
-
-inline
-
- -

get a value (implicit)

-

Implicit type conversion between the JSON value and a compatible value. The call is realized by calling get() const.

-
Template Parameters
- - -
ValueTypenon-pointer type compatible to the JSON value, for instance int for JSON integer numbers, bool for JSON booleans, or std::vector types for JSON arrays. The character type of string_t as well as an initializer list of this type is excluded to avoid ambiguities as these types implicitly convert to std::string.
-
-
-
Returns
copy of the JSON value, converted to type ValueType
-
Exceptions
- - -
type_error.302in case passed type ValueType is incompatible to the JSON value type (e.g., the JSON value is of type boolean, but a string is requested); see example below
-
-
-

@complexity Linear in the size of the JSON value.

-

@liveexample{The example below shows several conversions from JSON values to other types. There a few things to note: (1) Floating-point numbers can be converted to integers\, (2) A JSON array can be converted to a standard std::vector<short>\, (3) A JSON object can be converted to C++ associative containers such as std::unordered_map<std::string\, json>.,operator__ValueType}

-
Since
version 1.0.0
- -
-
- -

◆ operator+=() [1/8]

- -
-
- - - - - -
- - - - - - - - -
reference nlohmann::basic_json::operator+= (basic_json && val)
-
-inline
-
- -

add an object to an array

-

add an object to an array Appends the given element val to the end of the JSON value. If the function is called on a JSON null value, an empty array is created before appending val.

-
Parameters
- - -
[in]valthe value to add to the JSON array
-
-
-
Exceptions
- - -
type_error.308when called on a type other than JSON array or null; example: "cannot use push_back() with number"
-
-
-

@complexity Amortized constant.

-

@liveexample{The example shows how push_back() and += can be used to add elements to a JSON array. Note how the null value was silently converted to a JSON array.,push_back}

-
Since
version 1.0.0
- -
-
- -

◆ operator+=() [2/8]

- -
-
- - - - - -
- - - - - - - - -
reference nlohmann::basic_json::operator+= (basic_json && val)
-
-inline
-
- -

add an object to an array

-

add an object to an array Appends the given element val to the end of the JSON value. If the function is called on a JSON null value, an empty array is created before appending val.

-
Parameters
- - -
[in]valthe value to add to the JSON array
-
-
-
Exceptions
- - -
type_error.308when called on a type other than JSON array or null; example: "cannot use push_back() with number"
-
-
-

@complexity Amortized constant.

-

@liveexample{The example shows how push_back() and += can be used to add elements to a JSON array. Note how the null value was silently converted to a JSON array.,push_back}

-
Since
version 1.0.0
- -
-
- -

◆ operator+=() [3/8]

- -
-
- - - - - -
- - - - - - - - -
reference nlohmann::basic_json::operator+= (const basic_jsonval)
-
-inline
-
- -

add an object to an array

-

add an object to an array Appends the given element val to the end of the JSON value. If the function is called on a JSON null value, an empty array is created before appending val.

-
Parameters
- - -
[in]valthe value to add to the JSON array
-
-
-
Exceptions
- - -
type_error.308when called on a type other than JSON array or null; example: "cannot use push_back() with number"
-
-
-

@complexity Amortized constant.

-

@liveexample{The example shows how push_back() and += can be used to add elements to a JSON array. Note how the null value was silently converted to a JSON array.,push_back}

-
Since
version 1.0.0
- -
-
- -

◆ operator+=() [4/8]

- -
-
- - - - - -
- - - - - - - - -
reference nlohmann::basic_json::operator+= (const basic_jsonval)
-
-inline
-
- -

add an object to an array

-

add an object to an array Appends the given element val to the end of the JSON value. If the function is called on a JSON null value, an empty array is created before appending val.

-
Parameters
- - -
[in]valthe value to add to the JSON array
-
-
-
Exceptions
- - -
type_error.308when called on a type other than JSON array or null; example: "cannot use push_back() with number"
-
-
-

@complexity Amortized constant.

-

@liveexample{The example shows how push_back() and += can be used to add elements to a JSON array. Note how the null value was silently converted to a JSON array.,push_back}

-
Since
version 1.0.0
- -
-
- -

◆ operator+=() [5/8]

- -
-
- - - - - -
- - - - - - - - -
reference nlohmann::basic_json::operator+= (const typename object_t::value_type & val)
-
-inline
-
- -

add an object to an object

-

add an object to an object Inserts the given element val to the JSON object. If the function is called on a JSON null value, an empty object is created before inserting val.

-
Parameters
- - -
[in]valthe value to add to the JSON object
-
-
-
Exceptions
- - -
type_error.308when called on a type other than JSON object or null; example: "cannot use push_back() with number"
-
-
-

@complexity Logarithmic in the size of the container, O(log(size())).

-

@liveexample{The example shows how push_back() and += can be used to add elements to a JSON object. Note how the null value was silently converted to a JSON object.,push_back__object_t__value}

-
Since
version 1.0.0
- -
-
- -

◆ operator+=() [6/8]

- -
-
- - - - - -
- - - - - - - - -
reference nlohmann::basic_json::operator+= (const typename object_t::value_type & val)
-
-inline
-
- -

add an object to an object

-

add an object to an object Inserts the given element val to the JSON object. If the function is called on a JSON null value, an empty object is created before inserting val.

-
Parameters
- - -
[in]valthe value to add to the JSON object
-
-
-
Exceptions
- - -
type_error.308when called on a type other than JSON object or null; example: "cannot use push_back() with number"
-
-
-

@complexity Logarithmic in the size of the container, O(log(size())).

-

@liveexample{The example shows how push_back() and += can be used to add elements to a JSON object. Note how the null value was silently converted to a JSON object.,push_back__object_t__value}

-
Since
version 1.0.0
- -
-
- -

◆ operator+=() [7/8]

- -
-
- - - - - -
- - - - - - - - -
reference nlohmann::basic_json::operator+= (initializer_list_t init)
-
-inline
-
- -

add an object to an object

-

add an object to an object This function allows to use push_back with an initializer list. In case

-
    -
  1. the current value is an object,
  2. -
  3. the initializer list init contains only two elements, and
  4. -
  5. the first element of init is a string,
  6. -
-

init is converted into an object element and added using push_back(const typename object_t::value_type&). Otherwise, init is converted to a JSON value and added using push_back(basic_json&&).

-
Parameters
- - -
[in]initan initializer list
-
-
-

@complexity Linear in the size of the initializer list init.

-
Note
This function is required to resolve an ambiguous overload error, because pairs like {"key", "value"} can be both interpreted as object_t::value_type or std::initializer_list<basic_json>, see https://github.com/nlohmann/json/issues/235 for more information.
-

@liveexample{The example shows how initializer lists are treated as objects when possible.,push_back__initializer_list}

- -
-
- -

◆ operator+=() [8/8]

- -
-
- - - - - -
- - - - - - - - -
reference nlohmann::basic_json::operator+= (initializer_list_t init)
-
-inline
-
- -

add an object to an object

-

add an object to an object This function allows to use push_back with an initializer list. In case

-
    -
  1. the current value is an object,
  2. -
  3. the initializer list init contains only two elements, and
  4. -
  5. the first element of init is a string,
  6. -
-

init is converted into an object element and added using push_back(const typename object_t::value_type&). Otherwise, init is converted to a JSON value and added using push_back(basic_json&&).

-
Parameters
- - -
[in]initan initializer list
-
-
-

@complexity Linear in the size of the initializer list init.

-
Note
This function is required to resolve an ambiguous overload error, because pairs like {"key", "value"} can be both interpreted as object_t::value_type or std::initializer_list<basic_json>, see https://github.com/nlohmann/json/issues/235 for more information.
-

@liveexample{The example shows how initializer lists are treated as objects when possible.,push_back__initializer_list}

- -
-
- -

◆ operator=() [1/2]

- -
-
- - - - - -
- - - - - - - - -
basic_json& nlohmann::basic_json::operator= (basic_json other)
-
-inlinenoexcept
-
- -

copy assignment

-

Copy assignment operator. Copies a JSON value via the "copy and swap" strategy: It is expressed in terms of the copy constructor, destructor, and the swap() member function.

-
Parameters
- - -
[in]othervalue to copy from
-
-
-

@complexity Linear.

-

@requirement This function helps basic_json satisfying the Container requirements:

    -
  • The complexity is linear.
  • -
-

@liveexample{The code below shows and example for the copy assignment. It creates a copy of value a which is then swapped with b. Finally\, the copy of a (which is the null value after the swap) is destroyed.,basic_json__copyassignment}

-
Since
version 1.0.0
- -
-
- -

◆ operator=() [2/2]

- -
-
- - - - - -
- - - - - - - - -
basic_json& nlohmann::basic_json::operator= (basic_json other)
-
-inlinenoexcept
-
- -

copy assignment

-

Copy assignment operator. Copies a JSON value via the "copy and swap" strategy: It is expressed in terms of the copy constructor, destructor, and the swap() member function.

-
Parameters
- - -
[in]othervalue to copy from
-
-
-

@complexity Linear.

-

@requirement This function helps basic_json satisfying the Container requirements:

    -
  • The complexity is linear.
  • -
-

@liveexample{The code below shows and example for the copy assignment. It creates a copy of value a which is then swapped with b. Finally\, the copy of a (which is the null value after the swap) is destroyed.,basic_json__copyassignment}

-
Since
version 1.0.0
- -
-
- -

◆ operator[]() [1/16]

- -
-
- - - - - -
- - - - - - - - -
reference nlohmann::basic_json::operator[] (const json_pointerptr)
-
-inline
-
- -

access specified element via JSON Pointer

-

Uses a JSON pointer to retrieve a reference to the respective JSON value. No bound checking is performed. Similar to operator[](const typename object_t::key_type&), null values are created in arrays and objects if necessary.

-

In particular:

    -
  • If the JSON pointer points to an object key that does not exist, it is created an filled with a null value before a reference to it is returned.
  • -
  • If the JSON pointer points to an array index that does not exist, it is created an filled with a null value before a reference to it is returned. All indices between the current maximum and the given index are also filled with null.
  • -
  • The special value - is treated as a synonym for the index past the end.
  • -
-
Parameters
- - -
[in]ptra JSON pointer
-
-
-
Returns
reference to the element pointed to by ptr
-

@complexity Constant.

-
Exceptions
- - - - -
parse_error.106if an array index begins with '0'
parse_error.109if an array index was not a number
out_of_range.404if the JSON pointer can not be resolved
-
-
-

@liveexample{The behavior is shown in the example.,operatorjson_pointer}

-
Since
version 2.0.0
- -
-
- -

◆ operator[]() [2/16]

- -
-
- - - - - -
- - - - - - - - -
reference nlohmann::basic_json::operator[] (const json_pointerptr)
-
-inline
-
- -

access specified element via JSON Pointer

-

Uses a JSON pointer to retrieve a reference to the respective JSON value. No bound checking is performed. Similar to operator[](const typename object_t::key_type&), null values are created in arrays and objects if necessary.

-

In particular:

    -
  • If the JSON pointer points to an object key that does not exist, it is created an filled with a null value before a reference to it is returned.
  • -
  • If the JSON pointer points to an array index that does not exist, it is created an filled with a null value before a reference to it is returned. All indices between the current maximum and the given index are also filled with null.
  • -
  • The special value - is treated as a synonym for the index past the end.
  • -
-
Parameters
- - -
[in]ptra JSON pointer
-
-
-
Returns
reference to the element pointed to by ptr
-

@complexity Constant.

-
Exceptions
- - - - -
parse_error.106if an array index begins with '0'
parse_error.109if an array index was not a number
out_of_range.404if the JSON pointer can not be resolved
-
-
-

@liveexample{The behavior is shown in the example.,operatorjson_pointer}

-
Since
version 2.0.0
- -
-
- -

◆ operator[]() [3/16]

- -
-
- - - - - -
- - - - - - - - -
const_reference nlohmann::basic_json::operator[] (const json_pointerptr) const
-
-inline
-
- -

access specified element via JSON Pointer

-

Uses a JSON pointer to retrieve a reference to the respective JSON value. No bound checking is performed. The function does not change the JSON value; no null values are created. In particular, the the special value - yields an exception.

-
Parameters
- - -
[in]ptrJSON pointer to the desired element
-
-
-
Returns
const reference to the element pointed to by ptr
-

@complexity Constant.

-
Exceptions
- - - - - -
parse_error.106if an array index begins with '0'
parse_error.109if an array index was not a number
out_of_range.402if the array index '-' is used
out_of_range.404if the JSON pointer can not be resolved
-
-
-

@liveexample{The behavior is shown in the example.,operatorjson_pointer_const}

-
Since
version 2.0.0
- -
-
- -

◆ operator[]() [4/16]

- -
-
- - - - - -
- - - - - - - - -
const_reference nlohmann::basic_json::operator[] (const json_pointerptr) const
-
-inline
-
- -

access specified element via JSON Pointer

-

Uses a JSON pointer to retrieve a reference to the respective JSON value. No bound checking is performed. The function does not change the JSON value; no null values are created. In particular, the special value - yields an exception.

-
Parameters
- - -
[in]ptrJSON pointer to the desired element
-
-
-
Returns
const reference to the element pointed to by ptr
-

@complexity Constant.

-
Exceptions
- - - - - -
parse_error.106if an array index begins with '0'
parse_error.109if an array index was not a number
out_of_range.402if the array index '-' is used
out_of_range.404if the JSON pointer can not be resolved
-
-
-

@liveexample{The behavior is shown in the example.,operatorjson_pointer_const}

-
Since
version 2.0.0
- -
-
- -

◆ operator[]() [5/16]

- -
-
- - - - - -
- - - - - - - - -
reference nlohmann::basic_json::operator[] (const typename object_t::key_type & key)
-
-inline
-
- -

access specified object element

-

Returns a reference to the element at with specified key key.

-
Note
If key is not found in the object, then it is silently added to the object and filled with a null value to make key a valid reference. In case the value was null before, it is converted to an object.
-
Parameters
- - -
[in]keykey of the element to access
-
-
-
Returns
reference to the element at key key
-
Exceptions
- - -
type_error.305if the JSON value is not an object or null; in that cases, using the [] operator with a key makes no sense.
-
-
-

@complexity Logarithmic in the size of the container.

-

@liveexample{The example below shows how object elements can be read and written using the [] operator.,operatorarray__key_type}

-
See also
at(const typename object_t::key_type&) for access by reference with range checking
-
-value() for access by value with a default value
-
Since
version 1.0.0
- -
-
- -

◆ operator[]() [6/16]

- -
-
- - - - - -
- - - - - - - - -
reference nlohmann::basic_json::operator[] (const typename object_t::key_type & key)
-
-inline
-
- -

access specified object element

-

Returns a reference to the element at with specified key key.

-
Note
If key is not found in the object, then it is silently added to the object and filled with a null value to make key a valid reference. In case the value was null before, it is converted to an object.
-
Parameters
- - -
[in]keykey of the element to access
-
-
-
Returns
reference to the element at key key
-
Exceptions
- - -
type_error.305if the JSON value is not an object or null; in that cases, using the [] operator with a key makes no sense.
-
-
-

@complexity Logarithmic in the size of the container.

-

@liveexample{The example below shows how object elements can be read and written using the [] operator.,operatorarray__key_type}

-
See also
at(const typename object_t::key_type&) for access by reference with range checking
-
-value() for access by value with a default value
-
Since
version 1.0.0
- -
-
- -

◆ operator[]() [7/16]

- -
-
- - - - - -
- - - - - - - - -
const_reference nlohmann::basic_json::operator[] (const typename object_t::key_type & key) const
-
-inline
-
- -

read-only access specified object element

-

Returns a const reference to the element at with specified key key. No bounds checking is performed.

-
Warning
If the element with key key does not exist, the behavior is undefined.
-
Parameters
- - -
[in]keykey of the element to access
-
-
-
Returns
const reference to the element at key key
-
Precondition
The element with key key must exist. This precondition is enforced with an assertion.
-
Exceptions
- - -
type_error.305if the JSON value is not an object; in that case, using the [] operator with a key makes no sense.
-
-
-

@complexity Logarithmic in the size of the container.

-

@liveexample{The example below shows how object elements can be read using the [] operator.,operatorarray__key_type_const}

-
See also
at(const typename object_t::key_type&) for access by reference with range checking
-
-value() for access by value with a default value
-
Since
version 1.0.0
- -
-
- -

◆ operator[]() [8/16]

- -
-
- - - - - -
- - - - - - - - -
const_reference nlohmann::basic_json::operator[] (const typename object_t::key_type & key) const
-
-inline
-
- -

read-only access specified object element

-

Returns a const reference to the element at with specified key key. No bounds checking is performed.

-
Warning
If the element with key key does not exist, the behavior is undefined.
-
Parameters
- - -
[in]keykey of the element to access
-
-
-
Returns
const reference to the element at key key
-
Precondition
The element with key key must exist. This precondition is enforced with an assertion.
-
Exceptions
- - -
type_error.305if the JSON value is not an object; in that case, using the [] operator with a key makes no sense.
-
-
-

@complexity Logarithmic in the size of the container.

-

@liveexample{The example below shows how object elements can be read using the [] operator.,operatorarray__key_type_const}

-
See also
at(const typename object_t::key_type&) for access by reference with range checking
-
-value() for access by value with a default value
-
Since
version 1.0.0
- -
-
- -

◆ operator[]() [9/16]

- -
-
- - - - - -
- - - - - - - - -
reference nlohmann::basic_json::operator[] (size_type idx)
-
-inline
-
- -

access specified array element

-

Returns a reference to the element at specified location idx.

-
Note
If idx is beyond the range of the array (i.e., idx >= size()), then the array is silently filled up with null values to make idx a valid reference to the last stored element.
-
Parameters
- - -
[in]idxindex of the element to access
-
-
-
Returns
reference to the element at index idx
-
Exceptions
- - -
type_error.305if the JSON value is not an array or null; in that cases, using the [] operator with an index makes no sense.
-
-
-

@complexity Constant if idx is in the range of the array. Otherwise linear in idx - size().

-

@liveexample{The example below shows how array elements can be read and written using [] operator. Note the addition of null values.,operatorarray__size_type}

-
Since
version 1.0.0
- -
-
- -

◆ operator[]() [10/16]

- -
-
- - - - - -
- - - - - - - - -
reference nlohmann::basic_json::operator[] (size_type idx)
-
-inline
-
- -

access specified array element

-

Returns a reference to the element at specified location idx.

-
Note
If idx is beyond the range of the array (i.e., idx >= size()), then the array is silently filled up with null values to make idx a valid reference to the last stored element.
-
Parameters
- - -
[in]idxindex of the element to access
-
-
-
Returns
reference to the element at index idx
-
Exceptions
- - -
type_error.305if the JSON value is not an array or null; in that cases, using the [] operator with an index makes no sense.
-
-
-

@complexity Constant if idx is in the range of the array. Otherwise linear in idx - size().

-

@liveexample{The example below shows how array elements can be read and written using [] operator. Note the addition of null values.,operatorarray__size_type}

-
Since
version 1.0.0
- -
-
- -

◆ operator[]() [11/16]

- -
-
- - - - - -
- - - - - - - - -
const_reference nlohmann::basic_json::operator[] (size_type idx) const
-
-inline
-
- -

access specified array element

-

Returns a const reference to the element at specified location idx.

-
Parameters
- - -
[in]idxindex of the element to access
-
-
-
Returns
const reference to the element at index idx
-
Exceptions
- - -
type_error.305if the JSON value is not an array; in that case, using the [] operator with an index makes no sense.
-
-
-

@complexity Constant.

-

@liveexample{The example below shows how array elements can be read using the [] operator.,operatorarray__size_type_const}

-
Since
version 1.0.0
- -
-
- -

◆ operator[]() [12/16]

- -
-
- - - - - -
- - - - - - - - -
const_reference nlohmann::basic_json::operator[] (size_type idx) const
-
-inline
-
- -

access specified array element

-

Returns a const reference to the element at specified location idx.

-
Parameters
- - -
[in]idxindex of the element to access
-
-
-
Returns
const reference to the element at index idx
-
Exceptions
- - -
type_error.305if the JSON value is not an array; in that case, using the [] operator with an index makes no sense.
-
-
-

@complexity Constant.

-

@liveexample{The example below shows how array elements can be read using the [] operator.,operatorarray__size_type_const}

-
Since
version 1.0.0
- -
-
- -

◆ operator[]() [13/16]

- -
-
-
-template<typename T >
- - - - - -
- - - - - - - - -
reference nlohmann::basic_json::operator[] (T * key)
-
-inline
-
- -

access specified object element

-

Returns a reference to the element at with specified key key.

-
Note
If key is not found in the object, then it is silently added to the object and filled with a null value to make key a valid reference. In case the value was null before, it is converted to an object.
-
Parameters
- - -
[in]keykey of the element to access
-
-
-
Returns
reference to the element at key key
-
Exceptions
- - -
type_error.305if the JSON value is not an object or null; in that cases, using the [] operator with a key makes no sense.
-
-
-

@complexity Logarithmic in the size of the container.

-

@liveexample{The example below shows how object elements can be read and written using the [] operator.,operatorarray__key_type}

-
See also
at(const typename object_t::key_type&) for access by reference with range checking
-
-value() for access by value with a default value
-
Since
version 1.1.0
- -
-
- -

◆ operator[]() [14/16]

- -
-
-
-template<typename T >
- - - - - -
- - - - - - - - -
reference nlohmann::basic_json::operator[] (T * key)
-
-inline
-
- -

access specified object element

-

Returns a reference to the element at with specified key key.

-
Note
If key is not found in the object, then it is silently added to the object and filled with a null value to make key a valid reference. In case the value was null before, it is converted to an object.
-
Parameters
- - -
[in]keykey of the element to access
-
-
-
Returns
reference to the element at key key
-
Exceptions
- - -
type_error.305if the JSON value is not an object or null; in that cases, using the [] operator with a key makes no sense.
-
-
-

@complexity Logarithmic in the size of the container.

-

@liveexample{The example below shows how object elements can be read and written using the [] operator.,operatorarray__key_type}

-
See also
at(const typename object_t::key_type&) for access by reference with range checking
-
-value() for access by value with a default value
-
Since
version 1.1.0
- -
-
- -

◆ operator[]() [15/16]

- -
-
-
-template<typename T >
- - - - - -
- - - - - - - - -
const_reference nlohmann::basic_json::operator[] (T * key) const
-
-inline
-
- -

read-only access specified object element

-

Returns a const reference to the element at with specified key key. No bounds checking is performed.

-
Warning
If the element with key key does not exist, the behavior is undefined.
-
Parameters
- - -
[in]keykey of the element to access
-
-
-
Returns
const reference to the element at key key
-
Precondition
The element with key key must exist. This precondition is enforced with an assertion.
-
Exceptions
- - -
type_error.305if the JSON value is not an object; in that case, using the [] operator with a key makes no sense.
-
-
-

@complexity Logarithmic in the size of the container.

-

@liveexample{The example below shows how object elements can be read using the [] operator.,operatorarray__key_type_const}

-
See also
at(const typename object_t::key_type&) for access by reference with range checking
-
-value() for access by value with a default value
-
Since
version 1.1.0
- -
-
- -

◆ operator[]() [16/16]

- -
-
-
-template<typename T >
- - - - - -
- - - - - - - - -
const_reference nlohmann::basic_json::operator[] (T * key) const
-
-inline
-
- -

read-only access specified object element

-

Returns a const reference to the element at with specified key key. No bounds checking is performed.

-
Warning
If the element with key key does not exist, the behavior is undefined.
-
Parameters
- - -
[in]keykey of the element to access
-
-
-
Returns
const reference to the element at key key
-
Precondition
The element with key key must exist. This precondition is enforced with an assertion.
-
Exceptions
- - -
type_error.305if the JSON value is not an object; in that case, using the [] operator with a key makes no sense.
-
-
-

@complexity Logarithmic in the size of the container.

-

@liveexample{The example below shows how object elements can be read using the [] operator.,operatorarray__key_type_const}

-
See also
at(const typename object_t::key_type&) for access by reference with range checking
-
-value() for access by value with a default value
-
Since
version 1.1.0
- -
-
- -

◆ parse() [1/5]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json nlohmann::basic_json::parse (detail::input_adapter && i,
const parser_callback_t cb = nullptr,
const bool allow_exceptions = true 
)
-
-inlinestatic
-
- -

deserialize from a compatible input

-

This function reads from a compatible input. Examples are:

    -
  • an array of 1-byte values
  • -
  • strings with character/literal type with size of 1 byte
  • -
  • input streams
  • -
  • container with contiguous storage of 1-byte values. Compatible container types include std::vector, std::string, std::array, std::valarray, and std::initializer_list. Furthermore, C-style arrays can be used with std::begin()/std::end(). User-defined containers can be used as long as they implement random-access iterators and a contiguous storage.
  • -
-
Precondition
Each element of the container has a size of 1 byte. Violating this precondition yields undefined behavior. This precondition is enforced with a static assertion.
-
-The container storage is contiguous. Violating this precondition yields undefined behavior. This precondition is enforced with an assertion.
-
Warning
There is no way to enforce all preconditions at compile-time. If the function is called with a noncompliant container and with assertions switched off, the behavior is undefined and will most likely yield segmentation violation.
-
Parameters
- - - - -
[in]iinput to read from
[in]cba parser callback function of type parser_callback_t which is used to control the deserialization by filtering unwanted values (optional)
[in]allow_exceptionswhether to throw exceptions in case of a parse error (optional, true by default)
-
-
-
Returns
deserialized JSON value; in case of a parse error and allow_exceptions set to false, the return value will be value_t::discarded.
-
Exceptions
- - - - -
parse_error.101if a parse error occurs; example: ""unexpected end of input; expected string literal""
parse_error.102if to_unicode fails or surrogate error
parse_error.103if to_unicode fails
-
-
-

@complexity Linear in the length of the input. The parser is a predictive LL(1) parser. The complexity can be higher if the parser callback function cb has a super-linear complexity.

-
Note
A UTF-8 byte order mark is silently ignored.
-

@liveexample{The example below demonstrates the parse() function reading from an array.,parse__array__parser_callback_t}

-

@liveexample{The example below demonstrates the parse() function with and without callback function.,parse__string__parser_callback_t}

-

@liveexample{The example below demonstrates the parse() function with and without callback function.,parse__istream__parser_callback_t}

-

@liveexample{The example below demonstrates the parse() function reading from a contiguous container.,parse__contiguouscontainer__parser_callback_t}

-
Since
version 2.0.3 (contiguous containers)
- -
-
- -

◆ parse() [2/5]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json nlohmann::basic_json::parse (detail::span_input_adapter && i,
const parser_callback_t cb = nullptr,
const bool allow_exceptions = true,
const bool ignore_comments = false 
)
-
-inlinestatic
-
- -
-
- -

◆ parse() [3/5]

- -
-
-
-template<typename InputType >
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json nlohmann::basic_json::parse (InputType && i,
const parser_callback_t cb = nullptr,
const bool allow_exceptions = true,
const bool ignore_comments = false 
)
-
-inlinestatic
-
- -

deserialize from a compatible input

-
Template Parameters
- - -
InputTypeA compatible input, for instance
    -
  • an std::istream object
  • -
  • a FILE pointer
  • -
  • a C-style array of characters
  • -
  • a pointer to a null-terminated string of single byte characters
  • -
  • an object obj for which begin(obj) and end(obj) produces a valid pair of iterators.
  • -
-
-
-
-
Parameters
- - - - - -
[in]iinput to read from
[in]cba parser callback function of type parser_callback_t which is used to control the deserialization by filtering unwanted values (optional)
[in]allow_exceptionswhether to throw exceptions in case of a parse error (optional, true by default)
[in]ignore_commentswhether comments should be ignored and treated like whitespace (true) or yield a parse error (true); (optional, false by default)
-
-
-
Returns
deserialized JSON value; in case of a parse error and allow_exceptions set to false, the return value will be value_t::discarded.
-
Exceptions
- - - - -
parse_error.101if a parse error occurs; example: ""unexpected end of input; expected string literal""
parse_error.102if to_unicode fails or surrogate error
parse_error.103if to_unicode fails
-
-
-

@complexity Linear in the length of the input. The parser is a predictive LL(1) parser. The complexity can be higher if the parser callback function cb or reading from the input i has a super-linear complexity.

-
Note
A UTF-8 byte order mark is silently ignored.
-

@liveexample{The example below demonstrates the parse() function reading from an array.,parse__array__parser_callback_t}

-

@liveexample{The example below demonstrates the parse() function with and without callback function.,parse__string__parser_callback_t}

-

@liveexample{The example below demonstrates the parse() function with and without callback function.,parse__istream__parser_callback_t}

-

@liveexample{The example below demonstrates the parse() function reading from a contiguous container.,parse__contiguouscontainer__parser_callback_t}

-
Since
version 2.0.3 (contiguous containers); version 3.9.0 allowed to ignore comments.
- -
-
- -

◆ parse() [4/5]

- -
-
-
-template<class IteratorType , typename std::enable_if< std::is_base_of< std::random_access_iterator_tag, typename std::iterator_traits< IteratorType >::iterator_category >::value, int >::type = 0>
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
static basic_json nlohmann::basic_json::parse (IteratorType first,
IteratorType last,
const parser_callback_t cb = nullptr,
const bool allow_exceptions = true 
)
-
-inlinestatic
-
- -

deserialize from an iterator range with contiguous storage

-

This function reads from an iterator range of a container with contiguous storage of 1-byte values. Compatible container types include std::vector, std::string, std::array, std::valarray, and std::initializer_list. Furthermore, C-style arrays can be used with std::begin()/std::end(). User-defined containers can be used as long as they implement random-access iterators and a contiguous storage.

-
Precondition
The iterator range is contiguous. Violating this precondition yields undefined behavior. This precondition is enforced with an assertion.
-
-Each element in the range has a size of 1 byte. Violating this precondition yields undefined behavior. This precondition is enforced with a static assertion.
-
Warning
There is no way to enforce all preconditions at compile-time. If the function is called with noncompliant iterators and with assertions switched off, the behavior is undefined and will most likely yield segmentation violation.
-
Template Parameters
- - -
IteratorTypeiterator of container with contiguous storage
-
-
-
Parameters
- - - - - -
[in]firstbegin of the range to parse (included)
[in]lastend of the range to parse (excluded)
[in]cba parser callback function of type parser_callback_t which is used to control the deserialization by filtering unwanted values (optional)
[in]allow_exceptionswhether to throw exceptions in case of a parse error (optional, true by default)
-
-
-
Returns
deserialized JSON value; in case of a parse error and allow_exceptions set to false, the return value will be value_t::discarded.
-
Exceptions
- - - - -
parse_error.101in case of an unexpected token
parse_error.102if to_unicode fails or surrogate error
parse_error.103if to_unicode fails
-
-
-

@complexity Linear in the length of the input. The parser is a predictive LL(1) parser. The complexity can be higher if the parser callback function cb has a super-linear complexity.

-
Note
A UTF-8 byte order mark is silently ignored.
-

@liveexample{The example below demonstrates the parse() function reading from an iterator range.,parse__iteratortype__parser_callback_t}

-
Since
version 2.0.3
- -
-
- -

◆ parse() [5/5]

- -
-
-
-template<typename IteratorType >
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json nlohmann::basic_json::parse (IteratorType first,
IteratorType last,
const parser_callback_t cb = nullptr,
const bool allow_exceptions = true,
const bool ignore_comments = false 
)
-
-inlinestatic
-
- -

deserialize from a pair of character iterators

-

The value_type of the iterator must be a integral type with size of 1, 2 or 4 bytes, which will be interpreted respectively as UTF-8, UTF-16 and UTF-32.

-
Parameters
- - - - - - -
[in]firstiterator to start of character range
[in]lastiterator to end of character range
[in]cba parser callback function of type parser_callback_t which is used to control the deserialization by filtering unwanted values (optional)
[in]allow_exceptionswhether to throw exceptions in case of a parse error (optional, true by default)
[in]ignore_commentswhether comments should be ignored and treated like whitespace (true) or yield a parse error (true); (optional, false by default)
-
-
-
Returns
deserialized JSON value; in case of a parse error and allow_exceptions set to false, the return value will be value_t::discarded.
-
Exceptions
- - - - -
parse_error.101if a parse error occurs; example: ""unexpected end of input; expected string literal""
parse_error.102if to_unicode fails or surrogate error
parse_error.103if to_unicode fails
-
-
- -
-
- -

◆ patch() [1/2]

- -
-
- - - - - -
- - - - - - - - -
basic_json nlohmann::basic_json::patch (const basic_jsonjson_patch) const
-
-inline
-
- -

applies a JSON patch

-

JSON Patch defines a JSON document structure for expressing a sequence of operations to apply to a JSON) document. With this function, a JSON Patch is applied to the current JSON value by executing all operations from the patch.

-
Parameters
- - -
[in]json_patchJSON patch document
-
-
-
Returns
patched document
-
Note
The application of a patch is atomic: Either all operations succeed and the patched document is returned or an exception is thrown. In any case, the original value is not changed: the patch is applied to a copy of the value.
-
Exceptions
- - - - - - - -
parse_error.104if the JSON patch does not consist of an array of objects
parse_error.105if the JSON patch is malformed (e.g., mandatory attributes are missing); example: "operation add must have member path"
out_of_range.401if an array index is out of range.
out_of_range.403if a JSON pointer inside the patch could not be resolved successfully in the current JSON value; example: "key baz not -found"
out_of_range.405if JSON pointer has no parent ("add", "remove", "move")
other_error.501if "test" operation was unsuccessful
-
-
-

@complexity Linear in the size of the JSON value and the length of the JSON patch. As usually only a fraction of the JSON value is affected by the patch, the complexity can usually be neglected.

-

@liveexample{The following code shows how a JSON patch is applied to a value.,patch}

-
See also
diff – create a JSON patch by comparing two JSON values
-
-RFC 6902 (JSON Patch)
-
-RFC 6901 (JSON Pointer)
-
Since
version 2.0.0
- -
-
- -

◆ patch() [2/2]

- -
-
- - - - - -
- - - - - - - - -
basic_json nlohmann::basic_json::patch (const basic_jsonjson_patch) const
-
-inline
-
- -

applies a JSON patch

-

JSON Patch defines a JSON document structure for expressing a sequence of operations to apply to a JSON) document. With this function, a JSON Patch is applied to the current JSON value by executing all operations from the patch.

-
Parameters
- - -
[in]json_patchJSON patch document
-
-
-
Returns
patched document
-
Note
The application of a patch is atomic: Either all operations succeed and the patched document is returned or an exception is thrown. In any case, the original value is not changed: the patch is applied to a copy of the value.
-
Exceptions
- - - - - - - -
parse_error.104if the JSON patch does not consist of an array of objects
parse_error.105if the JSON patch is malformed (e.g., mandatory attributes are missing); example: "operation add must have member path"
out_of_range.401if an array index is out of range.
out_of_range.403if a JSON pointer inside the patch could not be resolved successfully in the current JSON value; example: "key baz not -found"
out_of_range.405if JSON pointer has no parent ("add", "remove", "move")
other_error.501if "test" operation was unsuccessful
-
-
-

@complexity Linear in the size of the JSON value and the length of the JSON patch. As usually only a fraction of the JSON value is affected by the patch, the complexity can usually be neglected.

-

@liveexample{The following code shows how a JSON patch is applied to a value.,patch}

-
See also
diff – create a JSON patch by comparing two JSON values
-
-RFC 6902 (JSON Patch)
-
-RFC 6901 (JSON Pointer)
-
Since
version 2.0.0
- -
-
- -

◆ push_back() [1/8]

- -
-
- - - - - -
- - - - - - - - -
void nlohmann::basic_json::push_back (basic_json && val)
-
-inline
-
- -

add an object to an array

-

Appends the given element val to the end of the JSON value. If the function is called on a JSON null value, an empty array is created before appending val.

-
Parameters
- - -
[in]valthe value to add to the JSON array
-
-
-
Exceptions
- - -
type_error.308when called on a type other than JSON array or null; example: "cannot use push_back() with number"
-
-
-

@complexity Amortized constant.

-

@liveexample{The example shows how push_back() and += can be used to add elements to a JSON array. Note how the null value was silently converted to a JSON array.,push_back}

-
Since
version 1.0.0
- -
-
- -

◆ push_back() [2/8]

- -
-
- - - - - -
- - - - - - - - -
void nlohmann::basic_json::push_back (basic_json && val)
-
-inline
-
- -

add an object to an array

-

Appends the given element val to the end of the JSON value. If the function is called on a JSON null value, an empty array is created before appending val.

-
Parameters
- - -
[in]valthe value to add to the JSON array
-
-
-
Exceptions
- - -
type_error.308when called on a type other than JSON array or null; example: "cannot use push_back() with number"
-
-
-

@complexity Amortized constant.

-

@liveexample{The example shows how push_back() and += can be used to add elements to a JSON array. Note how the null value was silently converted to a JSON array.,push_back}

-
Since
version 1.0.0
- -
-
- -

◆ push_back() [3/8]

- -
-
- - - - - -
- - - - - - - - -
void nlohmann::basic_json::push_back (const basic_jsonval)
-
-inline
-
- -

add an object to an array

-

add an object to an array Appends the given element val to the end of the JSON value. If the function is called on a JSON null value, an empty array is created before appending val.

-
Parameters
- - -
[in]valthe value to add to the JSON array
-
-
-
Exceptions
- - -
type_error.308when called on a type other than JSON array or null; example: "cannot use push_back() with number"
-
-
-

@complexity Amortized constant.

-

@liveexample{The example shows how push_back() and += can be used to add elements to a JSON array. Note how the null value was silently converted to a JSON array.,push_back}

-
Since
version 1.0.0
- -
-
- -

◆ push_back() [4/8]

- -
-
- - - - - -
- - - - - - - - -
void nlohmann::basic_json::push_back (const basic_jsonval)
-
-inline
-
- -

add an object to an array

-

add an object to an array Appends the given element val to the end of the JSON value. If the function is called on a JSON null value, an empty array is created before appending val.

-
Parameters
- - -
[in]valthe value to add to the JSON array
-
-
-
Exceptions
- - -
type_error.308when called on a type other than JSON array or null; example: "cannot use push_back() with number"
-
-
-

@complexity Amortized constant.

-

@liveexample{The example shows how push_back() and += can be used to add elements to a JSON array. Note how the null value was silently converted to a JSON array.,push_back}

-
Since
version 1.0.0
- -
-
- -

◆ push_back() [5/8]

- -
-
- - - - - -
- - - - - - - - -
void nlohmann::basic_json::push_back (const typename object_t::value_type & val)
-
-inline
-
- -

add an object to an object

-

Inserts the given element val to the JSON object. If the function is called on a JSON null value, an empty object is created before inserting val.

-
Parameters
- - -
[in]valthe value to add to the JSON object
-
-
-
Exceptions
- - -
type_error.308when called on a type other than JSON object or null; example: "cannot use push_back() with number"
-
-
-

@complexity Logarithmic in the size of the container, O(log(size())).

-

@liveexample{The example shows how push_back() and += can be used to add elements to a JSON object. Note how the null value was silently converted to a JSON object.,push_back__object_t__value}

-
Since
version 1.0.0
- -
-
- -

◆ push_back() [6/8]

- -
-
- - - - - -
- - - - - - - - -
void nlohmann::basic_json::push_back (const typename object_t::value_type & val)
-
-inline
-
- -

add an object to an object

-

Inserts the given element val to the JSON object. If the function is called on a JSON null value, an empty object is created before inserting val.

-
Parameters
- - -
[in]valthe value to add to the JSON object
-
-
-
Exceptions
- - -
type_error.308when called on a type other than JSON object or null; example: "cannot use push_back() with number"
-
-
-

@complexity Logarithmic in the size of the container, O(log(size())).

-

@liveexample{The example shows how push_back() and += can be used to add elements to a JSON object. Note how the null value was silently converted to a JSON object.,push_back__object_t__value}

-
Since
version 1.0.0
- -
-
- -

◆ push_back() [7/8]

- -
-
- - - - - -
- - - - - - - - -
void nlohmann::basic_json::push_back (initializer_list_t init)
-
-inline
-
- -

add an object to an object

-

This function allows to use push_back with an initializer list. In case

-
    -
  1. the current value is an object,
  2. -
  3. the initializer list init contains only two elements, and
  4. -
  5. the first element of init is a string,
  6. -
-

init is converted into an object element and added using push_back(const typename object_t::value_type&). Otherwise, init is converted to a JSON value and added using push_back(basic_json&&).

-
Parameters
- - -
[in]initan initializer list
-
-
-

@complexity Linear in the size of the initializer list init.

-
Note
This function is required to resolve an ambiguous overload error, because pairs like {"key", "value"} can be both interpreted as object_t::value_type or std::initializer_list<basic_json>, see https://github.com/nlohmann/json/issues/235 for more information.
-

@liveexample{The example shows how initializer lists are treated as objects when possible.,push_back__initializer_list}

- -
-
- -

◆ push_back() [8/8]

- -
-
- - - - - -
- - - - - - - - -
void nlohmann::basic_json::push_back (initializer_list_t init)
-
-inline
-
- -

add an object to an object

-

This function allows to use push_back with an initializer list. In case

-
    -
  1. the current value is an object,
  2. -
  3. the initializer list init contains only two elements, and
  4. -
  5. the first element of init is a string,
  6. -
-

init is converted into an object element and added using push_back(const typename object_t::value_type&). Otherwise, init is converted to a JSON value and added using push_back(basic_json&&).

-
Parameters
- - -
[in]initan initializer list
-
-
-

@complexity Linear in the size of the initializer list init.

-
Note
This function is required to resolve an ambiguous overload error, because pairs like {"key", "value"} can be both interpreted as object_t::value_type or std::initializer_list<basic_json>, see https://github.com/nlohmann/json/issues/235 for more information.
-

@liveexample{The example shows how initializer lists are treated as objects when possible.,push_back__initializer_list}

- -
-
- -

◆ rbegin() [1/4]

- -
-
- - - - - -
- - - - - - - -
const_reverse_iterator nlohmann::basic_json::rbegin () const
-
-inlinenoexcept
-
- -

returns a const reverse iterator to the last element

-

Returns a const iterator to the reverse-beginning; that is, the last element.

-
- -
-Illustration from cppreference.com
-

@complexity Constant.

-

@requirement This function helps basic_json satisfying the ReversibleContainer requirements:

    -
  • The complexity is constant.
  • -
  • Has the semantics of const_cast<const basic_json&>(*this).rbegin().
  • -
-

@liveexample{The following code shows an example for crbegin().,crbegin}

-
See also
rbegin() – returns a reverse iterator to the beginning
-
-rend() – returns a reverse iterator to the end
-
-crend() – returns a const reverse iterator to the end
-
Since
version 1.0.0
- -
-
- -

◆ rbegin() [2/4]

- -
-
- - - - - -
- - - - - - - -
const_reverse_iterator nlohmann::basic_json::rbegin () const
-
-inlinenoexcept
-
- -

returns a const reverse iterator to the last element

-

Returns a const iterator to the reverse-beginning; that is, the last element.

-
- -
-Illustration from cppreference.com
-

@complexity Constant.

-

@requirement This function helps basic_json satisfying the ReversibleContainer requirements:

    -
  • The complexity is constant.
  • -
  • Has the semantics of const_cast<const basic_json&>(*this).rbegin().
  • -
-

@liveexample{The following code shows an example for crbegin().,crbegin}

-
See also
rbegin() – returns a reverse iterator to the beginning
-
-rend() – returns a reverse iterator to the end
-
-crend() – returns a const reverse iterator to the end
-
Since
version 1.0.0
- -
-
- -

◆ rbegin() [3/4]

- -
-
- - - - - -
- - - - - - - -
reverse_iterator nlohmann::basic_json::rbegin ()
-
-inlinenoexcept
-
- -

returns an iterator to the reverse-beginning

-

Returns an iterator to the reverse-beginning; that is, the last element.

-
- -
-Illustration from cppreference.com
-

@complexity Constant.

-

@requirement This function helps basic_json satisfying the ReversibleContainer requirements:

    -
  • The complexity is constant.
  • -
  • Has the semantics of reverse_iterator(end()).
  • -
-

@liveexample{The following code shows an example for rbegin().,rbegin}

-
See also
crbegin() – returns a const reverse iterator to the beginning
-
-rend() – returns a reverse iterator to the end
-
-crend() – returns a const reverse iterator to the end
-
Since
version 1.0.0
- -
-
- -

◆ rbegin() [4/4]

- -
-
- - - - - -
- - - - - - - -
reverse_iterator nlohmann::basic_json::rbegin ()
-
-inlinenoexcept
-
- -

returns an iterator to the reverse-beginning

-

Returns an iterator to the reverse-beginning; that is, the last element.

-
- -
-Illustration from cppreference.com
-

@complexity Constant.

-

@requirement This function helps basic_json satisfying the ReversibleContainer requirements:

    -
  • The complexity is constant.
  • -
  • Has the semantics of reverse_iterator(end()).
  • -
-

@liveexample{The following code shows an example for rbegin().,rbegin}

-
See also
crbegin() – returns a const reverse iterator to the beginning
-
-rend() – returns a reverse iterator to the end
-
-crend() – returns a const reverse iterator to the end
-
Since
version 1.0.0
- -
-
- -

◆ rend() [1/4]

- -
-
- - - - - -
- - - - - - - -
const_reverse_iterator nlohmann::basic_json::rend () const
-
-inlinenoexcept
-
- -

returns a const reverse iterator to one before the first

-

Returns a const reverse iterator to the reverse-end; that is, one before the first element.

-
- -
-Illustration from cppreference.com
-

@complexity Constant.

-

@requirement This function helps basic_json satisfying the ReversibleContainer requirements:

    -
  • The complexity is constant.
  • -
  • Has the semantics of const_cast<const basic_json&>(*this).rend().
  • -
-

@liveexample{The following code shows an example for crend().,crend}

-
See also
rend() – returns a reverse iterator to the end
-
-rbegin() – returns a reverse iterator to the beginning
-
-crbegin() – returns a const reverse iterator to the beginning
-
Since
version 1.0.0
- -
-
- -

◆ rend() [2/4]

- -
-
- - - - - -
- - - - - - - -
const_reverse_iterator nlohmann::basic_json::rend () const
-
-inlinenoexcept
-
- -

returns a const reverse iterator to one before the first

-

Returns a const reverse iterator to the reverse-end; that is, one before the first element.

-
- -
-Illustration from cppreference.com
-

@complexity Constant.

-

@requirement This function helps basic_json satisfying the ReversibleContainer requirements:

    -
  • The complexity is constant.
  • -
  • Has the semantics of const_cast<const basic_json&>(*this).rend().
  • -
-

@liveexample{The following code shows an example for crend().,crend}

-
See also
rend() – returns a reverse iterator to the end
-
-rbegin() – returns a reverse iterator to the beginning
-
-crbegin() – returns a const reverse iterator to the beginning
-
Since
version 1.0.0
- -
-
- -

◆ rend() [3/4]

- -
-
- - - - - -
- - - - - - - -
reverse_iterator nlohmann::basic_json::rend ()
-
-inlinenoexcept
-
- -

returns an iterator to the reverse-end

-

Returns an iterator to the reverse-end; that is, one before the first element.

-
- -
-Illustration from cppreference.com
-

@complexity Constant.

-

@requirement This function helps basic_json satisfying the ReversibleContainer requirements:

    -
  • The complexity is constant.
  • -
  • Has the semantics of reverse_iterator(begin()).
  • -
-

@liveexample{The following code shows an example for rend().,rend}

-
See also
crend() – returns a const reverse iterator to the end
-
-rbegin() – returns a reverse iterator to the beginning
-
-crbegin() – returns a const reverse iterator to the beginning
-
Since
version 1.0.0
- -
-
- -

◆ rend() [4/4]

- -
-
- - - - - -
- - - - - - - -
reverse_iterator nlohmann::basic_json::rend ()
-
-inlinenoexcept
-
- -

returns an iterator to the reverse-end

-

Returns an iterator to the reverse-end; that is, one before the first element.

-
- -
-Illustration from cppreference.com
-

@complexity Constant.

-

@requirement This function helps basic_json satisfying the ReversibleContainer requirements:

    -
  • The complexity is constant.
  • -
  • Has the semantics of reverse_iterator(begin()).
  • -
-

@liveexample{The following code shows an example for rend().,rend}

-
See also
crend() – returns a const reverse iterator to the end
-
-rbegin() – returns a reverse iterator to the beginning
-
-crbegin() – returns a const reverse iterator to the beginning
-
Since
version 1.0.0
- -
-
- -

◆ sax_parse() [1/5]

- -
-
-
-template<typename SAX >
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
static bool nlohmann::basic_json::sax_parse (detail::input_adapter && i,
SAX * sax,
input_format_t format = input_format_t::json,
const bool strict = true 
)
-
-inlinestatic
-
- -

generate SAX events

-

The SAX event lister must follow the interface of json_sax.

-

This function reads from a compatible input. Examples are:

    -
  • an array of 1-byte values
  • -
  • strings with character/literal type with size of 1 byte
  • -
  • input streams
  • -
  • container with contiguous storage of 1-byte values. Compatible container types include std::vector, std::string, std::array, std::valarray, and std::initializer_list. Furthermore, C-style arrays can be used with std::begin()/std::end(). User-defined containers can be used as long as they implement random-access iterators and a contiguous storage.
  • -
-
Precondition
Each element of the container has a size of 1 byte. Violating this precondition yields undefined behavior. This precondition is enforced with a static assertion.
-
-The container storage is contiguous. Violating this precondition yields undefined behavior. This precondition is enforced with an assertion.
-
Warning
There is no way to enforce all preconditions at compile-time. If the function is called with a noncompliant container and with assertions switched off, the behavior is undefined and will most likely yield segmentation violation.
-
Parameters
- - - - - -
[in]iinput to read from
[in,out]saxSAX event listener
[in]formatthe format to parse (JSON, CBOR, MessagePack, or UBJSON)
[in]strictwhether the input has to be consumed completely
-
-
-
Returns
return value of the last processed SAX event
-
Exceptions
- - - - -
parse_error.101if a parse error occurs; example: ""unexpected end of input; expected string literal""
parse_error.102if to_unicode fails or surrogate error
parse_error.103if to_unicode fails
-
-
-

@complexity Linear in the length of the input. The parser is a predictive LL(1) parser. The complexity can be higher if the SAX consumer sax has a super-linear complexity.

-
Note
A UTF-8 byte order mark is silently ignored.
-

@liveexample{The example below demonstrates the sax_parse() function reading from string and processing the events with a user-defined SAX event consumer.,sax_parse}

-
Since
version 3.2.0
- -
-
- -

◆ sax_parse() [2/5]

- -
-
-
-template<typename SAX >
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
static bool nlohmann::basic_json::sax_parse (detail::span_input_adapter && i,
SAX * sax,
input_format_t format = input_format_t::json,
const bool strict = true,
const bool ignore_comments = false 
)
-
-inlinestatic
-
- -
-
- -

◆ sax_parse() [3/5]

- -
-
-
-template<typename InputType , typename SAX >
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
static bool nlohmann::basic_json::sax_parse (InputType && i,
SAX * sax,
input_format_t format = input_format_t::json,
const bool strict = true,
const bool ignore_comments = false 
)
-
-inlinestatic
-
- -

generate SAX events

-

The SAX event lister must follow the interface of json_sax.

-

This function reads from a compatible input. Examples are:

    -
  • an std::istream object
  • -
  • a FILE pointer
  • -
  • a C-style array of characters
  • -
  • a pointer to a null-terminated string of single byte characters
  • -
  • an object obj for which begin(obj) and end(obj) produces a valid pair of iterators.
  • -
-
Parameters
- - - - - - -
[in]iinput to read from
[in,out]saxSAX event listener
[in]formatthe format to parse (JSON, CBOR, MessagePack, or UBJSON)
[in]strictwhether the input has to be consumed completely
[in]ignore_commentswhether comments should be ignored and treated like whitespace (true) or yield a parse error (true); (optional, false by default); only applies to the JSON file format.
-
-
-
Returns
return value of the last processed SAX event
-
Exceptions
- - - - -
parse_error.101if a parse error occurs; example: ""unexpected end of input; expected string literal""
parse_error.102if to_unicode fails or surrogate error
parse_error.103if to_unicode fails
-
-
-

@complexity Linear in the length of the input. The parser is a predictive LL(1) parser. The complexity can be higher if the SAX consumer sax has a super-linear complexity.

-
Note
A UTF-8 byte order mark is silently ignored.
-

@liveexample{The example below demonstrates the sax_parse() function reading from string and processing the events with a user-defined SAX event consumer.,sax_parse}

-
Since
version 3.2.0
- -
-
- -

◆ sax_parse() [4/5]

- -
-
-
-template<class IteratorType , class SAX , typename std::enable_if< std::is_base_of< std::random_access_iterator_tag, typename std::iterator_traits< IteratorType >::iterator_category >::value, int >::type = 0>
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
static bool nlohmann::basic_json::sax_parse (IteratorType first,
IteratorType last,
SAX * sax 
)
-
-inlinestatic
-
- -
-
- -

◆ sax_parse() [5/5]

- -
-
-
-template<class IteratorType , class SAX >
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
static bool nlohmann::basic_json::sax_parse (IteratorType first,
IteratorType last,
SAX * sax,
input_format_t format = input_format_t::json,
const bool strict = true,
const bool ignore_comments = false 
)
-
-inlinestatic
-
- -
-
- -

◆ size() [1/2]

- -
-
- - - - - -
- - - - - - - -
size_type nlohmann::basic_json::size () const
-
-inlinenoexcept
-
- -

returns the number of elements

-

Returns the number of elements in a JSON value.

-
Returns
The return value depends on the different types and is defined as follows: - - - - - - - - - - - - - - -
Value type return value
null 0
boolean 1
string 1
number 1
object result of function object_t::size()
array result of function array_t::size()
-
-

@liveexample{The following code calls size() on the different value types.,size}

-

@complexity Constant, as long as array_t and object_t satisfy the Container concept; that is, their size() functions have constant complexity.

-

@iterators No changes.

-

@exceptionsafety No-throw guarantee: this function never throws exceptions.

-
Note
This function does not return the length of a string stored as JSON value - it returns the number of elements in the JSON value which is 1 in the case of a string.
-

@requirement This function helps basic_json satisfying the Container requirements:

    -
  • The complexity is constant.
  • -
  • Has the semantics of std::distance(begin(), end()).
  • -
-
See also
empty() – checks whether the container is empty
-
-max_size() – returns the maximal number of elements
-
Since
version 1.0.0
- -
-
- -

◆ size() [2/2]

- -
-
- - - - - -
- - - - - - - -
size_type nlohmann::basic_json::size () const
-
-inlinenoexcept
-
- -

returns the number of elements

-

Returns the number of elements in a JSON value.

-
Returns
The return value depends on the different types and is defined as follows: - - - - - - - - - - - - - - - - -
Value type return value
null 0
boolean 1
string 1
number 1
binary 1
object result of function object_t::size()
array result of function array_t::size()
-
-

@liveexample{The following code calls size() on the different value types.,size}

-

@complexity Constant, as long as array_t and object_t satisfy the Container concept; that is, their size() functions have constant complexity.

-

@iterators No changes.

-

@exceptionsafety No-throw guarantee: this function never throws exceptions.

-
Note
This function does not return the length of a string stored as JSON value - it returns the number of elements in the JSON value which is 1 in the case of a string.
-

@requirement This function helps basic_json satisfying the Container requirements:

    -
  • The complexity is constant.
  • -
  • Has the semantics of std::distance(begin(), end()).
  • -
-
See also
empty() – checks whether the container is empty
-
-max_size() – returns the maximal number of elements
-
Since
version 1.0.0
- -
-
- -

◆ swap() [1/10]

- -
-
- - - - - -
- - - - - - - - -
void nlohmann::basic_json::swap (array_tother)
-
-inline
-
- -

exchanges the values

-

Exchanges the contents of a JSON array with those of other. Does not invoke any move, copy, or swap operations on individual elements. All iterators and references remain valid. The past-the-end iterator is invalidated.

-
Parameters
- - -
[in,out]otherarray to exchange the contents with
-
-
-
Exceptions
- - -
type_error.310when JSON value is not an array; example: "cannot -use swap() with string"
-
-
-

@complexity Constant.

-

@liveexample{The example below shows how arrays can be swapped with swap().,swap__array_t}

-
Since
version 1.0.0
- -
-
- -

◆ swap() [2/10]

- -
-
- - - - - -
- - - - - - - - -
void nlohmann::basic_json::swap (array_tother)
-
-inline
-
- -

exchanges the values

-

Exchanges the contents of a JSON array with those of other. Does not invoke any move, copy, or swap operations on individual elements. All iterators and references remain valid. The past-the-end iterator is invalidated.

-
Parameters
- - -
[in,out]otherarray to exchange the contents with
-
-
-
Exceptions
- - -
type_error.310when JSON value is not an array; example: "cannot -use swap() with string"
-
-
-

@complexity Constant.

-

@liveexample{The example below shows how arrays can be swapped with swap().,swap__array_t}

-
Since
version 1.0.0
- -
-
- -

◆ swap() [3/10]

- -
-
- - - - - -
- - - - - - - - -
void nlohmann::basic_json::swap (binary_tother)
-
-inline
-
- -

exchanges the values

-

Exchanges the contents of a JSON string with those of other. Does not invoke any move, copy, or swap operations on individual elements. All iterators and references remain valid. The past-the-end iterator is invalidated.

-
Parameters
- - -
[in,out]otherbinary to exchange the contents with
-
-
-
Exceptions
- - -
type_error.310when JSON value is not a string; example: "cannot -use swap() with boolean"
-
-
-

@complexity Constant.

-

@liveexample{The example below shows how strings can be swapped with swap().,swap__binary_t}

-
Since
version 3.8.0
- -
-
- -

◆ swap() [4/10]

- -
-
- - - - - -
- - - - - - - - -
void nlohmann::basic_json::swap (object_tother)
-
-inline
-
- -

exchanges the values

-

Exchanges the contents of a JSON object with those of other. Does not invoke any move, copy, or swap operations on individual elements. All iterators and references remain valid. The past-the-end iterator is invalidated.

-
Parameters
- - -
[in,out]otherobject to exchange the contents with
-
-
-
Exceptions
- - -
type_error.310when JSON value is not an object; example: "cannot use swap() with string"
-
-
-

@complexity Constant.

-

@liveexample{The example below shows how objects can be swapped with swap().,swap__object_t}

-
Since
version 1.0.0
- -
-
- -

◆ swap() [5/10]

- -
-
- - - - - -
- - - - - - - - -
void nlohmann::basic_json::swap (object_tother)
-
-inline
-
- -

exchanges the values

-

Exchanges the contents of a JSON object with those of other. Does not invoke any move, copy, or swap operations on individual elements. All iterators and references remain valid. The past-the-end iterator is invalidated.

-
Parameters
- - -
[in,out]otherobject to exchange the contents with
-
-
-
Exceptions
- - -
type_error.310when JSON value is not an object; example: "cannot use swap() with string"
-
-
-

@complexity Constant.

-

@liveexample{The example below shows how objects can be swapped with swap().,swap__object_t}

-
Since
version 1.0.0
- -
-
- -

◆ swap() [6/10]

- -
-
- - - - - -
- - - - - - - - -
void nlohmann::basic_json::swap (reference other)
-
-inlinenoexcept
-
- -

exchanges the values

-

Exchanges the contents of the JSON value with those of other. Does not invoke any move, copy, or swap operations on individual elements. All iterators and references remain valid. The past-the-end iterator is invalidated.

-
Parameters
- - -
[in,out]otherJSON value to exchange the contents with
-
-
-

@complexity Constant.

-

@liveexample{The example below shows how JSON values can be swapped with swap().,swap__reference}

-
Since
version 1.0.0
- -
-
- -

◆ swap() [7/10]

- -
-
- - - - - -
- - - - - - - - -
void nlohmann::basic_json::swap (reference other)
-
-inlinenoexcept
-
- -

exchanges the values

-

Exchanges the contents of the JSON value with those of other. Does not invoke any move, copy, or swap operations on individual elements. All iterators and references remain valid. The past-the-end iterator is invalidated.

-
Parameters
- - -
[in,out]otherJSON value to exchange the contents with
-
-
-

@complexity Constant.

-

@liveexample{The example below shows how JSON values can be swapped with swap().,swap__reference}

-
Since
version 1.0.0
- -
-
- -

◆ swap() [8/10]

- -
-
- - - - - -
- - - - - - - - -
void nlohmann::basic_json::swap (string_tother)
-
-inline
-
- -

exchanges the values

-

Exchanges the contents of a JSON string with those of other. Does not invoke any move, copy, or swap operations on individual elements. All iterators and references remain valid. The past-the-end iterator is invalidated.

-
Parameters
- - -
[in,out]otherstring to exchange the contents with
-
-
-
Exceptions
- - -
type_error.310when JSON value is not a string; example: "cannot -use swap() with boolean"
-
-
-

@complexity Constant.

-

@liveexample{The example below shows how strings can be swapped with swap().,swap__string_t}

-
Since
version 1.0.0
- -
-
- -

◆ swap() [9/10]

- -
-
- - - - - -
- - - - - - - - -
void nlohmann::basic_json::swap (string_tother)
-
-inline
-
- -

exchanges the values

-

Exchanges the contents of a JSON string with those of other. Does not invoke any move, copy, or swap operations on individual elements. All iterators and references remain valid. The past-the-end iterator is invalidated.

-
Parameters
- - -
[in,out]otherstring to exchange the contents with
-
-
-
Exceptions
- - -
type_error.310when JSON value is not a string; example: "cannot -use swap() with boolean"
-
-
-

@complexity Constant.

-

@liveexample{The example below shows how strings can be swapped with swap().,swap__string_t}

-
Since
version 1.0.0
- -
-
- -

◆ swap() [10/10]

- -
-
- - - - - -
- - - - - - - - -
void nlohmann::basic_json::swap (typename binary_t::container_typeother)
-
-inline
-
- -

- -
-
- -

◆ to_bson() [1/6]

- -
-
- - - - - -
- - - - - - - - -
static std::vector<uint8_t> nlohmann::basic_json::to_bson (const basic_jsonj)
-
-inlinestatic
-
- -

Serializes the given JSON object j to BSON and returns a vector containing the corresponding BSON-representation.

-

BSON (Binary JSON) is a binary format in which zero or more ordered key/value pairs are stored as a single entity (a so-called document).

-

The library uses the following mapping from JSON values types to BSON types:

- - - - - - - - - - - - - - - - - - - - - - - - - - - -
JSON value type value/range BSON type marker
null null null 0x0A
boolean true, false boolean 0x08
number_integer -9223372036854775808..-2147483649 int64 0x12
number_integer -2147483648..2147483647 int32 0x10
number_integer 2147483648..9223372036854775807 int64 0x12
number_unsigned 0..2147483647 int32 0x10
number_unsigned 2147483648..9223372036854775807 int64 0x12
number_unsigned 9223372036854775808..18446744073709551615
number_float any value double 0x01
string any value string 0x02
array any value document 0x04
object any value document 0x03
-
Warning
The mapping is incomplete, since only JSON-objects (and things contained therein) can be serialized to BSON. Also, integers larger than 9223372036854775807 cannot be serialized to BSON, and the keys may not contain U+0000, since they are serialized a zero-terminated c-strings.
-
Exceptions
- - - - -
out_of_range.407if j.is_number_unsigned() && j.get<std::uint64_t>() > 9223372036854775807
out_of_range.409if a key in j contains a NULL (U+0000)
type_error.317if !j.is_object()
-
-
-
Precondition
The input j is required to be an object: j.is_object() == true.
-
Note
Any BSON output created via to_bson can be successfully parsed by from_bson.
-
Parameters
- - -
[in]jJSON value to serialize
-
-
-
Returns
BSON serialization as byte vector
-

@complexity Linear in the size of the JSON value j.

-

@liveexample{The example shows the serialization of a JSON value to a byte vector in BSON format.,to_bson}

-
See also
http://bsonspec.org/spec.html
-
-from_bson(detail::input_adapter&&, const bool strict) for the analogous deserialization
-
-to_ubjson(const basic_json&, const bool, const bool) for the related UBJSON format
-
-to_cbor(const basic_json&) for the related CBOR format
-
-to_msgpack(const basic_json&) for the related MessagePack format
- -
-
- -

◆ to_bson() [2/6]

- -
-
- - - - - -
- - - - - - - - -
static std::vector<uint8_t> nlohmann::basic_json::to_bson (const basic_jsonj)
-
-inlinestatic
-
- -

Serializes the given JSON object j to BSON and returns a vector containing the corresponding BSON-representation.

-

BSON (Binary JSON) is a binary format in which zero or more ordered key/value pairs are stored as a single entity (a so-called document).

-

The library uses the following mapping from JSON values types to BSON types:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
JSON value type value/range BSON type marker
null null null 0x0A
boolean true, false boolean 0x08
number_integer -9223372036854775808..-2147483649 int64 0x12
number_integer -2147483648..2147483647 int32 0x10
number_integer 2147483648..9223372036854775807 int64 0x12
number_unsigned 0..2147483647 int32 0x10
number_unsigned 2147483648..9223372036854775807 int64 0x12
number_unsigned 9223372036854775808..18446744073709551615
number_float any value double 0x01
string any value string 0x02
array any value document 0x04
object any value document 0x03
binary any value binary 0x05
-
Warning
The mapping is incomplete, since only JSON-objects (and things contained therein) can be serialized to BSON. Also, integers larger than 9223372036854775807 cannot be serialized to BSON, and the keys may not contain U+0000, since they are serialized a zero-terminated c-strings.
-
Exceptions
- - - - -
out_of_range.407if j.is_number_unsigned() && j.get<std::uint64_t>() > 9223372036854775807
out_of_range.409if a key in j contains a NULL (U+0000)
type_error.317if !j.is_object()
-
-
-
Precondition
The input j is required to be an object: j.is_object() == true.
-
Note
Any BSON output created via to_bson can be successfully parsed by from_bson.
-
Parameters
- - -
[in]jJSON value to serialize
-
-
-
Returns
BSON serialization as byte vector
-

@complexity Linear in the size of the JSON value j.

-

@liveexample{The example shows the serialization of a JSON value to a byte vector in BSON format.,to_bson}

-
See also
http://bsonspec.org/spec.html
-
-from_bson(detail::input_adapter&&, const bool strict) for the analogous deserialization
-
-to_ubjson(const basic_json&, const bool, const bool) for the related UBJSON format
-
-to_cbor(const basic_json&) for the related CBOR format
-
-to_msgpack(const basic_json&) for the related MessagePack format
- -
-
- -

◆ to_bson() [3/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
static void nlohmann::basic_json::to_bson (const basic_jsonj,
detail::output_adapter< char > o 
)
-
-inlinestatic
-
- -

Serializes the given JSON object j to BSON and forwards the corresponding BSON-representation to the given output_adapter o.

-
Parameters
- - - -
jThe JSON object to convert to BSON.
oThe output adapter that receives the binary BSON representation.
-
-
-
Precondition
The input j shall be an object: j.is_object() == true
-
See also
to_bson(const basic_json&)
- -
-
- -

◆ to_bson() [4/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
static void nlohmann::basic_json::to_bson (const basic_jsonj,
detail::output_adapter< char > o 
)
-
-inlinestatic
-
- -

Serializes the given JSON object j to BSON and forwards the corresponding BSON-representation to the given output_adapter o.

-
Parameters
- - - -
jThe JSON object to convert to BSON.
oThe output adapter that receives the binary BSON representation.
-
-
-
Precondition
The input j shall be an object: j.is_object() == true
-
See also
to_bson(const basic_json&)
- -
-
- -

◆ to_bson() [5/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
static void nlohmann::basic_json::to_bson (const basic_jsonj,
detail::output_adapter< uint8_t > o 
)
-
-inlinestatic
-
- -

Serializes the given JSON object j to BSON and forwards the corresponding BSON-representation to the given output_adapter o.

-
Parameters
- - - -
jThe JSON object to convert to BSON.
oThe output adapter that receives the binary BSON representation.
-
-
-
Precondition
The input j shall be an object: j.is_object() == true
-
See also
to_bson(const basic_json&)
- -
-
- -

◆ to_bson() [6/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
static void nlohmann::basic_json::to_bson (const basic_jsonj,
detail::output_adapter< uint8_t > o 
)
-
-inlinestatic
-
- -

Serializes the given JSON object j to BSON and forwards the corresponding BSON-representation to the given output_adapter o.

-
Parameters
- - - -
jThe JSON object to convert to BSON.
oThe output adapter that receives the binary BSON representation.
-
-
-
Precondition
The input j shall be an object: j.is_object() == true
-
See also
to_bson(const basic_json&)
- -
-
- -

◆ to_cbor() [1/6]

- -
-
- - - - - -
- - - - - - - - -
static std::vector<uint8_t> nlohmann::basic_json::to_cbor (const basic_jsonj)
-
-inlinestatic
-
- -

create a CBOR serialization of a given JSON value

-

Serializes a given JSON value j to a byte vector using the CBOR (Concise Binary Object Representation) serialization format. CBOR is a binary serialization format which aims to be more compact than JSON itself, yet more efficient to parse.

-

The library uses the following mapping from JSON values types to CBOR types according to the CBOR specification (RFC 7049):

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
JSON value type value/range CBOR type first byte
null null Null 0xF6
boolean true True 0xF5
boolean false False 0xF4
number_integer -9223372036854775808..-2147483649 Negative integer (8 bytes follow) 0x3B
number_integer -2147483648..-32769 Negative integer (4 bytes follow) 0x3A
number_integer -32768..-129 Negative integer (2 bytes follow) 0x39
number_integer -128..-25 Negative integer (1 byte follow) 0x38
number_integer -24..-1 Negative integer 0x20..0x37
number_integer 0..23 Integer 0x00..0x17
number_integer 24..255 Unsigned integer (1 byte follow) 0x18
number_integer 256..65535 Unsigned integer (2 bytes follow) 0x19
number_integer 65536..4294967295 Unsigned integer (4 bytes follow) 0x1A
number_integer 4294967296..18446744073709551615 Unsigned integer (8 bytes follow) 0x1B
number_unsigned 0..23 Integer 0x00..0x17
number_unsigned 24..255 Unsigned integer (1 byte follow) 0x18
number_unsigned 256..65535 Unsigned integer (2 bytes follow) 0x19
number_unsigned 65536..4294967295 Unsigned integer (4 bytes follow) 0x1A
number_unsigned 4294967296..18446744073709551615 Unsigned integer (8 bytes follow) 0x1B
number_float any value Double-Precision Float 0xFB
string length: 0..23 UTF-8 string 0x60..0x77
string length: 23..255 UTF-8 string (1 byte follow) 0x78
string length: 256..65535 UTF-8 string (2 bytes follow) 0x79
string length: 65536..4294967295 UTF-8 string (4 bytes follow) 0x7A
string length: 4294967296..18446744073709551615 UTF-8 string (8 bytes follow) 0x7B
array size: 0..23 array 0x80..0x97
array size: 23..255 array (1 byte follow) 0x98
array size: 256..65535 array (2 bytes follow) 0x99
array size: 65536..4294967295 array (4 bytes follow) 0x9A
array size: 4294967296..18446744073709551615 array (8 bytes follow) 0x9B
object size: 0..23 map 0xA0..0xB7
object size: 23..255 map (1 byte follow) 0xB8
object size: 256..65535 map (2 bytes follow) 0xB9
object size: 65536..4294967295 map (4 bytes follow) 0xBA
object size: 4294967296..18446744073709551615 map (8 bytes follow) 0xBB
-
Note
The mapping is complete in the sense that any JSON value type can be converted to a CBOR value.
-
-If NaN or Infinity are stored inside a JSON number, they are serialized properly. This behavior differs from the dump() function which serializes NaN or Infinity to null.
-
-The following CBOR types are not used in the conversion:
    -
  • byte strings (0x40..0x5F)
  • -
  • UTF-8 strings terminated by "break" (0x7F)
  • -
  • arrays terminated by "break" (0x9F)
  • -
  • maps terminated by "break" (0xBF)
  • -
  • date/time (0xC0..0xC1)
  • -
  • bignum (0xC2..0xC3)
  • -
  • decimal fraction (0xC4)
  • -
  • bigfloat (0xC5)
  • -
  • tagged items (0xC6..0xD4, 0xD8..0xDB)
  • -
  • expected conversions (0xD5..0xD7)
  • -
  • simple values (0xE0..0xF3, 0xF8)
  • -
  • undefined (0xF7)
  • -
  • half and single-precision floats (0xF9-0xFA)
  • -
  • break (0xFF)
  • -
-
-
Parameters
- - -
[in]jJSON value to serialize
-
-
-
Returns
MessagePack serialization as byte vector
-

@complexity Linear in the size of the JSON value j.

-

@liveexample{The example shows the serialization of a JSON value to a byte vector in CBOR format.,to_cbor}

-
See also
http://cbor.io
-
-from_cbor(detail::input_adapter&&, const bool, const bool) for the analogous deserialization
-
-to_msgpack(const basic_json&) for the related MessagePack format
-
-to_ubjson(const basic_json&, const bool, const bool) for the related UBJSON format
-
Since
version 2.0.9
- -
-
- -

◆ to_cbor() [2/6]

- -
-
- - - - - -
- - - - - - - - -
static std::vector<uint8_t> nlohmann::basic_json::to_cbor (const basic_jsonj)
-
-inlinestatic
-
- -

create a CBOR serialization of a given JSON value

-

Serializes a given JSON value j to a byte vector using the CBOR (Concise Binary Object Representation) serialization format. CBOR is a binary serialization format which aims to be more compact than JSON itself, yet more efficient to parse.

-

The library uses the following mapping from JSON values types to CBOR types according to the CBOR specification (RFC 7049):

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
JSON value type value/range CBOR type first byte
null null Null 0xF6
boolean true True 0xF5
boolean false False 0xF4
number_integer -9223372036854775808..-2147483649 Negative integer (8 bytes follow) 0x3B
number_integer -2147483648..-32769 Negative integer (4 bytes follow) 0x3A
number_integer -32768..-129 Negative integer (2 bytes follow) 0x39
number_integer -128..-25 Negative integer (1 byte follow) 0x38
number_integer -24..-1 Negative integer 0x20..0x37
number_integer 0..23 Integer 0x00..0x17
number_integer 24..255 Unsigned integer (1 byte follow) 0x18
number_integer 256..65535 Unsigned integer (2 bytes follow) 0x19
number_integer 65536..4294967295 Unsigned integer (4 bytes follow) 0x1A
number_integer 4294967296..18446744073709551615 Unsigned integer (8 bytes follow) 0x1B
number_unsigned 0..23 Integer 0x00..0x17
number_unsigned 24..255 Unsigned integer (1 byte follow) 0x18
number_unsigned 256..65535 Unsigned integer (2 bytes follow) 0x19
number_unsigned 65536..4294967295 Unsigned integer (4 bytes follow) 0x1A
number_unsigned 4294967296..18446744073709551615 Unsigned integer (8 bytes follow) 0x1B
number_float any value representable by a float Single-Precision Float 0xFA
number_float any value NOT representable by a float Double-Precision Float 0xFB
string length: 0..23 UTF-8 string 0x60..0x77
string length: 23..255 UTF-8 string (1 byte follow) 0x78
string length: 256..65535 UTF-8 string (2 bytes follow) 0x79
string length: 65536..4294967295 UTF-8 string (4 bytes follow) 0x7A
string length: 4294967296..18446744073709551615 UTF-8 string (8 bytes follow) 0x7B
array size: 0..23 array 0x80..0x97
array size: 23..255 array (1 byte follow) 0x98
array size: 256..65535 array (2 bytes follow) 0x99
array size: 65536..4294967295 array (4 bytes follow) 0x9A
array size: 4294967296..18446744073709551615 array (8 bytes follow) 0x9B
object size: 0..23 map 0xA0..0xB7
object size: 23..255 map (1 byte follow) 0xB8
object size: 256..65535 map (2 bytes follow) 0xB9
object size: 65536..4294967295 map (4 bytes follow) 0xBA
object size: 4294967296..18446744073709551615 map (8 bytes follow) 0xBB
binary size: 0..23 byte string 0x40..0x57
binary size: 23..255 byte string (1 byte follow) 0x58
binary size: 256..65535 byte string (2 bytes follow) 0x59
binary size: 65536..4294967295 byte string (4 bytes follow) 0x5A
binary size: 4294967296..18446744073709551615 byte string (8 bytes follow) 0x5B
-
Note
The mapping is complete in the sense that any JSON value type can be converted to a CBOR value.
-
-If NaN or Infinity are stored inside a JSON number, they are serialized properly. This behavior differs from the dump() function which serializes NaN or Infinity to null.
-
-The following CBOR types are not used in the conversion:
    -
  • UTF-8 strings terminated by "break" (0x7F)
  • -
  • arrays terminated by "break" (0x9F)
  • -
  • maps terminated by "break" (0xBF)
  • -
  • byte strings terminated by "break" (0x5F)
  • -
  • date/time (0xC0..0xC1)
  • -
  • bignum (0xC2..0xC3)
  • -
  • decimal fraction (0xC4)
  • -
  • bigfloat (0xC5)
  • -
  • expected conversions (0xD5..0xD7)
  • -
  • simple values (0xE0..0xF3, 0xF8)
  • -
  • undefined (0xF7)
  • -
  • half-precision floats (0xF9)
  • -
  • break (0xFF)
  • -
-
-
Parameters
- - -
[in]jJSON value to serialize
-
-
-
Returns
CBOR serialization as byte vector
-

@complexity Linear in the size of the JSON value j.

-

@liveexample{The example shows the serialization of a JSON value to a byte vector in CBOR format.,to_cbor}

-
See also
http://cbor.io
-
-from_cbor(detail::input_adapter&&, const bool, const bool, const cbor_tag_handler_t) for the analogous deserialization
-
-to_msgpack(const basic_json&) for the related MessagePack format
-
-to_ubjson(const basic_json&, const bool, const bool) for the related UBJSON format
-
Since
version 2.0.9; compact representation of floating-point numbers since version 3.8.0
- -
-
- -

◆ to_cbor() [3/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
static void nlohmann::basic_json::to_cbor (const basic_jsonj,
detail::output_adapter< char > o 
)
-
-inlinestatic
-
- -
-
- -

◆ to_cbor() [4/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
static void nlohmann::basic_json::to_cbor (const basic_jsonj,
detail::output_adapter< char > o 
)
-
-inlinestatic
-
- -
-
- -

◆ to_cbor() [5/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
static void nlohmann::basic_json::to_cbor (const basic_jsonj,
detail::output_adapter< uint8_t > o 
)
-
-inlinestatic
-
- -
-
- -

◆ to_cbor() [6/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
static void nlohmann::basic_json::to_cbor (const basic_jsonj,
detail::output_adapter< uint8_t > o 
)
-
-inlinestatic
-
- -
-
- -

◆ to_msgpack() [1/6]

- -
-
- - - - - -
- - - - - - - - -
static std::vector<uint8_t> nlohmann::basic_json::to_msgpack (const basic_jsonj)
-
-inlinestatic
-
- -

create a MessagePack serialization of a given JSON value

-

Serializes a given JSON value j to a byte vector using the MessagePack serialization format. MessagePack is a binary serialization format which aims to be more compact than JSON itself, yet more efficient to parse.

-

The library uses the following mapping from JSON values types to MessagePack types according to the MessagePack specification:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
JSON value type value/range MessagePack type first byte
null null nil 0xC0
boolean true true 0xC3
boolean false false 0xC2
number_integer -9223372036854775808..-2147483649 int64 0xD3
number_integer -2147483648..-32769 int32 0xD2
number_integer -32768..-129 int16 0xD1
number_integer -128..-33 int8 0xD0
number_integer -32..-1 negative fixint 0xE0..0xFF
number_integer 0..127 positive fixint 0x00..0x7F
number_integer 128..255 uint 8 0xCC
number_integer 256..65535 uint 16 0xCD
number_integer 65536..4294967295 uint 32 0xCE
number_integer 4294967296..18446744073709551615 uint 64 0xCF
number_unsigned 0..127 positive fixint 0x00..0x7F
number_unsigned 128..255 uint 8 0xCC
number_unsigned 256..65535 uint 16 0xCD
number_unsigned 65536..4294967295 uint 32 0xCE
number_unsigned 4294967296..18446744073709551615 uint 64 0xCF
number_float any value float 64 0xCB
string length: 0..31 fixstr 0xA0..0xBF
string length: 32..255 str 8 0xD9
string length: 256..65535 str 16 0xDA
string length: 65536..4294967295 str 32 0xDB
array size: 0..15 fixarray 0x90..0x9F
array size: 16..65535 array 16 0xDC
array size: 65536..4294967295 array 32 0xDD
object size: 0..15 fix map 0x80..0x8F
object size: 16..65535 map 16 0xDE
object size: 65536..4294967295 map 32 0xDF
-
Note
The mapping is complete in the sense that any JSON value type can be converted to a MessagePack value.
-
-The following values can not be converted to a MessagePack value:
    -
  • strings with more than 4294967295 bytes
  • -
  • arrays with more than 4294967295 elements
  • -
  • objects with more than 4294967295 elements
  • -
-
-
-The following MessagePack types are not used in the conversion:
    -
  • bin 8 - bin 32 (0xC4..0xC6)
  • -
  • ext 8 - ext 32 (0xC7..0xC9)
  • -
  • float 32 (0xCA)
  • -
  • fixext 1 - fixext 16 (0xD4..0xD8)
  • -
-
-
-Any MessagePack output created to_msgpack can be successfully parsed by from_msgpack.
-
-If NaN or Infinity are stored inside a JSON number, they are serialized properly. This behavior differs from the dump() function which serializes NaN or Infinity to null.
-
Parameters
- - -
[in]jJSON value to serialize
-
-
-
Returns
MessagePack serialization as byte vector
-

@complexity Linear in the size of the JSON value j.

-

@liveexample{The example shows the serialization of a JSON value to a byte vector in MessagePack format.,to_msgpack}

-
See also
http://msgpack.org
-
-from_msgpack for the analogous deserialization
-
-to_cbor(const basic_json& for the related CBOR format
-
-to_ubjson(const basic_json&, const bool, const bool) for the related UBJSON format
-
Since
version 2.0.9
- -
-
- -

◆ to_msgpack() [2/6]

- -
-
- - - - - -
- - - - - - - - -
static std::vector<uint8_t> nlohmann::basic_json::to_msgpack (const basic_jsonj)
-
-inlinestatic
-
- -

create a MessagePack serialization of a given JSON value

-

Serializes a given JSON value j to a byte vector using the MessagePack serialization format. MessagePack is a binary serialization format which aims to be more compact than JSON itself, yet more efficient to parse.

-

The library uses the following mapping from JSON values types to MessagePack types according to the MessagePack specification:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
JSON value type value/range MessagePack type first byte
null null nil 0xC0
boolean true true 0xC3
boolean false false 0xC2
number_integer -9223372036854775808..-2147483649 int64 0xD3
number_integer -2147483648..-32769 int32 0xD2
number_integer -32768..-129 int16 0xD1
number_integer -128..-33 int8 0xD0
number_integer -32..-1 negative fixint 0xE0..0xFF
number_integer 0..127 positive fixint 0x00..0x7F
number_integer 128..255 uint 8 0xCC
number_integer 256..65535 uint 16 0xCD
number_integer 65536..4294967295 uint 32 0xCE
number_integer 4294967296..18446744073709551615 uint 64 0xCF
number_unsigned 0..127 positive fixint 0x00..0x7F
number_unsigned 128..255 uint 8 0xCC
number_unsigned 256..65535 uint 16 0xCD
number_unsigned 65536..4294967295 uint 32 0xCE
number_unsigned 4294967296..18446744073709551615 uint 64 0xCF
number_float any value representable by a float float 32 0xCA
number_float any value NOT representable by a float float 64 0xCB
string length: 0..31 fixstr 0xA0..0xBF
string length: 32..255 str 8 0xD9
string length: 256..65535 str 16 0xDA
string length: 65536..4294967295 str 32 0xDB
array size: 0..15 fixarray 0x90..0x9F
array size: 16..65535 array 16 0xDC
array size: 65536..4294967295 array 32 0xDD
object size: 0..15 fix map 0x80..0x8F
object size: 16..65535 map 16 0xDE
object size: 65536..4294967295 map 32 0xDF
binary size: 0..255 bin 8 0xC4
binary size: 256..65535 bin 16 0xC5
binary size: 65536..4294967295 bin 32 0xC6
-
Note
The mapping is complete in the sense that any JSON value type can be converted to a MessagePack value.
-
-The following values can not be converted to a MessagePack value:
    -
  • strings with more than 4294967295 bytes
  • -
  • byte strings with more than 4294967295 bytes
  • -
  • arrays with more than 4294967295 elements
  • -
  • objects with more than 4294967295 elements
  • -
-
-
-Any MessagePack output created to_msgpack can be successfully parsed by from_msgpack.
-
-If NaN or Infinity are stored inside a JSON number, they are serialized properly. This behavior differs from the dump() function which serializes NaN or Infinity to null.
-
Parameters
- - -
[in]jJSON value to serialize
-
-
-
Returns
MessagePack serialization as byte vector
-

@complexity Linear in the size of the JSON value j.

-

@liveexample{The example shows the serialization of a JSON value to a byte vector in MessagePack format.,to_msgpack}

-
See also
http://msgpack.org
-
-from_msgpack for the analogous deserialization
-
-to_cbor(const basic_json& for the related CBOR format
-
-to_ubjson(const basic_json&, const bool, const bool) for the related UBJSON format
-
Since
version 2.0.9
- -
-
- -

◆ to_msgpack() [3/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
static void nlohmann::basic_json::to_msgpack (const basic_jsonj,
detail::output_adapter< char > o 
)
-
-inlinestatic
-
- -
-
- -

◆ to_msgpack() [4/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
static void nlohmann::basic_json::to_msgpack (const basic_jsonj,
detail::output_adapter< char > o 
)
-
-inlinestatic
-
- -
-
- -

◆ to_msgpack() [5/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
static void nlohmann::basic_json::to_msgpack (const basic_jsonj,
detail::output_adapter< uint8_t > o 
)
-
-inlinestatic
-
- -
-
- -

◆ to_msgpack() [6/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
static void nlohmann::basic_json::to_msgpack (const basic_jsonj,
detail::output_adapter< uint8_t > o 
)
-
-inlinestatic
-
- -
-
- -

◆ to_ubjson() [1/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
static std::vector<uint8_t> nlohmann::basic_json::to_ubjson (const basic_jsonj,
const bool use_size = false,
const bool use_type = false 
)
-
-inlinestatic
-
- -

create a UBJSON serialization of a given JSON value

-

Serializes a given JSON value j to a byte vector using the UBJSON (Universal Binary JSON) serialization format. UBJSON aims to be more compact than JSON itself, yet more efficient to parse.

-

The library uses the following mapping from JSON values types to UBJSON types according to the UBJSON specification:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
JSON value type value/range UBJSON type marker
null null null Z
boolean true true T
boolean false false F
number_integer -9223372036854775808..-2147483649 int64 L
number_integer -2147483648..-32769 int32 l
number_integer -32768..-129 int16 I
number_integer -128..127 int8 i
number_integer 128..255 uint8 U
number_integer 256..32767 int16 I
number_integer 32768..2147483647 int32 l
number_integer 2147483648..9223372036854775807 int64 L
number_unsigned 0..127 int8 i
number_unsigned 128..255 uint8 U
number_unsigned 256..32767 int16 I
number_unsigned 32768..2147483647 int32 l
number_unsigned 2147483648..9223372036854775807 int64 L
number_float any value float64 D
string with shortest length indicator string S
array see notes on optimized format array [
object see notes on optimized format map {
-
Note
The mapping is complete in the sense that any JSON value type can be converted to a UBJSON value.
-
-The following values can not be converted to a UBJSON value:
    -
  • strings with more than 9223372036854775807 bytes (theoretical)
  • -
  • unsigned integer numbers above 9223372036854775807
  • -
-
-
-The following markers are not used in the conversion:
    -
  • Z: no-op values are not created.
  • -
  • C: single-byte strings are serialized with S markers.
  • -
-
-
-Any UBJSON output created to_ubjson can be successfully parsed by from_ubjson.
-
-If NaN or Infinity are stored inside a JSON number, they are serialized properly. This behavior differs from the dump() function which serializes NaN or Infinity to null.
-
-The optimized formats for containers are supported: Parameter use_size adds size information to the beginning of a container and removes the closing marker. Parameter use_type further checks whether all elements of a container have the same type and adds the type marker to the beginning of the container. The use_type parameter must only be used together with use_size = true. Note that use_size = true alone may result in larger representations - the benefit of this parameter is that the receiving side is immediately informed on the number of elements of the container.
-
Parameters
- - - - -
[in]jJSON value to serialize
[in]use_sizewhether to add size annotations to container types
[in]use_typewhether to add type annotations to container types (must be combined with use_size = true)
-
-
-
Returns
UBJSON serialization as byte vector
-

@complexity Linear in the size of the JSON value j.

-

@liveexample{The example shows the serialization of a JSON value to a byte vector in UBJSON format.,to_ubjson}

-
See also
http://ubjson.org
-
-from_ubjson(detail::input_adapter&&, const bool, const bool) for the analogous deserialization
-
-to_cbor(const basic_json& for the related CBOR format
-
-to_msgpack(const basic_json&) for the related MessagePack format
-
Since
version 3.1.0
- -
-
- -

◆ to_ubjson() [2/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
static std::vector<uint8_t> nlohmann::basic_json::to_ubjson (const basic_jsonj,
const bool use_size = false,
const bool use_type = false 
)
-
-inlinestatic
-
- -

create a UBJSON serialization of a given JSON value

-

Serializes a given JSON value j to a byte vector using the UBJSON (Universal Binary JSON) serialization format. UBJSON aims to be more compact than JSON itself, yet more efficient to parse.

-

The library uses the following mapping from JSON values types to UBJSON types according to the UBJSON specification:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
JSON value type value/range UBJSON type marker
null null null Z
boolean true true T
boolean false false F
number_integer -9223372036854775808..-2147483649 int64 L
number_integer -2147483648..-32769 int32 l
number_integer -32768..-129 int16 I
number_integer -128..127 int8 i
number_integer 128..255 uint8 U
number_integer 256..32767 int16 I
number_integer 32768..2147483647 int32 l
number_integer 2147483648..9223372036854775807 int64 L
number_unsigned 0..127 int8 i
number_unsigned 128..255 uint8 U
number_unsigned 256..32767 int16 I
number_unsigned 32768..2147483647 int32 l
number_unsigned 2147483648..9223372036854775807 int64 L
number_unsigned 2147483649..18446744073709551615 high-precision H
number_float any value float64 D
string with shortest length indicator string S
array see notes on optimized format array [
object see notes on optimized format map {
-
Note
The mapping is complete in the sense that any JSON value type can be converted to a UBJSON value.
-
-The following values can not be converted to a UBJSON value:
    -
  • strings with more than 9223372036854775807 bytes (theoretical)
  • -
-
-
-The following markers are not used in the conversion:
    -
  • Z: no-op values are not created.
  • -
  • C: single-byte strings are serialized with S markers.
  • -
-
-
-Any UBJSON output created to_ubjson can be successfully parsed by from_ubjson.
-
-If NaN or Infinity are stored inside a JSON number, they are serialized properly. This behavior differs from the dump() function which serializes NaN or Infinity to null.
-
-The optimized formats for containers are supported: Parameter use_size adds size information to the beginning of a container and removes the closing marker. Parameter use_type further checks whether all elements of a container have the same type and adds the type marker to the beginning of the container. The use_type parameter must only be used together with use_size = true. Note that use_size = true alone may result in larger representations - the benefit of this parameter is that the receiving side is immediately informed on the number of elements of the container.
-
-If the JSON data contains the binary type, the value stored is a list of integers, as suggested by the UBJSON documentation. In particular, this means that serialization and the deserialization of a JSON containing binary values into UBJSON and back will result in a different JSON object.
-
Parameters
- - - - -
[in]jJSON value to serialize
[in]use_sizewhether to add size annotations to container types
[in]use_typewhether to add type annotations to container types (must be combined with use_size = true)
-
-
-
Returns
UBJSON serialization as byte vector
-

@complexity Linear in the size of the JSON value j.

-

@liveexample{The example shows the serialization of a JSON value to a byte vector in UBJSON format.,to_ubjson}

-
See also
http://ubjson.org
-
-from_ubjson(detail::input_adapter&&, const bool, const bool) for the analogous deserialization
-
-to_cbor(const basic_json& for the related CBOR format
-
-to_msgpack(const basic_json&) for the related MessagePack format
-
Since
version 3.1.0
- -
-
- -

◆ to_ubjson() [3/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
static void nlohmann::basic_json::to_ubjson (const basic_jsonj,
detail::output_adapter< char > o,
const bool use_size = false,
const bool use_type = false 
)
-
-inlinestatic
-
- -
-
- -

◆ to_ubjson() [4/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
static void nlohmann::basic_json::to_ubjson (const basic_jsonj,
detail::output_adapter< char > o,
const bool use_size = false,
const bool use_type = false 
)
-
-inlinestatic
-
- -
-
- -

◆ to_ubjson() [5/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
static void nlohmann::basic_json::to_ubjson (const basic_jsonj,
detail::output_adapter< uint8_t > o,
const bool use_size = false,
const bool use_type = false 
)
-
-inlinestatic
-
- -
-
- -

◆ to_ubjson() [6/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
static void nlohmann::basic_json::to_ubjson (const basic_jsonj,
detail::output_adapter< uint8_t > o,
const bool use_size = false,
const bool use_type = false 
)
-
-inlinestatic
-
- -
-
- -

◆ type() [1/2]

- -
-
- - - - - -
- - - - - - - -
constexpr value_t nlohmann::basic_json::type () const
-
-inlineconstexprnoexcept
-
- -

return the type of the JSON value (explicit)

-

Return the type of the JSON value as a value from the value_t enumeration.

-
Returns
the type of the JSON value - - - - - - - - - - - - - - - - - - - - -
Value type return value
null value_t::null
boolean value_t::boolean
string value_t::string
number (integer) value_t::number_integer
number (unsigned integer) value_t::number_unsigned
number (floating-point) value_t::number_float
object value_t::object
array value_t::array
discarded value_t::discarded
-
-

@complexity Constant.

-

@exceptionsafety No-throw guarantee: this member function never throws exceptions.

-

@liveexample{The following code exemplifies type() for all JSON types.,type}

-
See also
operator value_t() – return the type of the JSON value (implicit)
-
-type_name() – return the type as string
-
Since
version 1.0.0
- -
-
- -

◆ type() [2/2]

- -
-
- - - - - -
- - - - - - - -
constexpr value_t nlohmann::basic_json::type () const
-
-inlineconstexprnoexcept
-
- -

return the type of the JSON value (explicit)

-

Return the type of the JSON value as a value from the value_t enumeration.

-
Returns
the type of the JSON value - - - - - - - - - - - - - - - - - - - - - - -
Value type return value
null value_t::null
boolean value_t::boolean
string value_t::string
number (integer) value_t::number_integer
number (unsigned integer) value_t::number_unsigned
number (floating-point) value_t::number_float
object value_t::object
array value_t::array
binary value_t::binary
discarded value_t::discarded
-
-

@complexity Constant.

-

@exceptionsafety No-throw guarantee: this member function never throws exceptions.

-

@liveexample{The following code exemplifies type() for all JSON types.,type}

-
See also
operator value_t() – return the type of the JSON value (implicit)
-
-type_name() – return the type as string
-
Since
version 1.0.0
- -
-
- -

◆ type_name() [1/2]

- -
-
- - - - - -
- - - - - - - -
const JSON_HEDLEY_RETURNS_NON_NULL char* nlohmann::basic_json::type_name () const
-
-inlinenoexcept
-
- -

return the type as string

-

Returns the type name as string to be used in error messages - usually to indicate that a function was called on a wrong JSON type.

-
Returns
a string representation of a the m_type member: - - - - - - - - - - - - - - - - -
Value type return value
null "null"
boolean "boolean"
string "string"
number "number" (for all number types)
object "object"
array "array"
discarded "discarded"
-
-

@exceptionsafety No-throw guarantee: this function never throws exceptions.

-

@complexity Constant.

-

@liveexample{The following code exemplifies type_name() for all JSON types.,type_name}

-
See also
type() – return the type of the JSON value
-
-operator value_t() – return the type of the JSON value (implicit)
-
Since
version 1.0.0, public since 2.1.0, const char* and noexcept since 3.0.0
- -
-
- -

◆ type_name() [2/2]

- -
-
- - - - - -
- - - - - - - -
const JSON_HEDLEY_RETURNS_NON_NULL char* nlohmann::basic_json::type_name () const
-
-inlinenoexcept
-
- -

return the type as string

-

Returns the type name as string to be used in error messages - usually to indicate that a function was called on a wrong JSON type.

-
Returns
a string representation of a the m_type member: - - - - - - - - - - - - - - - - - - -
Value type return value
null "null"
boolean "boolean"
string "string"
number "number" (for all number types)
object "object"
array "array"
binary "binary"
discarded "discarded"
-
-

@exceptionsafety No-throw guarantee: this function never throws exceptions.

-

@complexity Constant.

-

@liveexample{The following code exemplifies type_name() for all JSON types.,type_name}

-
See also
type() – return the type of the JSON value
-
-operator value_t() – return the type of the JSON value (implicit)
-
Since
version 1.0.0, public since 2.1.0, const char* and noexcept since 3.0.0
- -
-
- -

◆ unflatten() [1/2]

- -
-
- - - - - -
- - - - - - - -
basic_json nlohmann::basic_json::unflatten () const
-
-inline
-
- -

unflatten a previously flattened JSON value

-

The function restores the arbitrary nesting of a JSON value that has been flattened before using the flatten() function. The JSON value must meet certain constraints:

    -
  1. The value must be an object.
  2. -
  3. The keys must be JSON pointers (see RFC 6901)
  4. -
  5. The mapped values must be primitive JSON types.
  6. -
-
Returns
the original JSON from a flattened version
-
Note
Empty objects and arrays are flattened by flatten() to null values and can not unflattened to their original type. Apart from this example, for a JSON value j, the following is always true: j == j.flatten().unflatten().
-

@complexity Linear in the size the JSON value.

-
Exceptions
- - - -
type_error.314if value is not an object
type_error.315if object values are not primitive
-
-
-

@liveexample{The following code shows how a flattened JSON object is unflattened into the original nested JSON object.,unflatten}

-
See also
flatten() for the reverse function
-
Since
version 2.0.0
- -
-
- -

◆ unflatten() [2/2]

- -
-
- - - - - -
- - - - - - - -
basic_json nlohmann::basic_json::unflatten () const
-
-inline
-
- -

unflatten a previously flattened JSON value

-

The function restores the arbitrary nesting of a JSON value that has been flattened before using the flatten() function. The JSON value must meet certain constraints:

    -
  1. The value must be an object.
  2. -
  3. The keys must be JSON pointers (see RFC 6901)
  4. -
  5. The mapped values must be primitive JSON types.
  6. -
-
Returns
the original JSON from a flattened version
-
Note
Empty objects and arrays are flattened by flatten() to null values and can not unflattened to their original type. Apart from this example, for a JSON value j, the following is always true: j == j.flatten().unflatten().
-

@complexity Linear in the size the JSON value.

-
Exceptions
- - - -
type_error.314if value is not an object
type_error.315if object values are not primitive
-
-
-

@liveexample{The following code shows how a flattened JSON object is unflattened into the original nested JSON object.,unflatten}

-
See also
flatten() for the reverse function
-
Since
version 2.0.0
- -
-
- -

◆ update() [1/4]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void nlohmann::basic_json::update (const_iterator first,
const_iterator last 
)
-
-inline
-
- -

updates a JSON object from another object, overwriting existing keys

-

Inserts all values from from range [first, last) and overwrites existing keys.

-
Parameters
- - - -
[in]firstbegin of the range of elements to insert
[in]lastend of the range of elements to insert
-
-
-
Exceptions
- - - - -
type_error.312if called on JSON values other than objects; example: "cannot use update() with string"
invalid_iterator.202if iterator first or last does does not point to an object; example: "iterators first and last must point to -objects"
invalid_iterator.210if first and last do not belong to the same JSON value; example: "iterators do not fit"
-
-
-

@complexity O(N*log(size() + N)), where N is the number of elements to insert.

-

@liveexample{The example shows how update() is used__range.,update}

-
See also
https://docs.python.org/3.6/library/stdtypes.html#dict.update
-
Since
version 3.0.0
- -
-
- -

◆ update() [2/4]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void nlohmann::basic_json::update (const_iterator first,
const_iterator last 
)
-
-inline
-
- -

updates a JSON object from another object, overwriting existing keys

-

Inserts all values from from range [first, last) and overwrites existing keys.

-
Parameters
- - - -
[in]firstbegin of the range of elements to insert
[in]lastend of the range of elements to insert
-
-
-
Exceptions
- - - - -
type_error.312if called on JSON values other than objects; example: "cannot use update() with string"
invalid_iterator.202if iterator first or last does does not point to an object; example: "iterators first and last must point to -objects"
invalid_iterator.210if first and last do not belong to the same JSON value; example: "iterators do not fit"
-
-
-

@complexity O(N*log(size() + N)), where N is the number of elements to insert.

-

@liveexample{The example shows how update() is used__range.,update}

-
See also
https://docs.python.org/3.6/library/stdtypes.html#dict.update
-
Since
version 3.0.0
- -
-
- -

◆ update() [3/4]

- -
-
- - - - - -
- - - - - - - - -
void nlohmann::basic_json::update (const_reference j)
-
-inline
-
- -

updates a JSON object from another object, overwriting existing keys

-

Inserts all values from JSON object j and overwrites existing keys.

-
Parameters
- - -
[in]jJSON object to read values from
-
-
-
Exceptions
- - -
type_error.312if called on JSON values other than objects; example: "cannot use update() with string"
-
-
-

@complexity O(N*log(size() + N)), where N is the number of elements to insert.

-

@liveexample{The example shows how update() is used.,update}

-
See also
https://docs.python.org/3.6/library/stdtypes.html#dict.update
-
Since
version 3.0.0
- -
-
- -

◆ update() [4/4]

- -
-
- - - - - -
- - - - - - - - -
void nlohmann::basic_json::update (const_reference j)
-
-inline
-
- -

updates a JSON object from another object, overwriting existing keys

-

Inserts all values from JSON object j and overwrites existing keys.

-
Parameters
- - -
[in]jJSON object to read values from
-
-
-
Exceptions
- - -
type_error.312if called on JSON values other than objects; example: "cannot use update() with string"
-
-
-

@complexity O(N*log(size() + N)), where N is the number of elements to insert.

-

@liveexample{The example shows how update() is used.,update}

-
See also
https://docs.python.org/3.6/library/stdtypes.html#dict.update
-
Since
version 3.0.0
- -
-
- -

◆ value() [1/8]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
string_t nlohmann::basic_json::value (const json_pointerptr,
const char * default_value 
) const
-
-inline
-
- -

overload for a default value of type const char*

- -
-
- -

◆ value() [2/8]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
string_t nlohmann::basic_json::value (const json_pointerptr,
const char * default_value 
) const
-
-inline
-
- -

overload for a default value of type const char*

- -
-
- -

◆ value() [3/8]

- -
-
-
-template<class ValueType , typename std::enable_if< std::is_convertible< basic_json_t, ValueType >::value, int >::type = 0>
- - - - - -
- - - - - - - - - - - - - - - - - - -
ValueType nlohmann::basic_json::value (const json_pointerptr,
const ValueType & default_value 
) const
-
-inline
-
- -

access specified object element via JSON Pointer with default value

-

Returns either a copy of an object's element at the specified key key or a given default value if no element with key key exists.

-

The function is basically equivalent to executing

try {
-
return at(ptr);
-
} catch(out_of_range) {
-
return default_value;
-
}
-
Note
Unlike at(const json_pointer&), this function does not throw if the given key key was not found.
-
Parameters
- - - -
[in]ptra JSON pointer to the element to access
[in]default_valuethe value to return if ptr found no value
-
-
-
Template Parameters
- - -
ValueTypetype compatible to JSON values, for instance int for JSON integer numbers, bool for JSON booleans, or std::vector types for JSON arrays. Note the type of the expected value at key and the default value default_value must be compatible.
-
-
-
Returns
copy of the element at key key or default_value if key is not found
-
Exceptions
- - - -
type_error.302if default_value does not match the type of the value at ptr
type_error.306if the JSON value is not an object; in that case, using value() with a key makes no sense.
-
-
-

@complexity Logarithmic in the size of the container.

-

@liveexample{The example below shows how object elements can be queried with a default value.,basic_json__value_ptr}

-
See also
operator[](const json_pointer&) for unchecked access by reference
-
Since
version 2.0.2
- -
-
- -

◆ value() [4/8]

- -
-
-
-template<class ValueType , typename std::enable_if< detail::is_getable< basic_json_t, ValueType >::value, int >::type = 0>
- - - - - -
- - - - - - - - - - - - - - - - - - -
ValueType nlohmann::basic_json::value (const json_pointerptr,
const ValueType & default_value 
) const
-
-inline
-
- -

access specified object element via JSON Pointer with default value

-

Returns either a copy of an object's element at the specified key key or a given default value if no element with key key exists.

-

The function is basically equivalent to executing

try {
-
return at(ptr);
-
} catch(out_of_range) {
-
return default_value;
-
}
-
Note
Unlike at(const json_pointer&), this function does not throw if the given key key was not found.
-
Parameters
- - - -
[in]ptra JSON pointer to the element to access
[in]default_valuethe value to return if ptr found no value
-
-
-
Template Parameters
- - -
ValueTypetype compatible to JSON values, for instance int for JSON integer numbers, bool for JSON booleans, or std::vector types for JSON arrays. Note the type of the expected value at key and the default value default_value must be compatible.
-
-
-
Returns
copy of the element at key key or default_value if key is not found
-
Exceptions
- - - -
type_error.302if default_value does not match the type of the value at ptr
type_error.306if the JSON value is not an object; in that case, using value() with a key makes no sense.
-
-
-

@complexity Logarithmic in the size of the container.

-

@liveexample{The example below shows how object elements can be queried with a default value.,basic_json__value_ptr}

-
See also
operator[](const json_pointer&) for unchecked access by reference
-
Since
version 2.0.2
- -
-
- -

◆ value() [5/8]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
string_t nlohmann::basic_json::value (const typename object_t::key_type & key,
const char * default_value 
) const
-
-inline
-
- -

overload for a default value of type const char*

-

access specified object element with default value Returns either a copy of an object's element at the specified key key or a given default value if no element with key key exists.

-

The function is basically equivalent to executing

try {
-
return at(key);
-
} catch(out_of_range) {
-
return default_value;
-
}
-
Note
Unlike at(const typename object_t::key_type&), this function does not throw if the given key key was not found.
-
-Unlike operator[](const typename object_t::key_type& key), this function does not implicitly add an element to the position defined by key. This function is furthermore also applicable to const objects.
-
Parameters
- - - -
[in]keykey of the element to access
[in]default_valuethe value to return if key is not found
-
-
-
Template Parameters
- - -
ValueTypetype compatible to JSON values, for instance int for JSON integer numbers, bool for JSON booleans, or std::vector types for JSON arrays. Note the type of the expected value at key and the default value default_value must be compatible.
-
-
-
Returns
copy of the element at key key or default_value if key is not found
-
Exceptions
- - - -
type_error.302if default_value does not match the type of the value at key
type_error.306if the JSON value is not an object; in that case, using value() with a key makes no sense.
-
-
-

@complexity Logarithmic in the size of the container.

-

@liveexample{The example below shows how object elements can be queried with a default value.,basic_json__value}

-
See also
at(const typename object_t::key_type&) for access by reference with range checking
-
-operator[](const typename object_t::key_type&) for unchecked access by reference
-
Since
version 1.0.0
- -
-
- -

◆ value() [6/8]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
string_t nlohmann::basic_json::value (const typename object_t::key_type & key,
const char * default_value 
) const
-
-inline
-
- -

overload for a default value of type const char*

-

access specified object element with default value Returns either a copy of an object's element at the specified key key or a given default value if no element with key key exists.

-

The function is basically equivalent to executing

try {
-
return at(key);
-
} catch(out_of_range) {
-
return default_value;
-
}
-
Note
Unlike at(const typename object_t::key_type&), this function does not throw if the given key key was not found.
-
-Unlike operator[](const typename object_t::key_type& key), this function does not implicitly add an element to the position defined by key. This function is furthermore also applicable to const objects.
-
Parameters
- - - -
[in]keykey of the element to access
[in]default_valuethe value to return if key is not found
-
-
-
Template Parameters
- - -
ValueTypetype compatible to JSON values, for instance int for JSON integer numbers, bool for JSON booleans, or std::vector types for JSON arrays. Note the type of the expected value at key and the default value default_value must be compatible.
-
-
-
Returns
copy of the element at key key or default_value if key is not found
-
Exceptions
- - - -
type_error.302if default_value does not match the type of the value at key
type_error.306if the JSON value is not an object; in that case, using value() with a key makes no sense.
-
-
-

@complexity Logarithmic in the size of the container.

-

@liveexample{The example below shows how object elements can be queried with a default value.,basic_json__value}

-
See also
at(const typename object_t::key_type&) for access by reference with range checking
-
-operator[](const typename object_t::key_type&) for unchecked access by reference
-
Since
version 1.0.0
- -
-
- -

◆ value() [7/8]

- -
-
-
-template<class ValueType , typename std::enable_if< std::is_convertible< basic_json_t, ValueType >::value, int >::type = 0>
- - - - - -
- - - - - - - - - - - - - - - - - - -
ValueType nlohmann::basic_json::value (const typename object_t::key_type & key,
const ValueType & default_value 
) const
-
-inline
-
- -

access specified object element with default value

-

Returns either a copy of an object's element at the specified key key or a given default value if no element with key key exists.

-

The function is basically equivalent to executing

try {
-
return at(key);
-
} catch(out_of_range) {
-
return default_value;
-
}
-
Note
Unlike at(const typename object_t::key_type&), this function does not throw if the given key key was not found.
-
-Unlike operator[](const typename object_t::key_type& key), this function does not implicitly add an element to the position defined by key. This function is furthermore also applicable to const objects.
-
Parameters
- - - -
[in]keykey of the element to access
[in]default_valuethe value to return if key is not found
-
-
-
Template Parameters
- - -
ValueTypetype compatible to JSON values, for instance int for JSON integer numbers, bool for JSON booleans, or std::vector types for JSON arrays. Note the type of the expected value at key and the default value default_value must be compatible.
-
-
-
Returns
copy of the element at key key or default_value if key is not found
-
Exceptions
- - - -
type_error.302if default_value does not match the type of the value at key
type_error.306if the JSON value is not an object; in that case, using value() with a key makes no sense.
-
-
-

@complexity Logarithmic in the size of the container.

-

@liveexample{The example below shows how object elements can be queried with a default value.,basic_json__value}

-
See also
at(const typename object_t::key_type&) for access by reference with range checking
-
-operator[](const typename object_t::key_type&) for unchecked access by reference
-
Since
version 1.0.0
- -
-
- -

◆ value() [8/8]

- -
-
-
-template<class ValueType , typename std::enable_if< detail::is_getable< basic_json_t, ValueType >::value &&!std::is_same< value_t, ValueType >::value, int >::type = 0>
- - - - - -
- - - - - - - - - - - - - - - - - - -
ValueType nlohmann::basic_json::value (const typename object_t::key_type & key,
const ValueType & default_value 
) const
-
-inline
-
- -

access specified object element with default value

-

Returns either a copy of an object's element at the specified key key or a given default value if no element with key key exists.

-

The function is basically equivalent to executing

try {
-
return at(key);
-
} catch(out_of_range) {
-
return default_value;
-
}
-
Note
Unlike at(const typename object_t::key_type&), this function does not throw if the given key key was not found.
-
-Unlike operator[](const typename object_t::key_type& key), this function does not implicitly add an element to the position defined by key. This function is furthermore also applicable to const objects.
-
Parameters
- - - -
[in]keykey of the element to access
[in]default_valuethe value to return if key is not found
-
-
-
Template Parameters
- - -
ValueTypetype compatible to JSON values, for instance int for JSON integer numbers, bool for JSON booleans, or std::vector types for JSON arrays. Note the type of the expected value at key and the default value default_value must be compatible.
-
-
-
Returns
copy of the element at key key or default_value if key is not found
-
Exceptions
- - - -
type_error.302if default_value does not match the type of the value at key
type_error.306if the JSON value is not an object; in that case, using value() with a key makes no sense.
-
-
-

@complexity Logarithmic in the size of the container.

-

@liveexample{The example below shows how object elements can be queried with a default value.,basic_json__value}

-
See also
at(const typename object_t::key_type&) for access by reference with range checking
-
-operator[](const typename object_t::key_type&) for unchecked access by reference
-
Since
version 1.0.0
- -
-
-

Friends And Related Function Documentation

- -

◆ ::nlohmann::detail::binary_reader

- -
-
-
-template<typename BasicJsonType , typename SAX >
- - - - - -
- - - - -
friend class ::nlohmann::detail::binary_reader
-
-friend
-
- -
-
- -

◆ ::nlohmann::detail::binary_writer

- -
-
-
-template<typename BasicJsonType , typename CharType >
- - - - - -
- - - - -
friend class ::nlohmann::detail::binary_writer
-
-friend
-
- -
-
- -

◆ ::nlohmann::detail::iter_impl

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - -
friend class ::nlohmann::detail::iter_impl
-
-friend
-
- -
-
- -

◆ ::nlohmann::detail::json_sax_dom_callback_parser

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - -
friend class ::nlohmann::detail::json_sax_dom_callback_parser
-
-friend
-
- -
-
- -

◆ ::nlohmann::detail::json_sax_dom_parser

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - -
friend class ::nlohmann::detail::json_sax_dom_parser
-
-friend
-
- -
-
- -

◆ ::nlohmann::detail::parser

- -
-
-
-template<typename BasicJsonType , typename InputType >
- - - - - -
- - - - -
friend class ::nlohmann::detail::parser
-
-friend
-
- -
-
- -

◆ detail::external_constructor [1/2]

- -
-
-
-template<detail::value_t >
- - - - - -
- - - - -
friend struct detail::external_constructor
-
-friend
-
- -
-
- -

◆ detail::external_constructor [2/2]

- -
-
-
-template<detail::value_t >
- - - - - -
- - - - -
struct detail::external_constructor
-
-friend
-
- -
-
- -

◆ operator!= [1/6]

- -
-
-
-template<typename ScalarType , typename std::enable_if< std::is_scalar< ScalarType >::value, int >::type = 0>
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool operator!= (const ScalarType lhs,
const_reference rhs 
)
-
-friend
-
- -

comparison: not equal

-

comparison: not equal Compares two JSON values for inequality by calculating not (lhs == rhs).

-
Parameters
- - - -
[in]lhsfirst JSON value to consider
[in]rhssecond JSON value to consider
-
-
-
Returns
whether the values lhs and rhs are not equal
-

@complexity Linear.

-

@exceptionsafety No-throw guarantee: this function never throws exceptions.

-

@liveexample{The example demonstrates comparing several JSON types.,operator__notequal}

-
Since
version 1.0.0
- -
-
- -

◆ operator!= [2/6]

- -
-
-
-template<typename ScalarType , typename std::enable_if< std::is_scalar< ScalarType >::value, int >::type = 0>
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool operator!= (const ScalarType lhs,
const_reference rhs 
)
-
-friend
-
- -

comparison: not equal

-

comparison: not equal Compares two JSON values for inequality by calculating not (lhs == rhs).

-
Parameters
- - - -
[in]lhsfirst JSON value to consider
[in]rhssecond JSON value to consider
-
-
-
Returns
whether the values lhs and rhs are not equal
-

@complexity Linear.

-

@exceptionsafety No-throw guarantee: this function never throws exceptions.

-

@liveexample{The example demonstrates comparing several JSON types.,operator__notequal}

-
Since
version 1.0.0
- -
-
- -

◆ operator!= [3/6]

- -
-
-
-template<typename ScalarType , typename std::enable_if< std::is_scalar< ScalarType >::value, int >::type = 0>
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool operator!= (const_reference lhs,
const ScalarType rhs 
)
-
-friend
-
- -

comparison: not equal

-

comparison: not equal Compares two JSON values for inequality by calculating not (lhs == rhs).

-
Parameters
- - - -
[in]lhsfirst JSON value to consider
[in]rhssecond JSON value to consider
-
-
-
Returns
whether the values lhs and rhs are not equal
-

@complexity Linear.

-

@exceptionsafety No-throw guarantee: this function never throws exceptions.

-

@liveexample{The example demonstrates comparing several JSON types.,operator__notequal}

-
Since
version 1.0.0
- -
-
- -

◆ operator!= [4/6]

- -
-
-
-template<typename ScalarType , typename std::enable_if< std::is_scalar< ScalarType >::value, int >::type = 0>
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool operator!= (const_reference lhs,
const ScalarType rhs 
)
-
-friend
-
- -

comparison: not equal

-

comparison: not equal Compares two JSON values for inequality by calculating not (lhs == rhs).

-
Parameters
- - - -
[in]lhsfirst JSON value to consider
[in]rhssecond JSON value to consider
-
-
-
Returns
whether the values lhs and rhs are not equal
-

@complexity Linear.

-

@exceptionsafety No-throw guarantee: this function never throws exceptions.

-

@liveexample{The example demonstrates comparing several JSON types.,operator__notequal}

-
Since
version 1.0.0
- -
-
- -

◆ operator!= [5/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool operator!= (const_reference lhs,
const_reference rhs 
)
-
-friend
-
- -

comparison: not equal

-

Compares two JSON values for inequality by calculating not (lhs == rhs).

-
Parameters
- - - -
[in]lhsfirst JSON value to consider
[in]rhssecond JSON value to consider
-
-
-
Returns
whether the values lhs and rhs are not equal
-

@complexity Linear.

-

@exceptionsafety No-throw guarantee: this function never throws exceptions.

-

@liveexample{The example demonstrates comparing several JSON types.,operator__notequal}

-
Since
version 1.0.0
- -
-
- -

◆ operator!= [6/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool operator!= (const_reference lhs,
const_reference rhs 
)
-
-friend
-
- -

comparison: not equal

-

Compares two JSON values for inequality by calculating not (lhs == rhs).

-
Parameters
- - - -
[in]lhsfirst JSON value to consider
[in]rhssecond JSON value to consider
-
-
-
Returns
whether the values lhs and rhs are not equal
-

@complexity Linear.

-

@exceptionsafety No-throw guarantee: this function never throws exceptions.

-

@liveexample{The example demonstrates comparing several JSON types.,operator__notequal}

-
Since
version 1.0.0
- -
-
- -

◆ operator< [1/6]

- -
-
-
-template<typename ScalarType , typename std::enable_if< std::is_scalar< ScalarType >::value, int >::type = 0>
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool operator< (const ScalarType lhs,
const_reference rhs 
)
-
-friend
-
- -

comparison: less than

-

comparison: less than Compares whether one JSON value lhs is less than another JSON value rhs according to the following rules:

    -
  • If lhs and rhs have the same type, the values are compared using the default < operator.
  • -
  • Integer and floating-point numbers are automatically converted before comparison
  • -
  • In case lhs and rhs have different types, the values are ignored and the order of the types is considered, see operator<(const value_t, const value_t).
  • -
-
Parameters
- - - -
[in]lhsfirst JSON value to consider
[in]rhssecond JSON value to consider
-
-
-
Returns
whether lhs is less than rhs
-

@complexity Linear.

-

@exceptionsafety No-throw guarantee: this function never throws exceptions.

-

@liveexample{The example demonstrates comparing several JSON types.,operator__less}

-
Since
version 1.0.0
- -
-
- -

◆ operator< [2/6]

- -
-
-
-template<typename ScalarType , typename std::enable_if< std::is_scalar< ScalarType >::value, int >::type = 0>
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool operator< (const ScalarType lhs,
const_reference rhs 
)
-
-friend
-
- -

comparison: less than

-

comparison: less than Compares whether one JSON value lhs is less than another JSON value rhs according to the following rules:

    -
  • If lhs and rhs have the same type, the values are compared using the default < operator.
  • -
  • Integer and floating-point numbers are automatically converted before comparison
  • -
  • In case lhs and rhs have different types, the values are ignored and the order of the types is considered, see operator<(const value_t, const value_t).
  • -
-
Parameters
- - - -
[in]lhsfirst JSON value to consider
[in]rhssecond JSON value to consider
-
-
-
Returns
whether lhs is less than rhs
-

@complexity Linear.

-

@exceptionsafety No-throw guarantee: this function never throws exceptions.

-

@liveexample{The example demonstrates comparing several JSON types.,operator__less}

-
Since
version 1.0.0
- -
-
- -

◆ operator< [3/6]

- -
-
-
-template<typename ScalarType , typename std::enable_if< std::is_scalar< ScalarType >::value, int >::type = 0>
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool operator< (const_reference lhs,
const ScalarType rhs 
)
-
-friend
-
- -

comparison: less than

-

comparison: less than Compares whether one JSON value lhs is less than another JSON value rhs according to the following rules:

    -
  • If lhs and rhs have the same type, the values are compared using the default < operator.
  • -
  • Integer and floating-point numbers are automatically converted before comparison
  • -
  • In case lhs and rhs have different types, the values are ignored and the order of the types is considered, see operator<(const value_t, const value_t).
  • -
-
Parameters
- - - -
[in]lhsfirst JSON value to consider
[in]rhssecond JSON value to consider
-
-
-
Returns
whether lhs is less than rhs
-

@complexity Linear.

-

@exceptionsafety No-throw guarantee: this function never throws exceptions.

-

@liveexample{The example demonstrates comparing several JSON types.,operator__less}

-
Since
version 1.0.0
- -
-
- -

◆ operator< [4/6]

- -
-
-
-template<typename ScalarType , typename std::enable_if< std::is_scalar< ScalarType >::value, int >::type = 0>
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool operator< (const_reference lhs,
const ScalarType rhs 
)
-
-friend
-
- -

comparison: less than

-

comparison: less than Compares whether one JSON value lhs is less than another JSON value rhs according to the following rules:

    -
  • If lhs and rhs have the same type, the values are compared using the default < operator.
  • -
  • Integer and floating-point numbers are automatically converted before comparison
  • -
  • In case lhs and rhs have different types, the values are ignored and the order of the types is considered, see operator<(const value_t, const value_t).
  • -
-
Parameters
- - - -
[in]lhsfirst JSON value to consider
[in]rhssecond JSON value to consider
-
-
-
Returns
whether lhs is less than rhs
-

@complexity Linear.

-

@exceptionsafety No-throw guarantee: this function never throws exceptions.

-

@liveexample{The example demonstrates comparing several JSON types.,operator__less}

-
Since
version 1.0.0
- -
-
- -

◆ operator< [5/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool operator< (const_reference lhs,
const_reference rhs 
)
-
-friend
-
- -

comparison: less than

-

Compares whether one JSON value lhs is less than another JSON value rhs according to the following rules:

    -
  • If lhs and rhs have the same type, the values are compared using the default < operator.
  • -
  • Integer and floating-point numbers are automatically converted before comparison
  • -
  • In case lhs and rhs have different types, the values are ignored and the order of the types is considered, see operator<(const value_t, const value_t).
  • -
-
Parameters
- - - -
[in]lhsfirst JSON value to consider
[in]rhssecond JSON value to consider
-
-
-
Returns
whether lhs is less than rhs
-

@complexity Linear.

-

@exceptionsafety No-throw guarantee: this function never throws exceptions.

-

@liveexample{The example demonstrates comparing several JSON types.,operator__less}

-
Since
version 1.0.0
- -
-
- -

◆ operator< [6/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool operator< (const_reference lhs,
const_reference rhs 
)
-
-friend
-
- -

comparison: less than

-

Compares whether one JSON value lhs is less than another JSON value rhs according to the following rules:

    -
  • If lhs and rhs have the same type, the values are compared using the default < operator.
  • -
  • Integer and floating-point numbers are automatically converted before comparison
  • -
  • In case lhs and rhs have different types, the values are ignored and the order of the types is considered, see operator<(const value_t, const value_t).
  • -
-
Parameters
- - - -
[in]lhsfirst JSON value to consider
[in]rhssecond JSON value to consider
-
-
-
Returns
whether lhs is less than rhs
-

@complexity Linear.

-

@exceptionsafety No-throw guarantee: this function never throws exceptions.

-

@liveexample{The example demonstrates comparing several JSON types.,operator__less}

-
Since
version 1.0.0
- -
-
- -

◆ operator<< [1/4]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
std::istream& operator<< (basic_jsonj,
std::istream & i 
)
-
-friend
-
- -

deserialize from stream

-
Deprecated:
This stream operator is deprecated and will be removed in version 4.0.0 of the library. Please use operator>>(std::istream&, basic_json&) instead; that is, replace calls like j << i; with i >> j;.
-
Since
version 1.0.0; deprecated since version 3.0.0
- -
-
- -

◆ operator<< [2/4]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
std::istream& operator<< (basic_jsonj,
std::istream & i 
)
-
-friend
-
- -

deserialize from stream

-
Deprecated:
This stream operator is deprecated and will be removed in version 4.0.0 of the library. Please use operator>>(std::istream&, basic_json&) instead; that is, replace calls like j << i; with i >> j;.
-
Since
version 1.0.0; deprecated since version 3.0.0
- -
-
- -

◆ operator<< [3/4]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
std::ostream& operator<< (std::ostream & o,
const basic_jsonj 
)
-
-friend
-
- -

serialize to stream

-

Serialize the given JSON value j to the output stream o. The JSON value will be serialized using the dump member function.

-
    -
  • The indentation of the output can be controlled with the member variable width of the output stream o. For instance, using the manipulator std::setw(4) on o sets the indentation level to 4 and the serialization result is the same as calling dump(4).
  • -
  • The indentation character can be controlled with the member variable fill of the output stream o. For instance, the manipulator ‘std::setfill(’\t')` sets indentation to use a tab character rather than the default space character.
  • -
-
Parameters
- - - -
[in,out]ostream to serialize to
[in]jJSON value to serialize
-
-
-
Returns
the stream o
-
Exceptions
- - -
type_error.316if a string stored inside the JSON value is not UTF-8 encoded
-
-
-

@complexity Linear.

-

@liveexample{The example below shows the serialization with different parameters to width to adjust the indentation level.,operator_serialize}

-
Since
version 1.0.0; indentation character added in version 3.0.0
- -
-
- -

◆ operator<< [4/4]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
std::ostream& operator<< (std::ostream & o,
const basic_jsonj 
)
-
-friend
-
- -

serialize to stream

-

Serialize the given JSON value j to the output stream o. The JSON value will be serialized using the dump member function.

-
    -
  • The indentation of the output can be controlled with the member variable width of the output stream o. For instance, using the manipulator std::setw(4) on o sets the indentation level to 4 and the serialization result is the same as calling dump(4).
  • -
  • The indentation character can be controlled with the member variable fill of the output stream o. For instance, the manipulator ‘std::setfill(’\t')` sets indentation to use a tab character rather than the default space character.
  • -
-
Parameters
- - - -
[in,out]ostream to serialize to
[in]jJSON value to serialize
-
-
-
Returns
the stream o
-
Exceptions
- - -
type_error.316if a string stored inside the JSON value is not UTF-8 encoded
-
-
-

@complexity Linear.

-

@liveexample{The example below shows the serialization with different parameters to width to adjust the indentation level.,operator_serialize}

-
Since
version 1.0.0; indentation character added in version 3.0.0
- -
-
- -

◆ operator<= [1/6]

- -
-
-
-template<typename ScalarType , typename std::enable_if< std::is_scalar< ScalarType >::value, int >::type = 0>
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool operator<= (const ScalarType lhs,
const_reference rhs 
)
-
-friend
-
- -

comparison: less than or equal

-

comparison: less than or equal Compares whether one JSON value lhs is less than or equal to another JSON value by calculating not (rhs < lhs).

-
Parameters
- - - -
[in]lhsfirst JSON value to consider
[in]rhssecond JSON value to consider
-
-
-
Returns
whether lhs is less than or equal to rhs
-

@complexity Linear.

-

@exceptionsafety No-throw guarantee: this function never throws exceptions.

-

@liveexample{The example demonstrates comparing several JSON types.,operator__greater}

-
Since
version 1.0.0
- -
-
- -

◆ operator<= [2/6]

- -
-
-
-template<typename ScalarType , typename std::enable_if< std::is_scalar< ScalarType >::value, int >::type = 0>
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool operator<= (const ScalarType lhs,
const_reference rhs 
)
-
-friend
-
- -

comparison: less than or equal

-

comparison: less than or equal Compares whether one JSON value lhs is less than or equal to another JSON value by calculating not (rhs < lhs).

-
Parameters
- - - -
[in]lhsfirst JSON value to consider
[in]rhssecond JSON value to consider
-
-
-
Returns
whether lhs is less than or equal to rhs
-

@complexity Linear.

-

@exceptionsafety No-throw guarantee: this function never throws exceptions.

-

@liveexample{The example demonstrates comparing several JSON types.,operator__greater}

-
Since
version 1.0.0
- -
-
- -

◆ operator<= [3/6]

- -
-
-
-template<typename ScalarType , typename std::enable_if< std::is_scalar< ScalarType >::value, int >::type = 0>
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool operator<= (const_reference lhs,
const ScalarType rhs 
)
-
-friend
-
- -

comparison: less than or equal

-

comparison: less than or equal Compares whether one JSON value lhs is less than or equal to another JSON value by calculating not (rhs < lhs).

-
Parameters
- - - -
[in]lhsfirst JSON value to consider
[in]rhssecond JSON value to consider
-
-
-
Returns
whether lhs is less than or equal to rhs
-

@complexity Linear.

-

@exceptionsafety No-throw guarantee: this function never throws exceptions.

-

@liveexample{The example demonstrates comparing several JSON types.,operator__greater}

-
Since
version 1.0.0
- -
-
- -

◆ operator<= [4/6]

- -
-
-
-template<typename ScalarType , typename std::enable_if< std::is_scalar< ScalarType >::value, int >::type = 0>
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool operator<= (const_reference lhs,
const ScalarType rhs 
)
-
-friend
-
- -

comparison: less than or equal

-

comparison: less than or equal Compares whether one JSON value lhs is less than or equal to another JSON value by calculating not (rhs < lhs).

-
Parameters
- - - -
[in]lhsfirst JSON value to consider
[in]rhssecond JSON value to consider
-
-
-
Returns
whether lhs is less than or equal to rhs
-

@complexity Linear.

-

@exceptionsafety No-throw guarantee: this function never throws exceptions.

-

@liveexample{The example demonstrates comparing several JSON types.,operator__greater}

-
Since
version 1.0.0
- -
-
- -

◆ operator<= [5/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool operator<= (const_reference lhs,
const_reference rhs 
)
-
-friend
-
- -

comparison: less than or equal

-

Compares whether one JSON value lhs is less than or equal to another JSON value by calculating not (rhs < lhs).

-
Parameters
- - - -
[in]lhsfirst JSON value to consider
[in]rhssecond JSON value to consider
-
-
-
Returns
whether lhs is less than or equal to rhs
-

@complexity Linear.

-

@exceptionsafety No-throw guarantee: this function never throws exceptions.

-

@liveexample{The example demonstrates comparing several JSON types.,operator__greater}

-
Since
version 1.0.0
- -
-
- -

◆ operator<= [6/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool operator<= (const_reference lhs,
const_reference rhs 
)
-
-friend
-
- -

comparison: less than or equal

-

Compares whether one JSON value lhs is less than or equal to another JSON value by calculating not (rhs < lhs).

-
Parameters
- - - -
[in]lhsfirst JSON value to consider
[in]rhssecond JSON value to consider
-
-
-
Returns
whether lhs is less than or equal to rhs
-

@complexity Linear.

-

@exceptionsafety No-throw guarantee: this function never throws exceptions.

-

@liveexample{The example demonstrates comparing several JSON types.,operator__greater}

-
Since
version 1.0.0
- -
-
- -

◆ operator== [1/6]

- -
-
-
-template<typename ScalarType , typename std::enable_if< std::is_scalar< ScalarType >::value, int >::type = 0>
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool operator== (const ScalarType lhs,
const_reference rhs 
)
-
-friend
-
- -

comparison: equal

-

comparison: equal Compares two JSON values for equality according to the following rules:

    -
  • Two JSON values are equal if (1) they are from the same type and (2) their stored values are the same according to their respective operator==.
  • -
  • Integer and floating-point numbers are automatically converted before comparison. Note than two NaN values are always treated as unequal.
  • -
  • Two JSON null values are equal.
  • -
-
Note
Floating-point inside JSON values numbers are compared with json::number_float_t::operator== which is double::operator== by default. To compare floating-point while respecting an epsilon, an alternative comparison function could be used, for instance
template<typename T, typename = typename std::enable_if<std::is_floating_point<T>::value, T>::type>
-
inline bool is_same(T a, T b, T epsilon = std::numeric_limits<T>::epsilon()) noexcept
-
{
-
return std::abs(a - b) <= epsilon;
-
}
-
-
-NaN values never compare equal to themselves or to other NaN values.
-
Parameters
- - - -
[in]lhsfirst JSON value to consider
[in]rhssecond JSON value to consider
-
-
-
Returns
whether the values lhs and rhs are equal
-

@exceptionsafety No-throw guarantee: this function never throws exceptions.

-

@complexity Linear.

-

@liveexample{The example demonstrates comparing several JSON types.,operator__equal}

-
Since
version 1.0.0
- -
-
- -

◆ operator== [2/6]

- -
-
-
-template<typename ScalarType , typename std::enable_if< std::is_scalar< ScalarType >::value, int >::type = 0>
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool operator== (const ScalarType lhs,
const_reference rhs 
)
-
-friend
-
- -

comparison: equal

-

comparison: equal Compares two JSON values for equality according to the following rules:

    -
  • Two JSON values are equal if (1) they are from the same type and (2) their stored values are the same according to their respective operator==.
  • -
  • Integer and floating-point numbers are automatically converted before comparison. Note than two NaN values are always treated as unequal.
  • -
  • Two JSON null values are equal.
  • -
-
Note
Floating-point inside JSON values numbers are compared with json::number_float_t::operator== which is double::operator== by default. To compare floating-point while respecting an epsilon, an alternative comparison function could be used, for instance
template<typename T, typename = typename std::enable_if<std::is_floating_point<T>::value, T>::type>
-
inline bool is_same(T a, T b, T epsilon = std::numeric_limits<T>::epsilon()) noexcept
-
{
-
return std::abs(a - b) <= epsilon;
-
}
-
-
-NaN values never compare equal to themselves or to other NaN values.
-
Parameters
- - - -
[in]lhsfirst JSON value to consider
[in]rhssecond JSON value to consider
-
-
-
Returns
whether the values lhs and rhs are equal
-

@exceptionsafety No-throw guarantee: this function never throws exceptions.

-

@complexity Linear.

-

@liveexample{The example demonstrates comparing several JSON types.,operator__equal}

-
Since
version 1.0.0
- -
-
- -

◆ operator== [3/6]

- -
-
-
-template<typename ScalarType , typename std::enable_if< std::is_scalar< ScalarType >::value, int >::type = 0>
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool operator== (const_reference lhs,
const ScalarType rhs 
)
-
-friend
-
- -

comparison: equal

-

comparison: equal Compares two JSON values for equality according to the following rules:

    -
  • Two JSON values are equal if (1) they are from the same type and (2) their stored values are the same according to their respective operator==.
  • -
  • Integer and floating-point numbers are automatically converted before comparison. Note than two NaN values are always treated as unequal.
  • -
  • Two JSON null values are equal.
  • -
-
Note
Floating-point inside JSON values numbers are compared with json::number_float_t::operator== which is double::operator== by default. To compare floating-point while respecting an epsilon, an alternative comparison function could be used, for instance
template<typename T, typename = typename std::enable_if<std::is_floating_point<T>::value, T>::type>
-
inline bool is_same(T a, T b, T epsilon = std::numeric_limits<T>::epsilon()) noexcept
-
{
-
return std::abs(a - b) <= epsilon;
-
}
-
-
-NaN values never compare equal to themselves or to other NaN values.
-
Parameters
- - - -
[in]lhsfirst JSON value to consider
[in]rhssecond JSON value to consider
-
-
-
Returns
whether the values lhs and rhs are equal
-

@exceptionsafety No-throw guarantee: this function never throws exceptions.

-

@complexity Linear.

-

@liveexample{The example demonstrates comparing several JSON types.,operator__equal}

-
Since
version 1.0.0
- -
-
- -

◆ operator== [4/6]

- -
-
-
-template<typename ScalarType , typename std::enable_if< std::is_scalar< ScalarType >::value, int >::type = 0>
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool operator== (const_reference lhs,
const ScalarType rhs 
)
-
-friend
-
- -

comparison: equal

-

comparison: equal Compares two JSON values for equality according to the following rules:

    -
  • Two JSON values are equal if (1) they are from the same type and (2) their stored values are the same according to their respective operator==.
  • -
  • Integer and floating-point numbers are automatically converted before comparison. Note than two NaN values are always treated as unequal.
  • -
  • Two JSON null values are equal.
  • -
-
Note
Floating-point inside JSON values numbers are compared with json::number_float_t::operator== which is double::operator== by default. To compare floating-point while respecting an epsilon, an alternative comparison function could be used, for instance
template<typename T, typename = typename std::enable_if<std::is_floating_point<T>::value, T>::type>
-
inline bool is_same(T a, T b, T epsilon = std::numeric_limits<T>::epsilon()) noexcept
-
{
-
return std::abs(a - b) <= epsilon;
-
}
-
-
-NaN values never compare equal to themselves or to other NaN values.
-
Parameters
- - - -
[in]lhsfirst JSON value to consider
[in]rhssecond JSON value to consider
-
-
-
Returns
whether the values lhs and rhs are equal
-

@exceptionsafety No-throw guarantee: this function never throws exceptions.

-

@complexity Linear.

-

@liveexample{The example demonstrates comparing several JSON types.,operator__equal}

-
Since
version 1.0.0
- -
-
- -

◆ operator== [5/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool operator== (const_reference lhs,
const_reference rhs 
)
-
-friend
-
- -

comparison: equal

-

Compares two JSON values for equality according to the following rules:

    -
  • Two JSON values are equal if (1) they are from the same type and (2) their stored values are the same according to their respective operator==.
  • -
  • Integer and floating-point numbers are automatically converted before comparison. Note than two NaN values are always treated as unequal.
  • -
  • Two JSON null values are equal.
  • -
-
Note
Floating-point inside JSON values numbers are compared with json::number_float_t::operator== which is double::operator== by default. To compare floating-point while respecting an epsilon, an alternative comparison function could be used, for instance
template<typename T, typename = typename std::enable_if<std::is_floating_point<T>::value, T>::type>
-
inline bool is_same(T a, T b, T epsilon = std::numeric_limits<T>::epsilon()) noexcept
-
{
-
return std::abs(a - b) <= epsilon;
-
}
-
-
-NaN values never compare equal to themselves or to other NaN values.
-
Parameters
- - - -
[in]lhsfirst JSON value to consider
[in]rhssecond JSON value to consider
-
-
-
Returns
whether the values lhs and rhs are equal
-

@exceptionsafety No-throw guarantee: this function never throws exceptions.

-

@complexity Linear.

-

@liveexample{The example demonstrates comparing several JSON types.,operator__equal}

-
Since
version 1.0.0
- -
-
- -

◆ operator== [6/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool operator== (const_reference lhs,
const_reference rhs 
)
-
-friend
-
- -

comparison: equal

-

Compares two JSON values for equality according to the following rules:

    -
  • Two JSON values are equal if (1) they are from the same type and (2) their stored values are the same according to their respective operator==.
  • -
  • Integer and floating-point numbers are automatically converted before comparison. Note that two NaN values are always treated as unequal.
  • -
  • Two JSON null values are equal.
  • -
-
Note
Floating-point inside JSON values numbers are compared with json::number_float_t::operator== which is double::operator== by default. To compare floating-point while respecting an epsilon, an alternative comparison function could be used, for instance
template<typename T, typename = typename std::enable_if<std::is_floating_point<T>::value, T>::type>
-
inline bool is_same(T a, T b, T epsilon = std::numeric_limits<T>::epsilon()) noexcept
-
{
-
return std::abs(a - b) <= epsilon;
-
}
-
Or you can self-defined operator equal function like this:
bool my_equal(const_reference lhs, const_reference rhs) {
-
const auto lhs_type lhs.type();
-
const auto rhs_type rhs.type();
-
if (lhs_type == rhs_type) {
-
switch(lhs_type)
-
// self_defined case
- -
return std::abs(lhs - rhs) <= std::numeric_limits<float>::epsilon();
-
// other cases remain the same with the original
-
...
-
}
-
...
-
}
-
-
-NaN values never compare equal to themselves or to other NaN values.
-
Parameters
- - - -
[in]lhsfirst JSON value to consider
[in]rhssecond JSON value to consider
-
-
-
Returns
whether the values lhs and rhs are equal
-

@exceptionsafety No-throw guarantee: this function never throws exceptions.

-

@complexity Linear.

-

@liveexample{The example demonstrates comparing several JSON types.,operator__equal}

-
Since
version 1.0.0
- -
-
- -

◆ operator> [1/6]

- -
-
-
-template<typename ScalarType , typename std::enable_if< std::is_scalar< ScalarType >::value, int >::type = 0>
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool operator> (const ScalarType lhs,
const_reference rhs 
)
-
-friend
-
- -

comparison: greater than

-

comparison: greater than Compares whether one JSON value lhs is greater than another JSON value by calculating not (lhs <= rhs).

-
Parameters
- - - -
[in]lhsfirst JSON value to consider
[in]rhssecond JSON value to consider
-
-
-
Returns
whether lhs is greater than to rhs
-

@complexity Linear.

-

@exceptionsafety No-throw guarantee: this function never throws exceptions.

-

@liveexample{The example demonstrates comparing several JSON types.,operator__lessequal}

-
Since
version 1.0.0
- -
-
- -

◆ operator> [2/6]

- -
-
-
-template<typename ScalarType , typename std::enable_if< std::is_scalar< ScalarType >::value, int >::type = 0>
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool operator> (const ScalarType lhs,
const_reference rhs 
)
-
-friend
-
- -

comparison: greater than

-

comparison: greater than Compares whether one JSON value lhs is greater than another JSON value by calculating not (lhs <= rhs).

-
Parameters
- - - -
[in]lhsfirst JSON value to consider
[in]rhssecond JSON value to consider
-
-
-
Returns
whether lhs is greater than to rhs
-

@complexity Linear.

-

@exceptionsafety No-throw guarantee: this function never throws exceptions.

-

@liveexample{The example demonstrates comparing several JSON types.,operator__lessequal}

-
Since
version 1.0.0
- -
-
- -

◆ operator> [3/6]

- -
-
-
-template<typename ScalarType , typename std::enable_if< std::is_scalar< ScalarType >::value, int >::type = 0>
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool operator> (const_reference lhs,
const ScalarType rhs 
)
-
-friend
-
- -

comparison: greater than

-

comparison: greater than Compares whether one JSON value lhs is greater than another JSON value by calculating not (lhs <= rhs).

-
Parameters
- - - -
[in]lhsfirst JSON value to consider
[in]rhssecond JSON value to consider
-
-
-
Returns
whether lhs is greater than to rhs
-

@complexity Linear.

-

@exceptionsafety No-throw guarantee: this function never throws exceptions.

-

@liveexample{The example demonstrates comparing several JSON types.,operator__lessequal}

-
Since
version 1.0.0
- -
-
- -

◆ operator> [4/6]

- -
-
-
-template<typename ScalarType , typename std::enable_if< std::is_scalar< ScalarType >::value, int >::type = 0>
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool operator> (const_reference lhs,
const ScalarType rhs 
)
-
-friend
-
- -

comparison: greater than

-

comparison: greater than Compares whether one JSON value lhs is greater than another JSON value by calculating not (lhs <= rhs).

-
Parameters
- - - -
[in]lhsfirst JSON value to consider
[in]rhssecond JSON value to consider
-
-
-
Returns
whether lhs is greater than to rhs
-

@complexity Linear.

-

@exceptionsafety No-throw guarantee: this function never throws exceptions.

-

@liveexample{The example demonstrates comparing several JSON types.,operator__lessequal}

-
Since
version 1.0.0
- -
-
- -

◆ operator> [5/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool operator> (const_reference lhs,
const_reference rhs 
)
-
-friend
-
- -

comparison: greater than

-

Compares whether one JSON value lhs is greater than another JSON value by calculating not (lhs <= rhs).

-
Parameters
- - - -
[in]lhsfirst JSON value to consider
[in]rhssecond JSON value to consider
-
-
-
Returns
whether lhs is greater than to rhs
-

@complexity Linear.

-

@exceptionsafety No-throw guarantee: this function never throws exceptions.

-

@liveexample{The example demonstrates comparing several JSON types.,operator__lessequal}

-
Since
version 1.0.0
- -
-
- -

◆ operator> [6/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool operator> (const_reference lhs,
const_reference rhs 
)
-
-friend
-
- -

comparison: greater than

-

Compares whether one JSON value lhs is greater than another JSON value by calculating not (lhs <= rhs).

-
Parameters
- - - -
[in]lhsfirst JSON value to consider
[in]rhssecond JSON value to consider
-
-
-
Returns
whether lhs is greater than to rhs
-

@complexity Linear.

-

@exceptionsafety No-throw guarantee: this function never throws exceptions.

-

@liveexample{The example demonstrates comparing several JSON types.,operator__lessequal}

-
Since
version 1.0.0
- -
-
- -

◆ operator>= [1/6]

- -
-
-
-template<typename ScalarType , typename std::enable_if< std::is_scalar< ScalarType >::value, int >::type = 0>
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool operator>= (const ScalarType lhs,
const_reference rhs 
)
-
-friend
-
- -

comparison: greater than or equal

-

comparison: greater than or equal Compares whether one JSON value lhs is greater than or equal to another JSON value by calculating not (lhs < rhs).

-
Parameters
- - - -
[in]lhsfirst JSON value to consider
[in]rhssecond JSON value to consider
-
-
-
Returns
whether lhs is greater than or equal to rhs
-

@complexity Linear.

-

@exceptionsafety No-throw guarantee: this function never throws exceptions.

-

@liveexample{The example demonstrates comparing several JSON types.,operator__greaterequal}

-
Since
version 1.0.0
- -
-
- -

◆ operator>= [2/6]

- -
-
-
-template<typename ScalarType , typename std::enable_if< std::is_scalar< ScalarType >::value, int >::type = 0>
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool operator>= (const ScalarType lhs,
const_reference rhs 
)
-
-friend
-
- -

comparison: greater than or equal

-

comparison: greater than or equal Compares whether one JSON value lhs is greater than or equal to another JSON value by calculating not (lhs < rhs).

-
Parameters
- - - -
[in]lhsfirst JSON value to consider
[in]rhssecond JSON value to consider
-
-
-
Returns
whether lhs is greater than or equal to rhs
-

@complexity Linear.

-

@exceptionsafety No-throw guarantee: this function never throws exceptions.

-

@liveexample{The example demonstrates comparing several JSON types.,operator__greaterequal}

-
Since
version 1.0.0
- -
-
- -

◆ operator>= [3/6]

- -
-
-
-template<typename ScalarType , typename std::enable_if< std::is_scalar< ScalarType >::value, int >::type = 0>
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool operator>= (const_reference lhs,
const ScalarType rhs 
)
-
-friend
-
- -

comparison: greater than or equal

-

comparison: greater than or equal Compares whether one JSON value lhs is greater than or equal to another JSON value by calculating not (lhs < rhs).

-
Parameters
- - - -
[in]lhsfirst JSON value to consider
[in]rhssecond JSON value to consider
-
-
-
Returns
whether lhs is greater than or equal to rhs
-

@complexity Linear.

-

@exceptionsafety No-throw guarantee: this function never throws exceptions.

-

@liveexample{The example demonstrates comparing several JSON types.,operator__greaterequal}

-
Since
version 1.0.0
- -
-
- -

◆ operator>= [4/6]

- -
-
-
-template<typename ScalarType , typename std::enable_if< std::is_scalar< ScalarType >::value, int >::type = 0>
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool operator>= (const_reference lhs,
const ScalarType rhs 
)
-
-friend
-
- -

comparison: greater than or equal

-

comparison: greater than or equal Compares whether one JSON value lhs is greater than or equal to another JSON value by calculating not (lhs < rhs).

-
Parameters
- - - -
[in]lhsfirst JSON value to consider
[in]rhssecond JSON value to consider
-
-
-
Returns
whether lhs is greater than or equal to rhs
-

@complexity Linear.

-

@exceptionsafety No-throw guarantee: this function never throws exceptions.

-

@liveexample{The example demonstrates comparing several JSON types.,operator__greaterequal}

-
Since
version 1.0.0
- -
-
- -

◆ operator>= [5/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool operator>= (const_reference lhs,
const_reference rhs 
)
-
-friend
-
- -

comparison: greater than or equal

-

Compares whether one JSON value lhs is greater than or equal to another JSON value by calculating not (lhs < rhs).

-
Parameters
- - - -
[in]lhsfirst JSON value to consider
[in]rhssecond JSON value to consider
-
-
-
Returns
whether lhs is greater than or equal to rhs
-

@complexity Linear.

-

@exceptionsafety No-throw guarantee: this function never throws exceptions.

-

@liveexample{The example demonstrates comparing several JSON types.,operator__greaterequal}

-
Since
version 1.0.0
- -
-
- -

◆ operator>= [6/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool operator>= (const_reference lhs,
const_reference rhs 
)
-
-friend
-
- -

comparison: greater than or equal

-

Compares whether one JSON value lhs is greater than or equal to another JSON value by calculating not (lhs < rhs).

-
Parameters
- - - -
[in]lhsfirst JSON value to consider
[in]rhssecond JSON value to consider
-
-
-
Returns
whether lhs is greater than or equal to rhs
-

@complexity Linear.

-

@exceptionsafety No-throw guarantee: this function never throws exceptions.

-

@liveexample{The example demonstrates comparing several JSON types.,operator__greaterequal}

-
Since
version 1.0.0
- -
-
- -

◆ operator>> [1/4]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
std::ostream& operator>> (const basic_jsonj,
std::ostream & o 
)
-
-friend
-
- -

serialize to stream

-
Deprecated:
This stream operator is deprecated and will be removed in future 4.0.0 of the library. Please use operator<<(std::ostream&, const basic_json&) instead; that is, replace calls like j >> o; with o << j;.
-
Since
version 1.0.0; deprecated since version 3.0.0
- -
-
- -

◆ operator>> [2/4]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
std::ostream& operator>> (const basic_jsonj,
std::ostream & o 
)
-
-friend
-
- -

serialize to stream

-
Deprecated:
This stream operator is deprecated and will be removed in future 4.0.0 of the library. Please use operator<<(std::ostream&, const basic_json&) instead; that is, replace calls like j >> o; with o << j;.
-
Since
version 1.0.0; deprecated since version 3.0.0
- -
-
- -

◆ operator>> [3/4]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
std::istream& operator>> (std::istream & i,
basic_jsonj 
)
-
-friend
-
- -

deserialize from stream

-

Deserializes an input stream to a JSON value.

-
Parameters
- - - -
[in,out]iinput stream to read a serialized JSON value from
[in,out]jJSON value to write the deserialized input to
-
-
-
Exceptions
- - - - -
parse_error.101in case of an unexpected token
parse_error.102if to_unicode fails or surrogate error
parse_error.103if to_unicode fails
-
-
-

@complexity Linear in the length of the input. The parser is a predictive LL(1) parser.

-
Note
A UTF-8 byte order mark is silently ignored.
-

@liveexample{The example below shows how a JSON value is constructed by reading a serialization from a stream.,operator_deserialize}

-
See also
parse(std::istream&, const parser_callback_t) for a variant with a parser callback function to filter values while parsing
-
Since
version 1.0.0
- -
-
- -

◆ operator>> [4/4]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
std::istream& operator>> (std::istream & i,
basic_jsonj 
)
-
-friend
-
- -

deserialize from stream

-

Deserializes an input stream to a JSON value.

-
Parameters
- - - -
[in,out]iinput stream to read a serialized JSON value from
[in,out]jJSON value to write the deserialized input to
-
-
-
Exceptions
- - - - -
parse_error.101in case of an unexpected token
parse_error.102if to_unicode fails or surrogate error
parse_error.103if to_unicode fails
-
-
-

@complexity Linear in the length of the input. The parser is a predictive LL(1) parser.

-
Note
A UTF-8 byte order mark is silently ignored.
-

@liveexample{The example below shows how a JSON value is constructed by reading a serialization from a stream.,operator_deserialize}

-
See also
parse(std::istream&, const parser_callback_t) for a variant with a parser callback function to filter values while parsing
-
Since
version 1.0.0
- -
-
- -

◆ swap

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void swap (reference left,
reference right 
)
-
-friend
-
- -

exchanges the values

-

Exchanges the contents of the JSON value from left with those of right. Does not invoke any move, copy, or swap operations on individual elements. All iterators and references remain valid. The past-the-end iterator is invalidated. implemented as a friend function callable via ADL.

-
Parameters
- - - -
[in,out]leftJSON value to exchange the contents with
[in,out]rightJSON value to exchange the contents with
-
-
-

@complexity Constant.

-

@liveexample{The example below shows how JSON values can be swapped with swap().,swap__reference}

-
Since
version 1.0.0
- -
-
-
The documentation for this class was generated from the following file: -
-
basic_json(const value_t v)
create an empty value with a given type
Definition: json.hpp:15752
-
constexpr value_t type() const noexcept
return the type of the JSON value (explicit)
Definition: json.hpp:16612
-
void from_json(const BasicJsonType &j, typename std::nullptr_t &n)
Definition: json.hpp:2898
-
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json diff(const basic_json &source, const basic_json &target, const std::string &path="")
creates a diff as a JSON patch
Definition: json.hpp:22406
-
@ number_float
number value (floating-point)
-
detail::out_of_range out_of_range
exception indicating access out of the defined range
Definition: json.hpp:14782
-
reference at(size_type idx)
access specified array element with bounds checking
Definition: json.hpp:17519
-
static iteration_proxy< iterator > iterator_wrapper(reference ref) noexcept
wrapper to access iterator member functions in range-based for
Definition: json.hpp:18982
-
const value_type & const_reference
the type of an element const reference
Definition: json.hpp:14804
-
sort as relro if(CMAKE_GENERATOR STREQUAL "Ninja") if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") set(CMAKE_CXX_FLAGS "$
Definition: CMakeLists.txt:27
-
@ key
the parser read a key of a value in an object
- - - - diff --git a/help/html/classnlohmann_1_1byte__container__with__subtype-members.html b/help/html/classnlohmann_1_1byte__container__with__subtype-members.html deleted file mode 100644 index 2392786..0000000 --- a/help/html/classnlohmann_1_1byte__container__with__subtype-members.html +++ /dev/null @@ -1,95 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
nlohmann::byte_container_with_subtype< BinaryType > Member List
-
-
- -

This is the complete list of members for nlohmann::byte_container_with_subtype< BinaryType >, including all inherited members.

- - - - - - - - - - - - - -
byte_container_with_subtype() noexcept(noexcept(container_type()))nlohmann::byte_container_with_subtype< BinaryType >inline
byte_container_with_subtype(const container_type &b) noexcept(noexcept(container_type(b)))nlohmann::byte_container_with_subtype< BinaryType >inline
byte_container_with_subtype(container_type &&b) noexcept(noexcept(container_type(std::move(b))))nlohmann::byte_container_with_subtype< BinaryType >inline
byte_container_with_subtype(const container_type &b, std::uint8_t subtype) noexcept(noexcept(container_type(b)))nlohmann::byte_container_with_subtype< BinaryType >inline
byte_container_with_subtype(container_type &&b, std::uint8_t subtype) noexcept(noexcept(container_type(std::move(b))))nlohmann::byte_container_with_subtype< BinaryType >inline
clear_subtype() noexceptnlohmann::byte_container_with_subtype< BinaryType >inline
container_type typedefnlohmann::byte_container_with_subtype< BinaryType >
has_subtype() const noexceptnlohmann::byte_container_with_subtype< BinaryType >inline
operator!=(const byte_container_with_subtype &rhs) constnlohmann::byte_container_with_subtype< BinaryType >inline
operator==(const byte_container_with_subtype &rhs) constnlohmann::byte_container_with_subtype< BinaryType >inline
set_subtype(std::uint8_t subtype) noexceptnlohmann::byte_container_with_subtype< BinaryType >inline
subtype() const noexceptnlohmann::byte_container_with_subtype< BinaryType >inline
- - - - diff --git a/help/html/classnlohmann_1_1byte__container__with__subtype.html b/help/html/classnlohmann_1_1byte__container__with__subtype.html deleted file mode 100644 index 9f0373b..0000000 --- a/help/html/classnlohmann_1_1byte__container__with__subtype.html +++ /dev/null @@ -1,549 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::byte_container_with_subtype< BinaryType > Class Template Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
nlohmann::byte_container_with_subtype< BinaryType > Class Template Reference
-
-
- -

an internal type for a backed binary type - More...

- -

#include <json.hpp>

-
-Inheritance diagram for nlohmann::byte_container_with_subtype< BinaryType >:
-
-
Inheritance graph
- - - - -
[legend]
-
-Collaboration diagram for nlohmann::byte_container_with_subtype< BinaryType >:
-
-
Collaboration graph
- - - - -
[legend]
- - - - - -

-Public Types

using container_type = BinaryType
 the type of the underlying container More...
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 byte_container_with_subtype () noexcept(noexcept(container_type()))
 
 byte_container_with_subtype (const container_type &b) noexcept(noexcept(container_type(b)))
 
 byte_container_with_subtype (container_type &&b) noexcept(noexcept(container_type(std::move(b))))
 
 byte_container_with_subtype (const container_type &b, std::uint8_t subtype) noexcept(noexcept(container_type(b)))
 
 byte_container_with_subtype (container_type &&b, std::uint8_t subtype) noexcept(noexcept(container_type(std::move(b))))
 
bool operator== (const byte_container_with_subtype &rhs) const
 
bool operator!= (const byte_container_with_subtype &rhs) const
 
void set_subtype (std::uint8_t subtype) noexcept
 sets the binary subtype More...
 
constexpr std::uint8_t subtype () const noexcept
 return the binary subtype More...
 
constexpr bool has_subtype () const noexcept
 return whether the value has a subtype More...
 
void clear_subtype () noexcept
 clears the binary subtype More...
 
-

Detailed Description

-

template<typename BinaryType>
-class nlohmann::byte_container_with_subtype< BinaryType >

- -

an internal type for a backed binary type

-

This type extends the template parameter BinaryType provided to basic_json with a subtype used by BSON and MessagePack. This type exists so that the user does not have to specify a type themselves with a specific naming scheme in order to override the binary type.

-
Template Parameters
- - -
BinaryTypecontainer to store bytes (std::vector<std::uint8_t> by default)
-
-
-
Since
version 3.8.0
-

Member Typedef Documentation

- -

◆ container_type

- -
-
-
-template<typename BinaryType >
- - - - -
using nlohmann::byte_container_with_subtype< BinaryType >::container_type = BinaryType
-
- -

the type of the underlying container

- -
-
-

Constructor & Destructor Documentation

- -

◆ byte_container_with_subtype() [1/5]

- -
-
-
-template<typename BinaryType >
- - - - - -
- - - - - - - -
nlohmann::byte_container_with_subtype< BinaryType >::byte_container_with_subtype ()
-
-inlinenoexcept
-
- -
-
- -

◆ byte_container_with_subtype() [2/5]

- -
-
-
-template<typename BinaryType >
- - - - - -
- - - - - - - - -
nlohmann::byte_container_with_subtype< BinaryType >::byte_container_with_subtype (const container_typeb)
-
-inlinenoexcept
-
- -
-
- -

◆ byte_container_with_subtype() [3/5]

- -
-
-
-template<typename BinaryType >
- - - - - -
- - - - - - - - -
nlohmann::byte_container_with_subtype< BinaryType >::byte_container_with_subtype (container_type && b)
-
-inlinenoexcept
-
- -
-
- -

◆ byte_container_with_subtype() [4/5]

- -
-
-
-template<typename BinaryType >
- - - - - -
- - - - - - - - - - - - - - - - - - -
nlohmann::byte_container_with_subtype< BinaryType >::byte_container_with_subtype (const container_typeb,
std::uint8_t subtype 
)
-
-inlinenoexcept
-
- -
-
- -

◆ byte_container_with_subtype() [5/5]

- -
-
-
-template<typename BinaryType >
- - - - - -
- - - - - - - - - - - - - - - - - - -
nlohmann::byte_container_with_subtype< BinaryType >::byte_container_with_subtype (container_type && b,
std::uint8_t subtype 
)
-
-inlinenoexcept
-
- -
-
-

Member Function Documentation

- -

◆ clear_subtype()

- -
-
-
-template<typename BinaryType >
- - - - - -
- - - - - - - -
void nlohmann::byte_container_with_subtype< BinaryType >::clear_subtype ()
-
-inlinenoexcept
-
- -

clears the binary subtype

-

Clears the binary subtype and flags the value as not having a subtype, which has implications for serialization; for instance MessagePack will prefer the bin family over the ext family.

-

@complexity Constant.

-

@exceptionsafety No-throw guarantee: this member function never throws exceptions.

-
See also
subtype() – return the binary subtype
-
-set_subtype() – sets the binary subtype
-
-has_subtype() – returns whether or not the binary value has a subtype
-
Since
version 3.8.0
- -
-
- -

◆ has_subtype()

- -
-
-
-template<typename BinaryType >
- - - - - -
- - - - - - - -
constexpr bool nlohmann::byte_container_with_subtype< BinaryType >::has_subtype () const
-
-inlineconstexprnoexcept
-
- -

return whether the value has a subtype

-
Returns
whether the value has a subtype
-

@complexity Constant.

-

@exceptionsafety No-throw guarantee: this member function never throws exceptions.

-
See also
subtype() – return the binary subtype
-
-set_subtype() – sets the binary subtype
-
-clear_subtype() – clears the binary subtype
-
Since
version 3.8.0
- -
-
- -

◆ operator!=()

- -
-
-
-template<typename BinaryType >
- - - - - -
- - - - - - - - -
bool nlohmann::byte_container_with_subtype< BinaryType >::operator!= (const byte_container_with_subtype< BinaryType > & rhs) const
-
-inline
-
- -
-
- -

◆ operator==()

- -
-
-
-template<typename BinaryType >
- - - - - -
- - - - - - - - -
bool nlohmann::byte_container_with_subtype< BinaryType >::operator== (const byte_container_with_subtype< BinaryType > & rhs) const
-
-inline
-
- -
-
- -

◆ set_subtype()

- -
-
-
-template<typename BinaryType >
- - - - - -
- - - - - - - - -
void nlohmann::byte_container_with_subtype< BinaryType >::set_subtype (std::uint8_t subtype)
-
-inlinenoexcept
-
- -

sets the binary subtype

-

Sets the binary subtype of the value, also flags a binary JSON value as having a subtype, which has implications for serialization.

-

@complexity Constant.

-

@exceptionsafety No-throw guarantee: this member function never throws exceptions.

-
See also
subtype() – return the binary subtype
-
-clear_subtype() – clears the binary subtype
-
-has_subtype() – returns whether or not the binary value has a subtype
-
Since
version 3.8.0
- -
-
- -

◆ subtype()

- -
-
-
-template<typename BinaryType >
- - - - - -
- - - - - - - -
constexpr std::uint8_t nlohmann::byte_container_with_subtype< BinaryType >::subtype () const
-
-inlineconstexprnoexcept
-
- -

return the binary subtype

-

Returns the numerical subtype of the value if it has a subtype. If it does not have a subtype, this function will return size_t(-1) as a sentinel value.

-
Returns
the numerical subtype of the binary value
-

@complexity Constant.

-

@exceptionsafety No-throw guarantee: this member function never throws exceptions.

-
See also
set_subtype() – sets the binary subtype
-
-clear_subtype() – clears the binary subtype
-
-has_subtype() – returns whether or not the binary value has a subtype
-
Since
version 3.8.0
- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/help/html/classnlohmann_1_1byte__container__with__subtype__coll__graph.map b/help/html/classnlohmann_1_1byte__container__with__subtype__coll__graph.map deleted file mode 100644 index 33b8af9..0000000 --- a/help/html/classnlohmann_1_1byte__container__with__subtype__coll__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/help/html/classnlohmann_1_1byte__container__with__subtype__coll__graph.md5 b/help/html/classnlohmann_1_1byte__container__with__subtype__coll__graph.md5 deleted file mode 100644 index ff63b35..0000000 --- a/help/html/classnlohmann_1_1byte__container__with__subtype__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -883c357402e00558521a8e7524c74566 \ No newline at end of file diff --git a/help/html/classnlohmann_1_1byte__container__with__subtype__coll__graph.png b/help/html/classnlohmann_1_1byte__container__with__subtype__coll__graph.png deleted file mode 100644 index 9c906f7..0000000 Binary files a/help/html/classnlohmann_1_1byte__container__with__subtype__coll__graph.png and /dev/null differ diff --git a/help/html/classnlohmann_1_1byte__container__with__subtype__inherit__graph.map b/help/html/classnlohmann_1_1byte__container__with__subtype__inherit__graph.map deleted file mode 100644 index 33b8af9..0000000 --- a/help/html/classnlohmann_1_1byte__container__with__subtype__inherit__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/help/html/classnlohmann_1_1byte__container__with__subtype__inherit__graph.md5 b/help/html/classnlohmann_1_1byte__container__with__subtype__inherit__graph.md5 deleted file mode 100644 index ff63b35..0000000 --- a/help/html/classnlohmann_1_1byte__container__with__subtype__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -883c357402e00558521a8e7524c74566 \ No newline at end of file diff --git a/help/html/classnlohmann_1_1byte__container__with__subtype__inherit__graph.png b/help/html/classnlohmann_1_1byte__container__with__subtype__inherit__graph.png deleted file mode 100644 index 9c906f7..0000000 Binary files a/help/html/classnlohmann_1_1byte__container__with__subtype__inherit__graph.png and /dev/null differ diff --git a/help/html/classnlohmann_1_1detail_1_1binary__reader-members.html b/help/html/classnlohmann_1_1detail_1_1binary__reader-members.html deleted file mode 100644 index 531c8cb..0000000 --- a/help/html/classnlohmann_1_1detail_1_1binary__reader-members.html +++ /dev/null @@ -1,98 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
nlohmann::detail::binary_reader< BasicJsonType, SAX > Member List
-
-
- -

This is the complete list of members for nlohmann::detail::binary_reader< BasicJsonType, SAX >, including all inherited members.

- - - - - - - - - - - - - - - - -
binary_reader(input_adapter_t adapter)nlohmann::detail::binary_reader< BasicJsonType, SAX >inlineexplicit
binary_reader(const binary_reader &)=deletenlohmann::detail::binary_reader< BasicJsonType, SAX >
binary_reader(binary_reader &&)=defaultnlohmann::detail::binary_reader< BasicJsonType, SAX >
binary_reader(InputAdapterType &&adapter)nlohmann::detail::binary_reader< BasicJsonType, SAX >inlineexplicit
binary_reader(const binary_reader &)=deletenlohmann::detail::binary_reader< BasicJsonType, SAX >
binary_reader(binary_reader &&)=defaultnlohmann::detail::binary_reader< BasicJsonType, SAX >
little_endianess(int num=1) noexceptnlohmann::detail::binary_reader< BasicJsonType, SAX >inlinestatic
operator=(const binary_reader &)=deletenlohmann::detail::binary_reader< BasicJsonType, SAX >
operator=(binary_reader &&)=defaultnlohmann::detail::binary_reader< BasicJsonType, SAX >
operator=(const binary_reader &)=deletenlohmann::detail::binary_reader< BasicJsonType, SAX >
operator=(binary_reader &&)=defaultnlohmann::detail::binary_reader< BasicJsonType, SAX >
sax_parse(const input_format_t format, json_sax_t *sax_, const bool strict=true)nlohmann::detail::binary_reader< BasicJsonType, SAX >inline
sax_parse(const input_format_t format, json_sax_t *sax_, const bool strict=true, const cbor_tag_handler_t tag_handler=cbor_tag_handler_t::error)nlohmann::detail::binary_reader< BasicJsonType, SAX >inline
~binary_reader()=defaultnlohmann::detail::binary_reader< BasicJsonType, SAX >
~binary_reader()=defaultnlohmann::detail::binary_reader< BasicJsonType, SAX >
- - - - diff --git a/help/html/classnlohmann_1_1detail_1_1binary__reader.html b/help/html/classnlohmann_1_1detail_1_1binary__reader.html deleted file mode 100644 index 7635a1a..0000000 --- a/help/html/classnlohmann_1_1detail_1_1binary__reader.html +++ /dev/null @@ -1,634 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::binary_reader< BasicJsonType, SAX > Class Template Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
nlohmann::detail::binary_reader< BasicJsonType, SAX > Class Template Reference
-
-
- -

deserialization of CBOR, MessagePack, and UBJSON values - More...

- -

#include <json.hpp>

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 binary_reader (input_adapter_t adapter)
 create a binary reader More...
 
 binary_reader (const binary_reader &)=delete
 
 binary_reader (binary_reader &&)=default
 
binary_readeroperator= (const binary_reader &)=delete
 
binary_readeroperator= (binary_reader &&)=default
 
 ~binary_reader ()=default
 
bool sax_parse (const input_format_t format, json_sax_t *sax_, const bool strict=true)
 
 binary_reader (InputAdapterType &&adapter)
 create a binary reader More...
 
 binary_reader (const binary_reader &)=delete
 
 binary_reader (binary_reader &&)=default
 
binary_readeroperator= (const binary_reader &)=delete
 
binary_readeroperator= (binary_reader &&)=default
 
 ~binary_reader ()=default
 
bool sax_parse (const input_format_t format, json_sax_t *sax_, const bool strict=true, const cbor_tag_handler_t tag_handler=cbor_tag_handler_t::error)
 
- - - - -

-Static Public Member Functions

static constexpr bool little_endianess (int num=1) noexcept
 determine system byte order More...
 
-

Detailed Description

-

template<typename BasicJsonType, typename SAX = json_sax_dom_parser<BasicJsonType>>
-class nlohmann::detail::binary_reader< BasicJsonType, SAX >

- -

deserialization of CBOR, MessagePack, and UBJSON values

-

Constructor & Destructor Documentation

- -

◆ binary_reader() [1/6]

- -
-
-
-template<typename BasicJsonType , typename SAX = json_sax_dom_parser<BasicJsonType>>
- - - - - -
- - - - - - - - -
nlohmann::detail::binary_reader< BasicJsonType, SAX >::binary_reader (input_adapter_t adapter)
-
-inlineexplicit
-
- -

create a binary reader

-
Parameters
- - -
[in]adapterinput adapter to read from
-
-
- -
-
- -

◆ binary_reader() [2/6]

- -
-
-
-template<typename BasicJsonType , typename SAX = json_sax_dom_parser<BasicJsonType>>
- - - - - -
- - - - - - - - -
nlohmann::detail::binary_reader< BasicJsonType, SAX >::binary_reader (const binary_reader< BasicJsonType, SAX > & )
-
-delete
-
- -
-
- -

◆ binary_reader() [3/6]

- -
-
-
-template<typename BasicJsonType , typename SAX = json_sax_dom_parser<BasicJsonType>>
- - - - - -
- - - - - - - - -
nlohmann::detail::binary_reader< BasicJsonType, SAX >::binary_reader (binary_reader< BasicJsonType, SAX > && )
-
-default
-
- -
-
- -

◆ ~binary_reader() [1/2]

- -
-
-
-template<typename BasicJsonType , typename SAX = json_sax_dom_parser<BasicJsonType>>
- - - - - -
- - - - - - - -
nlohmann::detail::binary_reader< BasicJsonType, SAX >::~binary_reader ()
-
-default
-
- -
-
- -

◆ binary_reader() [4/6]

- -
-
-
-template<typename BasicJsonType , typename SAX = json_sax_dom_parser<BasicJsonType>>
- - - - - -
- - - - - - - - -
nlohmann::detail::binary_reader< BasicJsonType, SAX >::binary_reader (InputAdapterType && adapter)
-
-inlineexplicit
-
- -

create a binary reader

-
Parameters
- - -
[in]adapterinput adapter to read from
-
-
- -
-
- -

◆ binary_reader() [5/6]

- -
-
-
-template<typename BasicJsonType , typename SAX = json_sax_dom_parser<BasicJsonType>>
- - - - - -
- - - - - - - - -
nlohmann::detail::binary_reader< BasicJsonType, SAX >::binary_reader (const binary_reader< BasicJsonType, SAX > & )
-
-delete
-
- -
-
- -

◆ binary_reader() [6/6]

- -
-
-
-template<typename BasicJsonType , typename SAX = json_sax_dom_parser<BasicJsonType>>
- - - - - -
- - - - - - - - -
nlohmann::detail::binary_reader< BasicJsonType, SAX >::binary_reader (binary_reader< BasicJsonType, SAX > && )
-
-default
-
- -
-
- -

◆ ~binary_reader() [2/2]

- -
-
-
-template<typename BasicJsonType , typename SAX = json_sax_dom_parser<BasicJsonType>>
- - - - - -
- - - - - - - -
nlohmann::detail::binary_reader< BasicJsonType, SAX >::~binary_reader ()
-
-default
-
- -
-
-

Member Function Documentation

- -

◆ little_endianess()

- -
-
-
-template<typename BasicJsonType , typename SAX = json_sax_dom_parser<BasicJsonType>>
- - - - - -
- - - - - - - - -
static constexpr bool nlohmann::detail::binary_reader< BasicJsonType, SAX >::little_endianess (int num = 1)
-
-inlinestaticconstexprnoexcept
-
- -

determine system byte order

-
Returns
true if and only if system's byte order is little endian
-
Note
from http://stackoverflow.com/a/1001328/266378
- -
-
- -

◆ operator=() [1/4]

- -
-
-
-template<typename BasicJsonType , typename SAX = json_sax_dom_parser<BasicJsonType>>
- - - - - -
- - - - - - - - -
binary_reader& nlohmann::detail::binary_reader< BasicJsonType, SAX >::operator= (binary_reader< BasicJsonType, SAX > && )
-
-default
-
- -
-
- -

◆ operator=() [2/4]

- -
-
-
-template<typename BasicJsonType , typename SAX = json_sax_dom_parser<BasicJsonType>>
- - - - - -
- - - - - - - - -
binary_reader& nlohmann::detail::binary_reader< BasicJsonType, SAX >::operator= (binary_reader< BasicJsonType, SAX > && )
-
-default
-
- -
-
- -

◆ operator=() [3/4]

- -
-
-
-template<typename BasicJsonType , typename SAX = json_sax_dom_parser<BasicJsonType>>
- - - - - -
- - - - - - - - -
binary_reader& nlohmann::detail::binary_reader< BasicJsonType, SAX >::operator= (const binary_reader< BasicJsonType, SAX > & )
-
-delete
-
- -
-
- -

◆ operator=() [4/4]

- -
-
-
-template<typename BasicJsonType , typename SAX = json_sax_dom_parser<BasicJsonType>>
- - - - - -
- - - - - - - - -
binary_reader& nlohmann::detail::binary_reader< BasicJsonType, SAX >::operator= (const binary_reader< BasicJsonType, SAX > & )
-
-delete
-
- -
-
- -

◆ sax_parse() [1/2]

- -
-
-
-template<typename BasicJsonType , typename SAX = json_sax_dom_parser<BasicJsonType>>
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
bool nlohmann::detail::binary_reader< BasicJsonType, SAX >::sax_parse (const input_format_t format,
json_sax_t * sax_,
const bool strict = true 
)
-
-inline
-
-
Parameters
- - - - -
[in]formatthe binary format to parse
[in]sax_a SAX event processor
[in]strictwhether to expect the input to be consumed completed
-
-
-
Returns
- -
-
- -

◆ sax_parse() [2/2]

- -
-
-
-template<typename BasicJsonType , typename SAX = json_sax_dom_parser<BasicJsonType>>
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
bool nlohmann::detail::binary_reader< BasicJsonType, SAX >::sax_parse (const input_format_t format,
json_sax_t * sax_,
const bool strict = true,
const cbor_tag_handler_t tag_handler = cbor_tag_handler_t::error 
)
-
-inline
-
-
Parameters
- - - - - -
[in]formatthe binary format to parse
[in]sax_a SAX event processor
[in]strictwhether to expect the input to be consumed completed
[in]tag_handlerhow to treat CBOR tags
-
-
-
Returns
- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/help/html/classnlohmann_1_1detail_1_1binary__writer-members.html b/help/html/classnlohmann_1_1detail_1_1binary__writer-members.html deleted file mode 100644 index fef038e..0000000 --- a/help/html/classnlohmann_1_1detail_1_1binary__writer-members.html +++ /dev/null @@ -1,101 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
nlohmann::detail::binary_writer< BasicJsonType, CharType > Member List
-
-
- -

This is the complete list of members for nlohmann::detail::binary_writer< BasicJsonType, CharType >, including all inherited members.

- - - - - - - - - - - - - - - - - - - -
binary_writer(output_adapter_t< CharType > adapter)nlohmann::detail::binary_writer< BasicJsonType, CharType >inlineexplicit
binary_writer(output_adapter_t< CharType > adapter)nlohmann::detail::binary_writer< BasicJsonType, CharType >inlineexplicit
to_char_type(std::uint8_t x) noexceptnlohmann::detail::binary_writer< BasicJsonType, CharType >inlinestatic
to_char_type(std::uint8_t x) noexceptnlohmann::detail::binary_writer< BasicJsonType, CharType >inlinestatic
to_char_type(std::uint8_t x) noexceptnlohmann::detail::binary_writer< BasicJsonType, CharType >inlinestatic
to_char_type(InputCharType x) noexceptnlohmann::detail::binary_writer< BasicJsonType, CharType >inlinestatic
to_char_type(std::uint8_t x) noexceptnlohmann::detail::binary_writer< BasicJsonType, CharType >inlinestatic
to_char_type(std::uint8_t x) noexceptnlohmann::detail::binary_writer< BasicJsonType, CharType >inlinestatic
to_char_type(std::uint8_t x) noexceptnlohmann::detail::binary_writer< BasicJsonType, CharType >inlinestatic
to_char_type(InputCharType x) noexceptnlohmann::detail::binary_writer< BasicJsonType, CharType >inlinestatic
write_bson(const BasicJsonType &j)nlohmann::detail::binary_writer< BasicJsonType, CharType >inline
write_bson(const BasicJsonType &j)nlohmann::detail::binary_writer< BasicJsonType, CharType >inline
write_cbor(const BasicJsonType &j)nlohmann::detail::binary_writer< BasicJsonType, CharType >inline
write_cbor(const BasicJsonType &j)nlohmann::detail::binary_writer< BasicJsonType, CharType >inline
write_msgpack(const BasicJsonType &j)nlohmann::detail::binary_writer< BasicJsonType, CharType >inline
write_msgpack(const BasicJsonType &j)nlohmann::detail::binary_writer< BasicJsonType, CharType >inline
write_ubjson(const BasicJsonType &j, const bool use_count, const bool use_type, const bool add_prefix=true)nlohmann::detail::binary_writer< BasicJsonType, CharType >inline
write_ubjson(const BasicJsonType &j, const bool use_count, const bool use_type, const bool add_prefix=true)nlohmann::detail::binary_writer< BasicJsonType, CharType >inline
- - - - diff --git a/help/html/classnlohmann_1_1detail_1_1binary__writer.html b/help/html/classnlohmann_1_1detail_1_1binary__writer.html deleted file mode 100644 index d81b560..0000000 --- a/help/html/classnlohmann_1_1detail_1_1binary__writer.html +++ /dev/null @@ -1,788 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::binary_writer< BasicJsonType, CharType > Class Template Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
nlohmann::detail::binary_writer< BasicJsonType, CharType > Class Template Reference
-
-
- -

serialization to CBOR and MessagePack values - More...

- -

#include <json.hpp>

- - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 binary_writer (output_adapter_t< CharType > adapter)
 create a binary writer More...
 
void write_bson (const BasicJsonType &j)
 
void write_cbor (const BasicJsonType &j)
 
void write_msgpack (const BasicJsonType &j)
 
void write_ubjson (const BasicJsonType &j, const bool use_count, const bool use_type, const bool add_prefix=true)
 
 binary_writer (output_adapter_t< CharType > adapter)
 create a binary writer More...
 
void write_bson (const BasicJsonType &j)
 
void write_cbor (const BasicJsonType &j)
 
void write_msgpack (const BasicJsonType &j)
 
void write_ubjson (const BasicJsonType &j, const bool use_count, const bool use_type, const bool add_prefix=true)
 
- - - - - - - - - - - - - - - - - - - - - - - - - -

-Static Public Member Functions

template<typename C = CharType, enable_if_t< std::is_signed< C >::value and std::is_signed< char >::value > * = nullptr>
static constexpr CharType to_char_type (std::uint8_t x) noexcept
 
template<typename C = CharType, enable_if_t< std::is_signed< C >::value and std::is_unsigned< char >::value > * = nullptr>
static CharType to_char_type (std::uint8_t x) noexcept
 
template<typename C = CharType, enable_if_t< std::is_unsigned< C >::value > * = nullptr>
static constexpr CharType to_char_type (std::uint8_t x) noexcept
 
template<typename InputCharType , typename C = CharType, enable_if_t< std::is_signed< C >::value and std::is_signed< char >::value and std::is_same< char, typename std::remove_cv< InputCharType >::type >::value > * = nullptr>
static constexpr CharType to_char_type (InputCharType x) noexcept
 
template<typename C = CharType, enable_if_t< std::is_signed< C >::value &&std::is_signed< char >::value > * = nullptr>
static constexpr CharType to_char_type (std::uint8_t x) noexcept
 
template<typename C = CharType, enable_if_t< std::is_signed< C >::value &&std::is_unsigned< char >::value > * = nullptr>
static CharType to_char_type (std::uint8_t x) noexcept
 
template<typename C = CharType, enable_if_t< std::is_unsigned< C >::value > * = nullptr>
static constexpr CharType to_char_type (std::uint8_t x) noexcept
 
template<typename InputCharType , typename C = CharType, enable_if_t< std::is_signed< C >::value &&std::is_signed< char >::value &&std::is_same< char, typename std::remove_cv< InputCharType >::type >::value > * = nullptr>
static constexpr CharType to_char_type (InputCharType x) noexcept
 
-

Detailed Description

-

template<typename BasicJsonType, typename CharType>
-class nlohmann::detail::binary_writer< BasicJsonType, CharType >

- -

serialization to CBOR and MessagePack values

-

Constructor & Destructor Documentation

- -

◆ binary_writer() [1/2]

- -
-
-
-template<typename BasicJsonType , typename CharType >
- - - - - -
- - - - - - - - -
nlohmann::detail::binary_writer< BasicJsonType, CharType >::binary_writer (output_adapter_t< CharType > adapter)
-
-inlineexplicit
-
- -

create a binary writer

-
Parameters
- - -
[in]adapteroutput adapter to write to
-
-
- -
-
- -

◆ binary_writer() [2/2]

- -
-
-
-template<typename BasicJsonType , typename CharType >
- - - - - -
- - - - - - - - -
nlohmann::detail::binary_writer< BasicJsonType, CharType >::binary_writer (output_adapter_t< CharType > adapter)
-
-inlineexplicit
-
- -

create a binary writer

-
Parameters
- - -
[in]adapteroutput adapter to write to
-
-
- -
-
-

Member Function Documentation

- -

◆ to_char_type() [1/8]

- -
-
-
-template<typename BasicJsonType , typename CharType >
-
-template<typename InputCharType , typename C = CharType, enable_if_t< std::is_signed< C >::value and std::is_signed< char >::value and std::is_same< char, typename std::remove_cv< InputCharType >::type >::value > * = nullptr>
- - - - - -
- - - - - - - - -
static constexpr CharType nlohmann::detail::binary_writer< BasicJsonType, CharType >::to_char_type (InputCharType x)
-
-inlinestaticconstexprnoexcept
-
- -
-
- -

◆ to_char_type() [2/8]

- -
-
-
-template<typename BasicJsonType , typename CharType >
-
-template<typename InputCharType , typename C = CharType, enable_if_t< std::is_signed< C >::value &&std::is_signed< char >::value &&std::is_same< char, typename std::remove_cv< InputCharType >::type >::value > * = nullptr>
- - - - - -
- - - - - - - - -
static constexpr CharType nlohmann::detail::binary_writer< BasicJsonType, CharType >::to_char_type (InputCharType x)
-
-inlinestaticconstexprnoexcept
-
- -
-
- -

◆ to_char_type() [3/8]

- -
-
-
-template<typename BasicJsonType , typename CharType >
-
-template<typename C = CharType, enable_if_t< std::is_signed< C >::value and std::is_signed< char >::value > * = nullptr>
- - - - - -
- - - - - - - - -
static constexpr CharType nlohmann::detail::binary_writer< BasicJsonType, CharType >::to_char_type (std::uint8_t x)
-
-inlinestaticconstexprnoexcept
-
- -
-
- -

◆ to_char_type() [4/8]

- -
-
-
-template<typename BasicJsonType , typename CharType >
-
-template<typename C = CharType, enable_if_t< std::is_signed< C >::value and std::is_unsigned< char >::value > * = nullptr>
- - - - - -
- - - - - - - - -
static CharType nlohmann::detail::binary_writer< BasicJsonType, CharType >::to_char_type (std::uint8_t x)
-
-inlinestaticnoexcept
-
- -
-
- -

◆ to_char_type() [5/8]

- -
-
-
-template<typename BasicJsonType , typename CharType >
-
-template<typename C = CharType, enable_if_t< std::is_unsigned< C >::value > * = nullptr>
- - - - - -
- - - - - - - - -
static constexpr CharType nlohmann::detail::binary_writer< BasicJsonType, CharType >::to_char_type (std::uint8_t x)
-
-inlinestaticconstexprnoexcept
-
- -
-
- -

◆ to_char_type() [6/8]

- -
-
-
-template<typename BasicJsonType , typename CharType >
-
-template<typename C = CharType, enable_if_t< std::is_signed< C >::value &&std::is_signed< char >::value > * = nullptr>
- - - - - -
- - - - - - - - -
static constexpr CharType nlohmann::detail::binary_writer< BasicJsonType, CharType >::to_char_type (std::uint8_t x)
-
-inlinestaticconstexprnoexcept
-
- -
-
- -

◆ to_char_type() [7/8]

- -
-
-
-template<typename BasicJsonType , typename CharType >
-
-template<typename C = CharType, enable_if_t< std::is_signed< C >::value &&std::is_unsigned< char >::value > * = nullptr>
- - - - - -
- - - - - - - - -
static CharType nlohmann::detail::binary_writer< BasicJsonType, CharType >::to_char_type (std::uint8_t x)
-
-inlinestaticnoexcept
-
- -
-
- -

◆ to_char_type() [8/8]

- -
-
-
-template<typename BasicJsonType , typename CharType >
-
-template<typename C = CharType, enable_if_t< std::is_unsigned< C >::value > * = nullptr>
- - - - - -
- - - - - - - - -
static constexpr CharType nlohmann::detail::binary_writer< BasicJsonType, CharType >::to_char_type (std::uint8_t x)
-
-inlinestaticconstexprnoexcept
-
- -
-
- -

◆ write_bson() [1/2]

- -
-
-
-template<typename BasicJsonType , typename CharType >
- - - - - -
- - - - - - - - -
void nlohmann::detail::binary_writer< BasicJsonType, CharType >::write_bson (const BasicJsonType & j)
-
-inline
-
-
Parameters
- - -
[in]jJSON value to serialize
-
-
-
Precondition
j.type() == value_t::object
- -
-
- -

◆ write_bson() [2/2]

- -
-
-
-template<typename BasicJsonType , typename CharType >
- - - - - -
- - - - - - - - -
void nlohmann::detail::binary_writer< BasicJsonType, CharType >::write_bson (const BasicJsonType & j)
-
-inline
-
-
Parameters
- - -
[in]jJSON value to serialize
-
-
-
Precondition
j.type() == value_t::object
- -
-
- -

◆ write_cbor() [1/2]

- -
-
-
-template<typename BasicJsonType , typename CharType >
- - - - - -
- - - - - - - - -
void nlohmann::detail::binary_writer< BasicJsonType, CharType >::write_cbor (const BasicJsonType & j)
-
-inline
-
-
Parameters
- - -
[in]jJSON value to serialize
-
-
- -
-
- -

◆ write_cbor() [2/2]

- -
-
-
-template<typename BasicJsonType , typename CharType >
- - - - - -
- - - - - - - - -
void nlohmann::detail::binary_writer< BasicJsonType, CharType >::write_cbor (const BasicJsonType & j)
-
-inline
-
-
Parameters
- - -
[in]jJSON value to serialize
-
-
- -
-
- -

◆ write_msgpack() [1/2]

- -
-
-
-template<typename BasicJsonType , typename CharType >
- - - - - -
- - - - - - - - -
void nlohmann::detail::binary_writer< BasicJsonType, CharType >::write_msgpack (const BasicJsonType & j)
-
-inline
-
-
Parameters
- - -
[in]jJSON value to serialize
-
-
- -
-
- -

◆ write_msgpack() [2/2]

- -
-
-
-template<typename BasicJsonType , typename CharType >
- - - - - -
- - - - - - - - -
void nlohmann::detail::binary_writer< BasicJsonType, CharType >::write_msgpack (const BasicJsonType & j)
-
-inline
-
-
Parameters
- - -
[in]jJSON value to serialize
-
-
- -
-
- -

◆ write_ubjson() [1/2]

- -
-
-
-template<typename BasicJsonType , typename CharType >
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void nlohmann::detail::binary_writer< BasicJsonType, CharType >::write_ubjson (const BasicJsonType & j,
const bool use_count,
const bool use_type,
const bool add_prefix = true 
)
-
-inline
-
-
Parameters
- - - - - -
[in]jJSON value to serialize
[in]use_countwhether to use '#' prefixes (optimized format)
[in]use_typewhether to use '$' prefixes (optimized format)
[in]add_prefixwhether prefixes need to be used for this value
-
-
- -
-
- -

◆ write_ubjson() [2/2]

- -
-
-
-template<typename BasicJsonType , typename CharType >
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void nlohmann::detail::binary_writer< BasicJsonType, CharType >::write_ubjson (const BasicJsonType & j,
const bool use_count,
const bool use_type,
const bool add_prefix = true 
)
-
-inline
-
-
Parameters
- - - - - -
[in]jJSON value to serialize
[in]use_countwhether to use '#' prefixes (optimized format)
[in]use_typewhether to use '$' prefixes (optimized format)
[in]add_prefixwhether prefixes need to be used for this value
-
-
- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/help/html/classnlohmann_1_1detail_1_1exception-members.html b/help/html/classnlohmann_1_1detail_1_1exception-members.html deleted file mode 100644 index 03f4fcf..0000000 --- a/help/html/classnlohmann_1_1detail_1_1exception-members.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
nlohmann::detail::exception Member List
-
-
- -

This is the complete list of members for nlohmann::detail::exception, including all inherited members.

- - - - - - - - -
exception(int id_, const char *what_arg)nlohmann::detail::exceptioninlineprotected
exception(int id_, const char *what_arg)nlohmann::detail::exceptioninlineprotected
idnlohmann::detail::exception
name(const std::string &ename, int id_)nlohmann::detail::exceptioninlineprotectedstatic
name(const std::string &ename, int id_)nlohmann::detail::exceptioninlineprotectedstatic
what() const noexcept overridenlohmann::detail::exceptioninline
what() const noexcept overridenlohmann::detail::exceptioninline
- - - - diff --git a/help/html/classnlohmann_1_1detail_1_1exception.html b/help/html/classnlohmann_1_1detail_1_1exception.html deleted file mode 100644 index 89d222c..0000000 --- a/help/html/classnlohmann_1_1detail_1_1exception.html +++ /dev/null @@ -1,376 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::exception Class Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
nlohmann::detail::exception Class Reference
-
-
- -

general exception of the basic_json class - More...

- -

#include <json.hpp>

-
-Inheritance diagram for nlohmann::detail::exception:
-
-
Inheritance graph
- - - - - - - - - -
[legend]
-
-Collaboration diagram for nlohmann::detail::exception:
-
-
Collaboration graph
- - - - -
[legend]
- - - - - - - - -

-Public Member Functions

const JSON_HEDLEY_RETURNS_NON_NULL char * what () const noexcept override
 returns the explanatory string More...
 
const JSON_HEDLEY_RETURNS_NON_NULL char * what () const noexcept override
 returns the explanatory string More...
 
- - - - -

-Public Attributes

const int id
 the id of the exception More...
 
- - - - - -

-Protected Member Functions

 exception (int id_, const char *what_arg)
 
 exception (int id_, const char *what_arg)
 
- - - - - -

-Static Protected Member Functions

static std::string name (const std::string &ename, int id_)
 
static std::string name (const std::string &ename, int id_)
 
-

Detailed Description

-

general exception of the basic_json class

-

This class is an extension of std::exception objects with a member id for exception ids. It is used as the base class for all exceptions thrown by the basic_json class. This class can hence be used as "wildcard" to catch exceptions.

-

Subclasses:

    -
  • parse_error for exceptions indicating a parse error
  • -
  • invalid_iterator for exceptions indicating errors with iterators
  • -
  • type_error for exceptions indicating executing a member function with a wrong type
  • -
  • out_of_range for exceptions indicating access out of the defined range
  • -
  • other_error for exceptions indicating other library errors
  • -
-

@liveexample{The following code shows how arbitrary library exceptions can be caught.,exception}

-
Since
version 3.0.0
-

Constructor & Destructor Documentation

- -

◆ exception() [1/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
nlohmann::detail::exception::exception (int id_,
const char * what_arg 
)
-
-inlineprotected
-
- -
-
- -

◆ exception() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
nlohmann::detail::exception::exception (int id_,
const char * what_arg 
)
-
-inlineprotected
-
- -
-
-

Member Function Documentation

- -

◆ name() [1/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
static std::string nlohmann::detail::exception::name (const std::string & ename,
int id_ 
)
-
-inlinestaticprotected
-
- -
-
- -

◆ name() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
static std::string nlohmann::detail::exception::name (const std::string & ename,
int id_ 
)
-
-inlinestaticprotected
-
- -
-
- -

◆ what() [1/2]

- -
-
- - - - - -
- - - - - - - -
const JSON_HEDLEY_RETURNS_NON_NULL char* nlohmann::detail::exception::what () const
-
-inlineoverridenoexcept
-
- -

returns the explanatory string

- -
-
- -

◆ what() [2/2]

- -
-
- - - - - -
- - - - - - - -
const JSON_HEDLEY_RETURNS_NON_NULL char* nlohmann::detail::exception::what () const
-
-inlineoverridenoexcept
-
- -

returns the explanatory string

- -
-
-

Member Data Documentation

- -

◆ id

- -
-
- - - - -
const int nlohmann::detail::exception::id
-
- -

the id of the exception

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/help/html/classnlohmann_1_1detail_1_1exception__coll__graph.map b/help/html/classnlohmann_1_1detail_1_1exception__coll__graph.map deleted file mode 100644 index 5f322d6..0000000 --- a/help/html/classnlohmann_1_1detail_1_1exception__coll__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/help/html/classnlohmann_1_1detail_1_1exception__coll__graph.md5 b/help/html/classnlohmann_1_1detail_1_1exception__coll__graph.md5 deleted file mode 100644 index 1d8286f..0000000 --- a/help/html/classnlohmann_1_1detail_1_1exception__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -a1e0c88b879494a781f95d652132c59f \ No newline at end of file diff --git a/help/html/classnlohmann_1_1detail_1_1exception__coll__graph.png b/help/html/classnlohmann_1_1detail_1_1exception__coll__graph.png deleted file mode 100644 index 0bd6b59..0000000 Binary files a/help/html/classnlohmann_1_1detail_1_1exception__coll__graph.png and /dev/null differ diff --git a/help/html/classnlohmann_1_1detail_1_1exception__inherit__graph.map b/help/html/classnlohmann_1_1detail_1_1exception__inherit__graph.map deleted file mode 100644 index b93c09d..0000000 --- a/help/html/classnlohmann_1_1detail_1_1exception__inherit__graph.map +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/help/html/classnlohmann_1_1detail_1_1exception__inherit__graph.md5 b/help/html/classnlohmann_1_1detail_1_1exception__inherit__graph.md5 deleted file mode 100644 index a6b08ff..0000000 --- a/help/html/classnlohmann_1_1detail_1_1exception__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -0b3e79f3b5fee5c0c0e2c6748ba2a971 \ No newline at end of file diff --git a/help/html/classnlohmann_1_1detail_1_1exception__inherit__graph.png b/help/html/classnlohmann_1_1detail_1_1exception__inherit__graph.png deleted file mode 100644 index 22d00bf..0000000 Binary files a/help/html/classnlohmann_1_1detail_1_1exception__inherit__graph.png and /dev/null differ diff --git a/help/html/classnlohmann_1_1detail_1_1file__input__adapter-members.html b/help/html/classnlohmann_1_1detail_1_1file__input__adapter-members.html deleted file mode 100644 index fb3828a..0000000 --- a/help/html/classnlohmann_1_1detail_1_1file__input__adapter-members.html +++ /dev/null @@ -1,98 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
nlohmann::detail::file_input_adapter Member List
-
-
- -

This is the complete list of members for nlohmann::detail::file_input_adapter, including all inherited members.

- - - - - - - - - - - - - - - - -
char_type typedefnlohmann::detail::file_input_adapter
file_input_adapter(std::FILE *f) noexceptnlohmann::detail::file_input_adapterinlineexplicit
file_input_adapter(const file_input_adapter &)=deletenlohmann::detail::file_input_adapter
file_input_adapter(file_input_adapter &&)=defaultnlohmann::detail::file_input_adapter
file_input_adapter(std::FILE *f) noexceptnlohmann::detail::file_input_adapterinlineexplicit
file_input_adapter(const file_input_adapter &)=deletenlohmann::detail::file_input_adapter
file_input_adapter(file_input_adapter &&)=defaultnlohmann::detail::file_input_adapter
get_character() noexcept overridenlohmann::detail::file_input_adapterinlinevirtual
get_character() noexceptnlohmann::detail::file_input_adapterinlinevirtual
operator=(const file_input_adapter &)=deletenlohmann::detail::file_input_adapter
operator=(file_input_adapter &&)=defaultnlohmann::detail::file_input_adapter
operator=(const file_input_adapter &)=deletenlohmann::detail::file_input_adapter
operator=(file_input_adapter &&)=deletenlohmann::detail::file_input_adapter
~file_input_adapter() override=defaultnlohmann::detail::file_input_adapter
~input_adapter_protocol()=defaultnlohmann::detail::input_adapter_protocolvirtual
- - - - diff --git a/help/html/classnlohmann_1_1detail_1_1file__input__adapter.html b/help/html/classnlohmann_1_1detail_1_1file__input__adapter.html deleted file mode 100644 index 46acef2..0000000 --- a/help/html/classnlohmann_1_1detail_1_1file__input__adapter.html +++ /dev/null @@ -1,509 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::file_input_adapter Class Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
nlohmann::detail::file_input_adapter Class Reference
-
-
- -

#include <json.hpp>

-
-Inheritance diagram for nlohmann::detail::file_input_adapter:
-
-
Inheritance graph
- - - - -
[legend]
-
-Collaboration diagram for nlohmann::detail::file_input_adapter:
-
-
Collaboration graph
- - - - -
[legend]
- - - - -

-Public Types

using char_type = char
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 file_input_adapter (std::FILE *f) noexcept
 
 file_input_adapter (const file_input_adapter &)=delete
 
 file_input_adapter (file_input_adapter &&)=default
 
file_input_adapteroperator= (const file_input_adapter &)=delete
 
file_input_adapteroperator= (file_input_adapter &&)=default
 
 ~file_input_adapter () override=default
 
std::char_traits< char >::int_type get_character () noexcept override
 get a character [0,255] or std::char_traits<char>::eof(). More...
 
 file_input_adapter (std::FILE *f) noexcept
 
 file_input_adapter (const file_input_adapter &)=delete
 
 file_input_adapter (file_input_adapter &&)=default
 
file_input_adapteroperator= (const file_input_adapter &)=delete
 
file_input_adapteroperator= (file_input_adapter &&)=delete
 
std::char_traits< char >::int_type get_character () noexcept
 get a character [0,255] or std::char_traits<char>::eof(). More...
 
- Public Member Functions inherited from nlohmann::detail::input_adapter_protocol
virtual ~input_adapter_protocol ()=default
 
-

Detailed Description

-

Input adapter for stdio file access. This adapter read only 1 byte and do not use any buffer. This adapter is a very low level adapter.

-

Member Typedef Documentation

- -

◆ char_type

- -
-
- -
-
-

Constructor & Destructor Documentation

- -

◆ file_input_adapter() [1/6]

- -
-
- - - - - -
- - - - - - - - -
nlohmann::detail::file_input_adapter::file_input_adapter (std::FILE * f)
-
-inlineexplicitnoexcept
-
- -
-
- -

◆ file_input_adapter() [2/6]

- -
-
- - - - - -
- - - - - - - - -
nlohmann::detail::file_input_adapter::file_input_adapter (const file_input_adapter)
-
-delete
-
- -
-
- -

◆ file_input_adapter() [3/6]

- -
-
- - - - - -
- - - - - - - - -
nlohmann::detail::file_input_adapter::file_input_adapter (file_input_adapter && )
-
-default
-
- -
-
- -

◆ ~file_input_adapter()

- -
-
- - - - - -
- - - - - - - -
nlohmann::detail::file_input_adapter::~file_input_adapter ()
-
-overridedefault
-
- -
-
- -

◆ file_input_adapter() [4/6]

- -
-
- - - - - -
- - - - - - - - -
nlohmann::detail::file_input_adapter::file_input_adapter (std::FILE * f)
-
-inlineexplicitnoexcept
-
- -
-
- -

◆ file_input_adapter() [5/6]

- -
-
- - - - - -
- - - - - - - - -
nlohmann::detail::file_input_adapter::file_input_adapter (const file_input_adapter)
-
-delete
-
- -
-
- -

◆ file_input_adapter() [6/6]

- -
-
- - - - - -
- - - - - - - - -
nlohmann::detail::file_input_adapter::file_input_adapter (file_input_adapter && )
-
-default
-
- -
-
-

Member Function Documentation

- -

◆ get_character() [1/2]

- -
-
- - - - - -
- - - - - - - -
std::char_traits<char>::int_type nlohmann::detail::file_input_adapter::get_character ()
-
-inlinevirtualnoexcept
-
- -

get a character [0,255] or std::char_traits<char>::eof().

- -

Implements nlohmann::detail::input_adapter_protocol.

- -
-
- -

◆ get_character() [2/2]

- -
-
- - - - - -
- - - - - - - -
std::char_traits<char>::int_type nlohmann::detail::file_input_adapter::get_character ()
-
-inlineoverridevirtualnoexcept
-
- -

get a character [0,255] or std::char_traits<char>::eof().

- -

Implements nlohmann::detail::input_adapter_protocol.

- -
-
- -

◆ operator=() [1/4]

- -
-
- - - - - -
- - - - - - - - -
file_input_adapter& nlohmann::detail::file_input_adapter::operator= (const file_input_adapter)
-
-delete
-
- -
-
- -

◆ operator=() [2/4]

- -
-
- - - - - -
- - - - - - - - -
file_input_adapter& nlohmann::detail::file_input_adapter::operator= (const file_input_adapter)
-
-delete
-
- -
-
- -

◆ operator=() [3/4]

- -
-
- - - - - -
- - - - - - - - -
file_input_adapter& nlohmann::detail::file_input_adapter::operator= (file_input_adapter && )
-
-default
-
- -
-
- -

◆ operator=() [4/4]

- -
-
- - - - - -
- - - - - - - - -
file_input_adapter& nlohmann::detail::file_input_adapter::operator= (file_input_adapter && )
-
-delete
-
- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/help/html/classnlohmann_1_1detail_1_1file__input__adapter__coll__graph.map b/help/html/classnlohmann_1_1detail_1_1file__input__adapter__coll__graph.map deleted file mode 100644 index 357b826..0000000 --- a/help/html/classnlohmann_1_1detail_1_1file__input__adapter__coll__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/help/html/classnlohmann_1_1detail_1_1file__input__adapter__coll__graph.md5 b/help/html/classnlohmann_1_1detail_1_1file__input__adapter__coll__graph.md5 deleted file mode 100644 index 7da62cd..0000000 --- a/help/html/classnlohmann_1_1detail_1_1file__input__adapter__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -d2c5b1903c5c7b736e0b7a71719af81e \ No newline at end of file diff --git a/help/html/classnlohmann_1_1detail_1_1file__input__adapter__coll__graph.png b/help/html/classnlohmann_1_1detail_1_1file__input__adapter__coll__graph.png deleted file mode 100644 index ebc6cf8..0000000 Binary files a/help/html/classnlohmann_1_1detail_1_1file__input__adapter__coll__graph.png and /dev/null differ diff --git a/help/html/classnlohmann_1_1detail_1_1file__input__adapter__inherit__graph.map b/help/html/classnlohmann_1_1detail_1_1file__input__adapter__inherit__graph.map deleted file mode 100644 index 357b826..0000000 --- a/help/html/classnlohmann_1_1detail_1_1file__input__adapter__inherit__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/help/html/classnlohmann_1_1detail_1_1file__input__adapter__inherit__graph.md5 b/help/html/classnlohmann_1_1detail_1_1file__input__adapter__inherit__graph.md5 deleted file mode 100644 index 7da62cd..0000000 --- a/help/html/classnlohmann_1_1detail_1_1file__input__adapter__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -d2c5b1903c5c7b736e0b7a71719af81e \ No newline at end of file diff --git a/help/html/classnlohmann_1_1detail_1_1file__input__adapter__inherit__graph.png b/help/html/classnlohmann_1_1detail_1_1file__input__adapter__inherit__graph.png deleted file mode 100644 index ebc6cf8..0000000 Binary files a/help/html/classnlohmann_1_1detail_1_1file__input__adapter__inherit__graph.png and /dev/null differ diff --git a/help/html/classnlohmann_1_1detail_1_1input__adapter-members.html b/help/html/classnlohmann_1_1detail_1_1input__adapter-members.html deleted file mode 100644 index e242fa0..0000000 --- a/help/html/classnlohmann_1_1detail_1_1input__adapter-members.html +++ /dev/null @@ -1,95 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
nlohmann::detail::input_adapter Member List
-
-
- -

This is the complete list of members for nlohmann::detail::input_adapter, including all inherited members.

- - - - - - - - - - - - - -
input_adapter(std::FILE *file)nlohmann::detail::input_adapterinline
input_adapter(std::istream &i)nlohmann::detail::input_adapterinline
input_adapter(std::istream &&i)nlohmann::detail::input_adapterinline
input_adapter(const std::wstring &ws)nlohmann::detail::input_adapterinline
input_adapter(const std::u16string &ws)nlohmann::detail::input_adapterinline
input_adapter(const std::u32string &ws)nlohmann::detail::input_adapterinline
input_adapter(CharT b, std::size_t l)nlohmann::detail::input_adapterinline
input_adapter(CharT b)nlohmann::detail::input_adapterinline
input_adapter(IteratorType first, IteratorType last)nlohmann::detail::input_adapterinline
input_adapter(T(&array)[N])nlohmann::detail::input_adapterinline
input_adapter(const ContiguousContainer &c)nlohmann::detail::input_adapterinline
operator input_adapter_t()nlohmann::detail::input_adapterinline
- - - - diff --git a/help/html/classnlohmann_1_1detail_1_1input__adapter.html b/help/html/classnlohmann_1_1detail_1_1input__adapter.html deleted file mode 100644 index b12465a..0000000 --- a/help/html/classnlohmann_1_1detail_1_1input__adapter.html +++ /dev/null @@ -1,485 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::input_adapter Class Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
nlohmann::detail::input_adapter Class Reference
-
-
- -

#include <json.hpp>

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 input_adapter (std::FILE *file)
 
 input_adapter (std::istream &i)
 input adapter for input stream More...
 
 input_adapter (std::istream &&i)
 input adapter for input stream More...
 
 input_adapter (const std::wstring &ws)
 
 input_adapter (const std::u16string &ws)
 
 input_adapter (const std::u32string &ws)
 
template<typename CharT , typename std::enable_if< std::is_pointer< CharT >::value and std::is_integral< typename std::remove_pointer< CharT >::type >::value and sizeof(typename std::remove_pointer< CharT >::type)==1, int >::type = 0>
 input_adapter (CharT b, std::size_t l)
 input adapter for buffer More...
 
template<typename CharT , typename std::enable_if< std::is_pointer< CharT >::value and std::is_integral< typename std::remove_pointer< CharT >::type >::value and sizeof(typename std::remove_pointer< CharT >::type)==1, int >::type = 0>
 input_adapter (CharT b)
 input adapter for string literal More...
 
template<class IteratorType , typename std::enable_if< std::is_same< typename iterator_traits< IteratorType >::iterator_category, std::random_access_iterator_tag >::value, int >::type = 0>
 input_adapter (IteratorType first, IteratorType last)
 input adapter for iterator range with contiguous storage More...
 
template<class T , std::size_t N>
 input_adapter (T(&array)[N])
 input adapter for array More...
 
template<class ContiguousContainer , typename std::enable_if< not std::is_pointer< ContiguousContainer >::value and std::is_base_of< std::random_access_iterator_tag, typename iterator_traits< decltype(std::begin(std::declval< ContiguousContainer const >()))>::iterator_category >::value , int , ::type = 0>
 input_adapter (const ContiguousContainer &c)
 input adapter for contiguous container More...
 
 operator input_adapter_t ()
 
-

Constructor & Destructor Documentation

- -

◆ input_adapter() [1/11]

- -
-
- - - - - -
- - - - - - - - -
nlohmann::detail::input_adapter::input_adapter (std::FILE * file)
-
-inline
-
- -
-
- -

◆ input_adapter() [2/11]

- -
-
- - - - - -
- - - - - - - - -
nlohmann::detail::input_adapter::input_adapter (std::istream & i)
-
-inline
-
- -

input adapter for input stream

- -
-
- -

◆ input_adapter() [3/11]

- -
-
- - - - - -
- - - - - - - - -
nlohmann::detail::input_adapter::input_adapter (std::istream && i)
-
-inline
-
- -

input adapter for input stream

- -
-
- -

◆ input_adapter() [4/11]

- -
-
- - - - - -
- - - - - - - - -
nlohmann::detail::input_adapter::input_adapter (const std::wstring & ws)
-
-inline
-
- -
-
- -

◆ input_adapter() [5/11]

- -
-
- - - - - -
- - - - - - - - -
nlohmann::detail::input_adapter::input_adapter (const std::u16string & ws)
-
-inline
-
- -
-
- -

◆ input_adapter() [6/11]

- -
-
- - - - - -
- - - - - - - - -
nlohmann::detail::input_adapter::input_adapter (const std::u32string & ws)
-
-inline
-
- -
-
- -

◆ input_adapter() [7/11]

- -
-
-
-template<typename CharT , typename std::enable_if< std::is_pointer< CharT >::value and std::is_integral< typename std::remove_pointer< CharT >::type >::value and sizeof(typename std::remove_pointer< CharT >::type)==1, int >::type = 0>
- - - - - -
- - - - - - - - - - - - - - - - - - -
nlohmann::detail::input_adapter::input_adapter (CharT b,
std::size_t l 
)
-
-inline
-
- -

input adapter for buffer

- -
-
- -

◆ input_adapter() [8/11]

- -
-
-
-template<typename CharT , typename std::enable_if< std::is_pointer< CharT >::value and std::is_integral< typename std::remove_pointer< CharT >::type >::value and sizeof(typename std::remove_pointer< CharT >::type)==1, int >::type = 0>
- - - - - -
- - - - - - - - -
nlohmann::detail::input_adapter::input_adapter (CharT b)
-
-inline
-
- -

input adapter for string literal

- -
-
- -

◆ input_adapter() [9/11]

- -
-
-
-template<class IteratorType , typename std::enable_if< std::is_same< typename iterator_traits< IteratorType >::iterator_category, std::random_access_iterator_tag >::value, int >::type = 0>
- - - - - -
- - - - - - - - - - - - - - - - - - -
nlohmann::detail::input_adapter::input_adapter (IteratorType first,
IteratorType last 
)
-
-inline
-
- -

input adapter for iterator range with contiguous storage

- -
-
- -

◆ input_adapter() [10/11]

- -
-
-
-template<class T , std::size_t N>
- - - - - -
- - - - - - - - -
nlohmann::detail::input_adapter::input_adapter (T(&) array[N])
-
-inline
-
- -

input adapter for array

- -
-
- -

◆ input_adapter() [11/11]

- -
-
-
-template<class ContiguousContainer , typename std::enable_if< not std::is_pointer< ContiguousContainer >::value and std::is_base_of< std::random_access_iterator_tag, typename iterator_traits< decltype(std::begin(std::declval< ContiguousContainer const >()))>::iterator_category >::value , int , ::type = 0>
- - - - - -
- - - - - - - - -
nlohmann::detail::input_adapter::input_adapter (const ContiguousContainer & c)
-
-inline
-
- -

input adapter for contiguous container

- -
-
-

Member Function Documentation

- -

◆ operator input_adapter_t()

- -
-
- - - - - -
- - - - - - - -
nlohmann::detail::input_adapter::operator input_adapter_t ()
-
-inline
-
- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/help/html/classnlohmann_1_1detail_1_1input__buffer__adapter-members.html b/help/html/classnlohmann_1_1detail_1_1input__buffer__adapter-members.html deleted file mode 100644 index 8b233bc..0000000 --- a/help/html/classnlohmann_1_1detail_1_1input__buffer__adapter-members.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
nlohmann::detail::input_buffer_adapter Member List
-
-
- -

This is the complete list of members for nlohmann::detail::input_buffer_adapter, including all inherited members.

- - - - - - - - - -
get_character() noexcept overridenlohmann::detail::input_buffer_adapterinlinevirtual
input_buffer_adapter(const char *b, const std::size_t l) noexceptnlohmann::detail::input_buffer_adapterinline
input_buffer_adapter(const input_buffer_adapter &)=deletenlohmann::detail::input_buffer_adapter
input_buffer_adapter(input_buffer_adapter &&)=deletenlohmann::detail::input_buffer_adapter
operator=(input_buffer_adapter &)=deletenlohmann::detail::input_buffer_adapter
operator=(input_buffer_adapter &&)=deletenlohmann::detail::input_buffer_adapter
~input_adapter_protocol()=defaultnlohmann::detail::input_adapter_protocolvirtual
~input_buffer_adapter() override=defaultnlohmann::detail::input_buffer_adapter
- - - - diff --git a/help/html/classnlohmann_1_1detail_1_1input__buffer__adapter.html b/help/html/classnlohmann_1_1detail_1_1input__buffer__adapter.html deleted file mode 100644 index 39d2297..0000000 --- a/help/html/classnlohmann_1_1detail_1_1input__buffer__adapter.html +++ /dev/null @@ -1,329 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::input_buffer_adapter Class Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
nlohmann::detail::input_buffer_adapter Class Reference
-
-
- -

input adapter for buffer input - More...

- -

#include <json.hpp>

-
-Inheritance diagram for nlohmann::detail::input_buffer_adapter:
-
-
Inheritance graph
- - - - -
[legend]
-
-Collaboration diagram for nlohmann::detail::input_buffer_adapter:
-
-
Collaboration graph
- - - - -
[legend]
- - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 input_buffer_adapter (const char *b, const std::size_t l) noexcept
 
 input_buffer_adapter (const input_buffer_adapter &)=delete
 
input_buffer_adapteroperator= (input_buffer_adapter &)=delete
 
 input_buffer_adapter (input_buffer_adapter &&)=delete
 
input_buffer_adapteroperator= (input_buffer_adapter &&)=delete
 
 ~input_buffer_adapter () override=default
 
std::char_traits< char >::int_type get_character () noexcept override
 get a character [0,255] or std::char_traits<char>::eof(). More...
 
- Public Member Functions inherited from nlohmann::detail::input_adapter_protocol
virtual ~input_adapter_protocol ()=default
 
-

Detailed Description

-

input adapter for buffer input

-

Constructor & Destructor Documentation

- -

◆ input_buffer_adapter() [1/3]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
nlohmann::detail::input_buffer_adapter::input_buffer_adapter (const char * b,
const std::size_t l 
)
-
-inlinenoexcept
-
- -
-
- -

◆ input_buffer_adapter() [2/3]

- -
-
- - - - - -
- - - - - - - - -
nlohmann::detail::input_buffer_adapter::input_buffer_adapter (const input_buffer_adapter)
-
-delete
-
- -
-
- -

◆ input_buffer_adapter() [3/3]

- -
-
- - - - - -
- - - - - - - - -
nlohmann::detail::input_buffer_adapter::input_buffer_adapter (input_buffer_adapter && )
-
-delete
-
- -
-
- -

◆ ~input_buffer_adapter()

- -
-
- - - - - -
- - - - - - - -
nlohmann::detail::input_buffer_adapter::~input_buffer_adapter ()
-
-overridedefault
-
- -
-
-

Member Function Documentation

- -

◆ get_character()

- -
-
- - - - - -
- - - - - - - -
std::char_traits<char>::int_type nlohmann::detail::input_buffer_adapter::get_character ()
-
-inlineoverridevirtualnoexcept
-
- -

get a character [0,255] or std::char_traits<char>::eof().

- -

Implements nlohmann::detail::input_adapter_protocol.

- -
-
- -

◆ operator=() [1/2]

- -
-
- - - - - -
- - - - - - - - -
input_buffer_adapter& nlohmann::detail::input_buffer_adapter::operator= (input_buffer_adapter && )
-
-delete
-
- -
-
- -

◆ operator=() [2/2]

- -
-
- - - - - -
- - - - - - - - -
input_buffer_adapter& nlohmann::detail::input_buffer_adapter::operator= (input_buffer_adapter)
-
-delete
-
- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/help/html/classnlohmann_1_1detail_1_1input__buffer__adapter__coll__graph.map b/help/html/classnlohmann_1_1detail_1_1input__buffer__adapter__coll__graph.map deleted file mode 100644 index 398d8c9..0000000 --- a/help/html/classnlohmann_1_1detail_1_1input__buffer__adapter__coll__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/help/html/classnlohmann_1_1detail_1_1input__buffer__adapter__coll__graph.md5 b/help/html/classnlohmann_1_1detail_1_1input__buffer__adapter__coll__graph.md5 deleted file mode 100644 index bd3b8c3..0000000 --- a/help/html/classnlohmann_1_1detail_1_1input__buffer__adapter__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -16d76dcedcb5529ec8addb9d9895e2f7 \ No newline at end of file diff --git a/help/html/classnlohmann_1_1detail_1_1input__buffer__adapter__coll__graph.png b/help/html/classnlohmann_1_1detail_1_1input__buffer__adapter__coll__graph.png deleted file mode 100644 index 95be2c6..0000000 Binary files a/help/html/classnlohmann_1_1detail_1_1input__buffer__adapter__coll__graph.png and /dev/null differ diff --git a/help/html/classnlohmann_1_1detail_1_1input__buffer__adapter__inherit__graph.map b/help/html/classnlohmann_1_1detail_1_1input__buffer__adapter__inherit__graph.map deleted file mode 100644 index 398d8c9..0000000 --- a/help/html/classnlohmann_1_1detail_1_1input__buffer__adapter__inherit__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/help/html/classnlohmann_1_1detail_1_1input__buffer__adapter__inherit__graph.md5 b/help/html/classnlohmann_1_1detail_1_1input__buffer__adapter__inherit__graph.md5 deleted file mode 100644 index bd3b8c3..0000000 --- a/help/html/classnlohmann_1_1detail_1_1input__buffer__adapter__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -16d76dcedcb5529ec8addb9d9895e2f7 \ No newline at end of file diff --git a/help/html/classnlohmann_1_1detail_1_1input__buffer__adapter__inherit__graph.png b/help/html/classnlohmann_1_1detail_1_1input__buffer__adapter__inherit__graph.png deleted file mode 100644 index 95be2c6..0000000 Binary files a/help/html/classnlohmann_1_1detail_1_1input__buffer__adapter__inherit__graph.png and /dev/null differ diff --git a/help/html/classnlohmann_1_1detail_1_1input__stream__adapter-members.html b/help/html/classnlohmann_1_1detail_1_1input__stream__adapter-members.html deleted file mode 100644 index 0006c5c..0000000 --- a/help/html/classnlohmann_1_1detail_1_1input__stream__adapter-members.html +++ /dev/null @@ -1,99 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
nlohmann::detail::input_stream_adapter Member List
-
-
- -

This is the complete list of members for nlohmann::detail::input_stream_adapter, including all inherited members.

- - - - - - - - - - - - - - - - - -
char_type typedefnlohmann::detail::input_stream_adapter
get_character() overridenlohmann::detail::input_stream_adapterinlinevirtual
get_character()nlohmann::detail::input_stream_adapterinlinevirtual
input_stream_adapter(std::istream &i)nlohmann::detail::input_stream_adapterinlineexplicit
input_stream_adapter(const input_stream_adapter &)=deletenlohmann::detail::input_stream_adapter
input_stream_adapter(input_stream_adapter &&)=deletenlohmann::detail::input_stream_adapter
input_stream_adapter(std::istream &i)nlohmann::detail::input_stream_adapterinlineexplicit
input_stream_adapter(const input_stream_adapter &)=deletenlohmann::detail::input_stream_adapter
input_stream_adapter(input_stream_adapter &&rhs) noexceptnlohmann::detail::input_stream_adapterinline
operator=(input_stream_adapter &)=deletenlohmann::detail::input_stream_adapter
operator=(input_stream_adapter &&)=deletenlohmann::detail::input_stream_adapter
operator=(input_stream_adapter &)=deletenlohmann::detail::input_stream_adapter
operator=(input_stream_adapter &&rhs)=deletenlohmann::detail::input_stream_adapter
~input_adapter_protocol()=defaultnlohmann::detail::input_adapter_protocolvirtual
~input_stream_adapter() overridenlohmann::detail::input_stream_adapterinline
~input_stream_adapter()nlohmann::detail::input_stream_adapterinline
- - - - diff --git a/help/html/classnlohmann_1_1detail_1_1input__stream__adapter.html b/help/html/classnlohmann_1_1detail_1_1input__stream__adapter.html deleted file mode 100644 index 3e13e4f..0000000 --- a/help/html/classnlohmann_1_1detail_1_1input__stream__adapter.html +++ /dev/null @@ -1,536 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::input_stream_adapter Class Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
nlohmann::detail::input_stream_adapter Class Reference
-
-
- -

#include <json.hpp>

-
-Inheritance diagram for nlohmann::detail::input_stream_adapter:
-
-
Inheritance graph
- - - - -
[legend]
-
-Collaboration diagram for nlohmann::detail::input_stream_adapter:
-
-
Collaboration graph
- - - - -
[legend]
- - - - -

-Public Types

using char_type = char
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 ~input_stream_adapter () override
 
 input_stream_adapter (std::istream &i)
 
 input_stream_adapter (const input_stream_adapter &)=delete
 
input_stream_adapteroperator= (input_stream_adapter &)=delete
 
 input_stream_adapter (input_stream_adapter &&)=delete
 
input_stream_adapteroperator= (input_stream_adapter &&)=delete
 
std::char_traits< char >::int_type get_character () override
 get a character [0,255] or std::char_traits<char>::eof(). More...
 
 ~input_stream_adapter ()
 
 input_stream_adapter (std::istream &i)
 
 input_stream_adapter (const input_stream_adapter &)=delete
 
input_stream_adapteroperator= (input_stream_adapter &)=delete
 
input_stream_adapteroperator= (input_stream_adapter &&rhs)=delete
 
 input_stream_adapter (input_stream_adapter &&rhs) noexcept
 
std::char_traits< char >::int_type get_character ()
 get a character [0,255] or std::char_traits<char>::eof(). More...
 
- Public Member Functions inherited from nlohmann::detail::input_adapter_protocol
virtual ~input_adapter_protocol ()=default
 
-

Detailed Description

-

Input adapter for a (caching) istream. Ignores a UFT Byte Order Mark at beginning of input. Does not support changing the underlying std::streambuf in mid-input. Maintains underlying std::istream and std::streambuf to support subsequent use of standard std::istream operations to process any input characters following those used in parsing the JSON input. Clears the std::istream flags; any input errors (e.g., EOF) will be detected by the first subsequent call for input from the std::istream.

-

Member Typedef Documentation

- -

◆ char_type

- -
-
- -
-
-

Constructor & Destructor Documentation

- -

◆ ~input_stream_adapter() [1/2]

- -
-
- - - - - -
- - - - - - - -
nlohmann::detail::input_stream_adapter::~input_stream_adapter ()
-
-inlineoverride
-
- -
-
- -

◆ input_stream_adapter() [1/6]

- -
-
- - - - - -
- - - - - - - - -
nlohmann::detail::input_stream_adapter::input_stream_adapter (std::istream & i)
-
-inlineexplicit
-
- -
-
- -

◆ input_stream_adapter() [2/6]

- -
-
- - - - - -
- - - - - - - - -
nlohmann::detail::input_stream_adapter::input_stream_adapter (const input_stream_adapter)
-
-delete
-
- -
-
- -

◆ input_stream_adapter() [3/6]

- -
-
- - - - - -
- - - - - - - - -
nlohmann::detail::input_stream_adapter::input_stream_adapter (input_stream_adapter && )
-
-delete
-
- -
-
- -

◆ ~input_stream_adapter() [2/2]

- -
-
- - - - - -
- - - - - - - -
nlohmann::detail::input_stream_adapter::~input_stream_adapter ()
-
-inline
-
- -
-
- -

◆ input_stream_adapter() [4/6]

- -
-
- - - - - -
- - - - - - - - -
nlohmann::detail::input_stream_adapter::input_stream_adapter (std::istream & i)
-
-inlineexplicit
-
- -
-
- -

◆ input_stream_adapter() [5/6]

- -
-
- - - - - -
- - - - - - - - -
nlohmann::detail::input_stream_adapter::input_stream_adapter (const input_stream_adapter)
-
-delete
-
- -
-
- -

◆ input_stream_adapter() [6/6]

- -
-
- - - - - -
- - - - - - - - -
nlohmann::detail::input_stream_adapter::input_stream_adapter (input_stream_adapter && rhs)
-
-inlinenoexcept
-
- -
-
-

Member Function Documentation

- -

◆ get_character() [1/2]

- -
-
- - - - - -
- - - - - - - -
std::char_traits<char>::int_type nlohmann::detail::input_stream_adapter::get_character ()
-
-inlinevirtual
-
- -

get a character [0,255] or std::char_traits<char>::eof().

- -

Implements nlohmann::detail::input_adapter_protocol.

- -
-
- -

◆ get_character() [2/2]

- -
-
- - - - - -
- - - - - - - -
std::char_traits<char>::int_type nlohmann::detail::input_stream_adapter::get_character ()
-
-inlineoverridevirtual
-
- -

get a character [0,255] or std::char_traits<char>::eof().

- -

Implements nlohmann::detail::input_adapter_protocol.

- -
-
- -

◆ operator=() [1/4]

- -
-
- - - - - -
- - - - - - - - -
input_stream_adapter& nlohmann::detail::input_stream_adapter::operator= (input_stream_adapter && )
-
-delete
-
- -
-
- -

◆ operator=() [2/4]

- -
-
- - - - - -
- - - - - - - - -
input_stream_adapter& nlohmann::detail::input_stream_adapter::operator= (input_stream_adapter && rhs)
-
-delete
-
- -
-
- -

◆ operator=() [3/4]

- -
-
- - - - - -
- - - - - - - - -
input_stream_adapter& nlohmann::detail::input_stream_adapter::operator= (input_stream_adapter)
-
-delete
-
- -
-
- -

◆ operator=() [4/4]

- -
-
- - - - - -
- - - - - - - - -
input_stream_adapter& nlohmann::detail::input_stream_adapter::operator= (input_stream_adapter)
-
-delete
-
- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/help/html/classnlohmann_1_1detail_1_1input__stream__adapter__coll__graph.map b/help/html/classnlohmann_1_1detail_1_1input__stream__adapter__coll__graph.map deleted file mode 100644 index a690414..0000000 --- a/help/html/classnlohmann_1_1detail_1_1input__stream__adapter__coll__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/help/html/classnlohmann_1_1detail_1_1input__stream__adapter__coll__graph.md5 b/help/html/classnlohmann_1_1detail_1_1input__stream__adapter__coll__graph.md5 deleted file mode 100644 index a87d67f..0000000 --- a/help/html/classnlohmann_1_1detail_1_1input__stream__adapter__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -69841051c2a0ba330d1efdc9f0150c89 \ No newline at end of file diff --git a/help/html/classnlohmann_1_1detail_1_1input__stream__adapter__coll__graph.png b/help/html/classnlohmann_1_1detail_1_1input__stream__adapter__coll__graph.png deleted file mode 100644 index 04475ca..0000000 Binary files a/help/html/classnlohmann_1_1detail_1_1input__stream__adapter__coll__graph.png and /dev/null differ diff --git a/help/html/classnlohmann_1_1detail_1_1input__stream__adapter__inherit__graph.map b/help/html/classnlohmann_1_1detail_1_1input__stream__adapter__inherit__graph.map deleted file mode 100644 index a690414..0000000 --- a/help/html/classnlohmann_1_1detail_1_1input__stream__adapter__inherit__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/help/html/classnlohmann_1_1detail_1_1input__stream__adapter__inherit__graph.md5 b/help/html/classnlohmann_1_1detail_1_1input__stream__adapter__inherit__graph.md5 deleted file mode 100644 index a87d67f..0000000 --- a/help/html/classnlohmann_1_1detail_1_1input__stream__adapter__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -69841051c2a0ba330d1efdc9f0150c89 \ No newline at end of file diff --git a/help/html/classnlohmann_1_1detail_1_1input__stream__adapter__inherit__graph.png b/help/html/classnlohmann_1_1detail_1_1input__stream__adapter__inherit__graph.png deleted file mode 100644 index 04475ca..0000000 Binary files a/help/html/classnlohmann_1_1detail_1_1input__stream__adapter__inherit__graph.png and /dev/null differ diff --git a/help/html/classnlohmann_1_1detail_1_1invalid__iterator-members.html b/help/html/classnlohmann_1_1detail_1_1invalid__iterator-members.html deleted file mode 100644 index 1b4236e..0000000 --- a/help/html/classnlohmann_1_1detail_1_1invalid__iterator-members.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
nlohmann::detail::invalid_iterator Member List
-
-
- -

This is the complete list of members for nlohmann::detail::invalid_iterator, including all inherited members.

- - - - - - - - - - -
create(int id_, const std::string &what_arg)nlohmann::detail::invalid_iteratorinlinestatic
create(int id_, const std::string &what_arg)nlohmann::detail::invalid_iteratorinlinestatic
exception(int id_, const char *what_arg)nlohmann::detail::exceptioninlineprotected
exception(int id_, const char *what_arg)nlohmann::detail::exceptioninlineprotected
idnlohmann::detail::exception
name(const std::string &ename, int id_)nlohmann::detail::exceptioninlineprotectedstatic
name(const std::string &ename, int id_)nlohmann::detail::exceptioninlineprotectedstatic
what() const noexcept overridenlohmann::detail::exceptioninline
what() const noexcept overridenlohmann::detail::exceptioninline
- - - - diff --git a/help/html/classnlohmann_1_1detail_1_1invalid__iterator.html b/help/html/classnlohmann_1_1detail_1_1invalid__iterator.html deleted file mode 100644 index ba489c0..0000000 --- a/help/html/classnlohmann_1_1detail_1_1invalid__iterator.html +++ /dev/null @@ -1,263 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::invalid_iterator Class Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
nlohmann::detail::invalid_iterator Class Reference
-
-
- -

exception indicating errors with iterators - More...

- -

#include <json.hpp>

-
-Inheritance diagram for nlohmann::detail::invalid_iterator:
-
-
Inheritance graph
- - - - - -
[legend]
-
-Collaboration diagram for nlohmann::detail::invalid_iterator:
-
-
Collaboration graph
- - - - - -
[legend]
- - - - - - -

-Static Public Member Functions

static invalid_iterator create (int id_, const std::string &what_arg)
 
static invalid_iterator create (int id_, const std::string &what_arg)
 
- - - - - - - - - - - - - - - - - - - - - - -

-Additional Inherited Members

- Public Member Functions inherited from nlohmann::detail::exception
const JSON_HEDLEY_RETURNS_NON_NULL char * what () const noexcept override
 returns the explanatory string More...
 
const JSON_HEDLEY_RETURNS_NON_NULL char * what () const noexcept override
 returns the explanatory string More...
 
- Public Attributes inherited from nlohmann::detail::exception
const int id
 the id of the exception More...
 
- Protected Member Functions inherited from nlohmann::detail::exception
 exception (int id_, const char *what_arg)
 
 exception (int id_, const char *what_arg)
 
- Static Protected Member Functions inherited from nlohmann::detail::exception
static std::string name (const std::string &ename, int id_)
 
static std::string name (const std::string &ename, int id_)
 
-

Detailed Description

-

exception indicating errors with iterators

-

This exception is thrown if iterators passed to a library function do not match the expected semantics.

-

Exceptions have ids 2xx.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
name / id example message description
json.exception.invalid_iterator.201 iterators are not compatible The iterators passed to constructor basic_json(InputIT first, InputIT last) are not compatible, meaning they do not belong to the same container. Therefore, the range (first, last) is invalid.
json.exception.invalid_iterator.202 iterator does not fit current value In an erase or insert function, the passed iterator pos does not belong to the JSON value for which the function was called. It hence does not define a valid position for the deletion/insertion.
json.exception.invalid_iterator.203 iterators do not fit current value Either iterator passed to function erase(IteratorType first, IteratorType last) does not belong to the JSON value from which values shall be erased. It hence does not define a valid range to delete values from.
json.exception.invalid_iterator.204 iterators out of range When an iterator range for a primitive type (number, boolean, or string) is passed to a constructor or an erase function, this range has to be exactly (begin(), end()), because this is the only way the single stored value is expressed. All other ranges are invalid.
json.exception.invalid_iterator.205 iterator out of range When an iterator for a primitive type (number, boolean, or string) is passed to an erase function, the iterator has to be the begin() iterator, because it is the only way to address the stored value. All other iterators are invalid.
json.exception.invalid_iterator.206 cannot construct with iterators from null The iterators passed to constructor basic_json(InputIT first, InputIT last) belong to a JSON null value and hence to not define a valid range.
json.exception.invalid_iterator.207 cannot use key() for non-object iterators The key() member function can only be used on iterators belonging to a JSON object, because other types do not have a concept of a key.
json.exception.invalid_iterator.208 cannot use operator[] for object iterators The operator[] to specify a concrete offset cannot be used on iterators belonging to a JSON object, because JSON objects are unordered.
json.exception.invalid_iterator.209 cannot use offsets with object iterators The offset operators (+, -, +=, -=) cannot be used on iterators belonging to a JSON object, because JSON objects are unordered.
json.exception.invalid_iterator.210 iterators do not fit The iterator range passed to the insert function are not compatible, meaning they do not belong to the same container. Therefore, the range (first, last) is invalid.
json.exception.invalid_iterator.211 passed iterators may not belong to container The iterator range passed to the insert function must not be a subrange of the container to insert to.
json.exception.invalid_iterator.212 cannot compare iterators of different containers When two iterators are compared, they must belong to the same container.
json.exception.invalid_iterator.213 cannot compare order of object iterators The order of object iterators cannot be compared, because JSON objects are unordered.
json.exception.invalid_iterator.214 cannot get value Cannot get value for iterator: Either the iterator belongs to a null value or it is an iterator to a primitive type (number, boolean, or string), but the iterator is different to begin().
-

@liveexample{The following code shows how an invalid_iterator exception can be caught.,invalid_iterator}

-
See also
- exception for the base class of the library exceptions
-
-- parse_error for exceptions indicating a parse error
-
-- type_error for exceptions indicating executing a member function with a wrong type
-
-- out_of_range for exceptions indicating access out of the defined range
-
-- other_error for exceptions indicating other library errors
-
Since
version 3.0.0
-

Member Function Documentation

- -

◆ create() [1/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
static invalid_iterator nlohmann::detail::invalid_iterator::create (int id_,
const std::string & what_arg 
)
-
-inlinestatic
-
- -
-
- -

◆ create() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
static invalid_iterator nlohmann::detail::invalid_iterator::create (int id_,
const std::string & what_arg 
)
-
-inlinestatic
-
- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/help/html/classnlohmann_1_1detail_1_1invalid__iterator__coll__graph.map b/help/html/classnlohmann_1_1detail_1_1invalid__iterator__coll__graph.map deleted file mode 100644 index cf34243..0000000 --- a/help/html/classnlohmann_1_1detail_1_1invalid__iterator__coll__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/help/html/classnlohmann_1_1detail_1_1invalid__iterator__coll__graph.md5 b/help/html/classnlohmann_1_1detail_1_1invalid__iterator__coll__graph.md5 deleted file mode 100644 index 449717b..0000000 --- a/help/html/classnlohmann_1_1detail_1_1invalid__iterator__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -52efcf5df17f210c293d43e5905676dc \ No newline at end of file diff --git a/help/html/classnlohmann_1_1detail_1_1invalid__iterator__coll__graph.png b/help/html/classnlohmann_1_1detail_1_1invalid__iterator__coll__graph.png deleted file mode 100644 index 9b4d0e5..0000000 Binary files a/help/html/classnlohmann_1_1detail_1_1invalid__iterator__coll__graph.png and /dev/null differ diff --git a/help/html/classnlohmann_1_1detail_1_1invalid__iterator__inherit__graph.map b/help/html/classnlohmann_1_1detail_1_1invalid__iterator__inherit__graph.map deleted file mode 100644 index cf34243..0000000 --- a/help/html/classnlohmann_1_1detail_1_1invalid__iterator__inherit__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/help/html/classnlohmann_1_1detail_1_1invalid__iterator__inherit__graph.md5 b/help/html/classnlohmann_1_1detail_1_1invalid__iterator__inherit__graph.md5 deleted file mode 100644 index 449717b..0000000 --- a/help/html/classnlohmann_1_1detail_1_1invalid__iterator__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -52efcf5df17f210c293d43e5905676dc \ No newline at end of file diff --git a/help/html/classnlohmann_1_1detail_1_1invalid__iterator__inherit__graph.png b/help/html/classnlohmann_1_1detail_1_1invalid__iterator__inherit__graph.png deleted file mode 100644 index 9b4d0e5..0000000 Binary files a/help/html/classnlohmann_1_1detail_1_1invalid__iterator__inherit__graph.png and /dev/null differ diff --git a/help/html/classnlohmann_1_1detail_1_1iter__impl-members.html b/help/html/classnlohmann_1_1detail_1_1iter__impl-members.html deleted file mode 100644 index 40aee72..0000000 --- a/help/html/classnlohmann_1_1detail_1_1iter__impl-members.html +++ /dev/null @@ -1,147 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
nlohmann::detail::iter_impl< BasicJsonType > Member List
-
-
- -

This is the complete list of members for nlohmann::detail::iter_impl< BasicJsonType >, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
difference_type typedefnlohmann::detail::iter_impl< BasicJsonType >
difference_type typedefnlohmann::detail::iter_impl< BasicJsonType >
iter_impl()=defaultnlohmann::detail::iter_impl< BasicJsonType >
iter_impl(pointer object) noexceptnlohmann::detail::iter_impl< BasicJsonType >inlineexplicit
iter_impl(const iter_impl< const BasicJsonType > &other) noexceptnlohmann::detail::iter_impl< BasicJsonType >inline
iter_impl(const iter_impl< typename std::remove_const< BasicJsonType >::type > &other) noexceptnlohmann::detail::iter_impl< BasicJsonType >inline
iter_impl()=defaultnlohmann::detail::iter_impl< BasicJsonType >
iter_impl(pointer object) noexceptnlohmann::detail::iter_impl< BasicJsonType >inlineexplicit
iter_impl(const iter_impl< const BasicJsonType > &other) noexceptnlohmann::detail::iter_impl< BasicJsonType >inline
iter_impl(const iter_impl< typename std::remove_const< BasicJsonType >::type > &other) noexceptnlohmann::detail::iter_impl< BasicJsonType >inline
iterator_category typedefnlohmann::detail::iter_impl< BasicJsonType >
iterator_category typedefnlohmann::detail::iter_impl< BasicJsonType >
key() constnlohmann::detail::iter_impl< BasicJsonType >inline
key() constnlohmann::detail::iter_impl< BasicJsonType >inline
operator!=(const iter_impl &other) constnlohmann::detail::iter_impl< BasicJsonType >inline
operator!=(const iter_impl &other) constnlohmann::detail::iter_impl< BasicJsonType >inline
operator*() constnlohmann::detail::iter_impl< BasicJsonType >inline
operator*() constnlohmann::detail::iter_impl< BasicJsonType >inline
operator+(difference_type i) constnlohmann::detail::iter_impl< BasicJsonType >inline
operator+(difference_type i, const iter_impl &it)nlohmann::detail::iter_impl< BasicJsonType >friend
operator+(difference_type i) constnlohmann::detail::iter_impl< BasicJsonType >inline
operator+(difference_type i, const iter_impl &it)nlohmann::detail::iter_impl< BasicJsonType >friend
operator++(int)nlohmann::detail::iter_impl< BasicJsonType >inline
operator++()nlohmann::detail::iter_impl< BasicJsonType >inline
operator++(int)nlohmann::detail::iter_impl< BasicJsonType >inline
operator++()nlohmann::detail::iter_impl< BasicJsonType >inline
operator+=(difference_type i)nlohmann::detail::iter_impl< BasicJsonType >inline
operator+=(difference_type i)nlohmann::detail::iter_impl< BasicJsonType >inline
operator-(difference_type i) constnlohmann::detail::iter_impl< BasicJsonType >inline
operator-(const iter_impl &other) constnlohmann::detail::iter_impl< BasicJsonType >inline
operator-(difference_type i) constnlohmann::detail::iter_impl< BasicJsonType >inline
operator-(const iter_impl &other) constnlohmann::detail::iter_impl< BasicJsonType >inline
operator--(int)nlohmann::detail::iter_impl< BasicJsonType >inline
operator--()nlohmann::detail::iter_impl< BasicJsonType >inline
operator--(int)nlohmann::detail::iter_impl< BasicJsonType >inline
operator--()nlohmann::detail::iter_impl< BasicJsonType >inline
operator-=(difference_type i)nlohmann::detail::iter_impl< BasicJsonType >inline
operator-=(difference_type i)nlohmann::detail::iter_impl< BasicJsonType >inline
operator->() constnlohmann::detail::iter_impl< BasicJsonType >inline
operator->() constnlohmann::detail::iter_impl< BasicJsonType >inline
operator<(const iter_impl &other) constnlohmann::detail::iter_impl< BasicJsonType >inline
operator<(const iter_impl &other) constnlohmann::detail::iter_impl< BasicJsonType >inline
operator<=(const iter_impl &other) constnlohmann::detail::iter_impl< BasicJsonType >inline
operator<=(const iter_impl &other) constnlohmann::detail::iter_impl< BasicJsonType >inline
operator=(const iter_impl< const BasicJsonType > &other) noexceptnlohmann::detail::iter_impl< BasicJsonType >inline
operator=(const iter_impl< typename std::remove_const< BasicJsonType >::type > &other) noexceptnlohmann::detail::iter_impl< BasicJsonType >inline
operator=(const iter_impl< const BasicJsonType > &other) noexceptnlohmann::detail::iter_impl< BasicJsonType >inline
operator=(const iter_impl< typename std::remove_const< BasicJsonType >::type > &other) noexceptnlohmann::detail::iter_impl< BasicJsonType >inline
operator==(const iter_impl &other) constnlohmann::detail::iter_impl< BasicJsonType >inline
operator==(const iter_impl &other) constnlohmann::detail::iter_impl< BasicJsonType >inline
operator>(const iter_impl &other) constnlohmann::detail::iter_impl< BasicJsonType >inline
operator>(const iter_impl &other) constnlohmann::detail::iter_impl< BasicJsonType >inline
operator>=(const iter_impl &other) constnlohmann::detail::iter_impl< BasicJsonType >inline
operator>=(const iter_impl &other) constnlohmann::detail::iter_impl< BasicJsonType >inline
operator[](difference_type n) constnlohmann::detail::iter_impl< BasicJsonType >inline
operator[](difference_type n) constnlohmann::detail::iter_impl< BasicJsonType >inline
pointer typedefnlohmann::detail::iter_impl< BasicJsonType >
pointer typedefnlohmann::detail::iter_impl< BasicJsonType >
reference typedefnlohmann::detail::iter_impl< BasicJsonType >
reference typedefnlohmann::detail::iter_impl< BasicJsonType >
value() constnlohmann::detail::iter_impl< BasicJsonType >inline
value() constnlohmann::detail::iter_impl< BasicJsonType >inline
value_type typedefnlohmann::detail::iter_impl< BasicJsonType >
value_type typedefnlohmann::detail::iter_impl< BasicJsonType >
- - - - diff --git a/help/html/classnlohmann_1_1detail_1_1iter__impl.html b/help/html/classnlohmann_1_1detail_1_1iter__impl.html deleted file mode 100644 index 2e3e0f6..0000000 --- a/help/html/classnlohmann_1_1detail_1_1iter__impl.html +++ /dev/null @@ -1,2232 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::iter_impl< BasicJsonType > Class Template Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
nlohmann::detail::iter_impl< BasicJsonType > Class Template Reference
-
-
- -

a template for a bidirectional iterator for the basic_json class This class implements a both iterators (iterator and const_iterator) for the basic_json class. - More...

- -

#include <json.hpp>

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Types

using iterator_category = std::bidirectional_iterator_tag
 
using value_type = typename BasicJsonType::value_type
 the type of the values when the iterator is dereferenced More...
 
using difference_type = typename BasicJsonType::difference_type
 a type to represent differences between iterators More...
 
using pointer = typename std::conditional< std::is_const< BasicJsonType >::value, typename BasicJsonType::const_pointer, typename BasicJsonType::pointer >::type
 defines a pointer to the type iterated over (value_type) More...
 
using reference = typename std::conditional< std::is_const< BasicJsonType >::value, typename BasicJsonType::const_reference, typename BasicJsonType::reference >::type
 defines a reference to the type iterated over (value_type) More...
 
using iterator_category = std::bidirectional_iterator_tag
 
using value_type = typename BasicJsonType::value_type
 the type of the values when the iterator is dereferenced More...
 
using difference_type = typename BasicJsonType::difference_type
 a type to represent differences between iterators More...
 
using pointer = typename std::conditional< std::is_const< BasicJsonType >::value, typename BasicJsonType::const_pointer, typename BasicJsonType::pointer >::type
 defines a pointer to the type iterated over (value_type) More...
 
using reference = typename std::conditional< std::is_const< BasicJsonType >::value, typename BasicJsonType::const_reference, typename BasicJsonType::reference >::type
 defines a reference to the type iterated over (value_type) More...
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 iter_impl ()=default
 default constructor More...
 
 iter_impl (pointer object) noexcept
 constructor for a given JSON instance More...
 
 iter_impl (const iter_impl< const BasicJsonType > &other) noexcept
 const copy constructor More...
 
iter_imploperator= (const iter_impl< const BasicJsonType > &other) noexcept
 converting assignment More...
 
 iter_impl (const iter_impl< typename std::remove_const< BasicJsonType >::type > &other) noexcept
 converting constructor More...
 
iter_imploperator= (const iter_impl< typename std::remove_const< BasicJsonType >::type > &other) noexcept
 converting assignment More...
 
reference operator* () const
 return a reference to the value pointed to by the iterator More...
 
pointer operator-> () const
 dereference the iterator More...
 
const iter_impl operator++ (int)
 post-increment (it++) More...
 
iter_imploperator++ ()
 pre-increment (++it) More...
 
const iter_impl operator-- (int)
 post-decrement (it–) More...
 
iter_imploperator-- ()
 pre-decrement (–it) More...
 
bool operator== (const iter_impl &other) const
 comparison: equal More...
 
bool operator!= (const iter_impl &other) const
 comparison: not equal More...
 
bool operator< (const iter_impl &other) const
 comparison: smaller More...
 
bool operator<= (const iter_impl &other) const
 comparison: less than or equal More...
 
bool operator> (const iter_impl &other) const
 comparison: greater than More...
 
bool operator>= (const iter_impl &other) const
 comparison: greater than or equal More...
 
iter_imploperator+= (difference_type i)
 add to iterator More...
 
iter_imploperator-= (difference_type i)
 subtract from iterator More...
 
iter_impl operator+ (difference_type i) const
 add to iterator More...
 
iter_impl operator- (difference_type i) const
 subtract from iterator More...
 
difference_type operator- (const iter_impl &other) const
 return difference More...
 
reference operator[] (difference_type n) const
 access to successor More...
 
const object_t::key_type & key () const
 return the key of an object iterator More...
 
reference value () const
 return the value of an iterator More...
 
 iter_impl ()=default
 default constructor More...
 
 iter_impl (pointer object) noexcept
 constructor for a given JSON instance More...
 
 iter_impl (const iter_impl< const BasicJsonType > &other) noexcept
 const copy constructor More...
 
iter_imploperator= (const iter_impl< const BasicJsonType > &other) noexcept
 converting assignment More...
 
 iter_impl (const iter_impl< typename std::remove_const< BasicJsonType >::type > &other) noexcept
 converting constructor More...
 
iter_imploperator= (const iter_impl< typename std::remove_const< BasicJsonType >::type > &other) noexcept
 converting assignment More...
 
reference operator* () const
 return a reference to the value pointed to by the iterator More...
 
pointer operator-> () const
 dereference the iterator More...
 
const iter_impl operator++ (int)
 post-increment (it++) More...
 
iter_imploperator++ ()
 pre-increment (++it) More...
 
const iter_impl operator-- (int)
 post-decrement (it–) More...
 
iter_imploperator-- ()
 pre-decrement (–it) More...
 
bool operator== (const iter_impl &other) const
 comparison: equal More...
 
bool operator!= (const iter_impl &other) const
 comparison: not equal More...
 
bool operator< (const iter_impl &other) const
 comparison: smaller More...
 
bool operator<= (const iter_impl &other) const
 comparison: less than or equal More...
 
bool operator> (const iter_impl &other) const
 comparison: greater than More...
 
bool operator>= (const iter_impl &other) const
 comparison: greater than or equal More...
 
iter_imploperator+= (difference_type i)
 add to iterator More...
 
iter_imploperator-= (difference_type i)
 subtract from iterator More...
 
iter_impl operator+ (difference_type i) const
 add to iterator More...
 
iter_impl operator- (difference_type i) const
 subtract from iterator More...
 
difference_type operator- (const iter_impl &other) const
 return difference More...
 
reference operator[] (difference_type n) const
 access to successor More...
 
const object_t::key_type & key () const
 return the key of an object iterator More...
 
reference value () const
 return the value of an iterator More...
 
- - - - - - - -

-Friends

iter_impl operator+ (difference_type i, const iter_impl &it)
 addition of distance and iterator More...
 
iter_impl operator+ (difference_type i, const iter_impl &it)
 addition of distance and iterator More...
 
-

Detailed Description

-

template<typename BasicJsonType>
-class nlohmann::detail::iter_impl< BasicJsonType >

- -

a template for a bidirectional iterator for the basic_json class This class implements a both iterators (iterator and const_iterator) for the basic_json class.

-
Note
An iterator is called initialized when a pointer to a JSON value has been set (e.g., by a constructor or a copy assignment). If the iterator is default-constructed, it is uninitialized and most methods are undefined. The library uses assertions to detect calls on uninitialized iterators.** @requirement The class satisfies the following concept requirements:
    -
  • BidirectionalIterator: The iterator that can be moved can be moved in both directions (i.e. incremented and decremented).
  • -
-
-
Since
version 1.0.0, simplified in version 2.0.9, change to bidirectional iterators in version 3.0.0 (see https://github.com/nlohmann/json/issues/593)
-

Member Typedef Documentation

- -

◆ difference_type [1/2]

- -
-
-
-template<typename BasicJsonType >
- - - - -
using nlohmann::detail::iter_impl< BasicJsonType >::difference_type = typename BasicJsonType::difference_type
-
- -

a type to represent differences between iterators

- -
-
- -

◆ difference_type [2/2]

- -
-
-
-template<typename BasicJsonType >
- - - - -
using nlohmann::detail::iter_impl< BasicJsonType >::difference_type = typename BasicJsonType::difference_type
-
- -

a type to represent differences between iterators

- -
-
- -

◆ iterator_category [1/2]

- -
-
-
-template<typename BasicJsonType >
- - - - -
using nlohmann::detail::iter_impl< BasicJsonType >::iterator_category = std::bidirectional_iterator_tag
-
-

The std::iterator class template (used as a base class to provide typedefs) is deprecated in C++17. The C++ Standard has never required user-defined iterators to derive from std::iterator. A user-defined iterator should provide publicly accessible typedefs named iterator_category, value_type, difference_type, pointer, and reference. Note that value_type is required to be non-const, even for constant iterators.

- -
-
- -

◆ iterator_category [2/2]

- -
-
-
-template<typename BasicJsonType >
- - - - -
using nlohmann::detail::iter_impl< BasicJsonType >::iterator_category = std::bidirectional_iterator_tag
-
-

The std::iterator class template (used as a base class to provide typedefs) is deprecated in C++17. The C++ Standard has never required user-defined iterators to derive from std::iterator. A user-defined iterator should provide publicly accessible typedefs named iterator_category, value_type, difference_type, pointer, and reference. Note that value_type is required to be non-const, even for constant iterators.

- -
-
- -

◆ pointer [1/2]

- -
-
-
-template<typename BasicJsonType >
- - - - -
using nlohmann::detail::iter_impl< BasicJsonType >::pointer = typename std::conditional<std::is_const<BasicJsonType>::value, typename BasicJsonType::const_pointer, typename BasicJsonType::pointer>::type
-
- -

defines a pointer to the type iterated over (value_type)

- -
-
- -

◆ pointer [2/2]

- -
-
-
-template<typename BasicJsonType >
- - - - -
using nlohmann::detail::iter_impl< BasicJsonType >::pointer = typename std::conditional<std::is_const<BasicJsonType>::value, typename BasicJsonType::const_pointer, typename BasicJsonType::pointer>::type
-
- -

defines a pointer to the type iterated over (value_type)

- -
-
- -

◆ reference [1/2]

- -
-
-
-template<typename BasicJsonType >
- - - - -
using nlohmann::detail::iter_impl< BasicJsonType >::reference = typename std::conditional<std::is_const<BasicJsonType>::value, typename BasicJsonType::const_reference, typename BasicJsonType::reference>::type
-
- -

defines a reference to the type iterated over (value_type)

- -
-
- -

◆ reference [2/2]

- -
-
-
-template<typename BasicJsonType >
- - - - -
using nlohmann::detail::iter_impl< BasicJsonType >::reference = typename std::conditional<std::is_const<BasicJsonType>::value, typename BasicJsonType::const_reference, typename BasicJsonType::reference>::type
-
- -

defines a reference to the type iterated over (value_type)

- -
-
- -

◆ value_type [1/2]

- -
-
-
-template<typename BasicJsonType >
- - - - -
using nlohmann::detail::iter_impl< BasicJsonType >::value_type = typename BasicJsonType::value_type
-
- -

the type of the values when the iterator is dereferenced

- -
-
- -

◆ value_type [2/2]

- -
-
-
-template<typename BasicJsonType >
- - - - -
using nlohmann::detail::iter_impl< BasicJsonType >::value_type = typename BasicJsonType::value_type
-
- -

the type of the values when the iterator is dereferenced

- -
-
-

Constructor & Destructor Documentation

- -

◆ iter_impl() [1/8]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - -
iter_impl< typename std::conditional< std::is_const< BasicJsonType >::value, typename std::remove_const< BasicJsonType >::type, const BasicJsonType >::type > ()
-
-default
-
- -

default constructor

-

allow basic_json to access private members

- -
-
- -

◆ iter_impl() [2/8]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
nlohmann::detail::iter_impl< BasicJsonType >::iter_impl (pointer object)
-
-inlineexplicitnoexcept
-
- -

constructor for a given JSON instance

-
Parameters
- - -
[in]objectpointer to a JSON object for this iterator
-
-
-
Precondition
object != nullptr
-
Postcondition
The iterator is initialized; i.e. m_object != nullptr.
- -
-
- -

◆ iter_impl() [3/8]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
nlohmann::detail::iter_impl< BasicJsonType >::iter_impl (const iter_impl< const BasicJsonType > & other)
-
-inlinenoexcept
-
- -

const copy constructor

-
Note
The conventional copy constructor and copy assignment are implicitly defined. Combined with the following converting constructor and assignment, they support: (1) copy from iterator to iterator, (2) copy from const iterator to const iterator, and (3) conversion from iterator to const iterator. However conversion from const iterator to iterator is not defined.
-
Parameters
- - -
[in]otherconst iterator to copy from
-
-
-
Note
This copy constructor had to be defined explicitly to circumvent a bug occurring on msvc v19.0 compiler (VS 2015) debug build. For more information refer to: https://github.com/nlohmann/json/issues/1608
- -
-
- -

◆ iter_impl() [4/8]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
nlohmann::detail::iter_impl< BasicJsonType >::iter_impl (const iter_impl< typename std::remove_const< BasicJsonType >::type > & other)
-
-inlinenoexcept
-
- -

converting constructor

-
Parameters
- - -
[in]othernon-const iterator to copy from
-
-
-
Note
It is not checked whether other is initialized.
- -
-
- -

◆ iter_impl() [5/8]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - -
nlohmann::detail::iter_impl< BasicJsonType >::iter_impl ()
-
-default
-
- -

default constructor

- -
-
- -

◆ iter_impl() [6/8]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
nlohmann::detail::iter_impl< BasicJsonType >::iter_impl (pointer object)
-
-inlineexplicitnoexcept
-
- -

constructor for a given JSON instance

-
Parameters
- - -
[in]objectpointer to a JSON object for this iterator
-
-
-
Precondition
object != nullptr
-
Postcondition
The iterator is initialized; i.e. m_object != nullptr.
- -
-
- -

◆ iter_impl() [7/8]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
nlohmann::detail::iter_impl< BasicJsonType >::iter_impl (const iter_impl< const BasicJsonType > & other)
-
-inlinenoexcept
-
- -

const copy constructor

-
Note
The conventional copy constructor and copy assignment are implicitly defined. Combined with the following converting constructor and assignment, they support: (1) copy from iterator to iterator, (2) copy from const iterator to const iterator, and (3) conversion from iterator to const iterator. However conversion from const iterator to iterator is not defined.
-
Parameters
- - -
[in]otherconst iterator to copy from
-
-
-
Note
This copy constructor had to be defined explicitly to circumvent a bug occurring on msvc v19.0 compiler (VS 2015) debug build. For more information refer to: https://github.com/nlohmann/json/issues/1608
- -
-
- -

◆ iter_impl() [8/8]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
nlohmann::detail::iter_impl< BasicJsonType >::iter_impl (const iter_impl< typename std::remove_const< BasicJsonType >::type > & other)
-
-inlinenoexcept
-
- -

converting constructor

-
Parameters
- - -
[in]othernon-const iterator to copy from
-
-
-
Note
It is not checked whether other is initialized.
- -
-
-

Member Function Documentation

- -

◆ key() [1/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - -
const object_t::key_type& nlohmann::detail::iter_impl< BasicJsonType >::key () const
-
-inline
-
- -

return the key of an object iterator

-
Precondition
The iterator is initialized; i.e. m_object != nullptr.
- -
-
- -

◆ key() [2/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - -
const object_t::key_type& nlohmann::detail::iter_impl< BasicJsonType >::key () const
-
-inline
-
- -

return the key of an object iterator

-
Precondition
The iterator is initialized; i.e. m_object != nullptr.
- -
-
- -

◆ operator!=() [1/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
bool nlohmann::detail::iter_impl< BasicJsonType >::operator!= (const iter_impl< BasicJsonType > & other) const
-
-inline
-
- -

comparison: not equal

-
Precondition
The iterator is initialized; i.e. m_object != nullptr.
- -
-
- -

◆ operator!=() [2/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
bool nlohmann::detail::iter_impl< BasicJsonType >::operator!= (const iter_impl< BasicJsonType > & other) const
-
-inline
-
- -

comparison: not equal

-
Precondition
The iterator is initialized; i.e. m_object != nullptr.
- -
-
- -

◆ operator*() [1/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - -
reference nlohmann::detail::iter_impl< BasicJsonType >::operator* () const
-
-inline
-
- -

return a reference to the value pointed to by the iterator

-
Precondition
The iterator is initialized; i.e. m_object != nullptr.
- -
-
- -

◆ operator*() [2/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - -
reference nlohmann::detail::iter_impl< BasicJsonType >::operator* () const
-
-inline
-
- -

return a reference to the value pointed to by the iterator

-
Precondition
The iterator is initialized; i.e. m_object != nullptr.
- -
-
- -

◆ operator+() [1/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
iter_impl nlohmann::detail::iter_impl< BasicJsonType >::operator+ (difference_type i) const
-
-inline
-
- -

add to iterator

-
Precondition
The iterator is initialized; i.e. m_object != nullptr.
- -
-
- -

◆ operator+() [2/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
iter_impl nlohmann::detail::iter_impl< BasicJsonType >::operator+ (difference_type i) const
-
-inline
-
- -

add to iterator

-
Precondition
The iterator is initialized; i.e. m_object != nullptr.
- -
-
- -

◆ operator++() [1/4]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - -
iter_impl& nlohmann::detail::iter_impl< BasicJsonType >::operator++ ()
-
-inline
-
- -

pre-increment (++it)

-
Precondition
The iterator is initialized; i.e. m_object != nullptr.
- -
-
- -

◆ operator++() [2/4]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - -
iter_impl& nlohmann::detail::iter_impl< BasicJsonType >::operator++ ()
-
-inline
-
- -

pre-increment (++it)

-
Precondition
The iterator is initialized; i.e. m_object != nullptr.
- -
-
- -

◆ operator++() [3/4]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
const iter_impl nlohmann::detail::iter_impl< BasicJsonType >::operator++ (int )
-
-inline
-
- -

post-increment (it++)

-
Precondition
The iterator is initialized; i.e. m_object != nullptr.
- -
-
- -

◆ operator++() [4/4]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
const iter_impl nlohmann::detail::iter_impl< BasicJsonType >::operator++ (int )
-
-inline
-
- -

post-increment (it++)

-
Precondition
The iterator is initialized; i.e. m_object != nullptr.
- -
-
- -

◆ operator+=() [1/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
iter_impl& nlohmann::detail::iter_impl< BasicJsonType >::operator+= (difference_type i)
-
-inline
-
- -

add to iterator

-
Precondition
The iterator is initialized; i.e. m_object != nullptr.
- -
-
- -

◆ operator+=() [2/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
iter_impl& nlohmann::detail::iter_impl< BasicJsonType >::operator+= (difference_type i)
-
-inline
-
- -

add to iterator

-
Precondition
The iterator is initialized; i.e. m_object != nullptr.
- -
-
- -

◆ operator-() [1/4]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
difference_type nlohmann::detail::iter_impl< BasicJsonType >::operator- (const iter_impl< BasicJsonType > & other) const
-
-inline
-
- -

return difference

-
Precondition
The iterator is initialized; i.e. m_object != nullptr.
- -
-
- -

◆ operator-() [2/4]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
difference_type nlohmann::detail::iter_impl< BasicJsonType >::operator- (const iter_impl< BasicJsonType > & other) const
-
-inline
-
- -

return difference

-
Precondition
The iterator is initialized; i.e. m_object != nullptr.
- -
-
- -

◆ operator-() [3/4]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
iter_impl nlohmann::detail::iter_impl< BasicJsonType >::operator- (difference_type i) const
-
-inline
-
- -

subtract from iterator

-
Precondition
The iterator is initialized; i.e. m_object != nullptr.
- -
-
- -

◆ operator-() [4/4]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
iter_impl nlohmann::detail::iter_impl< BasicJsonType >::operator- (difference_type i) const
-
-inline
-
- -

subtract from iterator

-
Precondition
The iterator is initialized; i.e. m_object != nullptr.
- -
-
- -

◆ operator--() [1/4]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - -
iter_impl& nlohmann::detail::iter_impl< BasicJsonType >::operator-- ()
-
-inline
-
- -

pre-decrement (–it)

-
Precondition
The iterator is initialized; i.e. m_object != nullptr.
- -
-
- -

◆ operator--() [2/4]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - -
iter_impl& nlohmann::detail::iter_impl< BasicJsonType >::operator-- ()
-
-inline
-
- -

pre-decrement (–it)

-
Precondition
The iterator is initialized; i.e. m_object != nullptr.
- -
-
- -

◆ operator--() [3/4]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
const iter_impl nlohmann::detail::iter_impl< BasicJsonType >::operator-- (int )
-
-inline
-
- -

post-decrement (it–)

-
Precondition
The iterator is initialized; i.e. m_object != nullptr.
- -
-
- -

◆ operator--() [4/4]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
const iter_impl nlohmann::detail::iter_impl< BasicJsonType >::operator-- (int )
-
-inline
-
- -

post-decrement (it–)

-
Precondition
The iterator is initialized; i.e. m_object != nullptr.
- -
-
- -

◆ operator-=() [1/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
iter_impl& nlohmann::detail::iter_impl< BasicJsonType >::operator-= (difference_type i)
-
-inline
-
- -

subtract from iterator

-
Precondition
The iterator is initialized; i.e. m_object != nullptr.
- -
-
- -

◆ operator-=() [2/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
iter_impl& nlohmann::detail::iter_impl< BasicJsonType >::operator-= (difference_type i)
-
-inline
-
- -

subtract from iterator

-
Precondition
The iterator is initialized; i.e. m_object != nullptr.
- -
-
- -

◆ operator->() [1/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - -
pointer nlohmann::detail::iter_impl< BasicJsonType >::operator-> () const
-
-inline
-
- -

dereference the iterator

-
Precondition
The iterator is initialized; i.e. m_object != nullptr.
- -
-
- -

◆ operator->() [2/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - -
pointer nlohmann::detail::iter_impl< BasicJsonType >::operator-> () const
-
-inline
-
- -

dereference the iterator

-
Precondition
The iterator is initialized; i.e. m_object != nullptr.
- -
-
- -

◆ operator<() [1/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
bool nlohmann::detail::iter_impl< BasicJsonType >::operator< (const iter_impl< BasicJsonType > & other) const
-
-inline
-
- -

comparison: smaller

-
Precondition
The iterator is initialized; i.e. m_object != nullptr.
- -
-
- -

◆ operator<() [2/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
bool nlohmann::detail::iter_impl< BasicJsonType >::operator< (const iter_impl< BasicJsonType > & other) const
-
-inline
-
- -

comparison: smaller

-
Precondition
The iterator is initialized; i.e. m_object != nullptr.
- -
-
- -

◆ operator<=() [1/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
bool nlohmann::detail::iter_impl< BasicJsonType >::operator<= (const iter_impl< BasicJsonType > & other) const
-
-inline
-
- -

comparison: less than or equal

-
Precondition
The iterator is initialized; i.e. m_object != nullptr.
- -
-
- -

◆ operator<=() [2/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
bool nlohmann::detail::iter_impl< BasicJsonType >::operator<= (const iter_impl< BasicJsonType > & other) const
-
-inline
-
- -

comparison: less than or equal

-
Precondition
The iterator is initialized; i.e. m_object != nullptr.
- -
-
- -

◆ operator=() [1/4]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
iter_impl& nlohmann::detail::iter_impl< BasicJsonType >::operator= (const iter_impl< const BasicJsonType > & other)
-
-inlinenoexcept
-
- -

converting assignment

-
Parameters
- - -
[in]otherconst iterator to copy from
-
-
-
Returns
const/non-const iterator
-
Note
It is not checked whether other is initialized.
- -
-
- -

◆ operator=() [2/4]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
iter_impl& nlohmann::detail::iter_impl< BasicJsonType >::operator= (const iter_impl< const BasicJsonType > & other)
-
-inlinenoexcept
-
- -

converting assignment

-
Parameters
- - -
[in]otherconst iterator to copy from
-
-
-
Returns
const/non-const iterator
-
Note
It is not checked whether other is initialized.
- -
-
- -

◆ operator=() [3/4]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
iter_impl& nlohmann::detail::iter_impl< BasicJsonType >::operator= (const iter_impl< typename std::remove_const< BasicJsonType >::type > & other)
-
-inlinenoexcept
-
- -

converting assignment

-
Parameters
- - -
[in]othernon-const iterator to copy from
-
-
-
Returns
const/non-const iterator
-
Note
It is not checked whether other is initialized.
- -
-
- -

◆ operator=() [4/4]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
iter_impl& nlohmann::detail::iter_impl< BasicJsonType >::operator= (const iter_impl< typename std::remove_const< BasicJsonType >::type > & other)
-
-inlinenoexcept
-
- -

converting assignment

-
Parameters
- - -
[in]othernon-const iterator to copy from
-
-
-
Returns
const/non-const iterator
-
Note
It is not checked whether other is initialized.
- -
-
- -

◆ operator==() [1/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
bool nlohmann::detail::iter_impl< BasicJsonType >::operator== (const iter_impl< BasicJsonType > & other) const
-
-inline
-
- -

comparison: equal

-
Precondition
The iterator is initialized; i.e. m_object != nullptr.
- -
-
- -

◆ operator==() [2/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
bool nlohmann::detail::iter_impl< BasicJsonType >::operator== (const iter_impl< BasicJsonType > & other) const
-
-inline
-
- -

comparison: equal

-
Precondition
The iterator is initialized; i.e. m_object != nullptr.
- -
-
- -

◆ operator>() [1/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
bool nlohmann::detail::iter_impl< BasicJsonType >::operator> (const iter_impl< BasicJsonType > & other) const
-
-inline
-
- -

comparison: greater than

-
Precondition
The iterator is initialized; i.e. m_object != nullptr.
- -
-
- -

◆ operator>() [2/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
bool nlohmann::detail::iter_impl< BasicJsonType >::operator> (const iter_impl< BasicJsonType > & other) const
-
-inline
-
- -

comparison: greater than

-
Precondition
The iterator is initialized; i.e. m_object != nullptr.
- -
-
- -

◆ operator>=() [1/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
bool nlohmann::detail::iter_impl< BasicJsonType >::operator>= (const iter_impl< BasicJsonType > & other) const
-
-inline
-
- -

comparison: greater than or equal

-
Precondition
The iterator is initialized; i.e. m_object != nullptr.
- -
-
- -

◆ operator>=() [2/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
bool nlohmann::detail::iter_impl< BasicJsonType >::operator>= (const iter_impl< BasicJsonType > & other) const
-
-inline
-
- -

comparison: greater than or equal

-
Precondition
The iterator is initialized; i.e. m_object != nullptr.
- -
-
- -

◆ operator[]() [1/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
reference nlohmann::detail::iter_impl< BasicJsonType >::operator[] (difference_type n) const
-
-inline
-
- -

access to successor

-
Precondition
The iterator is initialized; i.e. m_object != nullptr.
- -
-
- -

◆ operator[]() [2/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
reference nlohmann::detail::iter_impl< BasicJsonType >::operator[] (difference_type n) const
-
-inline
-
- -

access to successor

-
Precondition
The iterator is initialized; i.e. m_object != nullptr.
- -
-
- -

◆ value() [1/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - -
reference nlohmann::detail::iter_impl< BasicJsonType >::value () const
-
-inline
-
- -

return the value of an iterator

-
Precondition
The iterator is initialized; i.e. m_object != nullptr.
- -
-
- -

◆ value() [2/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - -
reference nlohmann::detail::iter_impl< BasicJsonType >::value () const
-
-inline
-
- -

return the value of an iterator

-
Precondition
The iterator is initialized; i.e. m_object != nullptr.
- -
-
-

Friends And Related Function Documentation

- -

◆ operator+ [1/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - - - - - - - - - - - -
iter_impl operator+ (difference_type i,
const iter_impl< BasicJsonType > & it 
)
-
-friend
-
- -

addition of distance and iterator

-
Precondition
The iterator is initialized; i.e. m_object != nullptr.
- -
-
- -

◆ operator+ [2/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - - - - - - - - - - - -
iter_impl operator+ (difference_type i,
const iter_impl< BasicJsonType > & it 
)
-
-friend
-
- -

addition of distance and iterator

-
Precondition
The iterator is initialized; i.e. m_object != nullptr.
- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/help/html/classnlohmann_1_1detail_1_1iteration__proxy-members.html b/help/html/classnlohmann_1_1detail_1_1iteration__proxy-members.html deleted file mode 100644 index 13405cb..0000000 --- a/help/html/classnlohmann_1_1detail_1_1iteration__proxy-members.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
nlohmann::detail::iteration_proxy< IteratorType > Member List
-
-
- -

This is the complete list of members for nlohmann::detail::iteration_proxy< IteratorType >, including all inherited members.

- - - - - - - -
begin() noexceptnlohmann::detail::iteration_proxy< IteratorType >inline
begin() noexceptnlohmann::detail::iteration_proxy< IteratorType >inline
end() noexceptnlohmann::detail::iteration_proxy< IteratorType >inline
end() noexceptnlohmann::detail::iteration_proxy< IteratorType >inline
iteration_proxy(typename IteratorType::reference cont) noexceptnlohmann::detail::iteration_proxy< IteratorType >inlineexplicit
iteration_proxy(typename IteratorType::reference cont) noexceptnlohmann::detail::iteration_proxy< IteratorType >inlineexplicit
- - - - diff --git a/help/html/classnlohmann_1_1detail_1_1iteration__proxy.html b/help/html/classnlohmann_1_1detail_1_1iteration__proxy.html deleted file mode 100644 index 3234aab..0000000 --- a/help/html/classnlohmann_1_1detail_1_1iteration__proxy.html +++ /dev/null @@ -1,296 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::iteration_proxy< IteratorType > Class Template Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
nlohmann::detail::iteration_proxy< IteratorType > Class Template Reference
-
-
- -

proxy class for the items() function - More...

- -

#include <json.hpp>

- - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 iteration_proxy (typename IteratorType::reference cont) noexcept
 construct iteration proxy from a container More...
 
iteration_proxy_value< IteratorType > begin () noexcept
 return iterator begin (needed for range-based for) More...
 
iteration_proxy_value< IteratorType > end () noexcept
 return iterator end (needed for range-based for) More...
 
 iteration_proxy (typename IteratorType::reference cont) noexcept
 construct iteration proxy from a container More...
 
iteration_proxy_value< IteratorType > begin () noexcept
 return iterator begin (needed for range-based for) More...
 
iteration_proxy_value< IteratorType > end () noexcept
 return iterator end (needed for range-based for) More...
 
-

Detailed Description

-

template<typename IteratorType>
-class nlohmann::detail::iteration_proxy< IteratorType >

- -

proxy class for the items() function

-

Constructor & Destructor Documentation

- -

◆ iteration_proxy() [1/2]

- -
-
-
-template<typename IteratorType >
- - - - - -
- - - - - - - - -
nlohmann::detail::iteration_proxy< IteratorType >::iteration_proxy (typename IteratorType::reference cont)
-
-inlineexplicitnoexcept
-
- -

construct iteration proxy from a container

- -
-
- -

◆ iteration_proxy() [2/2]

- -
-
-
-template<typename IteratorType >
- - - - - -
- - - - - - - - -
nlohmann::detail::iteration_proxy< IteratorType >::iteration_proxy (typename IteratorType::reference cont)
-
-inlineexplicitnoexcept
-
- -

construct iteration proxy from a container

- -
-
-

Member Function Documentation

- -

◆ begin() [1/2]

- -
-
-
-template<typename IteratorType >
- - - - - -
- - - - - - - -
iteration_proxy_value<IteratorType> nlohmann::detail::iteration_proxy< IteratorType >::begin ()
-
-inlinenoexcept
-
- -

return iterator begin (needed for range-based for)

- -
-
- -

◆ begin() [2/2]

- -
-
-
-template<typename IteratorType >
- - - - - -
- - - - - - - -
iteration_proxy_value<IteratorType> nlohmann::detail::iteration_proxy< IteratorType >::begin ()
-
-inlinenoexcept
-
- -

return iterator begin (needed for range-based for)

- -
-
- -

◆ end() [1/2]

- -
-
-
-template<typename IteratorType >
- - - - - -
- - - - - - - -
iteration_proxy_value<IteratorType> nlohmann::detail::iteration_proxy< IteratorType >::end ()
-
-inlinenoexcept
-
- -

return iterator end (needed for range-based for)

- -
-
- -

◆ end() [2/2]

- -
-
-
-template<typename IteratorType >
- - - - - -
- - - - - - - -
iteration_proxy_value<IteratorType> nlohmann::detail::iteration_proxy< IteratorType >::end ()
-
-inlinenoexcept
-
- -

return iterator end (needed for range-based for)

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/help/html/classnlohmann_1_1detail_1_1iteration__proxy__value-members.html b/help/html/classnlohmann_1_1detail_1_1iteration__proxy__value-members.html deleted file mode 100644 index 6b63ff0..0000000 --- a/help/html/classnlohmann_1_1detail_1_1iteration__proxy__value-members.html +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
nlohmann::detail::iteration_proxy_value< IteratorType > Member List
-
-
- -

This is the complete list of members for nlohmann::detail::iteration_proxy_value< IteratorType >, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - -
difference_type typedefnlohmann::detail::iteration_proxy_value< IteratorType >
difference_type typedefnlohmann::detail::iteration_proxy_value< IteratorType >
iteration_proxy_value(IteratorType it) noexceptnlohmann::detail::iteration_proxy_value< IteratorType >inlineexplicit
iteration_proxy_value(IteratorType it) noexceptnlohmann::detail::iteration_proxy_value< IteratorType >inlineexplicit
iterator_category typedefnlohmann::detail::iteration_proxy_value< IteratorType >
iterator_category typedefnlohmann::detail::iteration_proxy_value< IteratorType >
key() constnlohmann::detail::iteration_proxy_value< IteratorType >inline
key() constnlohmann::detail::iteration_proxy_value< IteratorType >inline
operator!=(const iteration_proxy_value &o) constnlohmann::detail::iteration_proxy_value< IteratorType >inline
operator!=(const iteration_proxy_value &o) constnlohmann::detail::iteration_proxy_value< IteratorType >inline
operator*()nlohmann::detail::iteration_proxy_value< IteratorType >inline
operator*()nlohmann::detail::iteration_proxy_value< IteratorType >inline
operator++()nlohmann::detail::iteration_proxy_value< IteratorType >inline
operator++()nlohmann::detail::iteration_proxy_value< IteratorType >inline
operator==(const iteration_proxy_value &o) constnlohmann::detail::iteration_proxy_value< IteratorType >inline
operator==(const iteration_proxy_value &o) constnlohmann::detail::iteration_proxy_value< IteratorType >inline
pointer typedefnlohmann::detail::iteration_proxy_value< IteratorType >
pointer typedefnlohmann::detail::iteration_proxy_value< IteratorType >
reference typedefnlohmann::detail::iteration_proxy_value< IteratorType >
reference typedefnlohmann::detail::iteration_proxy_value< IteratorType >
string_type typedefnlohmann::detail::iteration_proxy_value< IteratorType >
string_type typedefnlohmann::detail::iteration_proxy_value< IteratorType >
value() constnlohmann::detail::iteration_proxy_value< IteratorType >inline
value() constnlohmann::detail::iteration_proxy_value< IteratorType >inline
value_type typedefnlohmann::detail::iteration_proxy_value< IteratorType >
value_type typedefnlohmann::detail::iteration_proxy_value< IteratorType >
- - - - diff --git a/help/html/classnlohmann_1_1detail_1_1iteration__proxy__value.html b/help/html/classnlohmann_1_1detail_1_1iteration__proxy__value.html deleted file mode 100644 index 434a89e..0000000 --- a/help/html/classnlohmann_1_1detail_1_1iteration__proxy__value.html +++ /dev/null @@ -1,763 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::iteration_proxy_value< IteratorType > Class Template Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
nlohmann::detail::iteration_proxy_value< IteratorType > Class Template Reference
-
-
- -

#include <json.hpp>

- - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Types

using difference_type = std::ptrdiff_t
 
using value_type = iteration_proxy_value
 
using pointer = value_type *
 
using reference = value_type &
 
using iterator_category = std::input_iterator_tag
 
using string_type = typename std::remove_cv< typename std::remove_reference< decltype(std::declval< IteratorType >().key()) >::type >::type
 
using difference_type = std::ptrdiff_t
 
using value_type = iteration_proxy_value
 
using pointer = value_type *
 
using reference = value_type &
 
using iterator_category = std::input_iterator_tag
 
using string_type = typename std::remove_cv< typename std::remove_reference< decltype(std::declval< IteratorType >().key()) >::type >::type
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 iteration_proxy_value (IteratorType it) noexcept
 
iteration_proxy_valueoperator* ()
 dereference operator (needed for range-based for) More...
 
iteration_proxy_valueoperator++ ()
 increment operator (needed for range-based for) More...
 
bool operator== (const iteration_proxy_value &o) const
 equality operator (needed for InputIterator) More...
 
bool operator!= (const iteration_proxy_value &o) const
 inequality operator (needed for range-based for) More...
 
const string_typekey () const
 return key of the iterator More...
 
IteratorType::reference value () const
 return value of the iterator More...
 
 iteration_proxy_value (IteratorType it) noexcept
 
iteration_proxy_valueoperator* ()
 dereference operator (needed for range-based for) More...
 
iteration_proxy_valueoperator++ ()
 increment operator (needed for range-based for) More...
 
bool operator== (const iteration_proxy_value &o) const
 equality operator (needed for InputIterator) More...
 
bool operator!= (const iteration_proxy_value &o) const
 inequality operator (needed for range-based for) More...
 
const string_typekey () const
 return key of the iterator More...
 
IteratorType::reference value () const
 return value of the iterator More...
 
-

Member Typedef Documentation

- -

◆ difference_type [1/2]

- -
-
-
-template<typename IteratorType >
- - - - -
using nlohmann::detail::iteration_proxy_value< IteratorType >::difference_type = std::ptrdiff_t
-
- -
-
- -

◆ difference_type [2/2]

- -
-
-
-template<typename IteratorType >
- - - - -
using nlohmann::detail::iteration_proxy_value< IteratorType >::difference_type = std::ptrdiff_t
-
- -
-
- -

◆ iterator_category [1/2]

- -
-
-
-template<typename IteratorType >
- - - - -
using nlohmann::detail::iteration_proxy_value< IteratorType >::iterator_category = std::input_iterator_tag
-
- -
-
- -

◆ iterator_category [2/2]

- -
-
-
-template<typename IteratorType >
- - - - -
using nlohmann::detail::iteration_proxy_value< IteratorType >::iterator_category = std::input_iterator_tag
-
- -
-
- -

◆ pointer [1/2]

- -
-
-
-template<typename IteratorType >
- - - - -
using nlohmann::detail::iteration_proxy_value< IteratorType >::pointer = value_type *
-
- -
-
- -

◆ pointer [2/2]

- -
-
-
-template<typename IteratorType >
- - - - -
using nlohmann::detail::iteration_proxy_value< IteratorType >::pointer = value_type *
-
- -
-
- -

◆ reference [1/2]

- -
-
-
-template<typename IteratorType >
- - - - -
using nlohmann::detail::iteration_proxy_value< IteratorType >::reference = value_type &
-
- -
-
- -

◆ reference [2/2]

- -
-
-
-template<typename IteratorType >
- - - - -
using nlohmann::detail::iteration_proxy_value< IteratorType >::reference = value_type &
-
- -
-
- -

◆ string_type [1/2]

- -
-
-
-template<typename IteratorType >
- - - - -
using nlohmann::detail::iteration_proxy_value< IteratorType >::string_type = typename std::remove_cv< typename std::remove_reference<decltype( std::declval<IteratorType>().key() ) >::type >::type
-
- -
-
- -

◆ string_type [2/2]

- -
-
-
-template<typename IteratorType >
- - - - -
using nlohmann::detail::iteration_proxy_value< IteratorType >::string_type = typename std::remove_cv< typename std::remove_reference<decltype( std::declval<IteratorType>().key() ) >::type >::type
-
- -
-
- -

◆ value_type [1/2]

- -
-
-
-template<typename IteratorType >
- - - - -
using nlohmann::detail::iteration_proxy_value< IteratorType >::value_type = iteration_proxy_value
-
- -
-
- -

◆ value_type [2/2]

- -
-
-
-template<typename IteratorType >
- - - - -
using nlohmann::detail::iteration_proxy_value< IteratorType >::value_type = iteration_proxy_value
-
- -
-
-

Constructor & Destructor Documentation

- -

◆ iteration_proxy_value() [1/2]

- -
-
-
-template<typename IteratorType >
- - - - - -
- - - - - - - - -
nlohmann::detail::iteration_proxy_value< IteratorType >::iteration_proxy_value (IteratorType it)
-
-inlineexplicitnoexcept
-
- -
-
- -

◆ iteration_proxy_value() [2/2]

- -
-
-
-template<typename IteratorType >
- - - - - -
- - - - - - - - -
nlohmann::detail::iteration_proxy_value< IteratorType >::iteration_proxy_value (IteratorType it)
-
-inlineexplicitnoexcept
-
- -
-
-

Member Function Documentation

- -

◆ key() [1/2]

- -
-
-
-template<typename IteratorType >
- - - - - -
- - - - - - - -
const string_type& nlohmann::detail::iteration_proxy_value< IteratorType >::key () const
-
-inline
-
- -

return key of the iterator

- -
-
- -

◆ key() [2/2]

- -
-
-
-template<typename IteratorType >
- - - - - -
- - - - - - - -
const string_type& nlohmann::detail::iteration_proxy_value< IteratorType >::key () const
-
-inline
-
- -

return key of the iterator

- -
-
- -

◆ operator!=() [1/2]

- -
-
-
-template<typename IteratorType >
- - - - - -
- - - - - - - - -
bool nlohmann::detail::iteration_proxy_value< IteratorType >::operator!= (const iteration_proxy_value< IteratorType > & o) const
-
-inline
-
- -

inequality operator (needed for range-based for)

- -
-
- -

◆ operator!=() [2/2]

- -
-
-
-template<typename IteratorType >
- - - - - -
- - - - - - - - -
bool nlohmann::detail::iteration_proxy_value< IteratorType >::operator!= (const iteration_proxy_value< IteratorType > & o) const
-
-inline
-
- -

inequality operator (needed for range-based for)

- -
-
- -

◆ operator*() [1/2]

- -
-
-
-template<typename IteratorType >
- - - - - -
- - - - - - - -
iteration_proxy_value& nlohmann::detail::iteration_proxy_value< IteratorType >::operator* ()
-
-inline
-
- -

dereference operator (needed for range-based for)

- -
-
- -

◆ operator*() [2/2]

- -
-
-
-template<typename IteratorType >
- - - - - -
- - - - - - - -
iteration_proxy_value& nlohmann::detail::iteration_proxy_value< IteratorType >::operator* ()
-
-inline
-
- -

dereference operator (needed for range-based for)

- -
-
- -

◆ operator++() [1/2]

- -
-
-
-template<typename IteratorType >
- - - - - -
- - - - - - - -
iteration_proxy_value& nlohmann::detail::iteration_proxy_value< IteratorType >::operator++ ()
-
-inline
-
- -

increment operator (needed for range-based for)

- -
-
- -

◆ operator++() [2/2]

- -
-
-
-template<typename IteratorType >
- - - - - -
- - - - - - - -
iteration_proxy_value& nlohmann::detail::iteration_proxy_value< IteratorType >::operator++ ()
-
-inline
-
- -

increment operator (needed for range-based for)

- -
-
- -

◆ operator==() [1/2]

- -
-
-
-template<typename IteratorType >
- - - - - -
- - - - - - - - -
bool nlohmann::detail::iteration_proxy_value< IteratorType >::operator== (const iteration_proxy_value< IteratorType > & o) const
-
-inline
-
- -

equality operator (needed for InputIterator)

- -
-
- -

◆ operator==() [2/2]

- -
-
-
-template<typename IteratorType >
- - - - - -
- - - - - - - - -
bool nlohmann::detail::iteration_proxy_value< IteratorType >::operator== (const iteration_proxy_value< IteratorType > & o) const
-
-inline
-
- -

equality operator (needed for InputIterator)

- -
-
- -

◆ value() [1/2]

- -
-
-
-template<typename IteratorType >
- - - - - -
- - - - - - - -
IteratorType::reference nlohmann::detail::iteration_proxy_value< IteratorType >::value () const
-
-inline
-
- -

return value of the iterator

- -
-
- -

◆ value() [2/2]

- -
-
-
-template<typename IteratorType >
- - - - - -
- - - - - - - -
IteratorType::reference nlohmann::detail::iteration_proxy_value< IteratorType >::value () const
-
-inline
-
- -

return value of the iterator

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/help/html/classnlohmann_1_1detail_1_1iterator__input__adapter-members.html b/help/html/classnlohmann_1_1detail_1_1iterator__input__adapter-members.html deleted file mode 100644 index 846929a..0000000 --- a/help/html/classnlohmann_1_1detail_1_1iterator__input__adapter-members.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
nlohmann::detail::iterator_input_adapter< IteratorType > Member List
-
-
- -

This is the complete list of members for nlohmann::detail::iterator_input_adapter< IteratorType >, including all inherited members.

- - - - - -
char_type typedefnlohmann::detail::iterator_input_adapter< IteratorType >
get_character()nlohmann::detail::iterator_input_adapter< IteratorType >inline
iterator_input_adapter(IteratorType first, IteratorType last)nlohmann::detail::iterator_input_adapter< IteratorType >inline
wide_string_input_helpernlohmann::detail::iterator_input_adapter< IteratorType >friend
- - - - diff --git a/help/html/classnlohmann_1_1detail_1_1iterator__input__adapter.html b/help/html/classnlohmann_1_1detail_1_1iterator__input__adapter.html deleted file mode 100644 index e401b3c..0000000 --- a/help/html/classnlohmann_1_1detail_1_1iterator__input__adapter.html +++ /dev/null @@ -1,220 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::iterator_input_adapter< IteratorType > Class Template Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
nlohmann::detail::iterator_input_adapter< IteratorType > Class Template Reference
-
-
- -

#include <json.hpp>

- - - - -

-Public Types

using char_type = typename std::iterator_traits< IteratorType >::value_type
 
- - - - - -

-Public Member Functions

 iterator_input_adapter (IteratorType first, IteratorType last)
 
std::char_traits< char_type >::int_type get_character ()
 
- - - - -

-Friends

template<typename BaseInputAdapter , size_t T>
struct wide_string_input_helper
 
-

Member Typedef Documentation

- -

◆ char_type

- -
-
-
-template<typename IteratorType >
- - - - -
using nlohmann::detail::iterator_input_adapter< IteratorType >::char_type = typename std::iterator_traits<IteratorType>::value_type
-
- -
-
-

Constructor & Destructor Documentation

- -

◆ iterator_input_adapter()

- -
-
-
-template<typename IteratorType >
- - - - - -
- - - - - - - - - - - - - - - - - - -
nlohmann::detail::iterator_input_adapter< IteratorType >::iterator_input_adapter (IteratorType first,
IteratorType last 
)
-
-inline
-
- -
-
-

Member Function Documentation

- -

◆ get_character()

- -
-
-
-template<typename IteratorType >
- - - - - -
- - - - - - - -
std::char_traits<char_type>::int_type nlohmann::detail::iterator_input_adapter< IteratorType >::get_character ()
-
-inline
-
- -
-
-

Friends And Related Function Documentation

- -

◆ wide_string_input_helper

- -
-
-
-template<typename IteratorType >
-
-template<typename BaseInputAdapter , size_t T>
- - - - - -
- - - - -
friend struct wide_string_input_helper
-
-friend
-
- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/help/html/classnlohmann_1_1detail_1_1json__ref-members.html b/help/html/classnlohmann_1_1detail_1_1json__ref-members.html deleted file mode 100644 index fb50a65..0000000 --- a/help/html/classnlohmann_1_1detail_1_1json__ref-members.html +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
nlohmann::detail::json_ref< BasicJsonType > Member List
-
-
- -

This is the complete list of members for nlohmann::detail::json_ref< BasicJsonType >, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - -
json_ref(value_type &&value)nlohmann::detail::json_ref< BasicJsonType >inline
json_ref(const value_type &value)nlohmann::detail::json_ref< BasicJsonType >inline
json_ref(std::initializer_list< json_ref > init)nlohmann::detail::json_ref< BasicJsonType >inline
json_ref(Args &&... args)nlohmann::detail::json_ref< BasicJsonType >inline
json_ref(json_ref &&)=defaultnlohmann::detail::json_ref< BasicJsonType >
json_ref(const json_ref &)=deletenlohmann::detail::json_ref< BasicJsonType >
json_ref(value_type &&value)nlohmann::detail::json_ref< BasicJsonType >inline
json_ref(const value_type &value)nlohmann::detail::json_ref< BasicJsonType >inline
json_ref(std::initializer_list< json_ref > init)nlohmann::detail::json_ref< BasicJsonType >inline
json_ref(Args &&... args)nlohmann::detail::json_ref< BasicJsonType >inline
json_ref(json_ref &&)=defaultnlohmann::detail::json_ref< BasicJsonType >
json_ref(const json_ref &)=deletenlohmann::detail::json_ref< BasicJsonType >
moved_or_copied() constnlohmann::detail::json_ref< BasicJsonType >inline
moved_or_copied() constnlohmann::detail::json_ref< BasicJsonType >inline
operator*() constnlohmann::detail::json_ref< BasicJsonType >inline
operator*() constnlohmann::detail::json_ref< BasicJsonType >inline
operator->() constnlohmann::detail::json_ref< BasicJsonType >inline
operator->() constnlohmann::detail::json_ref< BasicJsonType >inline
operator=(const json_ref &)=deletenlohmann::detail::json_ref< BasicJsonType >
operator=(json_ref &&)=deletenlohmann::detail::json_ref< BasicJsonType >
operator=(const json_ref &)=deletenlohmann::detail::json_ref< BasicJsonType >
operator=(json_ref &&)=deletenlohmann::detail::json_ref< BasicJsonType >
value_type typedefnlohmann::detail::json_ref< BasicJsonType >
value_type typedefnlohmann::detail::json_ref< BasicJsonType >
~json_ref()=defaultnlohmann::detail::json_ref< BasicJsonType >
~json_ref()=defaultnlohmann::detail::json_ref< BasicJsonType >
- - - - diff --git a/help/html/classnlohmann_1_1detail_1_1json__ref.html b/help/html/classnlohmann_1_1detail_1_1json__ref.html deleted file mode 100644 index 40b45c4..0000000 --- a/help/html/classnlohmann_1_1detail_1_1json__ref.html +++ /dev/null @@ -1,853 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::json_ref< BasicJsonType > Class Template Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
nlohmann::detail::json_ref< BasicJsonType > Class Template Reference
-
-
- -

#include <json.hpp>

- - - - - - -

-Public Types

using value_type = BasicJsonType
 
using value_type = BasicJsonType
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 json_ref (value_type &&value)
 
 json_ref (const value_type &value)
 
 json_ref (std::initializer_list< json_ref > init)
 
template<class... Args, enable_if_t< std::is_constructible< value_type, Args... >::value, int > = 0>
 json_ref (Args &&... args)
 
 json_ref (json_ref &&)=default
 
 json_ref (const json_ref &)=delete
 
json_refoperator= (const json_ref &)=delete
 
json_refoperator= (json_ref &&)=delete
 
 ~json_ref ()=default
 
value_type moved_or_copied () const
 
value_type const & operator* () const
 
value_type const * operator-> () const
 
 json_ref (value_type &&value)
 
 json_ref (const value_type &value)
 
 json_ref (std::initializer_list< json_ref > init)
 
template<class... Args, enable_if_t< std::is_constructible< value_type, Args... >::value, int > = 0>
 json_ref (Args &&... args)
 
 json_ref (json_ref &&)=default
 
 json_ref (const json_ref &)=delete
 
json_refoperator= (const json_ref &)=delete
 
json_refoperator= (json_ref &&)=delete
 
 ~json_ref ()=default
 
value_type moved_or_copied () const
 
value_type const & operator* () const
 
value_type const * operator-> () const
 
-

Member Typedef Documentation

- -

◆ value_type [1/2]

- -
-
-
-template<typename BasicJsonType >
- - - - -
using nlohmann::detail::json_ref< BasicJsonType >::value_type = BasicJsonType
-
- -
-
- -

◆ value_type [2/2]

- -
-
-
-template<typename BasicJsonType >
- - - - -
using nlohmann::detail::json_ref< BasicJsonType >::value_type = BasicJsonType
-
- -
-
-

Constructor & Destructor Documentation

- -

◆ json_ref() [1/12]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
nlohmann::detail::json_ref< BasicJsonType >::json_ref (value_type && value)
-
-inline
-
- -
-
- -

◆ json_ref() [2/12]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
nlohmann::detail::json_ref< BasicJsonType >::json_ref (const value_typevalue)
-
-inline
-
- -
-
- -

◆ json_ref() [3/12]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
nlohmann::detail::json_ref< BasicJsonType >::json_ref (std::initializer_list< json_ref< BasicJsonType > > init)
-
-inline
-
- -
-
- -

◆ json_ref() [4/12]

- -
-
-
-template<typename BasicJsonType >
-
-template<class... Args, enable_if_t< std::is_constructible< value_type, Args... >::value, int > = 0>
- - - - - -
- - - - - - - - -
nlohmann::detail::json_ref< BasicJsonType >::json_ref (Args &&... args)
-
-inline
-
- -
-
- -

◆ json_ref() [5/12]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
nlohmann::detail::json_ref< BasicJsonType >::json_ref (json_ref< BasicJsonType > && )
-
-default
-
- -
-
- -

◆ json_ref() [6/12]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
nlohmann::detail::json_ref< BasicJsonType >::json_ref (const json_ref< BasicJsonType > & )
-
-delete
-
- -
-
- -

◆ ~json_ref() [1/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - -
nlohmann::detail::json_ref< BasicJsonType >::~json_ref ()
-
-default
-
- -
-
- -

◆ json_ref() [7/12]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
nlohmann::detail::json_ref< BasicJsonType >::json_ref (value_type && value)
-
-inline
-
- -
-
- -

◆ json_ref() [8/12]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
nlohmann::detail::json_ref< BasicJsonType >::json_ref (const value_typevalue)
-
-inline
-
- -
-
- -

◆ json_ref() [9/12]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
nlohmann::detail::json_ref< BasicJsonType >::json_ref (std::initializer_list< json_ref< BasicJsonType > > init)
-
-inline
-
- -
-
- -

◆ json_ref() [10/12]

- -
-
-
-template<typename BasicJsonType >
-
-template<class... Args, enable_if_t< std::is_constructible< value_type, Args... >::value, int > = 0>
- - - - - -
- - - - - - - - -
nlohmann::detail::json_ref< BasicJsonType >::json_ref (Args &&... args)
-
-inline
-
- -
-
- -

◆ json_ref() [11/12]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
nlohmann::detail::json_ref< BasicJsonType >::json_ref (json_ref< BasicJsonType > && )
-
-default
-
- -
-
- -

◆ json_ref() [12/12]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
nlohmann::detail::json_ref< BasicJsonType >::json_ref (const json_ref< BasicJsonType > & )
-
-delete
-
- -
-
- -

◆ ~json_ref() [2/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - -
nlohmann::detail::json_ref< BasicJsonType >::~json_ref ()
-
-default
-
- -
-
-

Member Function Documentation

- -

◆ moved_or_copied() [1/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - -
value_type nlohmann::detail::json_ref< BasicJsonType >::moved_or_copied () const
-
-inline
-
- -
-
- -

◆ moved_or_copied() [2/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - -
value_type nlohmann::detail::json_ref< BasicJsonType >::moved_or_copied () const
-
-inline
-
- -
-
- -

◆ operator*() [1/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - -
value_type const& nlohmann::detail::json_ref< BasicJsonType >::operator* () const
-
-inline
-
- -
-
- -

◆ operator*() [2/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - -
value_type const& nlohmann::detail::json_ref< BasicJsonType >::operator* () const
-
-inline
-
- -
-
- -

◆ operator->() [1/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - -
value_type const* nlohmann::detail::json_ref< BasicJsonType >::operator-> () const
-
-inline
-
- -
-
- -

◆ operator->() [2/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - -
value_type const* nlohmann::detail::json_ref< BasicJsonType >::operator-> () const
-
-inline
-
- -
-
- -

◆ operator=() [1/4]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
json_ref& nlohmann::detail::json_ref< BasicJsonType >::operator= (const json_ref< BasicJsonType > & )
-
-delete
-
- -
-
- -

◆ operator=() [2/4]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
json_ref& nlohmann::detail::json_ref< BasicJsonType >::operator= (const json_ref< BasicJsonType > & )
-
-delete
-
- -
-
- -

◆ operator=() [3/4]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
json_ref& nlohmann::detail::json_ref< BasicJsonType >::operator= (json_ref< BasicJsonType > && )
-
-delete
-
- -
-
- -

◆ operator=() [4/4]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
json_ref& nlohmann::detail::json_ref< BasicJsonType >::operator= (json_ref< BasicJsonType > && )
-
-delete
-
- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/help/html/classnlohmann_1_1detail_1_1json__reverse__iterator-members.html b/help/html/classnlohmann_1_1detail_1_1json__reverse__iterator-members.html deleted file mode 100644 index fce807b..0000000 --- a/help/html/classnlohmann_1_1detail_1_1json__reverse__iterator-members.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
nlohmann::detail::json_reverse_iterator< Base > Member List
-
-
- -

This is the complete list of members for nlohmann::detail::json_reverse_iterator< Base >, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
base_iterator typedefnlohmann::detail::json_reverse_iterator< Base >
base_iterator typedefnlohmann::detail::json_reverse_iterator< Base >
difference_type typedefnlohmann::detail::json_reverse_iterator< Base >
difference_type typedefnlohmann::detail::json_reverse_iterator< Base >
json_reverse_iterator(const typename base_iterator::iterator_type &it) noexceptnlohmann::detail::json_reverse_iterator< Base >inlineexplicit
json_reverse_iterator(const base_iterator &it) noexceptnlohmann::detail::json_reverse_iterator< Base >inlineexplicit
json_reverse_iterator(const typename base_iterator::iterator_type &it) noexceptnlohmann::detail::json_reverse_iterator< Base >inlineexplicit
json_reverse_iterator(const base_iterator &it) noexceptnlohmann::detail::json_reverse_iterator< Base >inlineexplicit
key() const -> decltype(std::declval< Base >().key())nlohmann::detail::json_reverse_iterator< Base >inline
key() const -> decltype(std::declval< Base >().key())nlohmann::detail::json_reverse_iterator< Base >inline
operator+(difference_type i) constnlohmann::detail::json_reverse_iterator< Base >inline
operator+(difference_type i) constnlohmann::detail::json_reverse_iterator< Base >inline
operator++(int)nlohmann::detail::json_reverse_iterator< Base >inline
operator++()nlohmann::detail::json_reverse_iterator< Base >inline
operator++(int)nlohmann::detail::json_reverse_iterator< Base >inline
operator++()nlohmann::detail::json_reverse_iterator< Base >inline
operator+=(difference_type i)nlohmann::detail::json_reverse_iterator< Base >inline
operator+=(difference_type i)nlohmann::detail::json_reverse_iterator< Base >inline
operator-(difference_type i) constnlohmann::detail::json_reverse_iterator< Base >inline
operator-(const json_reverse_iterator &other) constnlohmann::detail::json_reverse_iterator< Base >inline
operator-(difference_type i) constnlohmann::detail::json_reverse_iterator< Base >inline
operator-(const json_reverse_iterator &other) constnlohmann::detail::json_reverse_iterator< Base >inline
operator--(int)nlohmann::detail::json_reverse_iterator< Base >inline
operator--()nlohmann::detail::json_reverse_iterator< Base >inline
operator--(int)nlohmann::detail::json_reverse_iterator< Base >inline
operator--()nlohmann::detail::json_reverse_iterator< Base >inline
operator[](difference_type n) constnlohmann::detail::json_reverse_iterator< Base >inline
operator[](difference_type n) constnlohmann::detail::json_reverse_iterator< Base >inline
reference typedefnlohmann::detail::json_reverse_iterator< Base >
reference typedefnlohmann::detail::json_reverse_iterator< Base >
value() constnlohmann::detail::json_reverse_iterator< Base >inline
value() constnlohmann::detail::json_reverse_iterator< Base >inline
- - - - diff --git a/help/html/classnlohmann_1_1detail_1_1json__reverse__iterator.html b/help/html/classnlohmann_1_1detail_1_1json__reverse__iterator.html deleted file mode 100644 index ad2b97b..0000000 --- a/help/html/classnlohmann_1_1detail_1_1json__reverse__iterator.html +++ /dev/null @@ -1,1108 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::json_reverse_iterator< Base > Class Template Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
nlohmann::detail::json_reverse_iterator< Base > Class Template Reference
-
-
- -

a template for a reverse iterator class - More...

- -

#include <json.hpp>

-
-Inheritance diagram for nlohmann::detail::json_reverse_iterator< Base >:
-
-
Inheritance graph
- - - - -
[legend]
-
-Collaboration diagram for nlohmann::detail::json_reverse_iterator< Base >:
-
-
Collaboration graph
- - - - -
[legend]
- - - - - - - - - - - - - - - - - - -

-Public Types

using difference_type = std::ptrdiff_t
 
using base_iterator = std::reverse_iterator< Base >
 shortcut to the reverse iterator adapter More...
 
using reference = typename Base::reference
 the reference type for the pointed-to element More...
 
using difference_type = std::ptrdiff_t
 
using base_iterator = std::reverse_iterator< Base >
 shortcut to the reverse iterator adapter More...
 
using reference = typename Base::reference
 the reference type for the pointed-to element More...
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 json_reverse_iterator (const typename base_iterator::iterator_type &it) noexcept
 create reverse iterator from iterator More...
 
 json_reverse_iterator (const base_iterator &it) noexcept
 create reverse iterator from base class More...
 
const json_reverse_iterator operator++ (int)
 post-increment (it++) More...
 
json_reverse_iteratoroperator++ ()
 pre-increment (++it) More...
 
const json_reverse_iterator operator-- (int)
 post-decrement (it–) More...
 
json_reverse_iteratoroperator-- ()
 pre-decrement (–it) More...
 
json_reverse_iteratoroperator+= (difference_type i)
 add to iterator More...
 
json_reverse_iterator operator+ (difference_type i) const
 add to iterator More...
 
json_reverse_iterator operator- (difference_type i) const
 subtract from iterator More...
 
difference_type operator- (const json_reverse_iterator &other) const
 return difference More...
 
reference operator[] (difference_type n) const
 access to successor More...
 
auto key () const -> decltype(std::declval< Base >().key())
 return the key of an object iterator More...
 
reference value () const
 return the value of an iterator More...
 
 json_reverse_iterator (const typename base_iterator::iterator_type &it) noexcept
 create reverse iterator from iterator More...
 
 json_reverse_iterator (const base_iterator &it) noexcept
 create reverse iterator from base class More...
 
const json_reverse_iterator operator++ (int)
 post-increment (it++) More...
 
json_reverse_iteratoroperator++ ()
 pre-increment (++it) More...
 
const json_reverse_iterator operator-- (int)
 post-decrement (it–) More...
 
json_reverse_iteratoroperator-- ()
 pre-decrement (–it) More...
 
json_reverse_iteratoroperator+= (difference_type i)
 add to iterator More...
 
json_reverse_iterator operator+ (difference_type i) const
 add to iterator More...
 
json_reverse_iterator operator- (difference_type i) const
 subtract from iterator More...
 
difference_type operator- (const json_reverse_iterator &other) const
 return difference More...
 
reference operator[] (difference_type n) const
 access to successor More...
 
auto key () const -> decltype(std::declval< Base >().key())
 return the key of an object iterator More...
 
reference value () const
 return the value of an iterator More...
 
-

Detailed Description

-

template<typename Base>
-class nlohmann::detail::json_reverse_iterator< Base >

- -

a template for a reverse iterator class

-
Template Parameters
- - -
Basethe base iterator type to reverse. Valid types are iterator (to create reverse_iterator) and const_iterator (to create const_reverse_iterator).
-
-
-

@requirement The class satisfies the following concept requirements:

    -
  • BidirectionalIterator: The iterator that can be moved can be moved in both directions (i.e. incremented and decremented).
  • -
  • OutputIterator: It is possible to write to the pointed-to element (only if Base is iterator).
  • -
-
Since
version 1.0.0
-

Member Typedef Documentation

- -

◆ base_iterator [1/2]

- -
-
-
-template<typename Base >
- - - - -
using nlohmann::detail::json_reverse_iterator< Base >::base_iterator = std::reverse_iterator<Base>
-
- -

shortcut to the reverse iterator adapter

- -
-
- -

◆ base_iterator [2/2]

- -
-
-
-template<typename Base >
- - - - -
using nlohmann::detail::json_reverse_iterator< Base >::base_iterator = std::reverse_iterator<Base>
-
- -

shortcut to the reverse iterator adapter

- -
-
- -

◆ difference_type [1/2]

- -
-
-
-template<typename Base >
- - - - -
using nlohmann::detail::json_reverse_iterator< Base >::difference_type = std::ptrdiff_t
-
- -
-
- -

◆ difference_type [2/2]

- -
-
-
-template<typename Base >
- - - - -
using nlohmann::detail::json_reverse_iterator< Base >::difference_type = std::ptrdiff_t
-
- -
-
- -

◆ reference [1/2]

- -
-
-
-template<typename Base >
- - - - -
using nlohmann::detail::json_reverse_iterator< Base >::reference = typename Base::reference
-
- -

the reference type for the pointed-to element

- -
-
- -

◆ reference [2/2]

- -
-
-
-template<typename Base >
- - - - -
using nlohmann::detail::json_reverse_iterator< Base >::reference = typename Base::reference
-
- -

the reference type for the pointed-to element

- -
-
-

Constructor & Destructor Documentation

- -

◆ json_reverse_iterator() [1/4]

- -
-
-
-template<typename Base >
- - - - - -
- - - - - - - - -
nlohmann::detail::json_reverse_iterator< Base >::json_reverse_iterator (const typename base_iterator::iterator_type & it)
-
-inlineexplicitnoexcept
-
- -

create reverse iterator from iterator

- -
-
- -

◆ json_reverse_iterator() [2/4]

- -
-
-
-template<typename Base >
- - - - - -
- - - - - - - - -
nlohmann::detail::json_reverse_iterator< Base >::json_reverse_iterator (const base_iteratorit)
-
-inlineexplicitnoexcept
-
- -

create reverse iterator from base class

- -
-
- -

◆ json_reverse_iterator() [3/4]

- -
-
-
-template<typename Base >
- - - - - -
- - - - - - - - -
nlohmann::detail::json_reverse_iterator< Base >::json_reverse_iterator (const typename base_iterator::iterator_type & it)
-
-inlineexplicitnoexcept
-
- -

create reverse iterator from iterator

- -
-
- -

◆ json_reverse_iterator() [4/4]

- -
-
-
-template<typename Base >
- - - - - -
- - - - - - - - -
nlohmann::detail::json_reverse_iterator< Base >::json_reverse_iterator (const base_iteratorit)
-
-inlineexplicitnoexcept
-
- -

create reverse iterator from base class

- -
-
-

Member Function Documentation

- -

◆ key() [1/2]

- -
-
-
-template<typename Base >
- - - - - -
- - - - - - - -
auto nlohmann::detail::json_reverse_iterator< Base >::key () const -> decltype(std::declval<Base>().key()) -
-
-inline
-
- -

return the key of an object iterator

- -
-
- -

◆ key() [2/2]

- -
-
-
-template<typename Base >
- - - - - -
- - - - - - - -
auto nlohmann::detail::json_reverse_iterator< Base >::key () const -> decltype(std::declval<Base>().key()) -
-
-inline
-
- -

return the key of an object iterator

- -
-
- -

◆ operator+() [1/2]

- -
-
-
-template<typename Base >
- - - - - -
- - - - - - - - -
json_reverse_iterator nlohmann::detail::json_reverse_iterator< Base >::operator+ (difference_type i) const
-
-inline
-
- -

add to iterator

- -
-
- -

◆ operator+() [2/2]

- -
-
-
-template<typename Base >
- - - - - -
- - - - - - - - -
json_reverse_iterator nlohmann::detail::json_reverse_iterator< Base >::operator+ (difference_type i) const
-
-inline
-
- -

add to iterator

- -
-
- -

◆ operator++() [1/4]

- -
-
-
-template<typename Base >
- - - - - -
- - - - - - - -
json_reverse_iterator& nlohmann::detail::json_reverse_iterator< Base >::operator++ ()
-
-inline
-
- -

pre-increment (++it)

- -
-
- -

◆ operator++() [2/4]

- -
-
-
-template<typename Base >
- - - - - -
- - - - - - - -
json_reverse_iterator& nlohmann::detail::json_reverse_iterator< Base >::operator++ ()
-
-inline
-
- -

pre-increment (++it)

- -
-
- -

◆ operator++() [3/4]

- -
-
-
-template<typename Base >
- - - - - -
- - - - - - - - -
const json_reverse_iterator nlohmann::detail::json_reverse_iterator< Base >::operator++ (int )
-
-inline
-
- -

post-increment (it++)

- -
-
- -

◆ operator++() [4/4]

- -
-
-
-template<typename Base >
- - - - - -
- - - - - - - - -
const json_reverse_iterator nlohmann::detail::json_reverse_iterator< Base >::operator++ (int )
-
-inline
-
- -

post-increment (it++)

- -
-
- -

◆ operator+=() [1/2]

- -
-
-
-template<typename Base >
- - - - - -
- - - - - - - - -
json_reverse_iterator& nlohmann::detail::json_reverse_iterator< Base >::operator+= (difference_type i)
-
-inline
-
- -

add to iterator

- -
-
- -

◆ operator+=() [2/2]

- -
-
-
-template<typename Base >
- - - - - -
- - - - - - - - -
json_reverse_iterator& nlohmann::detail::json_reverse_iterator< Base >::operator+= (difference_type i)
-
-inline
-
- -

add to iterator

- -
-
- -

◆ operator-() [1/4]

- -
-
-
-template<typename Base >
- - - - - -
- - - - - - - - -
difference_type nlohmann::detail::json_reverse_iterator< Base >::operator- (const json_reverse_iterator< Base > & other) const
-
-inline
-
- -

return difference

- -
-
- -

◆ operator-() [2/4]

- -
-
-
-template<typename Base >
- - - - - -
- - - - - - - - -
difference_type nlohmann::detail::json_reverse_iterator< Base >::operator- (const json_reverse_iterator< Base > & other) const
-
-inline
-
- -

return difference

- -
-
- -

◆ operator-() [3/4]

- -
-
-
-template<typename Base >
- - - - - -
- - - - - - - - -
json_reverse_iterator nlohmann::detail::json_reverse_iterator< Base >::operator- (difference_type i) const
-
-inline
-
- -

subtract from iterator

- -
-
- -

◆ operator-() [4/4]

- -
-
-
-template<typename Base >
- - - - - -
- - - - - - - - -
json_reverse_iterator nlohmann::detail::json_reverse_iterator< Base >::operator- (difference_type i) const
-
-inline
-
- -

subtract from iterator

- -
-
- -

◆ operator--() [1/4]

- -
-
-
-template<typename Base >
- - - - - -
- - - - - - - -
json_reverse_iterator& nlohmann::detail::json_reverse_iterator< Base >::operator-- ()
-
-inline
-
- -

pre-decrement (–it)

- -
-
- -

◆ operator--() [2/4]

- -
-
-
-template<typename Base >
- - - - - -
- - - - - - - -
json_reverse_iterator& nlohmann::detail::json_reverse_iterator< Base >::operator-- ()
-
-inline
-
- -

pre-decrement (–it)

- -
-
- -

◆ operator--() [3/4]

- -
-
-
-template<typename Base >
- - - - - -
- - - - - - - - -
const json_reverse_iterator nlohmann::detail::json_reverse_iterator< Base >::operator-- (int )
-
-inline
-
- -

post-decrement (it–)

- -
-
- -

◆ operator--() [4/4]

- -
-
-
-template<typename Base >
- - - - - -
- - - - - - - - -
const json_reverse_iterator nlohmann::detail::json_reverse_iterator< Base >::operator-- (int )
-
-inline
-
- -

post-decrement (it–)

- -
-
- -

◆ operator[]() [1/2]

- -
-
-
-template<typename Base >
- - - - - -
- - - - - - - - -
reference nlohmann::detail::json_reverse_iterator< Base >::operator[] (difference_type n) const
-
-inline
-
- -

access to successor

- -
-
- -

◆ operator[]() [2/2]

- -
-
-
-template<typename Base >
- - - - - -
- - - - - - - - -
reference nlohmann::detail::json_reverse_iterator< Base >::operator[] (difference_type n) const
-
-inline
-
- -

access to successor

- -
-
- -

◆ value() [1/2]

- -
-
-
-template<typename Base >
- - - - - -
- - - - - - - -
reference nlohmann::detail::json_reverse_iterator< Base >::value () const
-
-inline
-
- -

return the value of an iterator

- -
-
- -

◆ value() [2/2]

- -
-
-
-template<typename Base >
- - - - - -
- - - - - - - -
reference nlohmann::detail::json_reverse_iterator< Base >::value () const
-
-inline
-
- -

return the value of an iterator

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/help/html/classnlohmann_1_1detail_1_1json__reverse__iterator__coll__graph.map b/help/html/classnlohmann_1_1detail_1_1json__reverse__iterator__coll__graph.map deleted file mode 100644 index 73d51c5..0000000 --- a/help/html/classnlohmann_1_1detail_1_1json__reverse__iterator__coll__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/help/html/classnlohmann_1_1detail_1_1json__reverse__iterator__coll__graph.md5 b/help/html/classnlohmann_1_1detail_1_1json__reverse__iterator__coll__graph.md5 deleted file mode 100644 index fc722bf..0000000 --- a/help/html/classnlohmann_1_1detail_1_1json__reverse__iterator__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -766dc365efd5748e133cd79bc3114ce6 \ No newline at end of file diff --git a/help/html/classnlohmann_1_1detail_1_1json__reverse__iterator__coll__graph.png b/help/html/classnlohmann_1_1detail_1_1json__reverse__iterator__coll__graph.png deleted file mode 100644 index 9909c24..0000000 Binary files a/help/html/classnlohmann_1_1detail_1_1json__reverse__iterator__coll__graph.png and /dev/null differ diff --git a/help/html/classnlohmann_1_1detail_1_1json__reverse__iterator__inherit__graph.map b/help/html/classnlohmann_1_1detail_1_1json__reverse__iterator__inherit__graph.map deleted file mode 100644 index 73d51c5..0000000 --- a/help/html/classnlohmann_1_1detail_1_1json__reverse__iterator__inherit__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/help/html/classnlohmann_1_1detail_1_1json__reverse__iterator__inherit__graph.md5 b/help/html/classnlohmann_1_1detail_1_1json__reverse__iterator__inherit__graph.md5 deleted file mode 100644 index fc722bf..0000000 --- a/help/html/classnlohmann_1_1detail_1_1json__reverse__iterator__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -766dc365efd5748e133cd79bc3114ce6 \ No newline at end of file diff --git a/help/html/classnlohmann_1_1detail_1_1json__reverse__iterator__inherit__graph.png b/help/html/classnlohmann_1_1detail_1_1json__reverse__iterator__inherit__graph.png deleted file mode 100644 index 9909c24..0000000 Binary files a/help/html/classnlohmann_1_1detail_1_1json__reverse__iterator__inherit__graph.png and /dev/null differ diff --git a/help/html/classnlohmann_1_1detail_1_1json__sax__acceptor-members.html b/help/html/classnlohmann_1_1detail_1_1json__sax__acceptor-members.html deleted file mode 100644 index fa2c656..0000000 --- a/help/html/classnlohmann_1_1detail_1_1json__sax__acceptor-members.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
nlohmann::detail::json_sax_acceptor< BasicJsonType > Member List
-
-
- -

This is the complete list of members for nlohmann::detail::json_sax_acceptor< BasicJsonType >, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
binary(binary_t &)nlohmann::detail::json_sax_acceptor< BasicJsonType >inline
binary_t typedefnlohmann::detail::json_sax_acceptor< BasicJsonType >
boolean(bool)nlohmann::detail::json_sax_acceptor< BasicJsonType >inline
boolean(bool)nlohmann::detail::json_sax_acceptor< BasicJsonType >inline
end_array()nlohmann::detail::json_sax_acceptor< BasicJsonType >inline
end_array()nlohmann::detail::json_sax_acceptor< BasicJsonType >inline
end_object()nlohmann::detail::json_sax_acceptor< BasicJsonType >inline
end_object()nlohmann::detail::json_sax_acceptor< BasicJsonType >inline
key(string_t &)nlohmann::detail::json_sax_acceptor< BasicJsonType >inline
key(string_t &)nlohmann::detail::json_sax_acceptor< BasicJsonType >inline
null()nlohmann::detail::json_sax_acceptor< BasicJsonType >inline
null()nlohmann::detail::json_sax_acceptor< BasicJsonType >inline
number_float(number_float_t, const string_t &)nlohmann::detail::json_sax_acceptor< BasicJsonType >inline
number_float(number_float_t, const string_t &)nlohmann::detail::json_sax_acceptor< BasicJsonType >inline
number_float_t typedefnlohmann::detail::json_sax_acceptor< BasicJsonType >
number_float_t typedefnlohmann::detail::json_sax_acceptor< BasicJsonType >
number_integer(number_integer_t)nlohmann::detail::json_sax_acceptor< BasicJsonType >inline
number_integer(number_integer_t)nlohmann::detail::json_sax_acceptor< BasicJsonType >inline
number_integer_t typedefnlohmann::detail::json_sax_acceptor< BasicJsonType >
number_integer_t typedefnlohmann::detail::json_sax_acceptor< BasicJsonType >
number_unsigned(number_unsigned_t)nlohmann::detail::json_sax_acceptor< BasicJsonType >inline
number_unsigned(number_unsigned_t)nlohmann::detail::json_sax_acceptor< BasicJsonType >inline
number_unsigned_t typedefnlohmann::detail::json_sax_acceptor< BasicJsonType >
number_unsigned_t typedefnlohmann::detail::json_sax_acceptor< BasicJsonType >
parse_error(std::size_t, const std::string &, const detail::exception &)nlohmann::detail::json_sax_acceptor< BasicJsonType >inline
parse_error(std::size_t, const std::string &, const detail::exception &)nlohmann::detail::json_sax_acceptor< BasicJsonType >inline
start_array(std::size_t=std::size_t(-1))nlohmann::detail::json_sax_acceptor< BasicJsonType >inline
start_array(std::size_t=std::size_t(-1))nlohmann::detail::json_sax_acceptor< BasicJsonType >inline
start_object(std::size_t=std::size_t(-1))nlohmann::detail::json_sax_acceptor< BasicJsonType >inline
start_object(std::size_t=std::size_t(-1))nlohmann::detail::json_sax_acceptor< BasicJsonType >inline
string(string_t &)nlohmann::detail::json_sax_acceptor< BasicJsonType >inline
string(string_t &)nlohmann::detail::json_sax_acceptor< BasicJsonType >inline
string_t typedefnlohmann::detail::json_sax_acceptor< BasicJsonType >
string_t typedefnlohmann::detail::json_sax_acceptor< BasicJsonType >
- - - - diff --git a/help/html/classnlohmann_1_1detail_1_1json__sax__acceptor.html b/help/html/classnlohmann_1_1detail_1_1json__sax__acceptor.html deleted file mode 100644 index 6ae38d7..0000000 --- a/help/html/classnlohmann_1_1detail_1_1json__sax__acceptor.html +++ /dev/null @@ -1,1056 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::json_sax_acceptor< BasicJsonType > Class Template Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
nlohmann::detail::json_sax_acceptor< BasicJsonType > Class Template Reference
-
-
- -

#include <json.hpp>

- - - - - - - - - - - - - - - - - - - - -

-Public Types

using number_integer_t = typename BasicJsonType::number_integer_t
 
using number_unsigned_t = typename BasicJsonType::number_unsigned_t
 
using number_float_t = typename BasicJsonType::number_float_t
 
using string_t = typename BasicJsonType::string_t
 
using number_integer_t = typename BasicJsonType::number_integer_t
 
using number_unsigned_t = typename BasicJsonType::number_unsigned_t
 
using number_float_t = typename BasicJsonType::number_float_t
 
using string_t = typename BasicJsonType::string_t
 
using binary_t = typename BasicJsonType::binary_t
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

bool null ()
 
bool boolean (bool)
 
bool number_integer (number_integer_t)
 
bool number_unsigned (number_unsigned_t)
 
bool number_float (number_float_t, const string_t &)
 
bool string (string_t &)
 
bool start_object (std::size_t=std::size_t(-1))
 
bool key (string_t &)
 
bool end_object ()
 
bool start_array (std::size_t=std::size_t(-1))
 
bool end_array ()
 
bool parse_error (std::size_t, const std::string &, const detail::exception &)
 
bool null ()
 
bool boolean (bool)
 
bool number_integer (number_integer_t)
 
bool number_unsigned (number_unsigned_t)
 
bool number_float (number_float_t, const string_t &)
 
bool string (string_t &)
 
bool binary (binary_t &)
 
bool start_object (std::size_t=std::size_t(-1))
 
bool key (string_t &)
 
bool end_object ()
 
bool start_array (std::size_t=std::size_t(-1))
 
bool end_array ()
 
bool parse_error (std::size_t, const std::string &, const detail::exception &)
 
-

Member Typedef Documentation

- -

◆ binary_t

- -
-
-
-template<typename BasicJsonType >
- - - - -
using nlohmann::detail::json_sax_acceptor< BasicJsonType >::binary_t = typename BasicJsonType::binary_t
-
- -
-
- -

◆ number_float_t [1/2]

- -
-
-
-template<typename BasicJsonType >
- - - - -
using nlohmann::detail::json_sax_acceptor< BasicJsonType >::number_float_t = typename BasicJsonType::number_float_t
-
- -
-
- -

◆ number_float_t [2/2]

- -
-
-
-template<typename BasicJsonType >
- - - - -
using nlohmann::detail::json_sax_acceptor< BasicJsonType >::number_float_t = typename BasicJsonType::number_float_t
-
- -
-
- -

◆ number_integer_t [1/2]

- -
-
-
-template<typename BasicJsonType >
- - - - -
using nlohmann::detail::json_sax_acceptor< BasicJsonType >::number_integer_t = typename BasicJsonType::number_integer_t
-
- -
-
- -

◆ number_integer_t [2/2]

- -
-
-
-template<typename BasicJsonType >
- - - - -
using nlohmann::detail::json_sax_acceptor< BasicJsonType >::number_integer_t = typename BasicJsonType::number_integer_t
-
- -
-
- -

◆ number_unsigned_t [1/2]

- -
-
-
-template<typename BasicJsonType >
- - - - -
using nlohmann::detail::json_sax_acceptor< BasicJsonType >::number_unsigned_t = typename BasicJsonType::number_unsigned_t
-
- -
-
- -

◆ number_unsigned_t [2/2]

- -
-
-
-template<typename BasicJsonType >
- - - - -
using nlohmann::detail::json_sax_acceptor< BasicJsonType >::number_unsigned_t = typename BasicJsonType::number_unsigned_t
-
- -
-
- -

◆ string_t [1/2]

- -
-
-
-template<typename BasicJsonType >
- - - - -
using nlohmann::detail::json_sax_acceptor< BasicJsonType >::string_t = typename BasicJsonType::string_t
-
- -
-
- -

◆ string_t [2/2]

- -
-
-
-template<typename BasicJsonType >
- - - - -
using nlohmann::detail::json_sax_acceptor< BasicJsonType >::string_t = typename BasicJsonType::string_t
-
- -
-
-

Member Function Documentation

- -

◆ binary()

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
bool nlohmann::detail::json_sax_acceptor< BasicJsonType >::binary (binary_t)
-
-inline
-
- -
-
- -

◆ boolean() [1/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
bool nlohmann::detail::json_sax_acceptor< BasicJsonType >::boolean (bool )
-
-inline
-
- -
-
- -

◆ boolean() [2/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
bool nlohmann::detail::json_sax_acceptor< BasicJsonType >::boolean (bool )
-
-inline
-
- -
-
- -

◆ end_array() [1/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - -
bool nlohmann::detail::json_sax_acceptor< BasicJsonType >::end_array ()
-
-inline
-
- -
-
- -

◆ end_array() [2/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - -
bool nlohmann::detail::json_sax_acceptor< BasicJsonType >::end_array ()
-
-inline
-
- -
-
- -

◆ end_object() [1/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - -
bool nlohmann::detail::json_sax_acceptor< BasicJsonType >::end_object ()
-
-inline
-
- -
-
- -

◆ end_object() [2/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - -
bool nlohmann::detail::json_sax_acceptor< BasicJsonType >::end_object ()
-
-inline
-
- -
-
- -

◆ key() [1/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
bool nlohmann::detail::json_sax_acceptor< BasicJsonType >::key (string_t)
-
-inline
-
- -
-
- -

◆ key() [2/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
bool nlohmann::detail::json_sax_acceptor< BasicJsonType >::key (string_t)
-
-inline
-
- -
-
- -

◆ null() [1/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - -
bool nlohmann::detail::json_sax_acceptor< BasicJsonType >::null ()
-
-inline
-
- -
-
- -

◆ null() [2/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - -
bool nlohmann::detail::json_sax_acceptor< BasicJsonType >::null ()
-
-inline
-
- -
-
- -

◆ number_float() [1/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool nlohmann::detail::json_sax_acceptor< BasicJsonType >::number_float (number_float_t ,
const string_t 
)
-
-inline
-
- -
-
- -

◆ number_float() [2/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool nlohmann::detail::json_sax_acceptor< BasicJsonType >::number_float (number_float_t ,
const string_t 
)
-
-inline
-
- -
-
- -

◆ number_integer() [1/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
bool nlohmann::detail::json_sax_acceptor< BasicJsonType >::number_integer (number_integer_t )
-
-inline
-
- -
-
- -

◆ number_integer() [2/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
bool nlohmann::detail::json_sax_acceptor< BasicJsonType >::number_integer (number_integer_t )
-
-inline
-
- -
-
- -

◆ number_unsigned() [1/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
bool nlohmann::detail::json_sax_acceptor< BasicJsonType >::number_unsigned (number_unsigned_t )
-
-inline
-
- -
-
- -

◆ number_unsigned() [2/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
bool nlohmann::detail::json_sax_acceptor< BasicJsonType >::number_unsigned (number_unsigned_t )
-
-inline
-
- -
-
- -

◆ parse_error() [1/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
bool nlohmann::detail::json_sax_acceptor< BasicJsonType >::parse_error (std::size_t ,
const std::string & ,
const detail::exception 
)
-
-inline
-
- -
-
- -

◆ parse_error() [2/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
bool nlohmann::detail::json_sax_acceptor< BasicJsonType >::parse_error (std::size_t ,
const std::string & ,
const detail::exception 
)
-
-inline
-
- -
-
- -

◆ start_array() [1/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
bool nlohmann::detail::json_sax_acceptor< BasicJsonType >::start_array (std::size_t  = std::size_t(-1))
-
-inline
-
- -
-
- -

◆ start_array() [2/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
bool nlohmann::detail::json_sax_acceptor< BasicJsonType >::start_array (std::size_t  = std::size_t(-1))
-
-inline
-
- -
-
- -

◆ start_object() [1/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
bool nlohmann::detail::json_sax_acceptor< BasicJsonType >::start_object (std::size_t  = std::size_t(-1))
-
-inline
-
- -
-
- -

◆ start_object() [2/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
bool nlohmann::detail::json_sax_acceptor< BasicJsonType >::start_object (std::size_t  = std::size_t(-1))
-
-inline
-
- -
-
- -

◆ string() [1/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
bool nlohmann::detail::json_sax_acceptor< BasicJsonType >::string (string_t)
-
-inline
-
- -
-
- -

◆ string() [2/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
bool nlohmann::detail::json_sax_acceptor< BasicJsonType >::string (string_t)
-
-inline
-
- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/help/html/classnlohmann_1_1detail_1_1json__sax__dom__callback__parser-members.html b/help/html/classnlohmann_1_1detail_1_1json__sax__dom__callback__parser-members.html deleted file mode 100644 index 8654e87..0000000 --- a/help/html/classnlohmann_1_1detail_1_1json__sax__dom__callback__parser-members.html +++ /dev/null @@ -1,135 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
nlohmann::detail::json_sax_dom_callback_parser< BasicJsonType > Member List
-
-
- -

This is the complete list of members for nlohmann::detail::json_sax_dom_callback_parser< BasicJsonType >, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
binary(binary_t &val)nlohmann::detail::json_sax_dom_callback_parser< BasicJsonType >inline
binary_t typedefnlohmann::detail::json_sax_dom_callback_parser< BasicJsonType >
boolean(bool val)nlohmann::detail::json_sax_dom_callback_parser< BasicJsonType >inline
boolean(bool val)nlohmann::detail::json_sax_dom_callback_parser< BasicJsonType >inline
end_array()nlohmann::detail::json_sax_dom_callback_parser< BasicJsonType >inline
end_array()nlohmann::detail::json_sax_dom_callback_parser< BasicJsonType >inline
end_object()nlohmann::detail::json_sax_dom_callback_parser< BasicJsonType >inline
end_object()nlohmann::detail::json_sax_dom_callback_parser< BasicJsonType >inline
is_errored() constnlohmann::detail::json_sax_dom_callback_parser< BasicJsonType >inline
is_errored() constnlohmann::detail::json_sax_dom_callback_parser< BasicJsonType >inline
json_sax_dom_callback_parser(BasicJsonType &r, const parser_callback_t cb, const bool allow_exceptions_=true)nlohmann::detail::json_sax_dom_callback_parser< BasicJsonType >inline
json_sax_dom_callback_parser(const json_sax_dom_callback_parser &)=deletenlohmann::detail::json_sax_dom_callback_parser< BasicJsonType >
json_sax_dom_callback_parser(json_sax_dom_callback_parser &&)=defaultnlohmann::detail::json_sax_dom_callback_parser< BasicJsonType >
json_sax_dom_callback_parser(BasicJsonType &r, const parser_callback_t cb, const bool allow_exceptions_=true)nlohmann::detail::json_sax_dom_callback_parser< BasicJsonType >inline
json_sax_dom_callback_parser(const json_sax_dom_callback_parser &)=deletenlohmann::detail::json_sax_dom_callback_parser< BasicJsonType >
json_sax_dom_callback_parser(json_sax_dom_callback_parser &&)=defaultnlohmann::detail::json_sax_dom_callback_parser< BasicJsonType >
key(string_t &val)nlohmann::detail::json_sax_dom_callback_parser< BasicJsonType >inline
key(string_t &val)nlohmann::detail::json_sax_dom_callback_parser< BasicJsonType >inline
null()nlohmann::detail::json_sax_dom_callback_parser< BasicJsonType >inline
null()nlohmann::detail::json_sax_dom_callback_parser< BasicJsonType >inline
number_float(number_float_t val, const string_t &)nlohmann::detail::json_sax_dom_callback_parser< BasicJsonType >inline
number_float(number_float_t val, const string_t &)nlohmann::detail::json_sax_dom_callback_parser< BasicJsonType >inline
number_float_t typedefnlohmann::detail::json_sax_dom_callback_parser< BasicJsonType >
number_float_t typedefnlohmann::detail::json_sax_dom_callback_parser< BasicJsonType >
number_integer(number_integer_t val)nlohmann::detail::json_sax_dom_callback_parser< BasicJsonType >inline
number_integer(number_integer_t val)nlohmann::detail::json_sax_dom_callback_parser< BasicJsonType >inline
number_integer_t typedefnlohmann::detail::json_sax_dom_callback_parser< BasicJsonType >
number_integer_t typedefnlohmann::detail::json_sax_dom_callback_parser< BasicJsonType >
number_unsigned(number_unsigned_t val)nlohmann::detail::json_sax_dom_callback_parser< BasicJsonType >inline
number_unsigned(number_unsigned_t val)nlohmann::detail::json_sax_dom_callback_parser< BasicJsonType >inline
number_unsigned_t typedefnlohmann::detail::json_sax_dom_callback_parser< BasicJsonType >
number_unsigned_t typedefnlohmann::detail::json_sax_dom_callback_parser< BasicJsonType >
operator=(const json_sax_dom_callback_parser &)=deletenlohmann::detail::json_sax_dom_callback_parser< BasicJsonType >
operator=(json_sax_dom_callback_parser &&)=defaultnlohmann::detail::json_sax_dom_callback_parser< BasicJsonType >
operator=(const json_sax_dom_callback_parser &)=deletenlohmann::detail::json_sax_dom_callback_parser< BasicJsonType >
operator=(json_sax_dom_callback_parser &&)=defaultnlohmann::detail::json_sax_dom_callback_parser< BasicJsonType >
parse_error(std::size_t, const std::string &, const detail::exception &ex)nlohmann::detail::json_sax_dom_callback_parser< BasicJsonType >inline
parse_error(std::size_t, const std::string &, const Exception &ex)nlohmann::detail::json_sax_dom_callback_parser< BasicJsonType >inline
parse_event_t typedefnlohmann::detail::json_sax_dom_callback_parser< BasicJsonType >
parse_event_t typedefnlohmann::detail::json_sax_dom_callback_parser< BasicJsonType >
parser_callback_t typedefnlohmann::detail::json_sax_dom_callback_parser< BasicJsonType >
parser_callback_t typedefnlohmann::detail::json_sax_dom_callback_parser< BasicJsonType >
start_array(std::size_t len)nlohmann::detail::json_sax_dom_callback_parser< BasicJsonType >inline
start_array(std::size_t len)nlohmann::detail::json_sax_dom_callback_parser< BasicJsonType >inline
start_object(std::size_t len)nlohmann::detail::json_sax_dom_callback_parser< BasicJsonType >inline
start_object(std::size_t len)nlohmann::detail::json_sax_dom_callback_parser< BasicJsonType >inline
string(string_t &val)nlohmann::detail::json_sax_dom_callback_parser< BasicJsonType >inline
string(string_t &val)nlohmann::detail::json_sax_dom_callback_parser< BasicJsonType >inline
string_t typedefnlohmann::detail::json_sax_dom_callback_parser< BasicJsonType >
string_t typedefnlohmann::detail::json_sax_dom_callback_parser< BasicJsonType >
~json_sax_dom_callback_parser()=defaultnlohmann::detail::json_sax_dom_callback_parser< BasicJsonType >
~json_sax_dom_callback_parser()=defaultnlohmann::detail::json_sax_dom_callback_parser< BasicJsonType >
- - - - diff --git a/help/html/classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html b/help/html/classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html deleted file mode 100644 index 62b32fb..0000000 --- a/help/html/classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html +++ /dev/null @@ -1,1580 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::json_sax_dom_callback_parser< BasicJsonType > Class Template Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
nlohmann::detail::json_sax_dom_callback_parser< BasicJsonType > Class Template Reference
-
-
- -

#include <json.hpp>

- - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Types

using number_integer_t = typename BasicJsonType::number_integer_t
 
using number_unsigned_t = typename BasicJsonType::number_unsigned_t
 
using number_float_t = typename BasicJsonType::number_float_t
 
using string_t = typename BasicJsonType::string_t
 
using parser_callback_t = typename BasicJsonType::parser_callback_t
 
using parse_event_t = typename BasicJsonType::parse_event_t
 
using number_integer_t = typename BasicJsonType::number_integer_t
 
using number_unsigned_t = typename BasicJsonType::number_unsigned_t
 
using number_float_t = typename BasicJsonType::number_float_t
 
using string_t = typename BasicJsonType::string_t
 
using binary_t = typename BasicJsonType::binary_t
 
using parser_callback_t = typename BasicJsonType::parser_callback_t
 
using parse_event_t = typename BasicJsonType::parse_event_t
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 json_sax_dom_callback_parser (BasicJsonType &r, const parser_callback_t cb, const bool allow_exceptions_=true)
 
 json_sax_dom_callback_parser (const json_sax_dom_callback_parser &)=delete
 
 json_sax_dom_callback_parser (json_sax_dom_callback_parser &&)=default
 
json_sax_dom_callback_parseroperator= (const json_sax_dom_callback_parser &)=delete
 
json_sax_dom_callback_parseroperator= (json_sax_dom_callback_parser &&)=default
 
 ~json_sax_dom_callback_parser ()=default
 
bool null ()
 
bool boolean (bool val)
 
bool number_integer (number_integer_t val)
 
bool number_unsigned (number_unsigned_t val)
 
bool number_float (number_float_t val, const string_t &)
 
bool string (string_t &val)
 
bool start_object (std::size_t len)
 
bool key (string_t &val)
 
bool end_object ()
 
bool start_array (std::size_t len)
 
bool end_array ()
 
bool parse_error (std::size_t, const std::string &, const detail::exception &ex)
 
constexpr bool is_errored () const
 
 json_sax_dom_callback_parser (BasicJsonType &r, const parser_callback_t cb, const bool allow_exceptions_=true)
 
 json_sax_dom_callback_parser (const json_sax_dom_callback_parser &)=delete
 
 json_sax_dom_callback_parser (json_sax_dom_callback_parser &&)=default
 
json_sax_dom_callback_parseroperator= (const json_sax_dom_callback_parser &)=delete
 
json_sax_dom_callback_parseroperator= (json_sax_dom_callback_parser &&)=default
 
 ~json_sax_dom_callback_parser ()=default
 
bool null ()
 
bool boolean (bool val)
 
bool number_integer (number_integer_t val)
 
bool number_unsigned (number_unsigned_t val)
 
bool number_float (number_float_t val, const string_t &)
 
bool string (string_t &val)
 
bool binary (binary_t &val)
 
bool start_object (std::size_t len)
 
bool key (string_t &val)
 
bool end_object ()
 
bool start_array (std::size_t len)
 
bool end_array ()
 
template<class Exception >
bool parse_error (std::size_t, const std::string &, const Exception &ex)
 
constexpr bool is_errored () const
 
-

Member Typedef Documentation

- -

◆ binary_t

- -
-
-
-template<typename BasicJsonType >
- - - - -
using nlohmann::detail::json_sax_dom_callback_parser< BasicJsonType >::binary_t = typename BasicJsonType::binary_t
-
- -
-
- -

◆ number_float_t [1/2]

- -
-
-
-template<typename BasicJsonType >
- - - - -
using nlohmann::detail::json_sax_dom_callback_parser< BasicJsonType >::number_float_t = typename BasicJsonType::number_float_t
-
- -
-
- -

◆ number_float_t [2/2]

- -
-
-
-template<typename BasicJsonType >
- - - - -
using nlohmann::detail::json_sax_dom_callback_parser< BasicJsonType >::number_float_t = typename BasicJsonType::number_float_t
-
- -
-
- -

◆ number_integer_t [1/2]

- -
-
-
-template<typename BasicJsonType >
- - - - -
using nlohmann::detail::json_sax_dom_callback_parser< BasicJsonType >::number_integer_t = typename BasicJsonType::number_integer_t
-
- -
-
- -

◆ number_integer_t [2/2]

- -
-
-
-template<typename BasicJsonType >
- - - - -
using nlohmann::detail::json_sax_dom_callback_parser< BasicJsonType >::number_integer_t = typename BasicJsonType::number_integer_t
-
- -
-
- -

◆ number_unsigned_t [1/2]

- -
-
-
-template<typename BasicJsonType >
- - - - -
using nlohmann::detail::json_sax_dom_callback_parser< BasicJsonType >::number_unsigned_t = typename BasicJsonType::number_unsigned_t
-
- -
-
- -

◆ number_unsigned_t [2/2]

- -
-
-
-template<typename BasicJsonType >
- - - - -
using nlohmann::detail::json_sax_dom_callback_parser< BasicJsonType >::number_unsigned_t = typename BasicJsonType::number_unsigned_t
-
- -
-
- -

◆ parse_event_t [1/2]

- -
-
-
-template<typename BasicJsonType >
- - - - -
using nlohmann::detail::json_sax_dom_callback_parser< BasicJsonType >::parse_event_t = typename BasicJsonType::parse_event_t
-
- -
-
- -

◆ parse_event_t [2/2]

- -
-
-
-template<typename BasicJsonType >
- - - - -
using nlohmann::detail::json_sax_dom_callback_parser< BasicJsonType >::parse_event_t = typename BasicJsonType::parse_event_t
-
- -
-
- -

◆ parser_callback_t [1/2]

- -
-
-
-template<typename BasicJsonType >
- - - - -
using nlohmann::detail::json_sax_dom_callback_parser< BasicJsonType >::parser_callback_t = typename BasicJsonType::parser_callback_t
-
- -
-
- -

◆ parser_callback_t [2/2]

- -
-
-
-template<typename BasicJsonType >
- - - - -
using nlohmann::detail::json_sax_dom_callback_parser< BasicJsonType >::parser_callback_t = typename BasicJsonType::parser_callback_t
-
- -
-
- -

◆ string_t [1/2]

- -
-
-
-template<typename BasicJsonType >
- - - - -
using nlohmann::detail::json_sax_dom_callback_parser< BasicJsonType >::string_t = typename BasicJsonType::string_t
-
- -
-
- -

◆ string_t [2/2]

- -
-
-
-template<typename BasicJsonType >
- - - - -
using nlohmann::detail::json_sax_dom_callback_parser< BasicJsonType >::string_t = typename BasicJsonType::string_t
-
- -
-
-

Constructor & Destructor Documentation

- -

◆ json_sax_dom_callback_parser() [1/6]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
nlohmann::detail::json_sax_dom_callback_parser< BasicJsonType >::json_sax_dom_callback_parser (BasicJsonType & r,
const parser_callback_t cb,
const bool allow_exceptions_ = true 
)
-
-inline
-
- -
-
- -

◆ json_sax_dom_callback_parser() [2/6]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
nlohmann::detail::json_sax_dom_callback_parser< BasicJsonType >::json_sax_dom_callback_parser (const json_sax_dom_callback_parser< BasicJsonType > & )
-
-delete
-
- -
-
- -

◆ json_sax_dom_callback_parser() [3/6]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
nlohmann::detail::json_sax_dom_callback_parser< BasicJsonType >::json_sax_dom_callback_parser (json_sax_dom_callback_parser< BasicJsonType > && )
-
-default
-
- -
-
- -

◆ ~json_sax_dom_callback_parser() [1/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - -
nlohmann::detail::json_sax_dom_callback_parser< BasicJsonType >::~json_sax_dom_callback_parser ()
-
-default
-
- -
-
- -

◆ json_sax_dom_callback_parser() [4/6]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
nlohmann::detail::json_sax_dom_callback_parser< BasicJsonType >::json_sax_dom_callback_parser (BasicJsonType & r,
const parser_callback_t cb,
const bool allow_exceptions_ = true 
)
-
-inline
-
- -
-
- -

◆ json_sax_dom_callback_parser() [5/6]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
nlohmann::detail::json_sax_dom_callback_parser< BasicJsonType >::json_sax_dom_callback_parser (const json_sax_dom_callback_parser< BasicJsonType > & )
-
-delete
-
- -
-
- -

◆ json_sax_dom_callback_parser() [6/6]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
nlohmann::detail::json_sax_dom_callback_parser< BasicJsonType >::json_sax_dom_callback_parser (json_sax_dom_callback_parser< BasicJsonType > && )
-
-default
-
- -
-
- -

◆ ~json_sax_dom_callback_parser() [2/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - -
nlohmann::detail::json_sax_dom_callback_parser< BasicJsonType >::~json_sax_dom_callback_parser ()
-
-default
-
- -
-
-

Member Function Documentation

- -

◆ binary()

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
bool nlohmann::detail::json_sax_dom_callback_parser< BasicJsonType >::binary (binary_tval)
-
-inline
-
- -
-
- -

◆ boolean() [1/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
bool nlohmann::detail::json_sax_dom_callback_parser< BasicJsonType >::boolean (bool val)
-
-inline
-
- -
-
- -

◆ boolean() [2/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
bool nlohmann::detail::json_sax_dom_callback_parser< BasicJsonType >::boolean (bool val)
-
-inline
-
- -
-
- -

◆ end_array() [1/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - -
bool nlohmann::detail::json_sax_dom_callback_parser< BasicJsonType >::end_array ()
-
-inline
-
- -
-
- -

◆ end_array() [2/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - -
bool nlohmann::detail::json_sax_dom_callback_parser< BasicJsonType >::end_array ()
-
-inline
-
- -
-
- -

◆ end_object() [1/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - -
bool nlohmann::detail::json_sax_dom_callback_parser< BasicJsonType >::end_object ()
-
-inline
-
- -
-
- -

◆ end_object() [2/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - -
bool nlohmann::detail::json_sax_dom_callback_parser< BasicJsonType >::end_object ()
-
-inline
-
- -
-
- -

◆ is_errored() [1/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - -
constexpr bool nlohmann::detail::json_sax_dom_callback_parser< BasicJsonType >::is_errored () const
-
-inlineconstexpr
-
- -
-
- -

◆ is_errored() [2/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - -
constexpr bool nlohmann::detail::json_sax_dom_callback_parser< BasicJsonType >::is_errored () const
-
-inlineconstexpr
-
- -
-
- -

◆ key() [1/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
bool nlohmann::detail::json_sax_dom_callback_parser< BasicJsonType >::key (string_tval)
-
-inline
-
- -
-
- -

◆ key() [2/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
bool nlohmann::detail::json_sax_dom_callback_parser< BasicJsonType >::key (string_tval)
-
-inline
-
- -
-
- -

◆ null() [1/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - -
bool nlohmann::detail::json_sax_dom_callback_parser< BasicJsonType >::null ()
-
-inline
-
- -
-
- -

◆ null() [2/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - -
bool nlohmann::detail::json_sax_dom_callback_parser< BasicJsonType >::null ()
-
-inline
-
- -
-
- -

◆ number_float() [1/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool nlohmann::detail::json_sax_dom_callback_parser< BasicJsonType >::number_float (number_float_t val,
const string_t 
)
-
-inline
-
- -
-
- -

◆ number_float() [2/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool nlohmann::detail::json_sax_dom_callback_parser< BasicJsonType >::number_float (number_float_t val,
const string_t 
)
-
-inline
-
- -
-
- -

◆ number_integer() [1/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
bool nlohmann::detail::json_sax_dom_callback_parser< BasicJsonType >::number_integer (number_integer_t val)
-
-inline
-
- -
-
- -

◆ number_integer() [2/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
bool nlohmann::detail::json_sax_dom_callback_parser< BasicJsonType >::number_integer (number_integer_t val)
-
-inline
-
- -
-
- -

◆ number_unsigned() [1/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
bool nlohmann::detail::json_sax_dom_callback_parser< BasicJsonType >::number_unsigned (number_unsigned_t val)
-
-inline
-
- -
-
- -

◆ number_unsigned() [2/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
bool nlohmann::detail::json_sax_dom_callback_parser< BasicJsonType >::number_unsigned (number_unsigned_t val)
-
-inline
-
- -
-
- -

◆ operator=() [1/4]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
json_sax_dom_callback_parser& nlohmann::detail::json_sax_dom_callback_parser< BasicJsonType >::operator= (const json_sax_dom_callback_parser< BasicJsonType > & )
-
-delete
-
- -
-
- -

◆ operator=() [2/4]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
json_sax_dom_callback_parser& nlohmann::detail::json_sax_dom_callback_parser< BasicJsonType >::operator= (const json_sax_dom_callback_parser< BasicJsonType > & )
-
-delete
-
- -
-
- -

◆ operator=() [3/4]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
json_sax_dom_callback_parser& nlohmann::detail::json_sax_dom_callback_parser< BasicJsonType >::operator= (json_sax_dom_callback_parser< BasicJsonType > && )
-
-default
-
- -
-
- -

◆ operator=() [4/4]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
json_sax_dom_callback_parser& nlohmann::detail::json_sax_dom_callback_parser< BasicJsonType >::operator= (json_sax_dom_callback_parser< BasicJsonType > && )
-
-default
-
- -
-
- -

◆ parse_error() [1/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
bool nlohmann::detail::json_sax_dom_callback_parser< BasicJsonType >::parse_error (std::size_t ,
const std::string & ,
const detail::exceptionex 
)
-
-inline
-
- -
-
- -

◆ parse_error() [2/2]

- -
-
-
-template<typename BasicJsonType >
-
-template<class Exception >
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
bool nlohmann::detail::json_sax_dom_callback_parser< BasicJsonType >::parse_error (std::size_t ,
const std::string & ,
const Exception & ex 
)
-
-inline
-
- -
-
- -

◆ start_array() [1/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
bool nlohmann::detail::json_sax_dom_callback_parser< BasicJsonType >::start_array (std::size_t len)
-
-inline
-
- -
-
- -

◆ start_array() [2/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
bool nlohmann::detail::json_sax_dom_callback_parser< BasicJsonType >::start_array (std::size_t len)
-
-inline
-
- -
-
- -

◆ start_object() [1/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
bool nlohmann::detail::json_sax_dom_callback_parser< BasicJsonType >::start_object (std::size_t len)
-
-inline
-
- -
-
- -

◆ start_object() [2/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
bool nlohmann::detail::json_sax_dom_callback_parser< BasicJsonType >::start_object (std::size_t len)
-
-inline
-
- -
-
- -

◆ string() [1/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
bool nlohmann::detail::json_sax_dom_callback_parser< BasicJsonType >::string (string_tval)
-
-inline
-
- -
-
- -

◆ string() [2/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
bool nlohmann::detail::json_sax_dom_callback_parser< BasicJsonType >::string (string_tval)
-
-inline
-
- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/help/html/classnlohmann_1_1detail_1_1json__sax__dom__parser-members.html b/help/html/classnlohmann_1_1detail_1_1json__sax__dom__parser-members.html deleted file mode 100644 index 0e44ba3..0000000 --- a/help/html/classnlohmann_1_1detail_1_1json__sax__dom__parser-members.html +++ /dev/null @@ -1,131 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
nlohmann::detail::json_sax_dom_parser< BasicJsonType > Member List
-
-
- -

This is the complete list of members for nlohmann::detail::json_sax_dom_parser< BasicJsonType >, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
binary(binary_t &val)nlohmann::detail::json_sax_dom_parser< BasicJsonType >inline
binary_t typedefnlohmann::detail::json_sax_dom_parser< BasicJsonType >
boolean(bool val)nlohmann::detail::json_sax_dom_parser< BasicJsonType >inline
boolean(bool val)nlohmann::detail::json_sax_dom_parser< BasicJsonType >inline
end_array()nlohmann::detail::json_sax_dom_parser< BasicJsonType >inline
end_array()nlohmann::detail::json_sax_dom_parser< BasicJsonType >inline
end_object()nlohmann::detail::json_sax_dom_parser< BasicJsonType >inline
end_object()nlohmann::detail::json_sax_dom_parser< BasicJsonType >inline
is_errored() constnlohmann::detail::json_sax_dom_parser< BasicJsonType >inline
is_errored() constnlohmann::detail::json_sax_dom_parser< BasicJsonType >inline
json_sax_dom_parser(BasicJsonType &r, const bool allow_exceptions_=true)nlohmann::detail::json_sax_dom_parser< BasicJsonType >inlineexplicit
json_sax_dom_parser(const json_sax_dom_parser &)=deletenlohmann::detail::json_sax_dom_parser< BasicJsonType >
json_sax_dom_parser(json_sax_dom_parser &&)=defaultnlohmann::detail::json_sax_dom_parser< BasicJsonType >
json_sax_dom_parser(BasicJsonType &r, const bool allow_exceptions_=true)nlohmann::detail::json_sax_dom_parser< BasicJsonType >inlineexplicit
json_sax_dom_parser(const json_sax_dom_parser &)=deletenlohmann::detail::json_sax_dom_parser< BasicJsonType >
json_sax_dom_parser(json_sax_dom_parser &&)=defaultnlohmann::detail::json_sax_dom_parser< BasicJsonType >
key(string_t &val)nlohmann::detail::json_sax_dom_parser< BasicJsonType >inline
key(string_t &val)nlohmann::detail::json_sax_dom_parser< BasicJsonType >inline
null()nlohmann::detail::json_sax_dom_parser< BasicJsonType >inline
null()nlohmann::detail::json_sax_dom_parser< BasicJsonType >inline
number_float(number_float_t val, const string_t &)nlohmann::detail::json_sax_dom_parser< BasicJsonType >inline
number_float(number_float_t val, const string_t &)nlohmann::detail::json_sax_dom_parser< BasicJsonType >inline
number_float_t typedefnlohmann::detail::json_sax_dom_parser< BasicJsonType >
number_float_t typedefnlohmann::detail::json_sax_dom_parser< BasicJsonType >
number_integer(number_integer_t val)nlohmann::detail::json_sax_dom_parser< BasicJsonType >inline
number_integer(number_integer_t val)nlohmann::detail::json_sax_dom_parser< BasicJsonType >inline
number_integer_t typedefnlohmann::detail::json_sax_dom_parser< BasicJsonType >
number_integer_t typedefnlohmann::detail::json_sax_dom_parser< BasicJsonType >
number_unsigned(number_unsigned_t val)nlohmann::detail::json_sax_dom_parser< BasicJsonType >inline
number_unsigned(number_unsigned_t val)nlohmann::detail::json_sax_dom_parser< BasicJsonType >inline
number_unsigned_t typedefnlohmann::detail::json_sax_dom_parser< BasicJsonType >
number_unsigned_t typedefnlohmann::detail::json_sax_dom_parser< BasicJsonType >
operator=(const json_sax_dom_parser &)=deletenlohmann::detail::json_sax_dom_parser< BasicJsonType >
operator=(json_sax_dom_parser &&)=defaultnlohmann::detail::json_sax_dom_parser< BasicJsonType >
operator=(const json_sax_dom_parser &)=deletenlohmann::detail::json_sax_dom_parser< BasicJsonType >
operator=(json_sax_dom_parser &&)=defaultnlohmann::detail::json_sax_dom_parser< BasicJsonType >
parse_error(std::size_t, const std::string &, const detail::exception &ex)nlohmann::detail::json_sax_dom_parser< BasicJsonType >inline
parse_error(std::size_t, const std::string &, const Exception &ex)nlohmann::detail::json_sax_dom_parser< BasicJsonType >inline
start_array(std::size_t len)nlohmann::detail::json_sax_dom_parser< BasicJsonType >inline
start_array(std::size_t len)nlohmann::detail::json_sax_dom_parser< BasicJsonType >inline
start_object(std::size_t len)nlohmann::detail::json_sax_dom_parser< BasicJsonType >inline
start_object(std::size_t len)nlohmann::detail::json_sax_dom_parser< BasicJsonType >inline
string(string_t &val)nlohmann::detail::json_sax_dom_parser< BasicJsonType >inline
string(string_t &val)nlohmann::detail::json_sax_dom_parser< BasicJsonType >inline
string_t typedefnlohmann::detail::json_sax_dom_parser< BasicJsonType >
string_t typedefnlohmann::detail::json_sax_dom_parser< BasicJsonType >
~json_sax_dom_parser()=defaultnlohmann::detail::json_sax_dom_parser< BasicJsonType >
~json_sax_dom_parser()=defaultnlohmann::detail::json_sax_dom_parser< BasicJsonType >
- - - - diff --git a/help/html/classnlohmann_1_1detail_1_1json__sax__dom__parser.html b/help/html/classnlohmann_1_1detail_1_1json__sax__dom__parser.html deleted file mode 100644 index eb8e17f..0000000 --- a/help/html/classnlohmann_1_1detail_1_1json__sax__dom__parser.html +++ /dev/null @@ -1,1526 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::json_sax_dom_parser< BasicJsonType > Class Template Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
nlohmann::detail::json_sax_dom_parser< BasicJsonType > Class Template Reference
-
-
- -

SAX implementation to create a JSON value from SAX events. - More...

- -

#include <json.hpp>

- - - - - - - - - - - - - - - - - - - - -

-Public Types

using number_integer_t = typename BasicJsonType::number_integer_t
 
using number_unsigned_t = typename BasicJsonType::number_unsigned_t
 
using number_float_t = typename BasicJsonType::number_float_t
 
using string_t = typename BasicJsonType::string_t
 
using number_integer_t = typename BasicJsonType::number_integer_t
 
using number_unsigned_t = typename BasicJsonType::number_unsigned_t
 
using number_float_t = typename BasicJsonType::number_float_t
 
using string_t = typename BasicJsonType::string_t
 
using binary_t = typename BasicJsonType::binary_t
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 json_sax_dom_parser (BasicJsonType &r, const bool allow_exceptions_=true)
 
 json_sax_dom_parser (const json_sax_dom_parser &)=delete
 
 json_sax_dom_parser (json_sax_dom_parser &&)=default
 
json_sax_dom_parseroperator= (const json_sax_dom_parser &)=delete
 
json_sax_dom_parseroperator= (json_sax_dom_parser &&)=default
 
 ~json_sax_dom_parser ()=default
 
bool null ()
 
bool boolean (bool val)
 
bool number_integer (number_integer_t val)
 
bool number_unsigned (number_unsigned_t val)
 
bool number_float (number_float_t val, const string_t &)
 
bool string (string_t &val)
 
bool start_object (std::size_t len)
 
bool key (string_t &val)
 
bool end_object ()
 
bool start_array (std::size_t len)
 
bool end_array ()
 
bool parse_error (std::size_t, const std::string &, const detail::exception &ex)
 
constexpr bool is_errored () const
 
 json_sax_dom_parser (BasicJsonType &r, const bool allow_exceptions_=true)
 
 json_sax_dom_parser (const json_sax_dom_parser &)=delete
 
 json_sax_dom_parser (json_sax_dom_parser &&)=default
 
json_sax_dom_parseroperator= (const json_sax_dom_parser &)=delete
 
json_sax_dom_parseroperator= (json_sax_dom_parser &&)=default
 
 ~json_sax_dom_parser ()=default
 
bool null ()
 
bool boolean (bool val)
 
bool number_integer (number_integer_t val)
 
bool number_unsigned (number_unsigned_t val)
 
bool number_float (number_float_t val, const string_t &)
 
bool string (string_t &val)
 
bool binary (binary_t &val)
 
bool start_object (std::size_t len)
 
bool key (string_t &val)
 
bool end_object ()
 
bool start_array (std::size_t len)
 
bool end_array ()
 
template<class Exception >
bool parse_error (std::size_t, const std::string &, const Exception &ex)
 
constexpr bool is_errored () const
 
-

Detailed Description

-

template<typename BasicJsonType>
-class nlohmann::detail::json_sax_dom_parser< BasicJsonType >

- -

SAX implementation to create a JSON value from SAX events.

-

This class implements the json_sax interface and processes the SAX events to create a JSON value which makes it basically a DOM parser. The structure or hierarchy of the JSON value is managed by the stack ref_stack which contains a pointer to the respective array or object for each recursion depth.

-

After successful parsing, the value that is passed by reference to the constructor contains the parsed value.

-
Template Parameters
- - -
BasicJsonTypethe JSON type
-
-
-

Member Typedef Documentation

- -

◆ binary_t

- -
-
-
-template<typename BasicJsonType >
- - - - -
using nlohmann::detail::json_sax_dom_parser< BasicJsonType >::binary_t = typename BasicJsonType::binary_t
-
- -
-
- -

◆ number_float_t [1/2]

- -
-
-
-template<typename BasicJsonType >
- - - - -
using nlohmann::detail::json_sax_dom_parser< BasicJsonType >::number_float_t = typename BasicJsonType::number_float_t
-
- -
-
- -

◆ number_float_t [2/2]

- -
-
-
-template<typename BasicJsonType >
- - - - -
using nlohmann::detail::json_sax_dom_parser< BasicJsonType >::number_float_t = typename BasicJsonType::number_float_t
-
- -
-
- -

◆ number_integer_t [1/2]

- -
-
-
-template<typename BasicJsonType >
- - - - -
using nlohmann::detail::json_sax_dom_parser< BasicJsonType >::number_integer_t = typename BasicJsonType::number_integer_t
-
- -
-
- -

◆ number_integer_t [2/2]

- -
-
-
-template<typename BasicJsonType >
- - - - -
using nlohmann::detail::json_sax_dom_parser< BasicJsonType >::number_integer_t = typename BasicJsonType::number_integer_t
-
- -
-
- -

◆ number_unsigned_t [1/2]

- -
-
-
-template<typename BasicJsonType >
- - - - -
using nlohmann::detail::json_sax_dom_parser< BasicJsonType >::number_unsigned_t = typename BasicJsonType::number_unsigned_t
-
- -
-
- -

◆ number_unsigned_t [2/2]

- -
-
-
-template<typename BasicJsonType >
- - - - -
using nlohmann::detail::json_sax_dom_parser< BasicJsonType >::number_unsigned_t = typename BasicJsonType::number_unsigned_t
-
- -
-
- -

◆ string_t [1/2]

- -
-
-
-template<typename BasicJsonType >
- - - - -
using nlohmann::detail::json_sax_dom_parser< BasicJsonType >::string_t = typename BasicJsonType::string_t
-
- -
-
- -

◆ string_t [2/2]

- -
-
-
-template<typename BasicJsonType >
- - - - -
using nlohmann::detail::json_sax_dom_parser< BasicJsonType >::string_t = typename BasicJsonType::string_t
-
- -
-
-

Constructor & Destructor Documentation

- -

◆ json_sax_dom_parser() [1/6]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - - - - - - - - - - - -
nlohmann::detail::json_sax_dom_parser< BasicJsonType >::json_sax_dom_parser (BasicJsonType & r,
const bool allow_exceptions_ = true 
)
-
-inlineexplicit
-
-
Parameters
- - - -
[in,out]rreference to a JSON value that is manipulated while parsing
[in]allow_exceptions_whether parse errors yield exceptions
-
-
- -
-
- -

◆ json_sax_dom_parser() [2/6]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
nlohmann::detail::json_sax_dom_parser< BasicJsonType >::json_sax_dom_parser (const json_sax_dom_parser< BasicJsonType > & )
-
-delete
-
- -
-
- -

◆ json_sax_dom_parser() [3/6]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
nlohmann::detail::json_sax_dom_parser< BasicJsonType >::json_sax_dom_parser (json_sax_dom_parser< BasicJsonType > && )
-
-default
-
- -
-
- -

◆ ~json_sax_dom_parser() [1/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - -
nlohmann::detail::json_sax_dom_parser< BasicJsonType >::~json_sax_dom_parser ()
-
-default
-
- -
-
- -

◆ json_sax_dom_parser() [4/6]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - - - - - - - - - - - -
nlohmann::detail::json_sax_dom_parser< BasicJsonType >::json_sax_dom_parser (BasicJsonType & r,
const bool allow_exceptions_ = true 
)
-
-inlineexplicit
-
-
Parameters
- - - -
[in,out]rreference to a JSON value that is manipulated while parsing
[in]allow_exceptions_whether parse errors yield exceptions
-
-
- -
-
- -

◆ json_sax_dom_parser() [5/6]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
nlohmann::detail::json_sax_dom_parser< BasicJsonType >::json_sax_dom_parser (const json_sax_dom_parser< BasicJsonType > & )
-
-delete
-
- -
-
- -

◆ json_sax_dom_parser() [6/6]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
nlohmann::detail::json_sax_dom_parser< BasicJsonType >::json_sax_dom_parser (json_sax_dom_parser< BasicJsonType > && )
-
-default
-
- -
-
- -

◆ ~json_sax_dom_parser() [2/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - -
nlohmann::detail::json_sax_dom_parser< BasicJsonType >::~json_sax_dom_parser ()
-
-default
-
- -
-
-

Member Function Documentation

- -

◆ binary()

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
bool nlohmann::detail::json_sax_dom_parser< BasicJsonType >::binary (binary_tval)
-
-inline
-
- -
-
- -

◆ boolean() [1/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
bool nlohmann::detail::json_sax_dom_parser< BasicJsonType >::boolean (bool val)
-
-inline
-
- -
-
- -

◆ boolean() [2/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
bool nlohmann::detail::json_sax_dom_parser< BasicJsonType >::boolean (bool val)
-
-inline
-
- -
-
- -

◆ end_array() [1/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - -
bool nlohmann::detail::json_sax_dom_parser< BasicJsonType >::end_array ()
-
-inline
-
- -
-
- -

◆ end_array() [2/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - -
bool nlohmann::detail::json_sax_dom_parser< BasicJsonType >::end_array ()
-
-inline
-
- -
-
- -

◆ end_object() [1/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - -
bool nlohmann::detail::json_sax_dom_parser< BasicJsonType >::end_object ()
-
-inline
-
- -
-
- -

◆ end_object() [2/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - -
bool nlohmann::detail::json_sax_dom_parser< BasicJsonType >::end_object ()
-
-inline
-
- -
-
- -

◆ is_errored() [1/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - -
constexpr bool nlohmann::detail::json_sax_dom_parser< BasicJsonType >::is_errored () const
-
-inlineconstexpr
-
- -
-
- -

◆ is_errored() [2/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - -
constexpr bool nlohmann::detail::json_sax_dom_parser< BasicJsonType >::is_errored () const
-
-inlineconstexpr
-
- -
-
- -

◆ key() [1/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
bool nlohmann::detail::json_sax_dom_parser< BasicJsonType >::key (string_tval)
-
-inline
-
- -
-
- -

◆ key() [2/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
bool nlohmann::detail::json_sax_dom_parser< BasicJsonType >::key (string_tval)
-
-inline
-
- -
-
- -

◆ null() [1/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - -
bool nlohmann::detail::json_sax_dom_parser< BasicJsonType >::null ()
-
-inline
-
- -
-
- -

◆ null() [2/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - -
bool nlohmann::detail::json_sax_dom_parser< BasicJsonType >::null ()
-
-inline
-
- -
-
- -

◆ number_float() [1/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool nlohmann::detail::json_sax_dom_parser< BasicJsonType >::number_float (number_float_t val,
const string_t 
)
-
-inline
-
- -
-
- -

◆ number_float() [2/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool nlohmann::detail::json_sax_dom_parser< BasicJsonType >::number_float (number_float_t val,
const string_t 
)
-
-inline
-
- -
-
- -

◆ number_integer() [1/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
bool nlohmann::detail::json_sax_dom_parser< BasicJsonType >::number_integer (number_integer_t val)
-
-inline
-
- -
-
- -

◆ number_integer() [2/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
bool nlohmann::detail::json_sax_dom_parser< BasicJsonType >::number_integer (number_integer_t val)
-
-inline
-
- -
-
- -

◆ number_unsigned() [1/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
bool nlohmann::detail::json_sax_dom_parser< BasicJsonType >::number_unsigned (number_unsigned_t val)
-
-inline
-
- -
-
- -

◆ number_unsigned() [2/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
bool nlohmann::detail::json_sax_dom_parser< BasicJsonType >::number_unsigned (number_unsigned_t val)
-
-inline
-
- -
-
- -

◆ operator=() [1/4]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
json_sax_dom_parser& nlohmann::detail::json_sax_dom_parser< BasicJsonType >::operator= (const json_sax_dom_parser< BasicJsonType > & )
-
-delete
-
- -
-
- -

◆ operator=() [2/4]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
json_sax_dom_parser& nlohmann::detail::json_sax_dom_parser< BasicJsonType >::operator= (const json_sax_dom_parser< BasicJsonType > & )
-
-delete
-
- -
-
- -

◆ operator=() [3/4]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
json_sax_dom_parser& nlohmann::detail::json_sax_dom_parser< BasicJsonType >::operator= (json_sax_dom_parser< BasicJsonType > && )
-
-default
-
- -
-
- -

◆ operator=() [4/4]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
json_sax_dom_parser& nlohmann::detail::json_sax_dom_parser< BasicJsonType >::operator= (json_sax_dom_parser< BasicJsonType > && )
-
-default
-
- -
-
- -

◆ parse_error() [1/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
bool nlohmann::detail::json_sax_dom_parser< BasicJsonType >::parse_error (std::size_t ,
const std::string & ,
const detail::exceptionex 
)
-
-inline
-
- -
-
- -

◆ parse_error() [2/2]

- -
-
-
-template<typename BasicJsonType >
-
-template<class Exception >
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
bool nlohmann::detail::json_sax_dom_parser< BasicJsonType >::parse_error (std::size_t ,
const std::string & ,
const Exception & ex 
)
-
-inline
-
- -
-
- -

◆ start_array() [1/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
bool nlohmann::detail::json_sax_dom_parser< BasicJsonType >::start_array (std::size_t len)
-
-inline
-
- -
-
- -

◆ start_array() [2/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
bool nlohmann::detail::json_sax_dom_parser< BasicJsonType >::start_array (std::size_t len)
-
-inline
-
- -
-
- -

◆ start_object() [1/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
bool nlohmann::detail::json_sax_dom_parser< BasicJsonType >::start_object (std::size_t len)
-
-inline
-
- -
-
- -

◆ start_object() [2/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
bool nlohmann::detail::json_sax_dom_parser< BasicJsonType >::start_object (std::size_t len)
-
-inline
-
- -
-
- -

◆ string() [1/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
bool nlohmann::detail::json_sax_dom_parser< BasicJsonType >::string (string_tval)
-
-inline
-
- -
-
- -

◆ string() [2/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
bool nlohmann::detail::json_sax_dom_parser< BasicJsonType >::string (string_tval)
-
-inline
-
- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/help/html/classnlohmann_1_1detail_1_1lexer-members.html b/help/html/classnlohmann_1_1detail_1_1lexer-members.html deleted file mode 100644 index 27ed838..0000000 --- a/help/html/classnlohmann_1_1detail_1_1lexer-members.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
nlohmann::detail::lexer< BasicJsonType > Member List
-
-
- -

This is the complete list of members for nlohmann::detail::lexer< BasicJsonType >, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
get_error_message() const noexceptnlohmann::detail::lexer< BasicJsonType >inline
get_error_message() const noexceptnlohmann::detail::lexer< BasicJsonType >inline
get_number_float() const noexceptnlohmann::detail::lexer< BasicJsonType >inline
get_number_float() const noexceptnlohmann::detail::lexer< BasicJsonType >inline
get_number_integer() const noexceptnlohmann::detail::lexer< BasicJsonType >inline
get_number_integer() const noexceptnlohmann::detail::lexer< BasicJsonType >inline
get_number_unsigned() const noexceptnlohmann::detail::lexer< BasicJsonType >inline
get_number_unsigned() const noexceptnlohmann::detail::lexer< BasicJsonType >inline
get_position() const noexceptnlohmann::detail::lexer< BasicJsonType >inline
get_position() const noexceptnlohmann::detail::lexer< BasicJsonType >inline
get_string()nlohmann::detail::lexer< BasicJsonType >inline
get_string()nlohmann::detail::lexer< BasicJsonType >inline
get_token_string() constnlohmann::detail::lexer< BasicJsonType >inline
get_token_string() constnlohmann::detail::lexer< BasicJsonType >inline
lexer(detail::input_adapter_t &&adapter)nlohmann::detail::lexer< BasicJsonType >inlineexplicit
lexer(const lexer &)=deletenlohmann::detail::lexer< BasicJsonType >
lexer(lexer &&)=deletenlohmann::detail::lexer< BasicJsonType >
lexer(InputAdapterType &&adapter, bool ignore_comments_=false)nlohmann::detail::lexer< BasicJsonType >inlineexplicit
lexer(const lexer &)=deletenlohmann::detail::lexer< BasicJsonType >
lexer(lexer &&)=defaultnlohmann::detail::lexer< BasicJsonType >
operator=(lexer &)=deletenlohmann::detail::lexer< BasicJsonType >
operator=(lexer &&)=deletenlohmann::detail::lexer< BasicJsonType >
operator=(lexer &)=deletenlohmann::detail::lexer< BasicJsonType >
operator=(lexer &&)=defaultnlohmann::detail::lexer< BasicJsonType >
scan()nlohmann::detail::lexer< BasicJsonType >inline
scan()nlohmann::detail::lexer< BasicJsonType >inline
skip_bom()nlohmann::detail::lexer< BasicJsonType >inline
skip_bom()nlohmann::detail::lexer< BasicJsonType >inline
skip_whitespace()nlohmann::detail::lexer< BasicJsonType >inline
token_type enum namenlohmann::detail::lexer< BasicJsonType >
token_type typedefnlohmann::detail::lexer< BasicJsonType >
token_type_name(const token_type t) noexceptnlohmann::detail::lexer< BasicJsonType >inlinestatic
~lexer()=defaultnlohmann::detail::lexer< BasicJsonType >
~lexer()=defaultnlohmann::detail::lexer< BasicJsonType >
- - - - diff --git a/help/html/classnlohmann_1_1detail_1_1lexer.html b/help/html/classnlohmann_1_1detail_1_1lexer.html deleted file mode 100644 index 0b49315..0000000 --- a/help/html/classnlohmann_1_1detail_1_1lexer.html +++ /dev/null @@ -1,1217 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::lexer< BasicJsonType > Class Template Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
nlohmann::detail::lexer< BasicJsonType > Class Template Reference
-
-
- -

lexical analysis - More...

- -

#include <json.hpp>

- - - - - - - -

-Public Types

enum  token_type {
-  token_type::uninitialized, -token_type::literal_true, -token_type::literal_false, -token_type::literal_null, -
-  token_type::value_string, -token_type::value_unsigned, -token_type::value_integer, -token_type::value_float, -
-  token_type::begin_array, -token_type::begin_object, -token_type::end_array, -token_type::end_object, -
-  token_type::name_separator, -token_type::value_separator, -token_type::parse_error, -token_type::end_of_input, -
-  token_type::literal_or_value -
- }
 token types for the parser More...
 
using token_type = typename lexer_base< BasicJsonType >::token_type
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 lexer (detail::input_adapter_t &&adapter)
 
 lexer (const lexer &)=delete
 
 lexer (lexer &&)=delete
 
lexeroperator= (lexer &)=delete
 
lexeroperator= (lexer &&)=delete
 
 ~lexer ()=default
 
constexpr number_integer_t get_number_integer () const noexcept
 return integer value More...
 
constexpr number_unsigned_t get_number_unsigned () const noexcept
 return unsigned integer value More...
 
constexpr number_float_t get_number_float () const noexcept
 return floating-point value More...
 
string_t & get_string ()
 return current string value (implicitly resets the token; useful only once) More...
 
constexpr position_t get_position () const noexcept
 return position of last read token More...
 
std::string get_token_string () const
 
constexpr const JSON_HEDLEY_RETURNS_NON_NULL char * get_error_message () const noexcept
 return syntax error message More...
 
bool skip_bom ()
 skip the UTF-8 byte order mark More...
 
token_type scan ()
 
 lexer (InputAdapterType &&adapter, bool ignore_comments_=false)
 
 lexer (const lexer &)=delete
 
 lexer (lexer &&)=default
 
lexeroperator= (lexer &)=delete
 
lexeroperator= (lexer &&)=default
 
 ~lexer ()=default
 
constexpr number_integer_t get_number_integer () const noexcept
 return integer value More...
 
constexpr number_unsigned_t get_number_unsigned () const noexcept
 return unsigned integer value More...
 
constexpr number_float_t get_number_float () const noexcept
 return floating-point value More...
 
string_t & get_string ()
 return current string value (implicitly resets the token; useful only once) More...
 
constexpr position_t get_position () const noexcept
 return position of last read token More...
 
std::string get_token_string () const
 
constexpr const JSON_HEDLEY_RETURNS_NON_NULL char * get_error_message () const noexcept
 return syntax error message More...
 
bool skip_bom ()
 skip the UTF-8 byte order mark More...
 
void skip_whitespace ()
 
token_type scan ()
 
- - - - -

-Static Public Member Functions

JSON_HEDLEY_RETURNS_NON_NULL static const JSON_HEDLEY_CONST char * token_type_name (const token_type t) noexcept
 return name of values of type token_type (only used for errors) More...
 
-

Detailed Description

-

template<typename BasicJsonType>
-class nlohmann::detail::lexer< BasicJsonType >

- -

lexical analysis

-

This class organizes the lexical analysis during JSON deserialization.

-

Member Typedef Documentation

- -

◆ token_type

- -
-
-
-template<typename BasicJsonType >
- - - - -
using nlohmann::detail::lexer< BasicJsonType >::token_type = typename lexer_base<BasicJsonType>::token_type
-
- -
-
-

Member Enumeration Documentation

- -

◆ token_type

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - -
enum nlohmann::detail::lexer::token_type
-
-strong
-
- -

token types for the parser

- - - - - - - - - - - - - - - - - - -
Enumerator
uninitialized 

indicating the scanner is uninitialized

-
literal_true 

the true literal

-
literal_false 

the false literal

-
literal_null 

the null literal

-
value_string 

a string – use get_string() for actual value

-
value_unsigned 

an unsigned integer – use get_number_unsigned() for actual value

-
value_integer 

a signed integer – use get_number_integer() for actual value

-
value_float 

an floating point number – use get_number_float() for actual value

-
begin_array 

the character for array begin [

-
begin_object 

the character for object begin {

-
end_array 

the character for array end ]

-
end_object 

the character for object end }

-
name_separator 

the name separator :

-
value_separator 

the value separator ,

-
parse_error 

indicating a parse error

-
end_of_input 

indicating the end of the input buffer

-
literal_or_value 

a literal or the begin of a value (only for diagnostics)

-
- -
-
-

Constructor & Destructor Documentation

- -

◆ lexer() [1/6]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
nlohmann::detail::lexer< BasicJsonType >::lexer (detail::input_adapter_t && adapter)
-
-inlineexplicit
-
- -
-
- -

◆ lexer() [2/6]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
nlohmann::detail::lexer< BasicJsonType >::lexer (const lexer< BasicJsonType > & )
-
-delete
-
- -
-
- -

◆ lexer() [3/6]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
nlohmann::detail::lexer< BasicJsonType >::lexer (lexer< BasicJsonType > && )
-
-delete
-
- -
-
- -

◆ ~lexer() [1/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - -
nlohmann::detail::lexer< BasicJsonType >::~lexer ()
-
-default
-
- -
-
- -

◆ lexer() [4/6]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - - - - - - - - - - - -
nlohmann::detail::lexer< BasicJsonType >::lexer (InputAdapterType && adapter,
bool ignore_comments_ = false 
)
-
-inlineexplicit
-
- -
-
- -

◆ lexer() [5/6]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
nlohmann::detail::lexer< BasicJsonType >::lexer (const lexer< BasicJsonType > & )
-
-delete
-
- -
-
- -

◆ lexer() [6/6]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
nlohmann::detail::lexer< BasicJsonType >::lexer (lexer< BasicJsonType > && )
-
-default
-
- -
-
- -

◆ ~lexer() [2/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - -
nlohmann::detail::lexer< BasicJsonType >::~lexer ()
-
-default
-
- -
-
-

Member Function Documentation

- -

◆ get_error_message() [1/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - -
constexpr const JSON_HEDLEY_RETURNS_NON_NULL char* nlohmann::detail::lexer< BasicJsonType >::get_error_message () const
-
-inlineconstexprnoexcept
-
- -

return syntax error message

- -
-
- -

◆ get_error_message() [2/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - -
constexpr const JSON_HEDLEY_RETURNS_NON_NULL char* nlohmann::detail::lexer< BasicJsonType >::get_error_message () const
-
-inlineconstexprnoexcept
-
- -

return syntax error message

- -
-
- -

◆ get_number_float() [1/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - -
constexpr number_float_t nlohmann::detail::lexer< BasicJsonType >::get_number_float () const
-
-inlineconstexprnoexcept
-
- -

return floating-point value

- -
-
- -

◆ get_number_float() [2/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - -
constexpr number_float_t nlohmann::detail::lexer< BasicJsonType >::get_number_float () const
-
-inlineconstexprnoexcept
-
- -

return floating-point value

- -
-
- -

◆ get_number_integer() [1/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - -
constexpr number_integer_t nlohmann::detail::lexer< BasicJsonType >::get_number_integer () const
-
-inlineconstexprnoexcept
-
- -

return integer value

- -
-
- -

◆ get_number_integer() [2/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - -
constexpr number_integer_t nlohmann::detail::lexer< BasicJsonType >::get_number_integer () const
-
-inlineconstexprnoexcept
-
- -

return integer value

- -
-
- -

◆ get_number_unsigned() [1/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - -
constexpr number_unsigned_t nlohmann::detail::lexer< BasicJsonType >::get_number_unsigned () const
-
-inlineconstexprnoexcept
-
- -

return unsigned integer value

- -
-
- -

◆ get_number_unsigned() [2/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - -
constexpr number_unsigned_t nlohmann::detail::lexer< BasicJsonType >::get_number_unsigned () const
-
-inlineconstexprnoexcept
-
- -

return unsigned integer value

- -
-
- -

◆ get_position() [1/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - -
constexpr position_t nlohmann::detail::lexer< BasicJsonType >::get_position () const
-
-inlineconstexprnoexcept
-
- -

return position of last read token

- -
-
- -

◆ get_position() [2/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - -
constexpr position_t nlohmann::detail::lexer< BasicJsonType >::get_position () const
-
-inlineconstexprnoexcept
-
- -

return position of last read token

- -
-
- -

◆ get_string() [1/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - -
string_t& nlohmann::detail::lexer< BasicJsonType >::get_string ()
-
-inline
-
- -

return current string value (implicitly resets the token; useful only once)

- -
-
- -

◆ get_string() [2/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - -
string_t& nlohmann::detail::lexer< BasicJsonType >::get_string ()
-
-inline
-
- -

return current string value (implicitly resets the token; useful only once)

- -
-
- -

◆ get_token_string() [1/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - -
std::string nlohmann::detail::lexer< BasicJsonType >::get_token_string () const
-
-inline
-
-

return the last read token (for errors only). Will never contain EOF (an arbitrary value that is not a valid char value, often -1), because 255 may legitimately occur. May contain NUL, which should be escaped.

- -
-
- -

◆ get_token_string() [2/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - -
std::string nlohmann::detail::lexer< BasicJsonType >::get_token_string () const
-
-inline
-
-

return the last read token (for errors only). Will never contain EOF (an arbitrary value that is not a valid char value, often -1), because 255 may legitimately occur. May contain NUL, which should be escaped.

- -
-
- -

◆ operator=() [1/4]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
lexer& nlohmann::detail::lexer< BasicJsonType >::operator= (lexer< BasicJsonType > && )
-
-default
-
- -
-
- -

◆ operator=() [2/4]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
lexer& nlohmann::detail::lexer< BasicJsonType >::operator= (lexer< BasicJsonType > && )
-
-delete
-
- -
-
- -

◆ operator=() [3/4]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
lexer& nlohmann::detail::lexer< BasicJsonType >::operator= (lexer< BasicJsonType > & )
-
-delete
-
- -
-
- -

◆ operator=() [4/4]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
lexer& nlohmann::detail::lexer< BasicJsonType >::operator= (lexer< BasicJsonType > & )
-
-delete
-
- -
-
- -

◆ scan() [1/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - -
token_type nlohmann::detail::lexer< BasicJsonType >::scan ()
-
-inline
-
- -
-
- -

◆ scan() [2/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - -
token_type nlohmann::detail::lexer< BasicJsonType >::scan ()
-
-inline
-
- -
-
- -

◆ skip_bom() [1/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - -
bool nlohmann::detail::lexer< BasicJsonType >::skip_bom ()
-
-inline
-
- -

skip the UTF-8 byte order mark

-
Returns
true iff there is no BOM or the correct BOM has been skipped
- -
-
- -

◆ skip_bom() [2/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - -
bool nlohmann::detail::lexer< BasicJsonType >::skip_bom ()
-
-inline
-
- -

skip the UTF-8 byte order mark

-
Returns
true iff there is no BOM or the correct BOM has been skipped
- -
-
- -

◆ skip_whitespace()

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - -
void nlohmann::detail::lexer< BasicJsonType >::skip_whitespace ()
-
-inline
-
- -
-
- -

◆ token_type_name()

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
JSON_HEDLEY_RETURNS_NON_NULL static const JSON_HEDLEY_CONST char* nlohmann::detail::lexer< BasicJsonType >::token_type_name (const token_type t)
-
-inlinestaticnoexcept
-
- -

return name of values of type token_type (only used for errors)

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/help/html/classnlohmann_1_1detail_1_1lexer__base-members.html b/help/html/classnlohmann_1_1detail_1_1lexer__base-members.html deleted file mode 100644 index 3df5486..0000000 --- a/help/html/classnlohmann_1_1detail_1_1lexer__base-members.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
nlohmann::detail::lexer_base< BasicJsonType > Member List
-
-
- -

This is the complete list of members for nlohmann::detail::lexer_base< BasicJsonType >, including all inherited members.

- - - -
token_type enum namenlohmann::detail::lexer_base< BasicJsonType >
token_type_name(const token_type t) noexceptnlohmann::detail::lexer_base< BasicJsonType >inlinestatic
- - - - diff --git a/help/html/classnlohmann_1_1detail_1_1lexer__base.html b/help/html/classnlohmann_1_1detail_1_1lexer__base.html deleted file mode 100644 index 349de9f..0000000 --- a/help/html/classnlohmann_1_1detail_1_1lexer__base.html +++ /dev/null @@ -1,219 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::lexer_base< BasicJsonType > Class Template Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
nlohmann::detail::lexer_base< BasicJsonType > Class Template Reference
-
-
- -

#include <json.hpp>

- - - - - -

-Public Types

enum  token_type {
-  token_type::uninitialized, -token_type::literal_true, -token_type::literal_false, -token_type::literal_null, -
-  token_type::value_string, -token_type::value_unsigned, -token_type::value_integer, -token_type::value_float, -
-  token_type::begin_array, -token_type::begin_object, -token_type::end_array, -token_type::end_object, -
-  token_type::name_separator, -token_type::value_separator, -token_type::parse_error, -token_type::end_of_input, -
-  token_type::literal_or_value -
- }
 token types for the parser More...
 
- - - - -

-Static Public Member Functions

JSON_HEDLEY_RETURNS_NON_NULL static const JSON_HEDLEY_CONST char * token_type_name (const token_type t) noexcept
 return name of values of type token_type (only used for errors) More...
 
-

Member Enumeration Documentation

- -

◆ token_type

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - -
enum nlohmann::detail::lexer_base::token_type
-
-strong
-
- -

token types for the parser

- - - - - - - - - - - - - - - - - - -
Enumerator
uninitialized 

indicating the scanner is uninitialized

-
literal_true 

the true literal

-
literal_false 

the false literal

-
literal_null 

the null literal

-
value_string 

a string – use get_string() for actual value

-
value_unsigned 

an unsigned integer – use get_number_unsigned() for actual value

-
value_integer 

a signed integer – use get_number_integer() for actual value

-
value_float 

an floating point number – use get_number_float() for actual value

-
begin_array 

the character for array begin [

-
begin_object 

the character for object begin {

-
end_array 

the character for array end ]

-
end_object 

the character for object end }

-
name_separator 

the name separator :

-
value_separator 

the value separator ,

-
parse_error 

indicating a parse error

-
end_of_input 

indicating the end of the input buffer

-
literal_or_value 

a literal or the begin of a value (only for diagnostics)

-
- -
-
-

Member Function Documentation

- -

◆ token_type_name()

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
JSON_HEDLEY_RETURNS_NON_NULL static const JSON_HEDLEY_CONST char* nlohmann::detail::lexer_base< BasicJsonType >::token_type_name (const token_type t)
-
-inlinestaticnoexcept
-
- -

return name of values of type token_type (only used for errors)

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/help/html/classnlohmann_1_1detail_1_1other__error-members.html b/help/html/classnlohmann_1_1detail_1_1other__error-members.html deleted file mode 100644 index a227fc3..0000000 --- a/help/html/classnlohmann_1_1detail_1_1other__error-members.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
nlohmann::detail::other_error Member List
-
-
- -

This is the complete list of members for nlohmann::detail::other_error, including all inherited members.

- - - - - - - - - - -
create(int id_, const std::string &what_arg)nlohmann::detail::other_errorinlinestatic
create(int id_, const std::string &what_arg)nlohmann::detail::other_errorinlinestatic
exception(int id_, const char *what_arg)nlohmann::detail::exceptioninlineprotected
exception(int id_, const char *what_arg)nlohmann::detail::exceptioninlineprotected
idnlohmann::detail::exception
name(const std::string &ename, int id_)nlohmann::detail::exceptioninlineprotectedstatic
name(const std::string &ename, int id_)nlohmann::detail::exceptioninlineprotectedstatic
what() const noexcept overridenlohmann::detail::exceptioninline
what() const noexcept overridenlohmann::detail::exceptioninline
- - - - diff --git a/help/html/classnlohmann_1_1detail_1_1other__error.html b/help/html/classnlohmann_1_1detail_1_1other__error.html deleted file mode 100644 index 8f97914..0000000 --- a/help/html/classnlohmann_1_1detail_1_1other__error.html +++ /dev/null @@ -1,237 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::other_error Class Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
nlohmann::detail::other_error Class Reference
-
-
- -

exception indicating other library errors - More...

- -

#include <json.hpp>

-
-Inheritance diagram for nlohmann::detail::other_error:
-
-
Inheritance graph
- - - - - -
[legend]
-
-Collaboration diagram for nlohmann::detail::other_error:
-
-
Collaboration graph
- - - - - -
[legend]
- - - - - - -

-Static Public Member Functions

static other_error create (int id_, const std::string &what_arg)
 
static other_error create (int id_, const std::string &what_arg)
 
- - - - - - - - - - - - - - - - - - - - - - -

-Additional Inherited Members

- Public Member Functions inherited from nlohmann::detail::exception
const JSON_HEDLEY_RETURNS_NON_NULL char * what () const noexcept override
 returns the explanatory string More...
 
const JSON_HEDLEY_RETURNS_NON_NULL char * what () const noexcept override
 returns the explanatory string More...
 
- Public Attributes inherited from nlohmann::detail::exception
const int id
 the id of the exception More...
 
- Protected Member Functions inherited from nlohmann::detail::exception
 exception (int id_, const char *what_arg)
 
 exception (int id_, const char *what_arg)
 
- Static Protected Member Functions inherited from nlohmann::detail::exception
static std::string name (const std::string &ename, int id_)
 
static std::string name (const std::string &ename, int id_)
 
-

Detailed Description

-

exception indicating other library errors

-

This exception is thrown in case of errors that cannot be classified with the other exception types.

-

Exceptions have ids 5xx.

- - - - - -
name / id example message description
json.exception.other_error.501 unsuccessful: {"op":"test","path":"/baz", "value":"bar"} A JSON Patch operation 'test' failed. The unsuccessful operation is also printed.
-
See also
- exception for the base class of the library exceptions
-
-- parse_error for exceptions indicating a parse error
-
-- invalid_iterator for exceptions indicating errors with iterators
-
-- type_error for exceptions indicating executing a member function with a wrong type
-
-- out_of_range for exceptions indicating access out of the defined range
-

@liveexample{The following code shows how an other_error exception can be caught.,other_error}

-
Since
version 3.0.0
-

Member Function Documentation

- -

◆ create() [1/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
static other_error nlohmann::detail::other_error::create (int id_,
const std::string & what_arg 
)
-
-inlinestatic
-
- -
-
- -

◆ create() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
static other_error nlohmann::detail::other_error::create (int id_,
const std::string & what_arg 
)
-
-inlinestatic
-
- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/help/html/classnlohmann_1_1detail_1_1other__error__coll__graph.map b/help/html/classnlohmann_1_1detail_1_1other__error__coll__graph.map deleted file mode 100644 index ebea63e..0000000 --- a/help/html/classnlohmann_1_1detail_1_1other__error__coll__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/help/html/classnlohmann_1_1detail_1_1other__error__coll__graph.md5 b/help/html/classnlohmann_1_1detail_1_1other__error__coll__graph.md5 deleted file mode 100644 index defe5c0..0000000 --- a/help/html/classnlohmann_1_1detail_1_1other__error__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -0a9cee24c33c9b81273d8283827660a1 \ No newline at end of file diff --git a/help/html/classnlohmann_1_1detail_1_1other__error__coll__graph.png b/help/html/classnlohmann_1_1detail_1_1other__error__coll__graph.png deleted file mode 100644 index 1ca579b..0000000 Binary files a/help/html/classnlohmann_1_1detail_1_1other__error__coll__graph.png and /dev/null differ diff --git a/help/html/classnlohmann_1_1detail_1_1other__error__inherit__graph.map b/help/html/classnlohmann_1_1detail_1_1other__error__inherit__graph.map deleted file mode 100644 index ebea63e..0000000 --- a/help/html/classnlohmann_1_1detail_1_1other__error__inherit__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/help/html/classnlohmann_1_1detail_1_1other__error__inherit__graph.md5 b/help/html/classnlohmann_1_1detail_1_1other__error__inherit__graph.md5 deleted file mode 100644 index defe5c0..0000000 --- a/help/html/classnlohmann_1_1detail_1_1other__error__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -0a9cee24c33c9b81273d8283827660a1 \ No newline at end of file diff --git a/help/html/classnlohmann_1_1detail_1_1other__error__inherit__graph.png b/help/html/classnlohmann_1_1detail_1_1other__error__inherit__graph.png deleted file mode 100644 index 1ca579b..0000000 Binary files a/help/html/classnlohmann_1_1detail_1_1other__error__inherit__graph.png and /dev/null differ diff --git a/help/html/classnlohmann_1_1detail_1_1out__of__range-members.html b/help/html/classnlohmann_1_1detail_1_1out__of__range-members.html deleted file mode 100644 index d0af03e..0000000 --- a/help/html/classnlohmann_1_1detail_1_1out__of__range-members.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
nlohmann::detail::out_of_range Member List
-
-
- -

This is the complete list of members for nlohmann::detail::out_of_range, including all inherited members.

- - - - - - - - - - -
create(int id_, const std::string &what_arg)nlohmann::detail::out_of_rangeinlinestatic
create(int id_, const std::string &what_arg)nlohmann::detail::out_of_rangeinlinestatic
exception(int id_, const char *what_arg)nlohmann::detail::exceptioninlineprotected
exception(int id_, const char *what_arg)nlohmann::detail::exceptioninlineprotected
idnlohmann::detail::exception
name(const std::string &ename, int id_)nlohmann::detail::exceptioninlineprotectedstatic
name(const std::string &ename, int id_)nlohmann::detail::exceptioninlineprotectedstatic
what() const noexcept overridenlohmann::detail::exceptioninline
what() const noexcept overridenlohmann::detail::exceptioninline
- - - - diff --git a/help/html/classnlohmann_1_1detail_1_1out__of__range.html b/help/html/classnlohmann_1_1detail_1_1out__of__range.html deleted file mode 100644 index e224b78..0000000 --- a/help/html/classnlohmann_1_1detail_1_1out__of__range.html +++ /dev/null @@ -1,288 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::out_of_range Class Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
nlohmann::detail::out_of_range Class Reference
-
-
- -

exception indicating access out of the defined range - More...

- -

#include <json.hpp>

-
-Inheritance diagram for nlohmann::detail::out_of_range:
-
-
Inheritance graph
- - - - - -
[legend]
-
-Collaboration diagram for nlohmann::detail::out_of_range:
-
-
Collaboration graph
- - - - - -
[legend]
- - - - - - -

-Static Public Member Functions

static out_of_range create (int id_, const std::string &what_arg)
 
static out_of_range create (int id_, const std::string &what_arg)
 
- - - - - - - - - - - - - - - - - - - - - - -

-Additional Inherited Members

- Public Member Functions inherited from nlohmann::detail::exception
const JSON_HEDLEY_RETURNS_NON_NULL char * what () const noexcept override
 returns the explanatory string More...
 
const JSON_HEDLEY_RETURNS_NON_NULL char * what () const noexcept override
 returns the explanatory string More...
 
- Public Attributes inherited from nlohmann::detail::exception
const int id
 the id of the exception More...
 
- Protected Member Functions inherited from nlohmann::detail::exception
 exception (int id_, const char *what_arg)
 
 exception (int id_, const char *what_arg)
 
- Static Protected Member Functions inherited from nlohmann::detail::exception
static std::string name (const std::string &ename, int id_)
 
static std::string name (const std::string &ename, int id_)
 
-

Detailed Description

-

exception indicating access out of the defined range

-

This exception is thrown in case a library function is called on an input parameter that exceeds the expected range, for instance in case of array indices or nonexisting object keys.

-

Exceptions have ids 4xx.

- - - - - - - - - - - - - - - - - - - - - -
name / id example message description
json.exception.out_of_range.401 array index 3 is out of range The provided array index i is larger than size-1.
json.exception.out_of_range.402 array index '-' (3) is out of range The special array index - in a JSON Pointer never describes a valid element of the array, but the index past the end. That is, it can only be used to add elements at this position, but not to read it.
json.exception.out_of_range.403 key 'foo' not found The provided key was not found in the JSON object.
json.exception.out_of_range.404 unresolved reference token 'foo' A reference token in a JSON Pointer could not be resolved.
json.exception.out_of_range.405 JSON pointer has no parent The JSON Patch operations 'remove' and 'add' can not be applied to the root element of the JSON value.
json.exception.out_of_range.406 number overflow parsing '10E1000' A parsed number could not be stored as without changing it to NaN or INF.
json.exception.out_of_range.407 number overflow serializing '9223372036854775808' UBJSON and BSON only support integer numbers up to 9223372036854775807.
json.exception.out_of_range.408 excessive array size: 8658170730974374167 The size (following #) of an UBJSON array or object exceeds the maximal capacity.
json.exception.out_of_range.409 BSON key cannot contain code point U+0000 (at byte 2) Key identifiers to be serialized to BSON cannot contain code point U+0000, since the key is stored as zero-terminated c-string
-

@liveexample{The following code shows how an out_of_range exception can be caught.,out_of_range}

-
See also
- exception for the base class of the library exceptions
-
-- parse_error for exceptions indicating a parse error
-
-- invalid_iterator for exceptions indicating errors with iterators
-
-- type_error for exceptions indicating executing a member function with a wrong type
-
-- other_error for exceptions indicating other library errors
-
Since
version 3.0.0
-

This exception is thrown in case a library function is called on an input parameter that exceeds the expected range, for instance in case of array indices or nonexisting object keys.

-

Exceptions have ids 4xx.

- - - - - - - - - - - - - - - - - - - - - -
name / id example message description
json.exception.out_of_range.401 array index 3 is out of range The provided array index i is larger than size-1.
json.exception.out_of_range.402 array index '-' (3) is out of range The special array index - in a JSON Pointer never describes a valid element of the array, but the index past the end. That is, it can only be used to add elements at this position, but not to read it.
json.exception.out_of_range.403 key 'foo' not found The provided key was not found in the JSON object.
json.exception.out_of_range.404 unresolved reference token 'foo' A reference token in a JSON Pointer could not be resolved.
json.exception.out_of_range.405 JSON pointer has no parent The JSON Patch operations 'remove' and 'add' can not be applied to the root element of the JSON value.
json.exception.out_of_range.406 number overflow parsing '10E1000' A parsed number could not be stored as without changing it to NaN or INF.
json.exception.out_of_range.407 number overflow serializing '9223372036854775808' UBJSON and BSON only support integer numbers up to 9223372036854775807. (until version 3.8.0)
json.exception.out_of_range.408 excessive array size: 8658170730974374167 The size (following #) of an UBJSON array or object exceeds the maximal capacity.
json.exception.out_of_range.409 BSON key cannot contain code point U+0000 (at byte 2) Key identifiers to be serialized to BSON cannot contain code point U+0000, since the key is stored as zero-terminated c-string
-

@liveexample{The following code shows how an out_of_range exception can be caught.,out_of_range}

-
See also
- exception for the base class of the library exceptions
-
-- parse_error for exceptions indicating a parse error
-
-- invalid_iterator for exceptions indicating errors with iterators
-
-- type_error for exceptions indicating executing a member function with a wrong type
-
-- other_error for exceptions indicating other library errors
-
Since
version 3.0.0
-

Member Function Documentation

- -

◆ create() [1/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
static out_of_range nlohmann::detail::out_of_range::create (int id_,
const std::string & what_arg 
)
-
-inlinestatic
-
- -
-
- -

◆ create() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
static out_of_range nlohmann::detail::out_of_range::create (int id_,
const std::string & what_arg 
)
-
-inlinestatic
-
- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/help/html/classnlohmann_1_1detail_1_1out__of__range__coll__graph.map b/help/html/classnlohmann_1_1detail_1_1out__of__range__coll__graph.map deleted file mode 100644 index b53b35f..0000000 --- a/help/html/classnlohmann_1_1detail_1_1out__of__range__coll__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/help/html/classnlohmann_1_1detail_1_1out__of__range__coll__graph.md5 b/help/html/classnlohmann_1_1detail_1_1out__of__range__coll__graph.md5 deleted file mode 100644 index 833615b..0000000 --- a/help/html/classnlohmann_1_1detail_1_1out__of__range__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -96c7fecbfe1fbe0bcce756a6760f5e65 \ No newline at end of file diff --git a/help/html/classnlohmann_1_1detail_1_1out__of__range__coll__graph.png b/help/html/classnlohmann_1_1detail_1_1out__of__range__coll__graph.png deleted file mode 100644 index 629fa1a..0000000 Binary files a/help/html/classnlohmann_1_1detail_1_1out__of__range__coll__graph.png and /dev/null differ diff --git a/help/html/classnlohmann_1_1detail_1_1out__of__range__inherit__graph.map b/help/html/classnlohmann_1_1detail_1_1out__of__range__inherit__graph.map deleted file mode 100644 index b53b35f..0000000 --- a/help/html/classnlohmann_1_1detail_1_1out__of__range__inherit__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/help/html/classnlohmann_1_1detail_1_1out__of__range__inherit__graph.md5 b/help/html/classnlohmann_1_1detail_1_1out__of__range__inherit__graph.md5 deleted file mode 100644 index 833615b..0000000 --- a/help/html/classnlohmann_1_1detail_1_1out__of__range__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -96c7fecbfe1fbe0bcce756a6760f5e65 \ No newline at end of file diff --git a/help/html/classnlohmann_1_1detail_1_1out__of__range__inherit__graph.png b/help/html/classnlohmann_1_1detail_1_1out__of__range__inherit__graph.png deleted file mode 100644 index 629fa1a..0000000 Binary files a/help/html/classnlohmann_1_1detail_1_1out__of__range__inherit__graph.png and /dev/null differ diff --git a/help/html/classnlohmann_1_1detail_1_1output__adapter-members.html b/help/html/classnlohmann_1_1detail_1_1output__adapter-members.html deleted file mode 100644 index fc9b7cf..0000000 --- a/help/html/classnlohmann_1_1detail_1_1output__adapter-members.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
nlohmann::detail::output_adapter< CharType, StringType > Member List
-
-
- -

This is the complete list of members for nlohmann::detail::output_adapter< CharType, StringType >, including all inherited members.

- - - - - - - - - -
operator output_adapter_t< CharType >()nlohmann::detail::output_adapter< CharType, StringType >inline
operator output_adapter_t< CharType >()nlohmann::detail::output_adapter< CharType, StringType >inline
output_adapter(std::vector< CharType > &vec)nlohmann::detail::output_adapter< CharType, StringType >inline
output_adapter(std::basic_ostream< CharType > &s)nlohmann::detail::output_adapter< CharType, StringType >inline
output_adapter(StringType &s)nlohmann::detail::output_adapter< CharType, StringType >inline
output_adapter(std::vector< CharType > &vec)nlohmann::detail::output_adapter< CharType, StringType >inline
output_adapter(std::basic_ostream< CharType > &s)nlohmann::detail::output_adapter< CharType, StringType >inline
output_adapter(StringType &s)nlohmann::detail::output_adapter< CharType, StringType >inline
- - - - diff --git a/help/html/classnlohmann_1_1detail_1_1output__adapter.html b/help/html/classnlohmann_1_1detail_1_1output__adapter.html deleted file mode 100644 index ec98270..0000000 --- a/help/html/classnlohmann_1_1detail_1_1output__adapter.html +++ /dev/null @@ -1,332 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::output_adapter< CharType, StringType > Class Template Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
nlohmann::detail::output_adapter< CharType, StringType > Class Template Reference
-
-
- -

#include <json.hpp>

- - - - - - - - - - - - - - - - - - -

-Public Member Functions

 output_adapter (std::vector< CharType > &vec)
 
 output_adapter (std::basic_ostream< CharType > &s)
 
 output_adapter (StringType &s)
 
 operator output_adapter_t< CharType > ()
 
 output_adapter (std::vector< CharType > &vec)
 
 output_adapter (std::basic_ostream< CharType > &s)
 
 output_adapter (StringType &s)
 
 operator output_adapter_t< CharType > ()
 
-

Constructor & Destructor Documentation

- -

◆ output_adapter() [1/6]

- -
-
-
-template<typename CharType , typename StringType = std::basic_string<CharType>>
- - - - - -
- - - - - - - - -
nlohmann::detail::output_adapter< CharType, StringType >::output_adapter (std::vector< CharType > & vec)
-
-inline
-
- -
-
- -

◆ output_adapter() [2/6]

- -
-
-
-template<typename CharType , typename StringType = std::basic_string<CharType>>
- - - - - -
- - - - - - - - -
nlohmann::detail::output_adapter< CharType, StringType >::output_adapter (std::basic_ostream< CharType > & s)
-
-inline
-
- -
-
- -

◆ output_adapter() [3/6]

- -
-
-
-template<typename CharType , typename StringType = std::basic_string<CharType>>
- - - - - -
- - - - - - - - -
nlohmann::detail::output_adapter< CharType, StringType >::output_adapter (StringType & s)
-
-inline
-
- -
-
- -

◆ output_adapter() [4/6]

- -
-
-
-template<typename CharType , typename StringType = std::basic_string<CharType>>
- - - - - -
- - - - - - - - -
nlohmann::detail::output_adapter< CharType, StringType >::output_adapter (std::vector< CharType > & vec)
-
-inline
-
- -
-
- -

◆ output_adapter() [5/6]

- -
-
-
-template<typename CharType , typename StringType = std::basic_string<CharType>>
- - - - - -
- - - - - - - - -
nlohmann::detail::output_adapter< CharType, StringType >::output_adapter (std::basic_ostream< CharType > & s)
-
-inline
-
- -
-
- -

◆ output_adapter() [6/6]

- -
-
-
-template<typename CharType , typename StringType = std::basic_string<CharType>>
- - - - - -
- - - - - - - - -
nlohmann::detail::output_adapter< CharType, StringType >::output_adapter (StringType & s)
-
-inline
-
- -
-
-

Member Function Documentation

- -

◆ operator output_adapter_t< CharType >() [1/2]

- -
-
-
-template<typename CharType , typename StringType = std::basic_string<CharType>>
- - - - - -
- - - - - - - -
nlohmann::detail::output_adapter< CharType, StringType >::operator output_adapter_t< CharType > ()
-
-inline
-
- -
-
- -

◆ operator output_adapter_t< CharType >() [2/2]

- -
-
-
-template<typename CharType , typename StringType = std::basic_string<CharType>>
- - - - - -
- - - - - - - -
nlohmann::detail::output_adapter< CharType, StringType >::operator output_adapter_t< CharType > ()
-
-inline
-
- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/help/html/classnlohmann_1_1detail_1_1output__stream__adapter-members.html b/help/html/classnlohmann_1_1detail_1_1output__stream__adapter-members.html deleted file mode 100644 index 0020d68..0000000 --- a/help/html/classnlohmann_1_1detail_1_1output__stream__adapter-members.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
nlohmann::detail::output_stream_adapter< CharType > Member List
-
-
- -

This is the complete list of members for nlohmann::detail::output_stream_adapter< CharType >, including all inherited members.

- - - - - - - - - -
output_stream_adapter(std::basic_ostream< CharType > &s) noexceptnlohmann::detail::output_stream_adapter< CharType >inlineexplicit
output_stream_adapter(std::basic_ostream< CharType > &s) noexceptnlohmann::detail::output_stream_adapter< CharType >inlineexplicit
write_character(CharType c) overridenlohmann::detail::output_stream_adapter< CharType >inlinevirtual
write_character(CharType c) overridenlohmann::detail::output_stream_adapter< CharType >inlinevirtual
write_characters(const CharType *s, std::size_t length) overridenlohmann::detail::output_stream_adapter< CharType >inlinevirtual
write_characters(const CharType *s, std::size_t length) overridenlohmann::detail::output_stream_adapter< CharType >inlinevirtual
~output_adapter_protocol()=defaultnlohmann::detail::output_adapter_protocol< CharType >virtual
~output_adapter_protocol()=defaultnlohmann::detail::output_adapter_protocol< CharType >virtual
- - - - diff --git a/help/html/classnlohmann_1_1detail_1_1output__stream__adapter.html b/help/html/classnlohmann_1_1detail_1_1output__stream__adapter.html deleted file mode 100644 index b3431d0..0000000 --- a/help/html/classnlohmann_1_1detail_1_1output__stream__adapter.html +++ /dev/null @@ -1,333 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::output_stream_adapter< CharType > Class Template Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
nlohmann::detail::output_stream_adapter< CharType > Class Template Reference
-
-
- -

output adapter for output streams - More...

- -

#include <json.hpp>

-
-Inheritance diagram for nlohmann::detail::output_stream_adapter< CharType >:
-
-
Inheritance graph
- - - - -
[legend]
-
-Collaboration diagram for nlohmann::detail::output_stream_adapter< CharType >:
-
-
Collaboration graph
- - - - -
[legend]
- - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 output_stream_adapter (std::basic_ostream< CharType > &s) noexcept
 
void write_character (CharType c) override
 
void write_characters (const CharType *s, std::size_t length) override
 
 output_stream_adapter (std::basic_ostream< CharType > &s) noexcept
 
void write_character (CharType c) override
 
void write_characters (const CharType *s, std::size_t length) override
 
- Public Member Functions inherited from nlohmann::detail::output_adapter_protocol< CharType >
virtual ~output_adapter_protocol ()=default
 
virtual ~output_adapter_protocol ()=default
 
-

Detailed Description

-

template<typename CharType>
-class nlohmann::detail::output_stream_adapter< CharType >

- -

output adapter for output streams

-

Constructor & Destructor Documentation

- -

◆ output_stream_adapter() [1/2]

- -
-
-
-template<typename CharType >
- - - - - -
- - - - - - - - -
nlohmann::detail::output_stream_adapter< CharType >::output_stream_adapter (std::basic_ostream< CharType > & s)
-
-inlineexplicitnoexcept
-
- -
-
- -

◆ output_stream_adapter() [2/2]

- -
-
-
-template<typename CharType >
- - - - - -
- - - - - - - - -
nlohmann::detail::output_stream_adapter< CharType >::output_stream_adapter (std::basic_ostream< CharType > & s)
-
-inlineexplicitnoexcept
-
- -
-
-

Member Function Documentation

- -

◆ write_character() [1/2]

- -
-
-
-template<typename CharType >
- - - - - -
- - - - - - - - -
void nlohmann::detail::output_stream_adapter< CharType >::write_character (CharType c)
-
-inlineoverridevirtual
-
-
- -

◆ write_character() [2/2]

- -
-
-
-template<typename CharType >
- - - - - -
- - - - - - - - -
void nlohmann::detail::output_stream_adapter< CharType >::write_character (CharType c)
-
-inlineoverridevirtual
-
-
- -

◆ write_characters() [1/2]

- -
-
-
-template<typename CharType >
- - - - - -
- - - - - - - - - - - - - - - - - - -
void nlohmann::detail::output_stream_adapter< CharType >::write_characters (const CharType * s,
std::size_t length 
)
-
-inlineoverridevirtual
-
-
- -

◆ write_characters() [2/2]

- -
-
-
-template<typename CharType >
- - - - - -
- - - - - - - - - - - - - - - - - - -
void nlohmann::detail::output_stream_adapter< CharType >::write_characters (const CharType * s,
std::size_t length 
)
-
-inlineoverridevirtual
-
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/help/html/classnlohmann_1_1detail_1_1output__stream__adapter__coll__graph.map b/help/html/classnlohmann_1_1detail_1_1output__stream__adapter__coll__graph.map deleted file mode 100644 index da7a60d..0000000 --- a/help/html/classnlohmann_1_1detail_1_1output__stream__adapter__coll__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/help/html/classnlohmann_1_1detail_1_1output__stream__adapter__coll__graph.md5 b/help/html/classnlohmann_1_1detail_1_1output__stream__adapter__coll__graph.md5 deleted file mode 100644 index b360326..0000000 --- a/help/html/classnlohmann_1_1detail_1_1output__stream__adapter__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -119c84b6df45cad2ec371fc980bf9664 \ No newline at end of file diff --git a/help/html/classnlohmann_1_1detail_1_1output__stream__adapter__coll__graph.png b/help/html/classnlohmann_1_1detail_1_1output__stream__adapter__coll__graph.png deleted file mode 100644 index 1eae750..0000000 Binary files a/help/html/classnlohmann_1_1detail_1_1output__stream__adapter__coll__graph.png and /dev/null differ diff --git a/help/html/classnlohmann_1_1detail_1_1output__stream__adapter__inherit__graph.map b/help/html/classnlohmann_1_1detail_1_1output__stream__adapter__inherit__graph.map deleted file mode 100644 index da7a60d..0000000 --- a/help/html/classnlohmann_1_1detail_1_1output__stream__adapter__inherit__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/help/html/classnlohmann_1_1detail_1_1output__stream__adapter__inherit__graph.md5 b/help/html/classnlohmann_1_1detail_1_1output__stream__adapter__inherit__graph.md5 deleted file mode 100644 index b360326..0000000 --- a/help/html/classnlohmann_1_1detail_1_1output__stream__adapter__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -119c84b6df45cad2ec371fc980bf9664 \ No newline at end of file diff --git a/help/html/classnlohmann_1_1detail_1_1output__stream__adapter__inherit__graph.png b/help/html/classnlohmann_1_1detail_1_1output__stream__adapter__inherit__graph.png deleted file mode 100644 index 1eae750..0000000 Binary files a/help/html/classnlohmann_1_1detail_1_1output__stream__adapter__inherit__graph.png and /dev/null differ diff --git a/help/html/classnlohmann_1_1detail_1_1output__string__adapter-members.html b/help/html/classnlohmann_1_1detail_1_1output__string__adapter-members.html deleted file mode 100644 index c913e10..0000000 --- a/help/html/classnlohmann_1_1detail_1_1output__string__adapter-members.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
nlohmann::detail::output_string_adapter< CharType, StringType > Member List
-
-
- -

This is the complete list of members for nlohmann::detail::output_string_adapter< CharType, StringType >, including all inherited members.

- - - - - - - - - -
output_string_adapter(StringType &s) noexceptnlohmann::detail::output_string_adapter< CharType, StringType >inlineexplicit
output_string_adapter(StringType &s) noexceptnlohmann::detail::output_string_adapter< CharType, StringType >inlineexplicit
write_character(CharType c) overridenlohmann::detail::output_string_adapter< CharType, StringType >inlinevirtual
write_character(CharType c) overridenlohmann::detail::output_string_adapter< CharType, StringType >inlinevirtual
write_characters(const CharType *s, std::size_t length) overridenlohmann::detail::output_string_adapter< CharType, StringType >inlinevirtual
write_characters(const CharType *s, std::size_t length) overridenlohmann::detail::output_string_adapter< CharType, StringType >inlinevirtual
~output_adapter_protocol()=defaultnlohmann::detail::output_adapter_protocol< CharType >virtual
~output_adapter_protocol()=defaultnlohmann::detail::output_adapter_protocol< CharType >virtual
- - - - diff --git a/help/html/classnlohmann_1_1detail_1_1output__string__adapter.html b/help/html/classnlohmann_1_1detail_1_1output__string__adapter.html deleted file mode 100644 index c575fed..0000000 --- a/help/html/classnlohmann_1_1detail_1_1output__string__adapter.html +++ /dev/null @@ -1,333 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::output_string_adapter< CharType, StringType > Class Template Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
nlohmann::detail::output_string_adapter< CharType, StringType > Class Template Reference
-
-
- -

output adapter for basic_string - More...

- -

#include <json.hpp>

-
-Inheritance diagram for nlohmann::detail::output_string_adapter< CharType, StringType >:
-
-
Inheritance graph
- - - - -
[legend]
-
-Collaboration diagram for nlohmann::detail::output_string_adapter< CharType, StringType >:
-
-
Collaboration graph
- - - - -
[legend]
- - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 output_string_adapter (StringType &s) noexcept
 
void write_character (CharType c) override
 
void write_characters (const CharType *s, std::size_t length) override
 
 output_string_adapter (StringType &s) noexcept
 
void write_character (CharType c) override
 
void write_characters (const CharType *s, std::size_t length) override
 
- Public Member Functions inherited from nlohmann::detail::output_adapter_protocol< CharType >
virtual ~output_adapter_protocol ()=default
 
virtual ~output_adapter_protocol ()=default
 
-

Detailed Description

-

template<typename CharType, typename StringType = std::basic_string<CharType>>
-class nlohmann::detail::output_string_adapter< CharType, StringType >

- -

output adapter for basic_string

-

Constructor & Destructor Documentation

- -

◆ output_string_adapter() [1/2]

- -
-
-
-template<typename CharType , typename StringType = std::basic_string<CharType>>
- - - - - -
- - - - - - - - -
nlohmann::detail::output_string_adapter< CharType, StringType >::output_string_adapter (StringType & s)
-
-inlineexplicitnoexcept
-
- -
-
- -

◆ output_string_adapter() [2/2]

- -
-
-
-template<typename CharType , typename StringType = std::basic_string<CharType>>
- - - - - -
- - - - - - - - -
nlohmann::detail::output_string_adapter< CharType, StringType >::output_string_adapter (StringType & s)
-
-inlineexplicitnoexcept
-
- -
-
-

Member Function Documentation

- -

◆ write_character() [1/2]

- -
-
-
-template<typename CharType , typename StringType = std::basic_string<CharType>>
- - - - - -
- - - - - - - - -
void nlohmann::detail::output_string_adapter< CharType, StringType >::write_character (CharType c)
-
-inlineoverridevirtual
-
-
- -

◆ write_character() [2/2]

- -
-
-
-template<typename CharType , typename StringType = std::basic_string<CharType>>
- - - - - -
- - - - - - - - -
void nlohmann::detail::output_string_adapter< CharType, StringType >::write_character (CharType c)
-
-inlineoverridevirtual
-
-
- -

◆ write_characters() [1/2]

- -
-
-
-template<typename CharType , typename StringType = std::basic_string<CharType>>
- - - - - -
- - - - - - - - - - - - - - - - - - -
void nlohmann::detail::output_string_adapter< CharType, StringType >::write_characters (const CharType * s,
std::size_t length 
)
-
-inlineoverridevirtual
-
-
- -

◆ write_characters() [2/2]

- -
-
-
-template<typename CharType , typename StringType = std::basic_string<CharType>>
- - - - - -
- - - - - - - - - - - - - - - - - - -
void nlohmann::detail::output_string_adapter< CharType, StringType >::write_characters (const CharType * s,
std::size_t length 
)
-
-inlineoverridevirtual
-
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/help/html/classnlohmann_1_1detail_1_1output__string__adapter__coll__graph.map b/help/html/classnlohmann_1_1detail_1_1output__string__adapter__coll__graph.map deleted file mode 100644 index 8aa5a05..0000000 --- a/help/html/classnlohmann_1_1detail_1_1output__string__adapter__coll__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/help/html/classnlohmann_1_1detail_1_1output__string__adapter__coll__graph.md5 b/help/html/classnlohmann_1_1detail_1_1output__string__adapter__coll__graph.md5 deleted file mode 100644 index 7cc8f40..0000000 --- a/help/html/classnlohmann_1_1detail_1_1output__string__adapter__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -d951735671673bb428497cf6cb1d223d \ No newline at end of file diff --git a/help/html/classnlohmann_1_1detail_1_1output__string__adapter__coll__graph.png b/help/html/classnlohmann_1_1detail_1_1output__string__adapter__coll__graph.png deleted file mode 100644 index 1e95c74..0000000 Binary files a/help/html/classnlohmann_1_1detail_1_1output__string__adapter__coll__graph.png and /dev/null differ diff --git a/help/html/classnlohmann_1_1detail_1_1output__string__adapter__inherit__graph.map b/help/html/classnlohmann_1_1detail_1_1output__string__adapter__inherit__graph.map deleted file mode 100644 index 8aa5a05..0000000 --- a/help/html/classnlohmann_1_1detail_1_1output__string__adapter__inherit__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/help/html/classnlohmann_1_1detail_1_1output__string__adapter__inherit__graph.md5 b/help/html/classnlohmann_1_1detail_1_1output__string__adapter__inherit__graph.md5 deleted file mode 100644 index 7cc8f40..0000000 --- a/help/html/classnlohmann_1_1detail_1_1output__string__adapter__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -d951735671673bb428497cf6cb1d223d \ No newline at end of file diff --git a/help/html/classnlohmann_1_1detail_1_1output__string__adapter__inherit__graph.png b/help/html/classnlohmann_1_1detail_1_1output__string__adapter__inherit__graph.png deleted file mode 100644 index 1e95c74..0000000 Binary files a/help/html/classnlohmann_1_1detail_1_1output__string__adapter__inherit__graph.png and /dev/null differ diff --git a/help/html/classnlohmann_1_1detail_1_1output__vector__adapter-members.html b/help/html/classnlohmann_1_1detail_1_1output__vector__adapter-members.html deleted file mode 100644 index 541da21..0000000 --- a/help/html/classnlohmann_1_1detail_1_1output__vector__adapter-members.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
nlohmann::detail::output_vector_adapter< CharType > Member List
-
-
- -

This is the complete list of members for nlohmann::detail::output_vector_adapter< CharType >, including all inherited members.

- - - - - - - - - -
output_vector_adapter(std::vector< CharType > &vec) noexceptnlohmann::detail::output_vector_adapter< CharType >inlineexplicit
output_vector_adapter(std::vector< CharType > &vec) noexceptnlohmann::detail::output_vector_adapter< CharType >inlineexplicit
write_character(CharType c) overridenlohmann::detail::output_vector_adapter< CharType >inlinevirtual
write_character(CharType c) overridenlohmann::detail::output_vector_adapter< CharType >inlinevirtual
write_characters(const CharType *s, std::size_t length) overridenlohmann::detail::output_vector_adapter< CharType >inlinevirtual
write_characters(const CharType *s, std::size_t length) overridenlohmann::detail::output_vector_adapter< CharType >inlinevirtual
~output_adapter_protocol()=defaultnlohmann::detail::output_adapter_protocol< CharType >virtual
~output_adapter_protocol()=defaultnlohmann::detail::output_adapter_protocol< CharType >virtual
- - - - diff --git a/help/html/classnlohmann_1_1detail_1_1output__vector__adapter.html b/help/html/classnlohmann_1_1detail_1_1output__vector__adapter.html deleted file mode 100644 index 8b55d97..0000000 --- a/help/html/classnlohmann_1_1detail_1_1output__vector__adapter.html +++ /dev/null @@ -1,333 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::output_vector_adapter< CharType > Class Template Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
nlohmann::detail::output_vector_adapter< CharType > Class Template Reference
-
-
- -

output adapter for byte vectors - More...

- -

#include <json.hpp>

-
-Inheritance diagram for nlohmann::detail::output_vector_adapter< CharType >:
-
-
Inheritance graph
- - - - -
[legend]
-
-Collaboration diagram for nlohmann::detail::output_vector_adapter< CharType >:
-
-
Collaboration graph
- - - - -
[legend]
- - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 output_vector_adapter (std::vector< CharType > &vec) noexcept
 
void write_character (CharType c) override
 
void write_characters (const CharType *s, std::size_t length) override
 
 output_vector_adapter (std::vector< CharType > &vec) noexcept
 
void write_character (CharType c) override
 
void write_characters (const CharType *s, std::size_t length) override
 
- Public Member Functions inherited from nlohmann::detail::output_adapter_protocol< CharType >
virtual ~output_adapter_protocol ()=default
 
virtual ~output_adapter_protocol ()=default
 
-

Detailed Description

-

template<typename CharType>
-class nlohmann::detail::output_vector_adapter< CharType >

- -

output adapter for byte vectors

-

Constructor & Destructor Documentation

- -

◆ output_vector_adapter() [1/2]

- -
-
-
-template<typename CharType >
- - - - - -
- - - - - - - - -
nlohmann::detail::output_vector_adapter< CharType >::output_vector_adapter (std::vector< CharType > & vec)
-
-inlineexplicitnoexcept
-
- -
-
- -

◆ output_vector_adapter() [2/2]

- -
-
-
-template<typename CharType >
- - - - - -
- - - - - - - - -
nlohmann::detail::output_vector_adapter< CharType >::output_vector_adapter (std::vector< CharType > & vec)
-
-inlineexplicitnoexcept
-
- -
-
-

Member Function Documentation

- -

◆ write_character() [1/2]

- -
-
-
-template<typename CharType >
- - - - - -
- - - - - - - - -
void nlohmann::detail::output_vector_adapter< CharType >::write_character (CharType c)
-
-inlineoverridevirtual
-
-
- -

◆ write_character() [2/2]

- -
-
-
-template<typename CharType >
- - - - - -
- - - - - - - - -
void nlohmann::detail::output_vector_adapter< CharType >::write_character (CharType c)
-
-inlineoverridevirtual
-
-
- -

◆ write_characters() [1/2]

- -
-
-
-template<typename CharType >
- - - - - -
- - - - - - - - - - - - - - - - - - -
void nlohmann::detail::output_vector_adapter< CharType >::write_characters (const CharType * s,
std::size_t length 
)
-
-inlineoverridevirtual
-
-
- -

◆ write_characters() [2/2]

- -
-
-
-template<typename CharType >
- - - - - -
- - - - - - - - - - - - - - - - - - -
void nlohmann::detail::output_vector_adapter< CharType >::write_characters (const CharType * s,
std::size_t length 
)
-
-inlineoverridevirtual
-
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/help/html/classnlohmann_1_1detail_1_1output__vector__adapter__coll__graph.map b/help/html/classnlohmann_1_1detail_1_1output__vector__adapter__coll__graph.map deleted file mode 100644 index 6728893..0000000 --- a/help/html/classnlohmann_1_1detail_1_1output__vector__adapter__coll__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/help/html/classnlohmann_1_1detail_1_1output__vector__adapter__coll__graph.md5 b/help/html/classnlohmann_1_1detail_1_1output__vector__adapter__coll__graph.md5 deleted file mode 100644 index 3401aa0..0000000 --- a/help/html/classnlohmann_1_1detail_1_1output__vector__adapter__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -8d901fe59aa9a0d811f4e34b0b03036f \ No newline at end of file diff --git a/help/html/classnlohmann_1_1detail_1_1output__vector__adapter__coll__graph.png b/help/html/classnlohmann_1_1detail_1_1output__vector__adapter__coll__graph.png deleted file mode 100644 index f2b7258..0000000 Binary files a/help/html/classnlohmann_1_1detail_1_1output__vector__adapter__coll__graph.png and /dev/null differ diff --git a/help/html/classnlohmann_1_1detail_1_1output__vector__adapter__inherit__graph.map b/help/html/classnlohmann_1_1detail_1_1output__vector__adapter__inherit__graph.map deleted file mode 100644 index 6728893..0000000 --- a/help/html/classnlohmann_1_1detail_1_1output__vector__adapter__inherit__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/help/html/classnlohmann_1_1detail_1_1output__vector__adapter__inherit__graph.md5 b/help/html/classnlohmann_1_1detail_1_1output__vector__adapter__inherit__graph.md5 deleted file mode 100644 index 3401aa0..0000000 --- a/help/html/classnlohmann_1_1detail_1_1output__vector__adapter__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -8d901fe59aa9a0d811f4e34b0b03036f \ No newline at end of file diff --git a/help/html/classnlohmann_1_1detail_1_1output__vector__adapter__inherit__graph.png b/help/html/classnlohmann_1_1detail_1_1output__vector__adapter__inherit__graph.png deleted file mode 100644 index f2b7258..0000000 Binary files a/help/html/classnlohmann_1_1detail_1_1output__vector__adapter__inherit__graph.png and /dev/null differ diff --git a/help/html/classnlohmann_1_1detail_1_1parse__error-members.html b/help/html/classnlohmann_1_1detail_1_1parse__error-members.html deleted file mode 100644 index 7450c02..0000000 --- a/help/html/classnlohmann_1_1detail_1_1parse__error-members.html +++ /dev/null @@ -1,95 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
nlohmann::detail::parse_error Member List
-
-
- -

This is the complete list of members for nlohmann::detail::parse_error, including all inherited members.

- - - - - - - - - - - - - -
bytenlohmann::detail::parse_error
create(int id_, const position_t &pos, const std::string &what_arg)nlohmann::detail::parse_errorinlinestatic
create(int id_, std::size_t byte_, const std::string &what_arg)nlohmann::detail::parse_errorinlinestatic
create(int id_, const position_t &pos, const std::string &what_arg)nlohmann::detail::parse_errorinlinestatic
create(int id_, std::size_t byte_, const std::string &what_arg)nlohmann::detail::parse_errorinlinestatic
exception(int id_, const char *what_arg)nlohmann::detail::exceptioninlineprotected
exception(int id_, const char *what_arg)nlohmann::detail::exceptioninlineprotected
idnlohmann::detail::exception
name(const std::string &ename, int id_)nlohmann::detail::exceptioninlineprotectedstatic
name(const std::string &ename, int id_)nlohmann::detail::exceptioninlineprotectedstatic
what() const noexcept overridenlohmann::detail::exceptioninline
what() const noexcept overridenlohmann::detail::exceptioninline
- - - - diff --git a/help/html/classnlohmann_1_1detail_1_1parse__error.html b/help/html/classnlohmann_1_1detail_1_1parse__error.html deleted file mode 100644 index 6f2a12d..0000000 --- a/help/html/classnlohmann_1_1detail_1_1parse__error.html +++ /dev/null @@ -1,460 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::parse_error Class Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
nlohmann::detail::parse_error Class Reference
-
-
- -

exception indicating a parse error - More...

- -

#include <json.hpp>

-
-Inheritance diagram for nlohmann::detail::parse_error:
-
-
Inheritance graph
- - - - - -
[legend]
-
-Collaboration diagram for nlohmann::detail::parse_error:
-
-
Collaboration graph
- - - - - -
[legend]
- - - - - - - - - - - - -

-Static Public Member Functions

static parse_error create (int id_, const position_t &pos, const std::string &what_arg)
 create a parse error exception More...
 
static parse_error create (int id_, std::size_t byte_, const std::string &what_arg)
 
static parse_error create (int id_, const position_t &pos, const std::string &what_arg)
 create a parse error exception More...
 
static parse_error create (int id_, std::size_t byte_, const std::string &what_arg)
 
- - - - - - - - -

-Public Attributes

const std::size_t byte
 byte index of the parse error More...
 
- Public Attributes inherited from nlohmann::detail::exception
const int id
 the id of the exception More...
 
- - - - - - - - - - - - - - - - - - -

-Additional Inherited Members

- Public Member Functions inherited from nlohmann::detail::exception
const JSON_HEDLEY_RETURNS_NON_NULL char * what () const noexcept override
 returns the explanatory string More...
 
const JSON_HEDLEY_RETURNS_NON_NULL char * what () const noexcept override
 returns the explanatory string More...
 
- Protected Member Functions inherited from nlohmann::detail::exception
 exception (int id_, const char *what_arg)
 
 exception (int id_, const char *what_arg)
 
- Static Protected Member Functions inherited from nlohmann::detail::exception
static std::string name (const std::string &ename, int id_)
 
static std::string name (const std::string &ename, int id_)
 
-

Detailed Description

-

exception indicating a parse error

-

This exception is thrown by the library when a parse error occurs. Parse errors can occur during the deserialization of JSON text, CBOR, MessagePack, as well as when using JSON Patch.

-

Member byte holds the byte index of the last read character in the input file.

-

Exceptions have ids 1xx.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
name / id example message description
json.exception.parse_error.101 parse error at 2: unexpected end of input; expected string literal This error indicates a syntax error while deserializing a JSON text. The error message describes that an unexpected token (character) was encountered, and the member byte indicates the error position.
json.exception.parse_error.102 parse error at 14: missing or wrong low surrogate JSON uses the \uxxxx format to describe Unicode characters. Code points above above 0xFFFF are split into two \uxxxx entries ("surrogate pairs"). This error indicates that the surrogate pair is incomplete or contains an invalid code point.
json.exception.parse_error.103 parse error: code points above 0x10FFFF are invalid Unicode supports code points up to 0x10FFFF. Code points above 0x10FFFF are invalid.
json.exception.parse_error.104 parse error: JSON patch must be an array of objects RFC 6902 requires a JSON Patch document to be a JSON document that represents an array of objects.
json.exception.parse_error.105 parse error: operation must have string member 'op' An operation of a JSON Patch document must contain exactly one "op" member, whose value indicates the operation to perform. Its value must be one of "add", "remove", "replace", "move", "copy", or "test"; other values are errors.
json.exception.parse_error.106 parse error: array index '01' must not begin with '0' An array index in a JSON Pointer (RFC 6901) may be 0 or any number without a leading 0.
json.exception.parse_error.107 parse error: JSON pointer must be empty or begin with '/' - was: 'foo' A JSON Pointer must be a Unicode string containing a sequence of zero or more reference tokens, each prefixed by a / character.
json.exception.parse_error.108 parse error: escape character '~' must be followed with '0' or '1' In a JSON Pointer, only ~0 and ~1 are valid escape sequences.
json.exception.parse_error.109 parse error: array index 'one' is not a number A JSON Pointer array index must be a number.
json.exception.parse_error.110 parse error at 1: cannot read 2 bytes from vector When parsing CBOR or MessagePack, the byte vector ends before the complete value has been read.
json.exception.parse_error.112 parse error at 1: error reading CBOR; last byte: 0xF8 Not all types of CBOR or MessagePack are supported. This exception occurs if an unsupported byte was read.
json.exception.parse_error.113 parse error at 2: expected a CBOR string; last byte: 0x98 While parsing a map key, a value that is not a string has been read.
json.exception.parse_error.114 parse error: Unsupported BSON record type 0x0F The parsing of the corresponding BSON record type is not implemented (yet).
-
Note
For an input with n bytes, 1 is the index of the first character and n+1 is the index of the terminating null byte or the end of file. This also holds true when reading a byte vector (CBOR or MessagePack).
-

@liveexample{The following code shows how a parse_error exception can be caught.,parse_error}

-
See also
- exception for the base class of the library exceptions
-
-- invalid_iterator for exceptions indicating errors with iterators
-
-- type_error for exceptions indicating executing a member function with a wrong type
-
-- out_of_range for exceptions indicating access out of the defined range
-
-- other_error for exceptions indicating other library errors
-
Since
version 3.0.0
-

This exception is thrown by the library when a parse error occurs. Parse errors can occur during the deserialization of JSON text, CBOR, MessagePack, as well as when using JSON Patch.

-

Member byte holds the byte index of the last read character in the input file.

-

Exceptions have ids 1xx.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
name / id example message description
json.exception.parse_error.101 parse error at 2: unexpected end of input; expected string literal This error indicates a syntax error while deserializing a JSON text. The error message describes that an unexpected token (character) was encountered, and the member byte indicates the error position.
json.exception.parse_error.102 parse error at 14: missing or wrong low surrogate JSON uses the \uxxxx format to describe Unicode characters. Code points above above 0xFFFF are split into two \uxxxx entries ("surrogate pairs"). This error indicates that the surrogate pair is incomplete or contains an invalid code point.
json.exception.parse_error.103 parse error: code points above 0x10FFFF are invalid Unicode supports code points up to 0x10FFFF. Code points above 0x10FFFF are invalid.
json.exception.parse_error.104 parse error: JSON patch must be an array of objects RFC 6902 requires a JSON Patch document to be a JSON document that represents an array of objects.
json.exception.parse_error.105 parse error: operation must have string member 'op' An operation of a JSON Patch document must contain exactly one "op" member, whose value indicates the operation to perform. Its value must be one of "add", "remove", "replace", "move", "copy", or "test"; other values are errors.
json.exception.parse_error.106 parse error: array index '01' must not begin with '0' An array index in a JSON Pointer (RFC 6901) may be 0 or any number without a leading 0.
json.exception.parse_error.107 parse error: JSON pointer must be empty or begin with '/' - was: 'foo' A JSON Pointer must be a Unicode string containing a sequence of zero or more reference tokens, each prefixed by a / character.
json.exception.parse_error.108 parse error: escape character '~' must be followed with '0' or '1' In a JSON Pointer, only ~0 and ~1 are valid escape sequences.
json.exception.parse_error.109 parse error: array index 'one' is not a number A JSON Pointer array index must be a number.
json.exception.parse_error.110 parse error at 1: cannot read 2 bytes from vector When parsing CBOR or MessagePack, the byte vector ends before the complete value has been read.
json.exception.parse_error.112 parse error at 1: error reading CBOR; last byte: 0xF8 Not all types of CBOR or MessagePack are supported. This exception occurs if an unsupported byte was read.
json.exception.parse_error.113 parse error at 2: expected a CBOR string; last byte: 0x98 While parsing a map key, a value that is not a string has been read.
json.exception.parse_error.114 parse error: Unsupported BSON record type 0x0F The parsing of the corresponding BSON record type is not implemented (yet).
json.exception.parse_error.115 parse error at byte 5: syntax error while parsing UBJSON high-precision number: invalid number text: 1A A UBJSON high-precision number could not be parsed.
-
Note
For an input with n bytes, 1 is the index of the first character and n+1 is the index of the terminating null byte or the end of file. This also holds true when reading a byte vector (CBOR or MessagePack).
-

@liveexample{The following code shows how a parse_error exception can be caught.,parse_error}

-
See also
- exception for the base class of the library exceptions
-
-- invalid_iterator for exceptions indicating errors with iterators
-
-- type_error for exceptions indicating executing a member function with a wrong type
-
-- out_of_range for exceptions indicating access out of the defined range
-
-- other_error for exceptions indicating other library errors
-
Since
version 3.0.0
-

Member Function Documentation

- -

◆ create() [1/4]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
static parse_error nlohmann::detail::parse_error::create (int id_,
const position_tpos,
const std::string & what_arg 
)
-
-inlinestatic
-
- -

create a parse error exception

-
Parameters
- - - - -
[in]id_the id of the exception
[in]posthe position where the error occurred (or with chars_read_total=0 if the position cannot be determined)
[in]what_argthe explanatory string
-
-
-
Returns
parse_error object
- -
-
- -

◆ create() [2/4]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
static parse_error nlohmann::detail::parse_error::create (int id_,
const position_tpos,
const std::string & what_arg 
)
-
-inlinestatic
-
- -

create a parse error exception

-
Parameters
- - - - -
[in]id_the id of the exception
[in]posthe position where the error occurred (or with chars_read_total=0 if the position cannot be determined)
[in]what_argthe explanatory string
-
-
-
Returns
parse_error object
- -
-
- -

◆ create() [3/4]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
static parse_error nlohmann::detail::parse_error::create (int id_,
std::size_t byte_,
const std::string & what_arg 
)
-
-inlinestatic
-
- -
-
- -

◆ create() [4/4]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
static parse_error nlohmann::detail::parse_error::create (int id_,
std::size_t byte_,
const std::string & what_arg 
)
-
-inlinestatic
-
- -
-
-

Member Data Documentation

- -

◆ byte

- -
-
- - - - -
const std::size_t nlohmann::detail::parse_error::byte
-
- -

byte index of the parse error

-

The byte index of the last read character in the input file.

-
Note
For an input with n bytes, 1 is the index of the first character and n+1 is the index of the terminating null byte or the end of file. This also holds true when reading a byte vector (CBOR or MessagePack).
- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/help/html/classnlohmann_1_1detail_1_1parse__error__coll__graph.map b/help/html/classnlohmann_1_1detail_1_1parse__error__coll__graph.map deleted file mode 100644 index 9ff5fb1..0000000 --- a/help/html/classnlohmann_1_1detail_1_1parse__error__coll__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/help/html/classnlohmann_1_1detail_1_1parse__error__coll__graph.md5 b/help/html/classnlohmann_1_1detail_1_1parse__error__coll__graph.md5 deleted file mode 100644 index b9c4a7a..0000000 --- a/help/html/classnlohmann_1_1detail_1_1parse__error__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -ae39183a0ddc4eded186a2953cd19c0a \ No newline at end of file diff --git a/help/html/classnlohmann_1_1detail_1_1parse__error__coll__graph.png b/help/html/classnlohmann_1_1detail_1_1parse__error__coll__graph.png deleted file mode 100644 index 0a67a18..0000000 Binary files a/help/html/classnlohmann_1_1detail_1_1parse__error__coll__graph.png and /dev/null differ diff --git a/help/html/classnlohmann_1_1detail_1_1parse__error__inherit__graph.map b/help/html/classnlohmann_1_1detail_1_1parse__error__inherit__graph.map deleted file mode 100644 index 9ff5fb1..0000000 --- a/help/html/classnlohmann_1_1detail_1_1parse__error__inherit__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/help/html/classnlohmann_1_1detail_1_1parse__error__inherit__graph.md5 b/help/html/classnlohmann_1_1detail_1_1parse__error__inherit__graph.md5 deleted file mode 100644 index b9c4a7a..0000000 --- a/help/html/classnlohmann_1_1detail_1_1parse__error__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -ae39183a0ddc4eded186a2953cd19c0a \ No newline at end of file diff --git a/help/html/classnlohmann_1_1detail_1_1parse__error__inherit__graph.png b/help/html/classnlohmann_1_1detail_1_1parse__error__inherit__graph.png deleted file mode 100644 index 0a67a18..0000000 Binary files a/help/html/classnlohmann_1_1detail_1_1parse__error__inherit__graph.png and /dev/null differ diff --git a/help/html/classnlohmann_1_1detail_1_1parser-members.html b/help/html/classnlohmann_1_1detail_1_1parser-members.html deleted file mode 100644 index 8535458..0000000 --- a/help/html/classnlohmann_1_1detail_1_1parser-members.html +++ /dev/null @@ -1,93 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
nlohmann::detail::parser< BasicJsonType > Member List
-
-
- -

This is the complete list of members for nlohmann::detail::parser< BasicJsonType >, including all inherited members.

- - - - - - - - - - - -
accept(const bool strict=true)nlohmann::detail::parser< BasicJsonType >inline
accept(const bool strict=true)nlohmann::detail::parser< BasicJsonType >inline
parse(const bool strict, BasicJsonType &result)nlohmann::detail::parser< BasicJsonType >inline
parse(const bool strict, BasicJsonType &result)nlohmann::detail::parser< BasicJsonType >inline
parse_event_t enum namenlohmann::detail::parser< BasicJsonType >
parser(detail::input_adapter_t &&adapter, const parser_callback_t cb=nullptr, const bool allow_exceptions_=true)nlohmann::detail::parser< BasicJsonType >inlineexplicit
parser(InputAdapterType &&adapter, const parser_callback_t< BasicJsonType > cb=nullptr, const bool allow_exceptions_=true, const bool skip_comments=false)nlohmann::detail::parser< BasicJsonType >inlineexplicit
parser_callback_t typedefnlohmann::detail::parser< BasicJsonType >
sax_parse(SAX *sax, const bool strict=true)nlohmann::detail::parser< BasicJsonType >inline
sax_parse(SAX *sax, const bool strict=true)nlohmann::detail::parser< BasicJsonType >inline
- - - - diff --git a/help/html/classnlohmann_1_1detail_1_1parser.html b/help/html/classnlohmann_1_1detail_1_1parser.html deleted file mode 100644 index 9d91aef..0000000 --- a/help/html/classnlohmann_1_1detail_1_1parser.html +++ /dev/null @@ -1,563 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::parser< BasicJsonType > Class Template Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
nlohmann::detail::parser< BasicJsonType > Class Template Reference
-
-
- -

syntax analysis - More...

- -

#include <json.hpp>

- - - - - - -

-Public Types

enum  parse_event_t : uint8_t {
-  parse_event_t::object_start, -parse_event_t::object_end, -parse_event_t::array_start, -parse_event_t::array_end, -
-  parse_event_t::key, -parse_event_t::value -
- }
 
using parser_callback_t = std::function< bool(int depth, parse_event_t event, BasicJsonType &parsed)>
 
- - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 parser (detail::input_adapter_t &&adapter, const parser_callback_t cb=nullptr, const bool allow_exceptions_=true)
 a parser reading from an input adapter More...
 
void parse (const bool strict, BasicJsonType &result)
 public parser interface More...
 
bool accept (const bool strict=true)
 public accept interface More...
 
template<typename SAX >
bool sax_parse (SAX *sax, const bool strict=true)
 
 parser (InputAdapterType &&adapter, const parser_callback_t< BasicJsonType > cb=nullptr, const bool allow_exceptions_=true, const bool skip_comments=false)
 a parser reading from an input adapter More...
 
void parse (const bool strict, BasicJsonType &result)
 public parser interface More...
 
bool accept (const bool strict=true)
 public accept interface More...
 
template<typename SAX >
bool sax_parse (SAX *sax, const bool strict=true)
 
-

Detailed Description

-

template<typename BasicJsonType>
-class nlohmann::detail::parser< BasicJsonType >

- -

syntax analysis

-

This class implements a recursive decent parser.

-

This class implements a recursive descent parser.

-

Member Typedef Documentation

- -

◆ parser_callback_t

- -
-
-
-template<typename BasicJsonType >
- - - - -
using nlohmann::detail::parser< BasicJsonType >::parser_callback_t = std::function<bool(int depth, parse_event_t event, BasicJsonType& parsed)>
-
- -
-
-

Member Enumeration Documentation

- -

◆ parse_event_t

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - -
enum nlohmann::detail::parser::parse_event_t : uint8_t
-
-strong
-
- - - - - - - -
Enumerator
object_start 

the parser read { and started to process a JSON object

-
object_end 

the parser read } and finished processing a JSON object

-
array_start 

the parser read [ and started to process a JSON array

-
array_end 

the parser read ] and finished processing a JSON array

-
key 

the parser read a key of a value in an object

-
value 

the parser finished reading a JSON value

-
- -
-
-

Constructor & Destructor Documentation

- -

◆ parser() [1/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
nlohmann::detail::parser< BasicJsonType >::parser (detail::input_adapter_t && adapter,
const parser_callback_t cb = nullptr,
const bool allow_exceptions_ = true 
)
-
-inlineexplicit
-
- -

a parser reading from an input adapter

- -
-
- -

◆ parser() [2/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
nlohmann::detail::parser< BasicJsonType >::parser (InputAdapterType && adapter,
const parser_callback_t< BasicJsonType > cb = nullptr,
const bool allow_exceptions_ = true,
const bool skip_comments = false 
)
-
-inlineexplicit
-
- -

a parser reading from an input adapter

- -
-
-

Member Function Documentation

- -

◆ accept() [1/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
bool nlohmann::detail::parser< BasicJsonType >::accept (const bool strict = true)
-
-inline
-
- -

public accept interface

-
Parameters
- - -
[in]strictwhether to expect the last token to be EOF
-
-
-
Returns
whether the input is a proper JSON text
- -
-
- -

◆ accept() [2/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
bool nlohmann::detail::parser< BasicJsonType >::accept (const bool strict = true)
-
-inline
-
- -

public accept interface

-
Parameters
- - -
[in]strictwhether to expect the last token to be EOF
-
-
-
Returns
whether the input is a proper JSON text
- -
-
- -

◆ parse() [1/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - - - - - - - - - - - -
void nlohmann::detail::parser< BasicJsonType >::parse (const bool strict,
BasicJsonType & result 
)
-
-inline
-
- -

public parser interface

-
Parameters
- - - -
[in]strictwhether to expect the last token to be EOF
[in,out]resultparsed JSON value
-
-
-
Exceptions
- - - - -
parse_error.101in case of an unexpected token
parse_error.102if to_unicode fails or surrogate error
parse_error.103if to_unicode fails
-
-
- -
-
- -

◆ parse() [2/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - - - - - - - - - - - -
void nlohmann::detail::parser< BasicJsonType >::parse (const bool strict,
BasicJsonType & result 
)
-
-inline
-
- -

public parser interface

-
Parameters
- - - -
[in]strictwhether to expect the last token to be EOF
[in,out]resultparsed JSON value
-
-
-
Exceptions
- - - - -
parse_error.101in case of an unexpected token
parse_error.102if to_unicode fails or surrogate error
parse_error.103if to_unicode fails
-
-
- -
-
- -

◆ sax_parse() [1/2]

- -
-
-
-template<typename BasicJsonType >
-
-template<typename SAX >
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool nlohmann::detail::parser< BasicJsonType >::sax_parse (SAX * sax,
const bool strict = true 
)
-
-inline
-
- -
-
- -

◆ sax_parse() [2/2]

- -
-
-
-template<typename BasicJsonType >
-
-template<typename SAX >
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool nlohmann::detail::parser< BasicJsonType >::sax_parse (SAX * sax,
const bool strict = true 
)
-
-inline
-
- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/help/html/classnlohmann_1_1detail_1_1primitive__iterator__t-members.html b/help/html/classnlohmann_1_1detail_1_1primitive__iterator__t-members.html deleted file mode 100644 index 9f09ea6..0000000 --- a/help/html/classnlohmann_1_1detail_1_1primitive__iterator__t-members.html +++ /dev/null @@ -1,113 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
nlohmann::detail::primitive_iterator_t Member List
-
-
- -

This is the complete list of members for nlohmann::detail::primitive_iterator_t, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
get_value() const noexceptnlohmann::detail::primitive_iterator_tinline
get_value() const noexceptnlohmann::detail::primitive_iterator_tinline
is_begin() const noexceptnlohmann::detail::primitive_iterator_tinline
is_begin() const noexceptnlohmann::detail::primitive_iterator_tinline
is_end() const noexceptnlohmann::detail::primitive_iterator_tinline
is_end() const noexceptnlohmann::detail::primitive_iterator_tinline
operator+(difference_type n) noexceptnlohmann::detail::primitive_iterator_tinline
operator+(difference_type n) noexceptnlohmann::detail::primitive_iterator_tinline
operator++() noexceptnlohmann::detail::primitive_iterator_tinline
operator++(int) noexceptnlohmann::detail::primitive_iterator_tinline
operator++() noexceptnlohmann::detail::primitive_iterator_tinline
operator++(int) noexceptnlohmann::detail::primitive_iterator_tinline
operator+=(difference_type n) noexceptnlohmann::detail::primitive_iterator_tinline
operator+=(difference_type n) noexceptnlohmann::detail::primitive_iterator_tinline
operator-(primitive_iterator_t lhs, primitive_iterator_t rhs) noexceptnlohmann::detail::primitive_iterator_tfriend
operator-(primitive_iterator_t lhs, primitive_iterator_t rhs) noexceptnlohmann::detail::primitive_iterator_tfriend
operator--() noexceptnlohmann::detail::primitive_iterator_tinline
operator--(int) noexceptnlohmann::detail::primitive_iterator_tinline
operator--() noexceptnlohmann::detail::primitive_iterator_tinline
operator--(int) noexceptnlohmann::detail::primitive_iterator_tinline
operator-=(difference_type n) noexceptnlohmann::detail::primitive_iterator_tinline
operator-=(difference_type n) noexceptnlohmann::detail::primitive_iterator_tinline
operator<(primitive_iterator_t lhs, primitive_iterator_t rhs) noexceptnlohmann::detail::primitive_iterator_tfriend
operator<(primitive_iterator_t lhs, primitive_iterator_t rhs) noexceptnlohmann::detail::primitive_iterator_tfriend
operator==(primitive_iterator_t lhs, primitive_iterator_t rhs) noexceptnlohmann::detail::primitive_iterator_tfriend
operator==(primitive_iterator_t lhs, primitive_iterator_t rhs) noexceptnlohmann::detail::primitive_iterator_tfriend
set_begin() noexceptnlohmann::detail::primitive_iterator_tinline
set_begin() noexceptnlohmann::detail::primitive_iterator_tinline
set_end() noexceptnlohmann::detail::primitive_iterator_tinline
set_end() noexceptnlohmann::detail::primitive_iterator_tinline
- - - - diff --git a/help/html/classnlohmann_1_1detail_1_1primitive__iterator__t.html b/help/html/classnlohmann_1_1detail_1_1primitive__iterator__t.html deleted file mode 100644 index ed1e3eb..0000000 --- a/help/html/classnlohmann_1_1detail_1_1primitive__iterator__t.html +++ /dev/null @@ -1,1008 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::primitive_iterator_t Class Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
nlohmann::detail::primitive_iterator_t Class Reference
-
-
- -

#include <json.hpp>

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

constexpr difference_type get_value () const noexcept
 
void set_begin () noexcept
 set iterator to a defined beginning More...
 
void set_end () noexcept
 set iterator to a defined past the end More...
 
constexpr bool is_begin () const noexcept
 return whether the iterator can be dereferenced More...
 
constexpr bool is_end () const noexcept
 return whether the iterator is at end More...
 
primitive_iterator_t operator+ (difference_type n) noexcept
 
primitive_iterator_toperator++ () noexcept
 
const primitive_iterator_t operator++ (int) noexcept
 
primitive_iterator_toperator-- () noexcept
 
const primitive_iterator_t operator-- (int) noexcept
 
primitive_iterator_toperator+= (difference_type n) noexcept
 
primitive_iterator_toperator-= (difference_type n) noexcept
 
constexpr difference_type get_value () const noexcept
 
void set_begin () noexcept
 set iterator to a defined beginning More...
 
void set_end () noexcept
 set iterator to a defined past the end More...
 
constexpr bool is_begin () const noexcept
 return whether the iterator can be dereferenced More...
 
constexpr bool is_end () const noexcept
 return whether the iterator is at end More...
 
primitive_iterator_t operator+ (difference_type n) noexcept
 
primitive_iterator_toperator++ () noexcept
 
const primitive_iterator_t operator++ (int) noexcept
 
primitive_iterator_toperator-- () noexcept
 
const primitive_iterator_t operator-- (int) noexcept
 
primitive_iterator_toperator+= (difference_type n) noexcept
 
primitive_iterator_toperator-= (difference_type n) noexcept
 
- - - - - - - - - - - - - -

-Friends

constexpr friend bool operator== (primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept
 
constexpr friend bool operator< (primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept
 
constexpr friend difference_type operator- (primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept
 
constexpr friend bool operator== (primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept
 
constexpr friend bool operator< (primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept
 
constexpr friend difference_type operator- (primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept
 
-

Member Function Documentation

- -

◆ get_value() [1/2]

- -
-
- - - - - -
- - - - - - - -
constexpr difference_type nlohmann::detail::primitive_iterator_t::get_value () const
-
-inlineconstexprnoexcept
-
- -
-
- -

◆ get_value() [2/2]

- -
-
- - - - - -
- - - - - - - -
constexpr difference_type nlohmann::detail::primitive_iterator_t::get_value () const
-
-inlineconstexprnoexcept
-
- -
-
- -

◆ is_begin() [1/2]

- -
-
- - - - - -
- - - - - - - -
constexpr bool nlohmann::detail::primitive_iterator_t::is_begin () const
-
-inlineconstexprnoexcept
-
- -

return whether the iterator can be dereferenced

- -
-
- -

◆ is_begin() [2/2]

- -
-
- - - - - -
- - - - - - - -
constexpr bool nlohmann::detail::primitive_iterator_t::is_begin () const
-
-inlineconstexprnoexcept
-
- -

return whether the iterator can be dereferenced

- -
-
- -

◆ is_end() [1/2]

- -
-
- - - - - -
- - - - - - - -
constexpr bool nlohmann::detail::primitive_iterator_t::is_end () const
-
-inlineconstexprnoexcept
-
- -

return whether the iterator is at end

- -
-
- -

◆ is_end() [2/2]

- -
-
- - - - - -
- - - - - - - -
constexpr bool nlohmann::detail::primitive_iterator_t::is_end () const
-
-inlineconstexprnoexcept
-
- -

return whether the iterator is at end

- -
-
- -

◆ operator+() [1/2]

- -
-
- - - - - -
- - - - - - - - -
primitive_iterator_t nlohmann::detail::primitive_iterator_t::operator+ (difference_type n)
-
-inlinenoexcept
-
- -
-
- -

◆ operator+() [2/2]

- -
-
- - - - - -
- - - - - - - - -
primitive_iterator_t nlohmann::detail::primitive_iterator_t::operator+ (difference_type n)
-
-inlinenoexcept
-
- -
-
- -

◆ operator++() [1/4]

- -
-
- - - - - -
- - - - - - - -
primitive_iterator_t& nlohmann::detail::primitive_iterator_t::operator++ ()
-
-inlinenoexcept
-
- -
-
- -

◆ operator++() [2/4]

- -
-
- - - - - -
- - - - - - - -
primitive_iterator_t& nlohmann::detail::primitive_iterator_t::operator++ ()
-
-inlinenoexcept
-
- -
-
- -

◆ operator++() [3/4]

- -
-
- - - - - -
- - - - - - - - -
const primitive_iterator_t nlohmann::detail::primitive_iterator_t::operator++ (int )
-
-inlinenoexcept
-
- -
-
- -

◆ operator++() [4/4]

- -
-
- - - - - -
- - - - - - - - -
const primitive_iterator_t nlohmann::detail::primitive_iterator_t::operator++ (int )
-
-inlinenoexcept
-
- -
-
- -

◆ operator+=() [1/2]

- -
-
- - - - - -
- - - - - - - - -
primitive_iterator_t& nlohmann::detail::primitive_iterator_t::operator+= (difference_type n)
-
-inlinenoexcept
-
- -
-
- -

◆ operator+=() [2/2]

- -
-
- - - - - -
- - - - - - - - -
primitive_iterator_t& nlohmann::detail::primitive_iterator_t::operator+= (difference_type n)
-
-inlinenoexcept
-
- -
-
- -

◆ operator--() [1/4]

- -
-
- - - - - -
- - - - - - - -
primitive_iterator_t& nlohmann::detail::primitive_iterator_t::operator-- ()
-
-inlinenoexcept
-
- -
-
- -

◆ operator--() [2/4]

- -
-
- - - - - -
- - - - - - - -
primitive_iterator_t& nlohmann::detail::primitive_iterator_t::operator-- ()
-
-inlinenoexcept
-
- -
-
- -

◆ operator--() [3/4]

- -
-
- - - - - -
- - - - - - - - -
const primitive_iterator_t nlohmann::detail::primitive_iterator_t::operator-- (int )
-
-inlinenoexcept
-
- -
-
- -

◆ operator--() [4/4]

- -
-
- - - - - -
- - - - - - - - -
const primitive_iterator_t nlohmann::detail::primitive_iterator_t::operator-- (int )
-
-inlinenoexcept
-
- -
-
- -

◆ operator-=() [1/2]

- -
-
- - - - - -
- - - - - - - - -
primitive_iterator_t& nlohmann::detail::primitive_iterator_t::operator-= (difference_type n)
-
-inlinenoexcept
-
- -
-
- -

◆ operator-=() [2/2]

- -
-
- - - - - -
- - - - - - - - -
primitive_iterator_t& nlohmann::detail::primitive_iterator_t::operator-= (difference_type n)
-
-inlinenoexcept
-
- -
-
- -

◆ set_begin() [1/2]

- -
-
- - - - - -
- - - - - - - -
void nlohmann::detail::primitive_iterator_t::set_begin ()
-
-inlinenoexcept
-
- -

set iterator to a defined beginning

- -
-
- -

◆ set_begin() [2/2]

- -
-
- - - - - -
- - - - - - - -
void nlohmann::detail::primitive_iterator_t::set_begin ()
-
-inlinenoexcept
-
- -

set iterator to a defined beginning

- -
-
- -

◆ set_end() [1/2]

- -
-
- - - - - -
- - - - - - - -
void nlohmann::detail::primitive_iterator_t::set_end ()
-
-inlinenoexcept
-
- -

set iterator to a defined past the end

- -
-
- -

◆ set_end() [2/2]

- -
-
- - - - - -
- - - - - - - -
void nlohmann::detail::primitive_iterator_t::set_end ()
-
-inlinenoexcept
-
- -

set iterator to a defined past the end

- -
-
-

Friends And Related Function Documentation

- -

◆ operator- [1/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
constexpr friend difference_type operator- (primitive_iterator_t lhs,
primitive_iterator_t rhs 
)
-
-friend
-
- -
-
- -

◆ operator- [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
constexpr friend difference_type operator- (primitive_iterator_t lhs,
primitive_iterator_t rhs 
)
-
-friend
-
- -
-
- -

◆ operator< [1/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
constexpr friend bool operator< (primitive_iterator_t lhs,
primitive_iterator_t rhs 
)
-
-friend
-
- -
-
- -

◆ operator< [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
constexpr friend bool operator< (primitive_iterator_t lhs,
primitive_iterator_t rhs 
)
-
-friend
-
- -
-
- -

◆ operator== [1/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
constexpr friend bool operator== (primitive_iterator_t lhs,
primitive_iterator_t rhs 
)
-
-friend
-
- -
-
- -

◆ operator== [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
constexpr friend bool operator== (primitive_iterator_t lhs,
primitive_iterator_t rhs 
)
-
-friend
-
- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/help/html/classnlohmann_1_1detail_1_1serializer-members.html b/help/html/classnlohmann_1_1detail_1_1serializer-members.html deleted file mode 100644 index 8f0546d..0000000 --- a/help/html/classnlohmann_1_1detail_1_1serializer-members.html +++ /dev/null @@ -1,97 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
nlohmann::detail::serializer< BasicJsonType > Member List
-
-
- -

This is the complete list of members for nlohmann::detail::serializer< BasicJsonType >, including all inherited members.

- - - - - - - - - - - - - - - -
dump(const BasicJsonType &val, const bool pretty_print, const bool ensure_ascii, const unsigned int indent_step, const unsigned int current_indent=0)nlohmann::detail::serializer< BasicJsonType >inline
dump(const BasicJsonType &val, const bool pretty_print, const bool ensure_ascii, const unsigned int indent_step, const unsigned int current_indent=0)nlohmann::detail::serializer< BasicJsonType >inline
operator=(const serializer &)=deletenlohmann::detail::serializer< BasicJsonType >
operator=(serializer &&)=deletenlohmann::detail::serializer< BasicJsonType >
operator=(const serializer &)=deletenlohmann::detail::serializer< BasicJsonType >
operator=(serializer &&)=deletenlohmann::detail::serializer< BasicJsonType >
serializer(output_adapter_t< char > s, const char ichar, error_handler_t error_handler_=error_handler_t::strict)nlohmann::detail::serializer< BasicJsonType >inline
serializer(const serializer &)=deletenlohmann::detail::serializer< BasicJsonType >
serializer(serializer &&)=deletenlohmann::detail::serializer< BasicJsonType >
serializer(output_adapter_t< char > s, const char ichar, error_handler_t error_handler_=error_handler_t::strict)nlohmann::detail::serializer< BasicJsonType >inline
serializer(const serializer &)=deletenlohmann::detail::serializer< BasicJsonType >
serializer(serializer &&)=deletenlohmann::detail::serializer< BasicJsonType >
~serializer()=defaultnlohmann::detail::serializer< BasicJsonType >
~serializer()=defaultnlohmann::detail::serializer< BasicJsonType >
- - - - diff --git a/help/html/classnlohmann_1_1detail_1_1serializer.html b/help/html/classnlohmann_1_1detail_1_1serializer.html deleted file mode 100644 index 8cb1676..0000000 --- a/help/html/classnlohmann_1_1detail_1_1serializer.html +++ /dev/null @@ -1,654 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::serializer< BasicJsonType > Class Template Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
nlohmann::detail::serializer< BasicJsonType > Class Template Reference
-
-
- -

#include <json.hpp>

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 serializer (output_adapter_t< char > s, const char ichar, error_handler_t error_handler_=error_handler_t::strict)
 
 serializer (const serializer &)=delete
 
serializeroperator= (const serializer &)=delete
 
 serializer (serializer &&)=delete
 
serializeroperator= (serializer &&)=delete
 
 ~serializer ()=default
 
void dump (const BasicJsonType &val, const bool pretty_print, const bool ensure_ascii, const unsigned int indent_step, const unsigned int current_indent=0)
 internal implementation of the serialization function More...
 
 serializer (output_adapter_t< char > s, const char ichar, error_handler_t error_handler_=error_handler_t::strict)
 
 serializer (const serializer &)=delete
 
serializeroperator= (const serializer &)=delete
 
 serializer (serializer &&)=delete
 
serializeroperator= (serializer &&)=delete
 
 ~serializer ()=default
 
void dump (const BasicJsonType &val, const bool pretty_print, const bool ensure_ascii, const unsigned int indent_step, const unsigned int current_indent=0)
 internal implementation of the serialization function More...
 
-

Constructor & Destructor Documentation

- -

◆ serializer() [1/6]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
nlohmann::detail::serializer< BasicJsonType >::serializer (output_adapter_t< char > s,
const char ichar,
error_handler_t error_handler_ = error_handler_t::strict 
)
-
-inline
-
-
Parameters
- - - - -
[in]soutput stream to serialize to
[in]icharindentation character to use
[in]error_handler_how to react on decoding errors
-
-
- -
-
- -

◆ serializer() [2/6]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
nlohmann::detail::serializer< BasicJsonType >::serializer (const serializer< BasicJsonType > & )
-
-delete
-
- -
-
- -

◆ serializer() [3/6]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
nlohmann::detail::serializer< BasicJsonType >::serializer (serializer< BasicJsonType > && )
-
-delete
-
- -
-
- -

◆ ~serializer() [1/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - -
nlohmann::detail::serializer< BasicJsonType >::~serializer ()
-
-default
-
- -
-
- -

◆ serializer() [4/6]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
nlohmann::detail::serializer< BasicJsonType >::serializer (output_adapter_t< char > s,
const char ichar,
error_handler_t error_handler_ = error_handler_t::strict 
)
-
-inline
-
-
Parameters
- - - - -
[in]soutput stream to serialize to
[in]icharindentation character to use
[in]error_handler_how to react on decoding errors
-
-
- -
-
- -

◆ serializer() [5/6]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
nlohmann::detail::serializer< BasicJsonType >::serializer (const serializer< BasicJsonType > & )
-
-delete
-
- -
-
- -

◆ serializer() [6/6]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
nlohmann::detail::serializer< BasicJsonType >::serializer (serializer< BasicJsonType > && )
-
-delete
-
- -
-
- -

◆ ~serializer() [2/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - -
nlohmann::detail::serializer< BasicJsonType >::~serializer ()
-
-default
-
- -
-
-

Member Function Documentation

- -

◆ dump() [1/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void nlohmann::detail::serializer< BasicJsonType >::dump (const BasicJsonType & val,
const bool pretty_print,
const bool ensure_ascii,
const unsigned int indent_step,
const unsigned int current_indent = 0 
)
-
-inline
-
- -

internal implementation of the serialization function

-

This function is called by the public member function dump and organizes the serialization internally. The indentation level is propagated as additional parameter. In case of arrays and objects, the function is called recursively.

-
    -
  • strings and object keys are escaped using escape_string()
  • -
  • integer numbers are converted implicitly via operator<<
  • -
  • floating-point numbers are converted to a string using "%g" format
  • -
-
Parameters
- - - - - -
[in]valvalue to serialize
[in]pretty_printwhether the output shall be pretty-printed
[in]indent_stepthe indent level
[in]current_indentthe current indent level (only used internally)
-
-
- -
-
- -

◆ dump() [2/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void nlohmann::detail::serializer< BasicJsonType >::dump (const BasicJsonType & val,
const bool pretty_print,
const bool ensure_ascii,
const unsigned int indent_step,
const unsigned int current_indent = 0 
)
-
-inline
-
- -

internal implementation of the serialization function

-

This function is called by the public member function dump and organizes the serialization internally. The indentation level is propagated as additional parameter. In case of arrays and objects, the function is called recursively.

-
    -
  • strings and object keys are escaped using escape_string()
  • -
  • integer numbers are converted implicitly via operator<<
  • -
  • floating-point numbers are converted to a string using "%g" format
  • -
  • binary values are serialized as objects containing the subtype and the byte array
  • -
-
Parameters
- - - - - - -
[in]valvalue to serialize
[in]pretty_printwhether the output shall be pretty-printed
[in]ensure_asciiIf ensure_ascii is true, all non-ASCII characters in the output are escaped with \uXXXX sequences, and the result consists of ASCII characters only.
[in]indent_stepthe indent level
[in]current_indentthe current indent level (only used internally)
-
-
- -
-
- -

◆ operator=() [1/4]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
serializer& nlohmann::detail::serializer< BasicJsonType >::operator= (const serializer< BasicJsonType > & )
-
-delete
-
- -
-
- -

◆ operator=() [2/4]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
serializer& nlohmann::detail::serializer< BasicJsonType >::operator= (const serializer< BasicJsonType > & )
-
-delete
-
- -
-
- -

◆ operator=() [3/4]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
serializer& nlohmann::detail::serializer< BasicJsonType >::operator= (serializer< BasicJsonType > && )
-
-delete
-
- -
-
- -

◆ operator=() [4/4]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
serializer& nlohmann::detail::serializer< BasicJsonType >::operator= (serializer< BasicJsonType > && )
-
-delete
-
- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/help/html/classnlohmann_1_1detail_1_1span__input__adapter-members.html b/help/html/classnlohmann_1_1detail_1_1span__input__adapter-members.html deleted file mode 100644 index 2f54938..0000000 --- a/help/html/classnlohmann_1_1detail_1_1span__input__adapter-members.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
nlohmann::detail::span_input_adapter Member List
-
-
- -

This is the complete list of members for nlohmann::detail::span_input_adapter, including all inherited members.

- - - - -
get()nlohmann::detail::span_input_adapterinline
span_input_adapter(CharT b, std::size_t l)nlohmann::detail::span_input_adapterinline
span_input_adapter(IteratorType first, IteratorType last)nlohmann::detail::span_input_adapterinline
- - - - diff --git a/help/html/classnlohmann_1_1detail_1_1span__input__adapter.html b/help/html/classnlohmann_1_1detail_1_1span__input__adapter.html deleted file mode 100644 index 1d674cc..0000000 --- a/help/html/classnlohmann_1_1detail_1_1span__input__adapter.html +++ /dev/null @@ -1,203 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::span_input_adapter Class Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
nlohmann::detail::span_input_adapter Class Reference
-
-
- -

#include <json.hpp>

- - - - - - - - - - -

-Public Member Functions

template<typename CharT , typename std::enable_if< std::is_pointer< CharT >::value &&std::is_integral< typename std::remove_pointer< CharT >::type >::value &&sizeof(typename std::remove_pointer< CharT >::type)==1, int >::type = 0>
 span_input_adapter (CharT b, std::size_t l)
 
template<class IteratorType , typename std::enable_if< std::is_same< typename iterator_traits< IteratorType >::iterator_category, std::random_access_iterator_tag >::value, int >::type = 0>
 span_input_adapter (IteratorType first, IteratorType last)
 
contiguous_bytes_input_adapter && get ()
 
-

Constructor & Destructor Documentation

- -

◆ span_input_adapter() [1/2]

- -
-
-
-template<typename CharT , typename std::enable_if< std::is_pointer< CharT >::value &&std::is_integral< typename std::remove_pointer< CharT >::type >::value &&sizeof(typename std::remove_pointer< CharT >::type)==1, int >::type = 0>
- - - - - -
- - - - - - - - - - - - - - - - - - -
nlohmann::detail::span_input_adapter::span_input_adapter (CharT b,
std::size_t l 
)
-
-inline
-
- -
-
- -

◆ span_input_adapter() [2/2]

- -
-
-
-template<class IteratorType , typename std::enable_if< std::is_same< typename iterator_traits< IteratorType >::iterator_category, std::random_access_iterator_tag >::value, int >::type = 0>
- - - - - -
- - - - - - - - - - - - - - - - - - -
nlohmann::detail::span_input_adapter::span_input_adapter (IteratorType first,
IteratorType last 
)
-
-inline
-
- -
-
-

Member Function Documentation

- -

◆ get()

- -
-
- - - - - -
- - - - - - - -
contiguous_bytes_input_adapter&& nlohmann::detail::span_input_adapter::get ()
-
-inline
-
- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/help/html/classnlohmann_1_1detail_1_1type__error-members.html b/help/html/classnlohmann_1_1detail_1_1type__error-members.html deleted file mode 100644 index b2d9766..0000000 --- a/help/html/classnlohmann_1_1detail_1_1type__error-members.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
nlohmann::detail::type_error Member List
-
-
- -

This is the complete list of members for nlohmann::detail::type_error, including all inherited members.

- - - - - - - - - - -
create(int id_, const std::string &what_arg)nlohmann::detail::type_errorinlinestatic
create(int id_, const std::string &what_arg)nlohmann::detail::type_errorinlinestatic
exception(int id_, const char *what_arg)nlohmann::detail::exceptioninlineprotected
exception(int id_, const char *what_arg)nlohmann::detail::exceptioninlineprotected
idnlohmann::detail::exception
name(const std::string &ename, int id_)nlohmann::detail::exceptioninlineprotectedstatic
name(const std::string &ename, int id_)nlohmann::detail::exceptioninlineprotectedstatic
what() const noexcept overridenlohmann::detail::exceptioninline
what() const noexcept overridenlohmann::detail::exceptioninline
- - - - diff --git a/help/html/classnlohmann_1_1detail_1_1type__error.html b/help/html/classnlohmann_1_1detail_1_1type__error.html deleted file mode 100644 index b768339..0000000 --- a/help/html/classnlohmann_1_1detail_1_1type__error.html +++ /dev/null @@ -1,269 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::type_error Class Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
nlohmann::detail::type_error Class Reference
-
-
- -

exception indicating executing a member function with a wrong type - More...

- -

#include <json.hpp>

-
-Inheritance diagram for nlohmann::detail::type_error:
-
-
Inheritance graph
- - - - - -
[legend]
-
-Collaboration diagram for nlohmann::detail::type_error:
-
-
Collaboration graph
- - - - - -
[legend]
- - - - - - -

-Static Public Member Functions

static type_error create (int id_, const std::string &what_arg)
 
static type_error create (int id_, const std::string &what_arg)
 
- - - - - - - - - - - - - - - - - - - - - - -

-Additional Inherited Members

- Public Member Functions inherited from nlohmann::detail::exception
const JSON_HEDLEY_RETURNS_NON_NULL char * what () const noexcept override
 returns the explanatory string More...
 
const JSON_HEDLEY_RETURNS_NON_NULL char * what () const noexcept override
 returns the explanatory string More...
 
- Public Attributes inherited from nlohmann::detail::exception
const int id
 the id of the exception More...
 
- Protected Member Functions inherited from nlohmann::detail::exception
 exception (int id_, const char *what_arg)
 
 exception (int id_, const char *what_arg)
 
- Static Protected Member Functions inherited from nlohmann::detail::exception
static std::string name (const std::string &ename, int id_)
 
static std::string name (const std::string &ename, int id_)
 
-

Detailed Description

-

exception indicating executing a member function with a wrong type

-

This exception is thrown in case of a type error; that is, a library function is executed on a JSON value whose type does not match the expected semantics.

-

Exceptions have ids 3xx.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
name / id example message description
json.exception.type_error.301 cannot create object from initializer list To create an object from an initializer list, the initializer list must consist only of a list of pairs whose first element is a string. When this constraint is violated, an array is created instead.
json.exception.type_error.302 type must be object, but is array During implicit or explicit value conversion, the JSON type must be compatible to the target type. For instance, a JSON string can only be converted into string types, but not into numbers or boolean types.
json.exception.type_error.303 incompatible ReferenceType for get_ref, actual type is object To retrieve a reference to a value stored in a basic_json object with get_ref, the type of the reference must match the value type. For instance, for a JSON array, the ReferenceType must be array_t &.
json.exception.type_error.304 cannot use at() with string The at() member functions can only be executed for certain JSON types.
json.exception.type_error.305 cannot use operator[] with string The operator[] member functions can only be executed for certain JSON types.
json.exception.type_error.306 cannot use value() with string The value() member functions can only be executed for certain JSON types.
json.exception.type_error.307 cannot use erase() with string The erase() member functions can only be executed for certain JSON types.
json.exception.type_error.308 cannot use push_back() with string The push_back() and operator+= member functions can only be executed for certain JSON types.
json.exception.type_error.309 cannot use insert() with The insert() member functions can only be executed for certain JSON types.
json.exception.type_error.310 cannot use swap() with number The swap() member functions can only be executed for certain JSON types.
json.exception.type_error.311 cannot use emplace_back() with string The emplace_back() member function can only be executed for certain JSON types.
json.exception.type_error.312 cannot use update() with string The update() member functions can only be executed for certain JSON types.
json.exception.type_error.313 invalid value to unflatten The unflatten function converts an object whose keys are JSON Pointers back into an arbitrary nested JSON value. The JSON Pointers must not overlap, because then the resulting value would not be well defined.
json.exception.type_error.314 only objects can be unflattened The unflatten function only works for an object whose keys are JSON Pointers.
json.exception.type_error.315 values in object must be primitive The unflatten function only works for an object whose keys are JSON Pointers and whose values are primitive.
json.exception.type_error.316 invalid UTF-8 byte at index 10: 0x7E The dump function only works with UTF-8 encoded strings; that is, if you assign a std::string to a JSON value, make sure it is UTF-8 encoded.
json.exception.type_error.317 JSON value cannot be serialized to requested format The dynamic type of the object cannot be represented in the requested serialization format (e.g. a raw true or null JSON object cannot be serialized to BSON)
-

@liveexample{The following code shows how a type_error exception can be caught.,type_error}

-
See also
- exception for the base class of the library exceptions
-
-- parse_error for exceptions indicating a parse error
-
-- invalid_iterator for exceptions indicating errors with iterators
-
-- out_of_range for exceptions indicating access out of the defined range
-
-- other_error for exceptions indicating other library errors
-
Since
version 3.0.0
-

Member Function Documentation

- -

◆ create() [1/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
static type_error nlohmann::detail::type_error::create (int id_,
const std::string & what_arg 
)
-
-inlinestatic
-
- -
-
- -

◆ create() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
static type_error nlohmann::detail::type_error::create (int id_,
const std::string & what_arg 
)
-
-inlinestatic
-
- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/help/html/classnlohmann_1_1detail_1_1type__error__coll__graph.map b/help/html/classnlohmann_1_1detail_1_1type__error__coll__graph.map deleted file mode 100644 index 33fb3a5..0000000 --- a/help/html/classnlohmann_1_1detail_1_1type__error__coll__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/help/html/classnlohmann_1_1detail_1_1type__error__coll__graph.md5 b/help/html/classnlohmann_1_1detail_1_1type__error__coll__graph.md5 deleted file mode 100644 index 3e2ca98..0000000 --- a/help/html/classnlohmann_1_1detail_1_1type__error__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -fe8088edd65d84700e5d13c785628624 \ No newline at end of file diff --git a/help/html/classnlohmann_1_1detail_1_1type__error__coll__graph.png b/help/html/classnlohmann_1_1detail_1_1type__error__coll__graph.png deleted file mode 100644 index 30d36cb..0000000 Binary files a/help/html/classnlohmann_1_1detail_1_1type__error__coll__graph.png and /dev/null differ diff --git a/help/html/classnlohmann_1_1detail_1_1type__error__inherit__graph.map b/help/html/classnlohmann_1_1detail_1_1type__error__inherit__graph.map deleted file mode 100644 index 33fb3a5..0000000 --- a/help/html/classnlohmann_1_1detail_1_1type__error__inherit__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/help/html/classnlohmann_1_1detail_1_1type__error__inherit__graph.md5 b/help/html/classnlohmann_1_1detail_1_1type__error__inherit__graph.md5 deleted file mode 100644 index 3e2ca98..0000000 --- a/help/html/classnlohmann_1_1detail_1_1type__error__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -fe8088edd65d84700e5d13c785628624 \ No newline at end of file diff --git a/help/html/classnlohmann_1_1detail_1_1type__error__inherit__graph.png b/help/html/classnlohmann_1_1detail_1_1type__error__inherit__graph.png deleted file mode 100644 index 30d36cb..0000000 Binary files a/help/html/classnlohmann_1_1detail_1_1type__error__inherit__graph.png and /dev/null differ diff --git a/help/html/classnlohmann_1_1detail_1_1wide__string__input__adapter-members.html b/help/html/classnlohmann_1_1detail_1_1wide__string__input__adapter-members.html deleted file mode 100644 index fdacfd5..0000000 --- a/help/html/classnlohmann_1_1detail_1_1wide__string__input__adapter-members.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
nlohmann::detail::wide_string_input_adapter< WideStringType > Member List
-
-
- -

This is the complete list of members for nlohmann::detail::wide_string_input_adapter< WideStringType >, including all inherited members.

- - - - - - - -
char_type typedefnlohmann::detail::wide_string_input_adapter< WideStringType >
get_character() noexcept overridenlohmann::detail::wide_string_input_adapter< WideStringType >inlinevirtual
get_character() noexceptnlohmann::detail::wide_string_input_adapter< WideStringType >inlinevirtual
wide_string_input_adapter(const WideStringType &w) noexceptnlohmann::detail::wide_string_input_adapter< WideStringType >inlineexplicit
wide_string_input_adapter(BaseInputAdapter base)nlohmann::detail::wide_string_input_adapter< WideStringType >inline
~input_adapter_protocol()=defaultnlohmann::detail::input_adapter_protocolvirtual
- - - - diff --git a/help/html/classnlohmann_1_1detail_1_1wide__string__input__adapter.html b/help/html/classnlohmann_1_1detail_1_1wide__string__input__adapter.html deleted file mode 100644 index a526c17..0000000 --- a/help/html/classnlohmann_1_1detail_1_1wide__string__input__adapter.html +++ /dev/null @@ -1,266 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::wide_string_input_adapter< WideStringType > Class Template Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
nlohmann::detail::wide_string_input_adapter< WideStringType > Class Template Reference
-
-
- -

#include <json.hpp>

-
-Inheritance diagram for nlohmann::detail::wide_string_input_adapter< WideStringType >:
-
-
Inheritance graph
- - - - -
[legend]
-
-Collaboration diagram for nlohmann::detail::wide_string_input_adapter< WideStringType >:
-
-
Collaboration graph
- - - - -
[legend]
- - - - -

-Public Types

using char_type = char
 
- - - - - - - - - - - - - - -

-Public Member Functions

 wide_string_input_adapter (const WideStringType &w) noexcept
 
std::char_traits< char >::int_type get_character () noexcept override
 get a character [0,255] or std::char_traits<char>::eof(). More...
 
 wide_string_input_adapter (BaseInputAdapter base)
 
std::char_traits< char >::int_type get_character () noexcept
 get a character [0,255] or std::char_traits<char>::eof(). More...
 
- Public Member Functions inherited from nlohmann::detail::input_adapter_protocol
virtual ~input_adapter_protocol ()=default
 
-

Member Typedef Documentation

- -

◆ char_type

- -
-
-
-template<typename WideStringType >
- - - - -
using nlohmann::detail::wide_string_input_adapter< WideStringType >::char_type = char
-
- -
-
-

Constructor & Destructor Documentation

- -

◆ wide_string_input_adapter() [1/2]

- -
-
-
-template<typename WideStringType >
- - - - - -
- - - - - - - - -
nlohmann::detail::wide_string_input_adapter< WideStringType >::wide_string_input_adapter (const WideStringType & w)
-
-inlineexplicitnoexcept
-
- -
-
- -

◆ wide_string_input_adapter() [2/2]

- -
-
-
-template<typename WideStringType >
- - - - - -
- - - - - - - - -
nlohmann::detail::wide_string_input_adapter< WideStringType >::wide_string_input_adapter (BaseInputAdapter base)
-
-inline
-
- -
-
-

Member Function Documentation

- -

◆ get_character() [1/2]

- -
-
-
-template<typename WideStringType >
- - - - - -
- - - - - - - -
std::char_traits<char>::int_type nlohmann::detail::wide_string_input_adapter< WideStringType >::get_character ()
-
-inlinevirtualnoexcept
-
- -

get a character [0,255] or std::char_traits<char>::eof().

- -

Implements nlohmann::detail::input_adapter_protocol.

- -
-
- -

◆ get_character() [2/2]

- -
-
-
-template<typename WideStringType >
- - - - - -
- - - - - - - -
std::char_traits<char>::int_type nlohmann::detail::wide_string_input_adapter< WideStringType >::get_character ()
-
-inlineoverridevirtualnoexcept
-
- -

get a character [0,255] or std::char_traits<char>::eof().

- -

Implements nlohmann::detail::input_adapter_protocol.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/help/html/classnlohmann_1_1detail_1_1wide__string__input__adapter__coll__graph.map b/help/html/classnlohmann_1_1detail_1_1wide__string__input__adapter__coll__graph.map deleted file mode 100644 index 2351683..0000000 --- a/help/html/classnlohmann_1_1detail_1_1wide__string__input__adapter__coll__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/help/html/classnlohmann_1_1detail_1_1wide__string__input__adapter__coll__graph.md5 b/help/html/classnlohmann_1_1detail_1_1wide__string__input__adapter__coll__graph.md5 deleted file mode 100644 index 0073f4d..0000000 --- a/help/html/classnlohmann_1_1detail_1_1wide__string__input__adapter__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -84b380f17911039688b083b0801e2428 \ No newline at end of file diff --git a/help/html/classnlohmann_1_1detail_1_1wide__string__input__adapter__coll__graph.png b/help/html/classnlohmann_1_1detail_1_1wide__string__input__adapter__coll__graph.png deleted file mode 100644 index 9575ee3..0000000 Binary files a/help/html/classnlohmann_1_1detail_1_1wide__string__input__adapter__coll__graph.png and /dev/null differ diff --git a/help/html/classnlohmann_1_1detail_1_1wide__string__input__adapter__inherit__graph.map b/help/html/classnlohmann_1_1detail_1_1wide__string__input__adapter__inherit__graph.map deleted file mode 100644 index 2351683..0000000 --- a/help/html/classnlohmann_1_1detail_1_1wide__string__input__adapter__inherit__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/help/html/classnlohmann_1_1detail_1_1wide__string__input__adapter__inherit__graph.md5 b/help/html/classnlohmann_1_1detail_1_1wide__string__input__adapter__inherit__graph.md5 deleted file mode 100644 index 0073f4d..0000000 --- a/help/html/classnlohmann_1_1detail_1_1wide__string__input__adapter__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -84b380f17911039688b083b0801e2428 \ No newline at end of file diff --git a/help/html/classnlohmann_1_1detail_1_1wide__string__input__adapter__inherit__graph.png b/help/html/classnlohmann_1_1detail_1_1wide__string__input__adapter__inherit__graph.png deleted file mode 100644 index 9575ee3..0000000 Binary files a/help/html/classnlohmann_1_1detail_1_1wide__string__input__adapter__inherit__graph.png and /dev/null differ diff --git a/help/html/classnlohmann_1_1json__pointer-members.html b/help/html/classnlohmann_1_1json__pointer-members.html deleted file mode 100644 index a596653..0000000 --- a/help/html/classnlohmann_1_1json__pointer-members.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
nlohmann::json_pointer< BasicJsonType > Member List
-
-
- -

This is the complete list of members for nlohmann::json_pointer< BasicJsonType >, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
back() constnlohmann::json_pointer< BasicJsonType >inline
back() constnlohmann::json_pointer< BasicJsonType >inline
basic_json classnlohmann::json_pointer< BasicJsonType >friend
empty() const noexceptnlohmann::json_pointer< BasicJsonType >inline
empty() const noexceptnlohmann::json_pointer< BasicJsonType >inline
json_pointer(const std::string &s="")nlohmann::json_pointer< BasicJsonType >inlineexplicit
json_pointer(const std::string &s="")nlohmann::json_pointer< BasicJsonType >inlineexplicit
operator std::string() constnlohmann::json_pointer< BasicJsonType >inline
operator std::string() constnlohmann::json_pointer< BasicJsonType >inline
operator!=(json_pointer const &lhs, json_pointer const &rhs) noexceptnlohmann::json_pointer< BasicJsonType >friend
operator!=(json_pointer const &lhs, json_pointer const &rhs) noexceptnlohmann::json_pointer< BasicJsonType >friend
operator/(const json_pointer &lhs, const json_pointer &rhs)nlohmann::json_pointer< BasicJsonType >friend
operator/(const json_pointer &ptr, std::string token)nlohmann::json_pointer< BasicJsonType >friend
operator/(const json_pointer &ptr, std::size_t array_index)nlohmann::json_pointer< BasicJsonType >friend
operator/(const json_pointer &lhs, const json_pointer &rhs)nlohmann::json_pointer< BasicJsonType >friend
operator/(const json_pointer &ptr, std::string token)nlohmann::json_pointer< BasicJsonType >friend
operator/(const json_pointer &ptr, std::size_t array_idx)nlohmann::json_pointer< BasicJsonType >friend
operator/=(const json_pointer &ptr)nlohmann::json_pointer< BasicJsonType >inline
operator/=(std::string token)nlohmann::json_pointer< BasicJsonType >inline
operator/=(std::size_t array_index)nlohmann::json_pointer< BasicJsonType >inline
operator/=(const json_pointer &ptr)nlohmann::json_pointer< BasicJsonType >inline
operator/=(std::string token)nlohmann::json_pointer< BasicJsonType >inline
operator/=(std::size_t array_idx)nlohmann::json_pointer< BasicJsonType >inline
operator==(json_pointer const &lhs, json_pointer const &rhs) noexceptnlohmann::json_pointer< BasicJsonType >friend
operator==(json_pointer const &lhs, json_pointer const &rhs) noexceptnlohmann::json_pointer< BasicJsonType >friend
parent_pointer() constnlohmann::json_pointer< BasicJsonType >inline
parent_pointer() constnlohmann::json_pointer< BasicJsonType >inline
pop_back()nlohmann::json_pointer< BasicJsonType >inline
pop_back()nlohmann::json_pointer< BasicJsonType >inline
push_back(const std::string &token)nlohmann::json_pointer< BasicJsonType >inline
push_back(std::string &&token)nlohmann::json_pointer< BasicJsonType >inline
push_back(const std::string &token)nlohmann::json_pointer< BasicJsonType >inline
push_back(std::string &&token)nlohmann::json_pointer< BasicJsonType >inline
to_string() constnlohmann::json_pointer< BasicJsonType >inline
to_string() constnlohmann::json_pointer< BasicJsonType >inline
- - - - diff --git a/help/html/classnlohmann_1_1json__pointer.html b/help/html/classnlohmann_1_1json__pointer.html deleted file mode 100644 index a01e888..0000000 --- a/help/html/classnlohmann_1_1json__pointer.html +++ /dev/null @@ -1,1697 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::json_pointer< BasicJsonType > Class Template Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
nlohmann::json_pointer< BasicJsonType > Class Template Reference
-
-
- -

JSON Pointer. - More...

- -

#include <json.hpp>

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 json_pointer (const std::string &s="")
 create JSON pointer More...
 
std::string to_string () const
 return a string representation of the JSON pointer More...
 
 operator std::string () const
 return a string representation of the JSON pointer More...
 
json_pointeroperator/= (const json_pointer &ptr)
 append another JSON pointer at the end of this JSON pointer More...
 
json_pointeroperator/= (std::string token)
 append an unescaped reference token at the end of this JSON pointer More...
 
json_pointeroperator/= (std::size_t array_index)
 append an array index at the end of this JSON pointer More...
 
json_pointer parent_pointer () const
 returns the parent of this JSON pointer More...
 
void pop_back ()
 remove last reference token More...
 
const std::string & back () const
 return last reference token More...
 
void push_back (const std::string &token)
 append an unescaped token at the end of the reference pointer More...
 
void push_back (std::string &&token)
 append an unescaped token at the end of the reference pointer More...
 
bool empty () const noexcept
 return whether pointer points to the root document More...
 
 json_pointer (const std::string &s="")
 create JSON pointer More...
 
std::string to_string () const
 return a string representation of the JSON pointer More...
 
 operator std::string () const
 return a string representation of the JSON pointer More...
 
json_pointeroperator/= (const json_pointer &ptr)
 append another JSON pointer at the end of this JSON pointer More...
 
json_pointeroperator/= (std::string token)
 append an unescaped reference token at the end of this JSON pointer More...
 
json_pointeroperator/= (std::size_t array_idx)
 append an array index at the end of this JSON pointer More...
 
json_pointer parent_pointer () const
 returns the parent of this JSON pointer More...
 
void pop_back ()
 remove last reference token More...
 
const std::string & back () const
 return last reference token More...
 
void push_back (const std::string &token)
 append an unescaped token at the end of the reference pointer More...
 
void push_back (std::string &&token)
 append an unescaped token at the end of the reference pointer More...
 
bool empty () const noexcept
 return whether pointer points to the root document More...
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Friends

class basic_json
 
json_pointer operator/ (const json_pointer &lhs, const json_pointer &rhs)
 create a new JSON pointer by appending the right JSON pointer at the end of the left JSON pointer More...
 
json_pointer operator/ (const json_pointer &ptr, std::string token)
 create a new JSON pointer by appending the unescaped token at the end of the JSON pointer More...
 
json_pointer operator/ (const json_pointer &ptr, std::size_t array_index)
 create a new JSON pointer by appending the array-index-token at the end of the JSON pointer More...
 
bool operator== (json_pointer const &lhs, json_pointer const &rhs) noexcept
 compares two JSON pointers for equality More...
 
bool operator!= (json_pointer const &lhs, json_pointer const &rhs) noexcept
 compares two JSON pointers for inequality More...
 
json_pointer operator/ (const json_pointer &lhs, const json_pointer &rhs)
 create a new JSON pointer by appending the right JSON pointer at the end of the left JSON pointer More...
 
json_pointer operator/ (const json_pointer &ptr, std::string token)
 create a new JSON pointer by appending the unescaped token at the end of the JSON pointer More...
 
json_pointer operator/ (const json_pointer &ptr, std::size_t array_idx)
 create a new JSON pointer by appending the array-index-token at the end of the JSON pointer More...
 
bool operator== (json_pointer const &lhs, json_pointer const &rhs) noexcept
 compares two JSON pointers for equality More...
 
bool operator!= (json_pointer const &lhs, json_pointer const &rhs) noexcept
 compares two JSON pointers for inequality More...
 
-

Detailed Description

-

template<typename BasicJsonType>
-class nlohmann::json_pointer< BasicJsonType >

- -

JSON Pointer.

-

A JSON pointer defines a string syntax for identifying a specific value within a JSON document. It can be used with functions at and operator[]. Furthermore, JSON pointers are the base for JSON patches.

-
See also
RFC 6901
-
Since
version 2.0.0
-

Constructor & Destructor Documentation

- -

◆ json_pointer() [1/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
nlohmann::json_pointer< BasicJsonType >::json_pointer (const std::string & s = "")
-
-inlineexplicit
-
- -

create JSON pointer

-

Create a JSON pointer according to the syntax described in Section 3 of RFC6901.

-
Parameters
- - -
[in]sstring representing the JSON pointer; if omitted, the empty string is assumed which references the whole JSON value
-
-
-
Exceptions
- - - -
parse_error.107if the given JSON pointer s is nonempty and does not begin with a slash (/); see example below
parse_error.108if a tilde (~) in the given JSON pointer s is not followed by 0 (representing ~) or 1 (representing /); see example below
-
-
-

@liveexample{The example shows the construction several valid JSON pointers as well as the exceptional behavior.,json_pointer}

-
Since
version 2.0.0
- -
-
- -

◆ json_pointer() [2/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
nlohmann::json_pointer< BasicJsonType >::json_pointer (const std::string & s = "")
-
-inlineexplicit
-
- -

create JSON pointer

-

Create a JSON pointer according to the syntax described in Section 3 of RFC6901.

-
Parameters
- - -
[in]sstring representing the JSON pointer; if omitted, the empty string is assumed which references the whole JSON value
-
-
-
Exceptions
- - - -
parse_error.107if the given JSON pointer s is nonempty and does not begin with a slash (/); see example below
parse_error.108if a tilde (~) in the given JSON pointer s is not followed by 0 (representing ~) or 1 (representing /); see example below
-
-
-

@liveexample{The example shows the construction several valid JSON pointers as well as the exceptional behavior.,json_pointer}

-
Since
version 2.0.0
- -
-
-

Member Function Documentation

- -

◆ back() [1/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - -
const std::string& nlohmann::json_pointer< BasicJsonType >::back () const
-
-inline
-
- -

return last reference token

-
Precondition
not empty()
-
Returns
last reference token
-

@liveexample{The example shows the usage of back.,json_pointer__back}

-

@complexity Constant.

-
Exceptions
- - -
out_of_range.405if JSON pointer has no parent
-
-
-
Since
version 3.6.0
- -
-
- -

◆ back() [2/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - -
const std::string& nlohmann::json_pointer< BasicJsonType >::back () const
-
-inline
-
- -

return last reference token

-
Precondition
not empty()
-
Returns
last reference token
-

@liveexample{The example shows the usage of back.,json_pointer__back}

-

@complexity Constant.

-
Exceptions
- - -
out_of_range.405if JSON pointer has no parent
-
-
-
Since
version 3.6.0
- -
-
- -

◆ empty() [1/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - -
bool nlohmann::json_pointer< BasicJsonType >::empty () const
-
-inlinenoexcept
-
- -

return whether pointer points to the root document

-
Returns
true iff the JSON pointer points to the root document
-

@complexity Constant.

-

@exceptionsafety No-throw guarantee: this function never throws exceptions.

-

@liveexample{The example shows the result of empty for different JSON Pointers.,json_pointer__empty}

-
Since
version 3.6.0
- -
-
- -

◆ empty() [2/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - -
bool nlohmann::json_pointer< BasicJsonType >::empty () const
-
-inlinenoexcept
-
- -

return whether pointer points to the root document

-
Returns
true iff the JSON pointer points to the root document
-

@complexity Constant.

-

@exceptionsafety No-throw guarantee: this function never throws exceptions.

-

@liveexample{The example shows the result of empty for different JSON Pointers.,json_pointer__empty}

-
Since
version 3.6.0
- -
-
- -

◆ operator std::string() [1/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - -
nlohmann::json_pointer< BasicJsonType >::operator std::string () const
-
-inline
-
- -

return a string representation of the JSON pointer

-
Invariant
For each JSON pointer ptr, it holds:
ptr == json_pointer(ptr.to_string());
-
-
Returns
a string representation of the JSON pointer
-

@liveexample{The example shows the result of to_string.,json_pointer__to_string}

-
Since
version 2.0.0
- -
-
- -

◆ operator std::string() [2/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - -
nlohmann::json_pointer< BasicJsonType >::operator std::string () const
-
-inline
-
- -

return a string representation of the JSON pointer

-
Invariant
For each JSON pointer ptr, it holds:
ptr == json_pointer(ptr.to_string());
-
-
Returns
a string representation of the JSON pointer
-

@liveexample{The example shows the result of to_string.,json_pointer__to_string}

-
Since
version 2.0.0
- -
-
- -

◆ operator/=() [1/6]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
json_pointer& nlohmann::json_pointer< BasicJsonType >::operator/= (const json_pointer< BasicJsonType > & ptr)
-
-inline
-
- -

append another JSON pointer at the end of this JSON pointer

-
Parameters
- - -
[in]ptrJSON pointer to append
-
-
-
Returns
JSON pointer with ptr appended
-

@liveexample{The example shows the usage of operator/=.,json_pointer__operator_add}

-

@complexity Linear in the length of ptr.

-
See also
operator/=(std::string) to append a reference token
-
-operator/=(std::size_t) to append an array index
-
-operator/(const json_pointer&, const json_pointer&) for a binary operator
-
Since
version 3.6.0
- -
-
- -

◆ operator/=() [2/6]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
json_pointer& nlohmann::json_pointer< BasicJsonType >::operator/= (const json_pointer< BasicJsonType > & ptr)
-
-inline
-
- -

append another JSON pointer at the end of this JSON pointer

-
Parameters
- - -
[in]ptrJSON pointer to append
-
-
-
Returns
JSON pointer with ptr appended
-

@liveexample{The example shows the usage of operator/=.,json_pointer__operator_add}

-

@complexity Linear in the length of ptr.

-
See also
operator/=(std::string) to append a reference token
-
-operator/=(std::size_t) to append an array index
-
-operator/(const json_pointer&, const json_pointer&) for a binary operator
-
Since
version 3.6.0
- -
-
- -

◆ operator/=() [3/6]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
json_pointer& nlohmann::json_pointer< BasicJsonType >::operator/= (std::size_t array_idx)
-
-inline
-
- -

append an array index at the end of this JSON pointer

-
Parameters
- - -
[in]array_idxarray index to append
-
-
-
Returns
JSON pointer with array_idx appended
-

@liveexample{The example shows the usage of operator/=.,json_pointer__operator_add}

-

@complexity Amortized constant.

-
See also
operator/=(const json_pointer&) to append a JSON pointer
-
-operator/=(std::string) to append a reference token
-
-operator/(const json_pointer&, std::string) for a binary operator
-
Since
version 3.6.0
- -
-
- -

◆ operator/=() [4/6]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
json_pointer& nlohmann::json_pointer< BasicJsonType >::operator/= (std::size_t array_index)
-
-inline
-
- -

append an array index at the end of this JSON pointer

-
Parameters
- - -
[in]array_indexarray index to append
-
-
-
Returns
JSON pointer with array_index appended
-

@liveexample{The example shows the usage of operator/=.,json_pointer__operator_add}

-

@complexity Amortized constant.

-
See also
operator/=(const json_pointer&) to append a JSON pointer
-
-operator/=(std::string) to append a reference token
-
-operator/(const json_pointer&, std::string) for a binary operator
-
Since
version 3.6.0
- -
-
- -

◆ operator/=() [5/6]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
json_pointer& nlohmann::json_pointer< BasicJsonType >::operator/= (std::string token)
-
-inline
-
- -

append an unescaped reference token at the end of this JSON pointer

-
Parameters
- - -
[in]tokenreference token to append
-
-
-
Returns
JSON pointer with token appended without escaping token
-

@liveexample{The example shows the usage of operator/=.,json_pointer__operator_add}

-

@complexity Amortized constant.

-
See also
operator/=(const json_pointer&) to append a JSON pointer
-
-operator/=(std::size_t) to append an array index
-
-operator/(const json_pointer&, std::size_t) for a binary operator
-
Since
version 3.6.0
- -
-
- -

◆ operator/=() [6/6]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
json_pointer& nlohmann::json_pointer< BasicJsonType >::operator/= (std::string token)
-
-inline
-
- -

append an unescaped reference token at the end of this JSON pointer

-
Parameters
- - -
[in]tokenreference token to append
-
-
-
Returns
JSON pointer with token appended without escaping token
-

@liveexample{The example shows the usage of operator/=.,json_pointer__operator_add}

-

@complexity Amortized constant.

-
See also
operator/=(const json_pointer&) to append a JSON pointer
-
-operator/=(std::size_t) to append an array index
-
-operator/(const json_pointer&, std::size_t) for a binary operator
-
Since
version 3.6.0
- -
-
- -

◆ parent_pointer() [1/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - -
json_pointer nlohmann::json_pointer< BasicJsonType >::parent_pointer () const
-
-inline
-
- -

returns the parent of this JSON pointer

-
Returns
parent of this JSON pointer; in case this JSON pointer is the root, the root itself is returned
-

@complexity Linear in the length of the JSON pointer.

-

@liveexample{The example shows the result of parent_pointer for different JSON Pointers.,json_pointer__parent_pointer}

-
Since
version 3.6.0
- -
-
- -

◆ parent_pointer() [2/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - -
json_pointer nlohmann::json_pointer< BasicJsonType >::parent_pointer () const
-
-inline
-
- -

returns the parent of this JSON pointer

-
Returns
parent of this JSON pointer; in case this JSON pointer is the root, the root itself is returned
-

@complexity Linear in the length of the JSON pointer.

-

@liveexample{The example shows the result of parent_pointer for different JSON Pointers.,json_pointer__parent_pointer}

-
Since
version 3.6.0
- -
-
- -

◆ pop_back() [1/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - -
void nlohmann::json_pointer< BasicJsonType >::pop_back ()
-
-inline
-
- -

remove last reference token

-
Precondition
not empty()
-

@liveexample{The example shows the usage of pop_back.,json_pointer__pop_back}

-

@complexity Constant.

-
Exceptions
- - -
out_of_range.405if JSON pointer has no parent
-
-
-
Since
version 3.6.0
- -
-
- -

◆ pop_back() [2/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - -
void nlohmann::json_pointer< BasicJsonType >::pop_back ()
-
-inline
-
- -

remove last reference token

-
Precondition
not empty()
-

@liveexample{The example shows the usage of pop_back.,json_pointer__pop_back}

-

@complexity Constant.

-
Exceptions
- - -
out_of_range.405if JSON pointer has no parent
-
-
-
Since
version 3.6.0
- -
-
- -

◆ push_back() [1/4]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
void nlohmann::json_pointer< BasicJsonType >::push_back (const std::string & token)
-
-inline
-
- -

append an unescaped token at the end of the reference pointer

-
Parameters
- - -
[in]tokentoken to add
-
-
-

@complexity Amortized constant.

-

@liveexample{The example shows the result of push_back for different JSON Pointers.,json_pointer__push_back}

-
Since
version 3.6.0
- -
-
- -

◆ push_back() [2/4]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
void nlohmann::json_pointer< BasicJsonType >::push_back (const std::string & token)
-
-inline
-
- -

append an unescaped token at the end of the reference pointer

-
Parameters
- - -
[in]tokentoken to add
-
-
-

@complexity Amortized constant.

-

@liveexample{The example shows the result of push_back for different JSON Pointers.,json_pointer__push_back}

-
Since
version 3.6.0
- -
-
- -

◆ push_back() [3/4]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
void nlohmann::json_pointer< BasicJsonType >::push_back (std::string && token)
-
-inline
-
- -

append an unescaped token at the end of the reference pointer

-
Parameters
- - -
[in]tokentoken to add
-
-
-

@complexity Amortized constant.

-

@liveexample{The example shows the result of push_back for different JSON Pointers.,json_pointer__push_back}

-
Since
version 3.6.0
- -
-
- -

◆ push_back() [4/4]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - -
void nlohmann::json_pointer< BasicJsonType >::push_back (std::string && token)
-
-inline
-
- -

append an unescaped token at the end of the reference pointer

-
Parameters
- - -
[in]tokentoken to add
-
-
-

@complexity Amortized constant.

-

@liveexample{The example shows the result of push_back for different JSON Pointers.,json_pointer__push_back}

-
Since
version 3.6.0
- -
-
- -

◆ to_string() [1/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - -
std::string nlohmann::json_pointer< BasicJsonType >::to_string () const
-
-inline
-
- -

return a string representation of the JSON pointer

-
Invariant
For each JSON pointer ptr, it holds:
ptr == json_pointer(ptr.to_string());
-
-
Returns
a string representation of the JSON pointer
-

@liveexample{The example shows the result of to_string.,json_pointer__to_string}

-
Since
version 2.0.0
- -
-
- -

◆ to_string() [2/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - -
std::string nlohmann::json_pointer< BasicJsonType >::to_string () const
-
-inline
-
- -

return a string representation of the JSON pointer

-
Invariant
For each JSON pointer ptr, it holds:
ptr == json_pointer(ptr.to_string());
-
-
Returns
a string representation of the JSON pointer
-

@liveexample{The example shows the result of to_string.,json_pointer__to_string}

-
Since
version 2.0.0
- -
-
-

Friends And Related Function Documentation

- -

◆ basic_json

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - -
basic_json
-
-friend
-
- -
-
- -

◆ operator!= [1/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool operator!= (json_pointer< BasicJsonType > const & lhs,
json_pointer< BasicJsonType > const & rhs 
)
-
-friend
-
- -

compares two JSON pointers for inequality

-
Parameters
- - - -
[in]lhsJSON pointer to compare
[in]rhsJSON pointer to compare
-
-
-
Returns
whether lhs is not equal rhs
-

@complexity Linear in the length of the JSON pointer

-

@exceptionsafety No-throw guarantee: this function never throws exceptions.

- -
-
- -

◆ operator!= [2/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool operator!= (json_pointer< BasicJsonType > const & lhs,
json_pointer< BasicJsonType > const & rhs 
)
-
-friend
-
- -

compares two JSON pointers for inequality

-
Parameters
- - - -
[in]lhsJSON pointer to compare
[in]rhsJSON pointer to compare
-
-
-
Returns
whether lhs is not equal rhs
-

@complexity Linear in the length of the JSON pointer

-

@exceptionsafety No-throw guarantee: this function never throws exceptions.

- -
-
- -

◆ operator/ [1/6]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - - - - - - - - - - - -
json_pointer operator/ (const json_pointer< BasicJsonType > & lhs,
const json_pointer< BasicJsonType > & rhs 
)
-
-friend
-
- -

create a new JSON pointer by appending the right JSON pointer at the end of the left JSON pointer

-
Parameters
- - - -
[in]lhsJSON pointer
[in]rhsJSON pointer
-
-
-
Returns
a new JSON pointer with rhs appended to lhs
-

@liveexample{The example shows the usage of operator/.,json_pointer__operator_add_binary}

-

@complexity Linear in the length of lhs and rhs.

-
See also
operator/=(const json_pointer&) to append a JSON pointer
-
Since
version 3.6.0
- -
-
- -

◆ operator/ [2/6]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - - - - - - - - - - - -
json_pointer operator/ (const json_pointer< BasicJsonType > & lhs,
const json_pointer< BasicJsonType > & rhs 
)
-
-friend
-
- -

create a new JSON pointer by appending the right JSON pointer at the end of the left JSON pointer

-
Parameters
- - - -
[in]lhsJSON pointer
[in]rhsJSON pointer
-
-
-
Returns
a new JSON pointer with rhs appended to lhs
-

@liveexample{The example shows the usage of operator/.,json_pointer__operator_add_binary}

-

@complexity Linear in the length of lhs and rhs.

-
See also
operator/=(const json_pointer&) to append a JSON pointer
-
Since
version 3.6.0
- -
-
- -

◆ operator/ [3/6]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - - - - - - - - - - - -
json_pointer operator/ (const json_pointer< BasicJsonType > & ptr,
std::size_t array_idx 
)
-
-friend
-
- -

create a new JSON pointer by appending the array-index-token at the end of the JSON pointer

-
Parameters
- - - -
[in]ptrJSON pointer
[in]array_idxarray index
-
-
-
Returns
a new JSON pointer with array_idx appended to ptr
-

@liveexample{The example shows the usage of operator/.,json_pointer__operator_add_binary}

-

@complexity Linear in the length of ptr.

-
See also
operator/=(std::size_t) to append an array index
-
Since
version 3.6.0
- -
-
- -

◆ operator/ [4/6]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - - - - - - - - - - - -
json_pointer operator/ (const json_pointer< BasicJsonType > & ptr,
std::size_t array_index 
)
-
-friend
-
- -

create a new JSON pointer by appending the array-index-token at the end of the JSON pointer

-
Parameters
- - - -
[in]ptrJSON pointer
[in]array_indexarray index
-
-
-
Returns
a new JSON pointer with array_index appended to ptr
-

@liveexample{The example shows the usage of operator/.,json_pointer__operator_add_binary}

-

@complexity Linear in the length of ptr.

-
See also
operator/=(std::size_t) to append an array index
-
Since
version 3.6.0
- -
-
- -

◆ operator/ [5/6]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - - - - - - - - - - - -
json_pointer operator/ (const json_pointer< BasicJsonType > & ptr,
std::string token 
)
-
-friend
-
- -

create a new JSON pointer by appending the unescaped token at the end of the JSON pointer

-
Parameters
- - - -
[in]ptrJSON pointer
[in]tokenreference token
-
-
-
Returns
a new JSON pointer with unescaped token appended to ptr
-

@liveexample{The example shows the usage of operator/.,json_pointer__operator_add_binary}

-

@complexity Linear in the length of ptr.

-
See also
operator/=(std::string) to append a reference token
-
Since
version 3.6.0
- -
-
- -

◆ operator/ [6/6]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - - - - - - - - - - - -
json_pointer operator/ (const json_pointer< BasicJsonType > & ptr,
std::string token 
)
-
-friend
-
- -

create a new JSON pointer by appending the unescaped token at the end of the JSON pointer

-
Parameters
- - - -
[in]ptrJSON pointer
[in]tokenreference token
-
-
-
Returns
a new JSON pointer with unescaped token appended to ptr
-

@liveexample{The example shows the usage of operator/.,json_pointer__operator_add_binary}

-

@complexity Linear in the length of ptr.

-
See also
operator/=(std::string) to append a reference token
-
Since
version 3.6.0
- -
-
- -

◆ operator== [1/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool operator== (json_pointer< BasicJsonType > const & lhs,
json_pointer< BasicJsonType > const & rhs 
)
-
-friend
-
- -

compares two JSON pointers for equality

-
Parameters
- - - -
[in]lhsJSON pointer to compare
[in]rhsJSON pointer to compare
-
-
-
Returns
whether lhs is equal to rhs
-

@complexity Linear in the length of the JSON pointer

-

@exceptionsafety No-throw guarantee: this function never throws exceptions.

- -
-
- -

◆ operator== [2/2]

- -
-
-
-template<typename BasicJsonType >
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool operator== (json_pointer< BasicJsonType > const & lhs,
json_pointer< BasicJsonType > const & rhs 
)
-
-friend
-
- -

compares two JSON pointers for equality

-
Parameters
- - - -
[in]lhsJSON pointer to compare
[in]rhsJSON pointer to compare
-
-
-
Returns
whether lhs is equal to rhs
-

@complexity Linear in the length of the JSON pointer

-

@exceptionsafety No-throw guarantee: this function never throws exceptions.

- -
-
-
The documentation for this class was generated from the following file: -
-
json_pointer(const std::string &s="")
create JSON pointer
Definition: json.hpp:10120
- - - - diff --git a/help/html/classstd_1_1tuple__element_3_01N_00_01_1_1nlohmann_1_1detail_1_1iteration__proxy__value_3_01IteratorType_01_4_01_4-members.html b/help/html/classstd_1_1tuple__element_3_01N_00_01_1_1nlohmann_1_1detail_1_1iteration__proxy__value_3_01IteratorType_01_4_01_4-members.html deleted file mode 100644 index 9fd3078..0000000 --- a/help/html/classstd_1_1tuple__element_3_01N_00_01_1_1nlohmann_1_1detail_1_1iteration__proxy__value_3_01IteratorType_01_4_01_4-members.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
std::tuple_element< N, ::nlohmann::detail::iteration_proxy_value< IteratorType > > Member List
-
-
- -

This is the complete list of members for std::tuple_element< N, ::nlohmann::detail::iteration_proxy_value< IteratorType > >, including all inherited members.

- - - -
type typedefstd::tuple_element< N, ::nlohmann::detail::iteration_proxy_value< IteratorType > >
type typedefstd::tuple_element< N, ::nlohmann::detail::iteration_proxy_value< IteratorType > >
- - - - diff --git a/help/html/classstd_1_1tuple__element_3_01N_00_01_1_1nlohmann_1_1detail_1_1iteration__proxy__value_3_01IteratorType_01_4_01_4.html b/help/html/classstd_1_1tuple__element_3_01N_00_01_1_1nlohmann_1_1detail_1_1iteration__proxy__value_3_01IteratorType_01_4_01_4.html deleted file mode 100644 index 0fb5b07..0000000 --- a/help/html/classstd_1_1tuple__element_3_01N_00_01_1_1nlohmann_1_1detail_1_1iteration__proxy__value_3_01IteratorType_01_4_01_4.html +++ /dev/null @@ -1,129 +0,0 @@ - - - - - - - -CocoaTweet: std::tuple_element< N, ::nlohmann::detail::iteration_proxy_value< IteratorType > > Class Template Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
std::tuple_element< N, ::nlohmann::detail::iteration_proxy_value< IteratorType > > Class Template Reference
-
-
- -

#include <json.hpp>

- - - - - - -

-Public Types

using type = decltype(get< N >(std::declval< ::nlohmann::detail::iteration_proxy_value< IteratorType > >()))
 
using type = decltype(get< N >(std::declval< ::nlohmann::detail::iteration_proxy_value< IteratorType > >()))
 
-

Member Typedef Documentation

- -

◆ type [1/2]

- -
-
-
-template<std::size_t N, typename IteratorType >
- - - - -
using std::tuple_element< N, ::nlohmann::detail::iteration_proxy_value< IteratorType > >::type = decltype( get<N>(std::declval < ::nlohmann::detail::iteration_proxy_value<IteratorType > > ()))
-
- -
-
- -

◆ type [2/2]

- -
-
-
-template<std::size_t N, typename IteratorType >
- - - - -
using std::tuple_element< N, ::nlohmann::detail::iteration_proxy_value< IteratorType > >::type = decltype( get<N>(std::declval < ::nlohmann::detail::iteration_proxy_value<IteratorType > > ()))
-
- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/help/html/classstd_1_1tuple__size_3_1_1nlohmann_1_1detail_1_1iteration__proxy__value_3_01IteratorType_01_4_01_4.html b/help/html/classstd_1_1tuple__size_3_1_1nlohmann_1_1detail_1_1iteration__proxy__value_3_01IteratorType_01_4_01_4.html deleted file mode 100644 index 6664b62..0000000 --- a/help/html/classstd_1_1tuple__size_3_1_1nlohmann_1_1detail_1_1iteration__proxy__value_3_01IteratorType_01_4_01_4.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - - -CocoaTweet: std::tuple_size<::nlohmann::detail::iteration_proxy_value< IteratorType > > Class Template Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
std::tuple_size<::nlohmann::detail::iteration_proxy_value< IteratorType > > Class Template Reference
-
-
- -

#include <json.hpp>

-
-Inheritance diagram for std::tuple_size<::nlohmann::detail::iteration_proxy_value< IteratorType > >:
-
-
Inheritance graph
- - - - -
[legend]
-
-Collaboration diagram for std::tuple_size<::nlohmann::detail::iteration_proxy_value< IteratorType > >:
-
-
Collaboration graph
- - - - -
[legend]
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/help/html/classstd_1_1tuple__size_3_1_1nlohmann_1_1detail_1_1iteration__proxy__value_3_01IteratorType_01_4_01_4__coll__graph.map b/help/html/classstd_1_1tuple__size_3_1_1nlohmann_1_1detail_1_1iteration__proxy__value_3_01IteratorType_01_4_01_4__coll__graph.map deleted file mode 100644 index a611465..0000000 --- a/help/html/classstd_1_1tuple__size_3_1_1nlohmann_1_1detail_1_1iteration__proxy__value_3_01IteratorType_01_4_01_4__coll__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/help/html/classstd_1_1tuple__size_3_1_1nlohmann_1_1detail_1_1iteration__proxy__value_3_01IteratorType_01_4_01_4__coll__graph.md5 b/help/html/classstd_1_1tuple__size_3_1_1nlohmann_1_1detail_1_1iteration__proxy__value_3_01IteratorType_01_4_01_4__coll__graph.md5 deleted file mode 100644 index db3af1c..0000000 --- a/help/html/classstd_1_1tuple__size_3_1_1nlohmann_1_1detail_1_1iteration__proxy__value_3_01IteratorType_01_4_01_4__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -2bb9cdf7906f4278c75e61e42b8893ee \ No newline at end of file diff --git a/help/html/classstd_1_1tuple__size_3_1_1nlohmann_1_1detail_1_1iteration__proxy__value_3_01IteratorType_01_4_01_4__coll__graph.png b/help/html/classstd_1_1tuple__size_3_1_1nlohmann_1_1detail_1_1iteration__proxy__value_3_01IteratorType_01_4_01_4__coll__graph.png deleted file mode 100644 index 77795c9..0000000 Binary files a/help/html/classstd_1_1tuple__size_3_1_1nlohmann_1_1detail_1_1iteration__proxy__value_3_01IteratorType_01_4_01_4__coll__graph.png and /dev/null differ diff --git a/help/html/classstd_1_1tuple__size_3_1_1nlohmann_1_1detail_1_1iteration__proxy__value_3_01IteratorType_01_4_01_4__inherit__graph.map b/help/html/classstd_1_1tuple__size_3_1_1nlohmann_1_1detail_1_1iteration__proxy__value_3_01IteratorType_01_4_01_4__inherit__graph.map deleted file mode 100644 index a611465..0000000 --- a/help/html/classstd_1_1tuple__size_3_1_1nlohmann_1_1detail_1_1iteration__proxy__value_3_01IteratorType_01_4_01_4__inherit__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/help/html/classstd_1_1tuple__size_3_1_1nlohmann_1_1detail_1_1iteration__proxy__value_3_01IteratorType_01_4_01_4__inherit__graph.md5 b/help/html/classstd_1_1tuple__size_3_1_1nlohmann_1_1detail_1_1iteration__proxy__value_3_01IteratorType_01_4_01_4__inherit__graph.md5 deleted file mode 100644 index db3af1c..0000000 --- a/help/html/classstd_1_1tuple__size_3_1_1nlohmann_1_1detail_1_1iteration__proxy__value_3_01IteratorType_01_4_01_4__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -2bb9cdf7906f4278c75e61e42b8893ee \ No newline at end of file diff --git a/help/html/classstd_1_1tuple__size_3_1_1nlohmann_1_1detail_1_1iteration__proxy__value_3_01IteratorType_01_4_01_4__inherit__graph.png b/help/html/classstd_1_1tuple__size_3_1_1nlohmann_1_1detail_1_1iteration__proxy__value_3_01IteratorType_01_4_01_4__inherit__graph.png deleted file mode 100644 index 77795c9..0000000 Binary files a/help/html/classstd_1_1tuple__size_3_1_1nlohmann_1_1detail_1_1iteration__proxy__value_3_01IteratorType_01_4_01_4__inherit__graph.png and /dev/null differ diff --git a/help/html/closed.png b/help/html/closed.png deleted file mode 100644 index 98cc2c9..0000000 Binary files a/help/html/closed.png and /dev/null differ diff --git a/help/html/create_8cc.html b/help/html/create_8cc.html deleted file mode 100644 index a852e89..0000000 --- a/help/html/create_8cc.html +++ /dev/null @@ -1,113 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api/favorite/create.cc File Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
create.cc File Reference
-
-
-
-Include dependency graph for create.cc:
-
-
- - - - - - - - - - - - - - -
-
- - - - - - - -

-Namespaces

 CocoaTweet
 
 CocoaTweet::API
 
 CocoaTweet::API::Favorites
 
-
- - - - diff --git a/help/html/create_8cc__incl.map b/help/html/create_8cc__incl.map deleted file mode 100644 index cf9f674..0000000 --- a/help/html/create_8cc__incl.map +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/help/html/create_8cc__incl.md5 b/help/html/create_8cc__incl.md5 deleted file mode 100644 index 94d7d25..0000000 --- a/help/html/create_8cc__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -8f658c44714b21053ce0eb8d2956a130 \ No newline at end of file diff --git a/help/html/create_8cc__incl.png b/help/html/create_8cc__incl.png deleted file mode 100644 index 7f13c1f..0000000 Binary files a/help/html/create_8cc__incl.png and /dev/null differ diff --git a/help/html/create_8h.html b/help/html/create_8h.html deleted file mode 100644 index 825ed15..0000000 --- a/help/html/create_8h.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api/favorite/create.h File Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
create.h File Reference
-
-
-
-Include dependency graph for create.h:
-
-
- - - - - - - - - - - - - -
-
-This graph shows which files directly or indirectly include this file:
-
-
- - - - - -
-
-

Go to the source code of this file.

- - - - -

-Classes

class  CocoaTweet::API::Favorites::Create
 
- - - - - - - -

-Namespaces

 CocoaTweet
 
 CocoaTweet::API
 
 CocoaTweet::API::Favorites
 
-
- - - - diff --git a/help/html/create_8h__dep__incl.map b/help/html/create_8h__dep__incl.map deleted file mode 100644 index aafce66..0000000 --- a/help/html/create_8h__dep__incl.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/help/html/create_8h__dep__incl.md5 b/help/html/create_8h__dep__incl.md5 deleted file mode 100644 index f8f7940..0000000 --- a/help/html/create_8h__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -00b86619e3b74f1a85ece9125b095d3f \ No newline at end of file diff --git a/help/html/create_8h__dep__incl.png b/help/html/create_8h__dep__incl.png deleted file mode 100644 index 4ba22ca..0000000 Binary files a/help/html/create_8h__dep__incl.png and /dev/null differ diff --git a/help/html/create_8h__incl.map b/help/html/create_8h__incl.map deleted file mode 100644 index 05b1f9f..0000000 --- a/help/html/create_8h__incl.map +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/help/html/create_8h__incl.md5 b/help/html/create_8h__incl.md5 deleted file mode 100644 index 847a745..0000000 --- a/help/html/create_8h__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -e2c9b1da389a958d25563151d9d87e51 \ No newline at end of file diff --git a/help/html/create_8h__incl.png b/help/html/create_8h__incl.png deleted file mode 100644 index 5b9cbf9..0000000 Binary files a/help/html/create_8h__incl.png and /dev/null differ diff --git a/help/html/create_8h_source.html b/help/html/create_8h_source.html deleted file mode 100644 index cb7aac0..0000000 --- a/help/html/create_8h_source.html +++ /dev/null @@ -1,107 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api/favorite/create.h Source File - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
create.h
-
-
-Go to the documentation of this file.
1 #ifndef COCOATWEET_API_FAVORITE_CREATE_H_
-
2 #define COCOATWEET_API_FAVORITE_CREATE_H_
-
3 
- - -
6 
- - -
9 public:
-
10  Create();
-
11  void id(const std::string& _id);
-
12  CocoaTweet::API::Model::Tweet process(std::weak_ptr<CocoaTweet::OAuth::OAuth1> _oauth);
-
13 
-
14 private:
-
15 };
-
16 } // namespace CocoaTweet::API::Favorites
-
17 
-
18 #endif
-
-
class for Send request with POST method
Definition: httpPost.h:10
-
Create()
Definition: create.cc:5
-
CocoaTweet::API::Model::Tweet process(std::weak_ptr< CocoaTweet::OAuth::OAuth1 > _oauth)
Definition: create.cc:14
-
data class for tweet object
Definition: tweet.h:10
-
-
Definition: create.cc:4
-
void id(const std::string &_id)
Definition: create.cc:10
-
Definition: create.h:8
-
- - - - diff --git a/help/html/deprecated.html b/help/html/deprecated.html deleted file mode 100644 index 29d6399..0000000 --- a/help/html/deprecated.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - -CocoaTweet: Deprecated List - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
Deprecated List
-
-
-
-
Member nlohmann::basic_json::iterator_wrapper (reference ref) noexcept
-

This stream operator is deprecated and will be removed in future 4.0.0 of the library. Please use items() instead; that is, replace json::iterator_wrapper(j) with j.items().

-

This stream operator is deprecated and will be removed in future 4.0.0 of the library. Please use items() instead; that is, replace json::iterator_wrapper(j) with j.items().

-
-
Member nlohmann::basic_json::operator<< (basic_json &j, std::istream &i)
-

This stream operator is deprecated and will be removed in version 4.0.0 of the library. Please use operator>>(std::istream&, basic_json&) instead; that is, replace calls like j << i; with i >> j;.

-

This stream operator is deprecated and will be removed in version 4.0.0 of the library. Please use operator>>(std::istream&, basic_json&) instead; that is, replace calls like j << i; with i >> j;.

-
-
Member nlohmann::basic_json::operator>> (const basic_json &j, std::ostream &o)
-

This stream operator is deprecated and will be removed in future 4.0.0 of the library. Please use operator<<(std::ostream&, const basic_json&) instead; that is, replace calls like j >> o; with o << j;.

-

This stream operator is deprecated and will be removed in future 4.0.0 of the library. Please use operator<<(std::ostream&, const basic_json&) instead; that is, replace calls like j >> o; with o << j;.

-
-
-
-
- - - - diff --git a/help/html/dir_000002_000003.html b/help/html/dir_000002_000003.html deleted file mode 100644 index bb7e361..0000000 --- a/help/html/dir_000002_000003.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api -> directMessage Relation - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-

api → directMessage Relation

File in src/cocoatweet/apiIncludes file in src/cocoatweet/api/directMessage
api.hdirectMessage.h
- - - - diff --git a/help/html/dir_000002_000004.html b/help/html/dir_000002_000004.html deleted file mode 100644 index 6cbe047..0000000 --- a/help/html/dir_000002_000004.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api -> favorite Relation - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-

api → favorite Relation

File in src/cocoatweet/apiIncludes file in src/cocoatweet/api/favorite
api.hfavorite.h
- - - - diff --git a/help/html/dir_000002_000005.html b/help/html/dir_000002_000005.html deleted file mode 100644 index 72abaf6..0000000 --- a/help/html/dir_000002_000005.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api -> status Relation - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-

api → status Relation

File in src/cocoatweet/apiIncludes file in src/cocoatweet/api/status
api.hstatus.h
- - - - diff --git a/help/html/dir_000002_000006.html b/help/html/dir_000002_000006.html deleted file mode 100644 index 14e28af..0000000 --- a/help/html/dir_000002_000006.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api -> media Relation - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-

api → media Relation

File in src/cocoatweet/apiIncludes file in src/cocoatweet/api/media
api.hmedia.h
- - - - diff --git a/help/html/dir_000002_000007.html b/help/html/dir_000002_000007.html deleted file mode 100644 index 14e28af..0000000 --- a/help/html/dir_000002_000007.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api -> media Relation - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-

api → media Relation

File in src/cocoatweet/apiIncludes file in src/cocoatweet/api/media
api.hmedia.h
- - - - diff --git a/help/html/dir_000002_000008.html b/help/html/dir_000002_000008.html deleted file mode 100644 index 4169979..0000000 --- a/help/html/dir_000002_000008.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api -> exception Relation - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-

api → exception Relation

File in src/cocoatweet/apiIncludes file in src/cocoatweet/exception
interface / httpPost.cctweetNotFoundException.h
interface / httpPost.ccauthenticateException.h
interface / httpPost.cctweetDuplicateException.h
interface / httpPost.cctweetTooLongException.h
interface / httpPost.ccrateLimitException.h
media / upload.ccunsupportedMediaTypeException.h
model / mediaStore.ccexception.h
- - - - diff --git a/help/html/dir_000002_000009.html b/help/html/dir_000002_000009.html deleted file mode 100644 index d1e1ed5..0000000 --- a/help/html/dir_000002_000009.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api -> exception Relation - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-

api → exception Relation

File in src/cocoatweet/apiIncludes file in src/cocoatweet/exception
interface / httpGet.cctweetNotFoundException.h
interface / httpGet.ccauthenticateException.h
interface / httpGet.cctweetDuplicateException.h
interface / httpGet.cctweetTooLongException.h
interface / httpGet.ccrateLimitException.h
interface / httpGet.cctokenInvalidException.h
interface / httpPost.cctweetNotFoundException.h
interface / httpPost.ccauthenticateException.h
interface / httpPost.cctweetDuplicateException.h
interface / httpPost.cctweetTooLongException.h
interface / httpPost.ccrateLimitException.h
interface / httpPost.cctokenInvalidException.h
media / upload.ccunsupportedMediaTypeException.h
model / mediaStore.ccexception.h
- - - - diff --git a/help/html/dir_000002_000010.html b/help/html/dir_000002_000010.html deleted file mode 100644 index 3037aef..0000000 --- a/help/html/dir_000002_000010.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api -> oauth Relation - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-

api → oauth Relation

File in src/cocoatweet/apiIncludes file in src/cocoatweet/oauth
api.hoauth.h
directMessage / directMessage.hoauth.h
favorite / favorite.hoauth.h
interface / groupInterface.hoauth.h
interface / httpBase.hoauth.h
interface / httpGet.hoauth.h
interface / httpPost.hoauth.h
media / media.hoauth.h
status / status.hoauth.h
- - - - diff --git a/help/html/dir_000002_000011.html b/help/html/dir_000002_000011.html deleted file mode 100644 index 97e723b..0000000 --- a/help/html/dir_000002_000011.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api -> util Relation - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-

api → util Relation

File in src/cocoatweet/apiIncludes file in src/cocoatweet/util
directMessage / new.ccutil.h
interface / httpGet.ccutil.h
interface / httpPost.ccutil.h
status / update.ccutil.h
status / userTimeline.ccutil.h
- - - - diff --git a/help/html/dir_000003_000004.html b/help/html/dir_000003_000004.html deleted file mode 100644 index 6cbe047..0000000 --- a/help/html/dir_000003_000004.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api -> favorite Relation - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-

api → favorite Relation

File in src/cocoatweet/apiIncludes file in src/cocoatweet/api/favorite
api.hfavorite.h
- - - - diff --git a/help/html/dir_000003_000005.html b/help/html/dir_000003_000005.html deleted file mode 100644 index 0061ae1..0000000 --- a/help/html/dir_000003_000005.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api/favorite -> interface Relation - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-

favorite → interface Relation

File in src/cocoatweet/api/favoriteIncludes file in src/cocoatweet/api/interface
create.hhttpPost.h
destroy.hhttpPost.h
favorite.hgroupInterface.h
- - - - diff --git a/help/html/dir_000003_000006.html b/help/html/dir_000003_000006.html deleted file mode 100644 index 7a6e421..0000000 --- a/help/html/dir_000003_000006.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api/directMessage -> interface Relation - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-

directMessage → interface Relation

File in src/cocoatweet/api/directMessageIncludes file in src/cocoatweet/api/interface
directMessage.hgroupInterface.h
new.hhttpPost.h
- - - - diff --git a/help/html/dir_000003_000007.html b/help/html/dir_000003_000007.html deleted file mode 100644 index 55c9d8a..0000000 --- a/help/html/dir_000003_000007.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api/favorite -> model Relation - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-

favorite → model Relation

File in src/cocoatweet/api/favoriteIncludes file in src/cocoatweet/api/model
create.cctweet.h
create.htweet.h
destroy.cctweet.h
destroy.htweet.h
favorite.htweet.h
- - - - diff --git a/help/html/dir_000003_000008.html b/help/html/dir_000003_000008.html deleted file mode 100644 index 9b10ec3..0000000 --- a/help/html/dir_000003_000008.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api/directMessage -> model Relation - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-

directMessage → model Relation

File in src/cocoatweet/api/directMessageIncludes file in src/cocoatweet/api/model
directMessage.htweet.h
new.htweet.h
- - - - diff --git a/help/html/dir_000003_000009.html b/help/html/dir_000003_000009.html deleted file mode 100644 index 68f2246..0000000 --- a/help/html/dir_000003_000009.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api/favorite -> oauth Relation - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-

favorite → oauth Relation

File in src/cocoatweet/api/favoriteIncludes file in src/cocoatweet/oauth
favorite.hoauth.h
- - - - diff --git a/help/html/dir_000003_000010.html b/help/html/dir_000003_000010.html deleted file mode 100644 index e050de2..0000000 --- a/help/html/dir_000003_000010.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api/directMessage -> oauth Relation - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-

directMessage → oauth Relation

File in src/cocoatweet/api/directMessageIncludes file in src/cocoatweet/oauth
directMessage.hoauth.h
- - - - diff --git a/help/html/dir_000003_000011.html b/help/html/dir_000003_000011.html deleted file mode 100644 index ff9131d..0000000 --- a/help/html/dir_000003_000011.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api/directMessage -> util Relation - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-

directMessage → util Relation

File in src/cocoatweet/api/directMessageIncludes file in src/cocoatweet/util
new.ccutil.h
- - - - diff --git a/help/html/dir_000003_000012.html b/help/html/dir_000003_000012.html deleted file mode 100644 index 85e53a2..0000000 --- a/help/html/dir_000003_000012.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api -> oauth Relation - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-

api → oauth Relation

File in src/cocoatweet/apiIncludes file in src/cocoatweet/oauth
api.hoauth.h
favorite / favorite.hoauth.h
interface / groupInterface.hoauth.h
interface / httpPost.hoauth.h
status / status.hoauth.h
- - - - diff --git a/help/html/dir_000003_000014.html b/help/html/dir_000003_000014.html deleted file mode 100644 index 708b52c..0000000 --- a/help/html/dir_000003_000014.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api -> util Relation - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-

api → util Relation

File in src/cocoatweet/apiIncludes file in src/cocoatweet/util
interface / httpPost.ccutil.h
- - - - diff --git a/help/html/dir_000004_000005.html b/help/html/dir_000004_000005.html deleted file mode 100644 index 49ab047..0000000 --- a/help/html/dir_000004_000005.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api/status -> interface Relation - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-

status → interface Relation

File in src/cocoatweet/api/statusIncludes file in src/cocoatweet/api/interface
destroy.hhttpPost.h
retweet.hhttpPost.h
status.hgroupInterface.h
unretweet.hhttpPost.h
update.hhttpPost.h
userTimeline.hhttpGet.h
- - - - diff --git a/help/html/dir_000004_000006.html b/help/html/dir_000004_000006.html deleted file mode 100644 index 0061ae1..0000000 --- a/help/html/dir_000004_000006.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api/favorite -> interface Relation - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-

favorite → interface Relation

File in src/cocoatweet/api/favoriteIncludes file in src/cocoatweet/api/interface
create.hhttpPost.h
destroy.hhttpPost.h
favorite.hgroupInterface.h
- - - - diff --git a/help/html/dir_000004_000007.html b/help/html/dir_000004_000007.html deleted file mode 100644 index 77a1da3..0000000 --- a/help/html/dir_000004_000007.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api/status -> model Relation - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-

status → model Relation

File in src/cocoatweet/api/statusIncludes file in src/cocoatweet/api/model
destroy.cctweet.h
destroy.htweet.h
retweet.htweet.h
status.htweet.h
unretweet.htweet.h
update.htweet.h
userTimeline.htweet.h
- - - - diff --git a/help/html/dir_000004_000008.html b/help/html/dir_000004_000008.html deleted file mode 100644 index 55c9d8a..0000000 --- a/help/html/dir_000004_000008.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api/favorite -> model Relation - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-

favorite → model Relation

File in src/cocoatweet/api/favoriteIncludes file in src/cocoatweet/api/model
create.cctweet.h
create.htweet.h
destroy.cctweet.h
destroy.htweet.h
favorite.htweet.h
- - - - diff --git a/help/html/dir_000004_000009.html b/help/html/dir_000004_000009.html deleted file mode 100644 index 9117742..0000000 --- a/help/html/dir_000004_000009.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api/status -> oauth Relation - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-

status → oauth Relation

File in src/cocoatweet/api/statusIncludes file in src/cocoatweet/oauth
status.hoauth.h
- - - - diff --git a/help/html/dir_000004_000010.html b/help/html/dir_000004_000010.html deleted file mode 100644 index 68f2246..0000000 --- a/help/html/dir_000004_000010.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api/favorite -> oauth Relation - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-

favorite → oauth Relation

File in src/cocoatweet/api/favoriteIncludes file in src/cocoatweet/oauth
favorite.hoauth.h
- - - - diff --git a/help/html/dir_000004_000012.html b/help/html/dir_000004_000012.html deleted file mode 100644 index 68f2246..0000000 --- a/help/html/dir_000004_000012.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api/favorite -> oauth Relation - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-

favorite → oauth Relation

File in src/cocoatweet/api/favoriteIncludes file in src/cocoatweet/oauth
favorite.hoauth.h
- - - - diff --git a/help/html/dir_000005_000006.html b/help/html/dir_000005_000006.html deleted file mode 100644 index 49ab047..0000000 --- a/help/html/dir_000005_000006.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api/status -> interface Relation - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-

status → interface Relation

File in src/cocoatweet/api/statusIncludes file in src/cocoatweet/api/interface
destroy.hhttpPost.h
retweet.hhttpPost.h
status.hgroupInterface.h
unretweet.hhttpPost.h
update.hhttpPost.h
userTimeline.hhttpGet.h
- - - - diff --git a/help/html/dir_000005_000008.html b/help/html/dir_000005_000008.html deleted file mode 100644 index 77a1da3..0000000 --- a/help/html/dir_000005_000008.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api/status -> model Relation - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-

status → model Relation

File in src/cocoatweet/api/statusIncludes file in src/cocoatweet/api/model
destroy.cctweet.h
destroy.htweet.h
retweet.htweet.h
status.htweet.h
unretweet.htweet.h
update.htweet.h
userTimeline.htweet.h
- - - - diff --git a/help/html/dir_000005_000009.html b/help/html/dir_000005_000009.html deleted file mode 100644 index 3d0f47e..0000000 --- a/help/html/dir_000005_000009.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api/interface -> oauth Relation - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-

interface → oauth Relation

File in src/cocoatweet/api/interfaceIncludes file in src/cocoatweet/oauth
groupInterface.hoauth.h
httpBase.hoauth.h
httpGet.hoauth.h
httpPost.hoauth.h
- - - - diff --git a/help/html/dir_000005_000010.html b/help/html/dir_000005_000010.html deleted file mode 100644 index 9117742..0000000 --- a/help/html/dir_000005_000010.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api/status -> oauth Relation - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-

status → oauth Relation

File in src/cocoatweet/api/statusIncludes file in src/cocoatweet/oauth
status.hoauth.h
- - - - diff --git a/help/html/dir_000005_000011.html b/help/html/dir_000005_000011.html deleted file mode 100644 index d1a993f..0000000 --- a/help/html/dir_000005_000011.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api/status -> util Relation - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-

status → util Relation

File in src/cocoatweet/api/statusIncludes file in src/cocoatweet/util
update.ccutil.h
userTimeline.ccutil.h
- - - - diff --git a/help/html/dir_000005_000012.html b/help/html/dir_000005_000012.html deleted file mode 100644 index 9117742..0000000 --- a/help/html/dir_000005_000012.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api/status -> oauth Relation - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-

status → oauth Relation

File in src/cocoatweet/api/statusIncludes file in src/cocoatweet/oauth
status.hoauth.h
- - - - diff --git a/help/html/dir_000006_000000.html b/help/html/dir_000006_000000.html deleted file mode 100644 index c59525b..0000000 --- a/help/html/dir_000006_000000.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet -> build Relation - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-

cocoatweet → build Relation

File in src/cocoatweetIncludes file in build
api / model / tweet.cc_deps / json-src / include / nlohmann / json.hpp
oauth / key.cc_deps / json-src / include / nlohmann / json.hpp
- - - - diff --git a/help/html/dir_000006_000005.html b/help/html/dir_000006_000005.html deleted file mode 100644 index ed7f02d..0000000 --- a/help/html/dir_000006_000005.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api/media -> interface Relation - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-

media → interface Relation

File in src/cocoatweet/api/mediaIncludes file in src/cocoatweet/api/interface
media.hgroupInterface.h
upload.hhttpPost.h
- - - - diff --git a/help/html/dir_000006_000007.html b/help/html/dir_000006_000007.html deleted file mode 100644 index d90b0c9..0000000 --- a/help/html/dir_000006_000007.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api/media -> model Relation - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-

media → model Relation

File in src/cocoatweet/api/mediaIncludes file in src/cocoatweet/api/model
media.hmediaStore.h
upload.ccmediaStore.h
upload.hmediaStore.h
- - - - diff --git a/help/html/dir_000006_000008.html b/help/html/dir_000006_000008.html deleted file mode 100644 index ce181c2..0000000 --- a/help/html/dir_000006_000008.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api/media -> exception Relation - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-

media → exception Relation

File in src/cocoatweet/api/mediaIncludes file in src/cocoatweet/exception
upload.ccunsupportedMediaTypeException.h
- - - - diff --git a/help/html/dir_000006_000009.html b/help/html/dir_000006_000009.html deleted file mode 100644 index 6d6f596..0000000 --- a/help/html/dir_000006_000009.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api/interface -> exception Relation - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-

interface → exception Relation

File in src/cocoatweet/api/interfaceIncludes file in src/cocoatweet/exception
httpGet.ccauthenticateException.h
httpGet.ccrateLimitException.h
httpGet.cctokenInvalidException.h
httpGet.cctweetDuplicateException.h
httpGet.cctweetNotFoundException.h
httpGet.cctweetTooLongException.h
httpPost.ccauthenticateException.h
httpPost.ccrateLimitException.h
httpPost.cctokenInvalidException.h
httpPost.cctweetDuplicateException.h
httpPost.cctweetNotFoundException.h
httpPost.cctweetTooLongException.h
- - - - diff --git a/help/html/dir_000006_000010.html b/help/html/dir_000006_000010.html deleted file mode 100644 index 3d0f47e..0000000 --- a/help/html/dir_000006_000010.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api/interface -> oauth Relation - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-

interface → oauth Relation

File in src/cocoatweet/api/interfaceIncludes file in src/cocoatweet/oauth
groupInterface.hoauth.h
httpBase.hoauth.h
httpGet.hoauth.h
httpPost.hoauth.h
- - - - diff --git a/help/html/dir_000006_000011.html b/help/html/dir_000006_000011.html deleted file mode 100644 index 79500fc..0000000 --- a/help/html/dir_000006_000011.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api/interface -> util Relation - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-

interface → util Relation

File in src/cocoatweet/api/interfaceIncludes file in src/cocoatweet/util
httpGet.ccutil.h
httpPost.ccutil.h
- - - - diff --git a/help/html/dir_000006_000012.html b/help/html/dir_000006_000012.html deleted file mode 100644 index 1c445c2..0000000 --- a/help/html/dir_000006_000012.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api/interface -> oauth Relation - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-

interface → oauth Relation

File in src/cocoatweet/api/interfaceIncludes file in src/cocoatweet/oauth
groupInterface.hoauth.h
httpPost.hoauth.h
- - - - diff --git a/help/html/dir_000006_000014.html b/help/html/dir_000006_000014.html deleted file mode 100644 index 4718e34..0000000 --- a/help/html/dir_000006_000014.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api/interface -> util Relation - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-

interface → util Relation

File in src/cocoatweet/api/interfaceIncludes file in src/cocoatweet/util
httpPost.ccutil.h
- - - - diff --git a/help/html/dir_000007_000006.html b/help/html/dir_000007_000006.html deleted file mode 100644 index ed7f02d..0000000 --- a/help/html/dir_000007_000006.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api/media -> interface Relation - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-

media → interface Relation

File in src/cocoatweet/api/mediaIncludes file in src/cocoatweet/api/interface
media.hgroupInterface.h
upload.hhttpPost.h
- - - - diff --git a/help/html/dir_000007_000008.html b/help/html/dir_000007_000008.html deleted file mode 100644 index d90b0c9..0000000 --- a/help/html/dir_000007_000008.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api/media -> model Relation - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-

media → model Relation

File in src/cocoatweet/api/mediaIncludes file in src/cocoatweet/api/model
media.hmediaStore.h
upload.ccmediaStore.h
upload.hmediaStore.h
- - - - diff --git a/help/html/dir_000007_000009.html b/help/html/dir_000007_000009.html deleted file mode 100644 index ce181c2..0000000 --- a/help/html/dir_000007_000009.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api/media -> exception Relation - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-

media → exception Relation

File in src/cocoatweet/api/mediaIncludes file in src/cocoatweet/exception
upload.ccunsupportedMediaTypeException.h
- - - - diff --git a/help/html/dir_000007_000010.html b/help/html/dir_000007_000010.html deleted file mode 100644 index 78bc7c9..0000000 --- a/help/html/dir_000007_000010.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api/media -> oauth Relation - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-

media → oauth Relation

File in src/cocoatweet/api/mediaIncludes file in src/cocoatweet/oauth
media.hoauth.h
- - - - diff --git a/help/html/dir_000008_000009.html b/help/html/dir_000008_000009.html deleted file mode 100644 index ccceb4b..0000000 --- a/help/html/dir_000008_000009.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api/model -> exception Relation - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-

model → exception Relation

File in src/cocoatweet/api/modelIncludes file in src/cocoatweet/exception
mediaStore.ccexception.h
- - - - diff --git a/help/html/dir_000008_000011.html b/help/html/dir_000008_000011.html deleted file mode 100644 index b620a88..0000000 --- a/help/html/dir_000008_000011.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api/model -> exception Relation - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-

model → exception Relation

File in src/cocoatweet/api/modelIncludes file in src/cocoatweet/exception
tweet.ccauthenticateException.h
tweet.ccrateLimitException.h
tweet.cctweetDuplicateException.h
tweet.cctweetNotFoundException.h
tweet.cctweetTooLongException.h
- - - - diff --git a/help/html/dir_000009_000000.html b/help/html/dir_000009_000000.html deleted file mode 100644 index 386b1c4..0000000 --- a/help/html/dir_000009_000000.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - -CocoaTweet: test/api -> src Relation - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-

api → src Relation

File in test/apiIncludes file in src
model / tweet.cccocoatweet / api / model / tweet.h
model / tweet.cccocoatweet / exception / authenticateException.h
model / tweet.cccocoatweet / exception / rateLimitException.h
model / tweet.cccocoatweet / exception / tweetTooLongException.h
model / tweet.cccocoatweet / exception / tweetDuplicateException.h
- - - - diff --git a/help/html/dir_000009_000010.html b/help/html/dir_000009_000010.html deleted file mode 100644 index 32fbbf5..0000000 --- a/help/html/dir_000009_000010.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/oauth -> util Relation - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-

oauth → util Relation

File in src/cocoatweet/oauthIncludes file in src/cocoatweet/util
oauth.ccutil.h
- - - - diff --git a/help/html/dir_000010_000000.html b/help/html/dir_000010_000000.html deleted file mode 100644 index 51a1a8e..0000000 --- a/help/html/dir_000010_000000.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - -CocoaTweet: test/api/model -> src Relation - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-

model → src Relation

File in test/api/modelIncludes file in src
tweet.cccocoatweet / exception / authenticateException.h
tweet.cccocoatweet / exception / rateLimitException.h
tweet.cccocoatweet / api / model / tweet.h
tweet.cccocoatweet / exception / tweetDuplicateException.h
tweet.cccocoatweet / exception / tweetTooLongException.h
- - - - diff --git a/help/html/dir_000010_000009.html b/help/html/dir_000010_000009.html deleted file mode 100644 index b1582ad..0000000 --- a/help/html/dir_000010_000009.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/oauth -> exception Relation - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-

oauth → exception Relation

File in src/cocoatweet/oauthIncludes file in src/cocoatweet/exception
oauth.ccinvalidParameterException.h
- - - - diff --git a/help/html/dir_000010_000011.html b/help/html/dir_000010_000011.html deleted file mode 100644 index 32fbbf5..0000000 --- a/help/html/dir_000010_000011.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/oauth -> util Relation - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-

oauth → util Relation

File in src/cocoatweet/oauthIncludes file in src/cocoatweet/util
oauth.ccutil.h
- - - - diff --git a/help/html/dir_000012_000014.html b/help/html/dir_000012_000014.html deleted file mode 100644 index 32fbbf5..0000000 --- a/help/html/dir_000012_000014.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/oauth -> util Relation - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-

oauth → util Relation

File in src/cocoatweet/oauthIncludes file in src/cocoatweet/util
oauth.ccutil.h
- - - - diff --git a/help/html/dir_000013_000000.html b/help/html/dir_000013_000000.html deleted file mode 100644 index 3476bab..0000000 --- a/help/html/dir_000013_000000.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - -CocoaTweet: test/oauth -> src Relation - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-

oauth → src Relation

File in test/oauthIncludes file in src
key.cccocoatweet / oauth / key.h
- - - - diff --git a/help/html/dir_000019_000000.html b/help/html/dir_000019_000000.html deleted file mode 100644 index 383846b..0000000 --- a/help/html/dir_000019_000000.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api -> build Relation - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-

api → build Relation

File in src/cocoatweet/apiIncludes file in build
model / tweet.cc_deps / json-src / include / nlohmann / json.hpp
- - - - diff --git a/help/html/dir_000019_000020.html b/help/html/dir_000019_000020.html deleted file mode 100644 index 6cbe047..0000000 --- a/help/html/dir_000019_000020.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api -> favorite Relation - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-

api → favorite Relation

File in src/cocoatweet/apiIncludes file in src/cocoatweet/api/favorite
api.hfavorite.h
- - - - diff --git a/help/html/dir_000019_000021.html b/help/html/dir_000019_000021.html deleted file mode 100644 index 72abaf6..0000000 --- a/help/html/dir_000019_000021.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api -> status Relation - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-

api → status Relation

File in src/cocoatweet/apiIncludes file in src/cocoatweet/api/status
api.hstatus.h
- - - - diff --git a/help/html/dir_000019_000025.html b/help/html/dir_000019_000025.html deleted file mode 100644 index 96c9b13..0000000 --- a/help/html/dir_000019_000025.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api -> exception Relation - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-

api → exception Relation

File in src/cocoatweet/apiIncludes file in src/cocoatweet/exception
model / tweet.cctweetNotFoundException.h
- - - - diff --git a/help/html/dir_000019_000026.html b/help/html/dir_000019_000026.html deleted file mode 100644 index 85e53a2..0000000 --- a/help/html/dir_000019_000026.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api -> oauth Relation - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-

api → oauth Relation

File in src/cocoatweet/apiIncludes file in src/cocoatweet/oauth
api.hoauth.h
favorite / favorite.hoauth.h
interface / groupInterface.hoauth.h
interface / httpPost.hoauth.h
status / status.hoauth.h
- - - - diff --git a/help/html/dir_000019_000027.html b/help/html/dir_000019_000027.html deleted file mode 100644 index 708b52c..0000000 --- a/help/html/dir_000019_000027.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api -> util Relation - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-

api → util Relation

File in src/cocoatweet/apiIncludes file in src/cocoatweet/util
interface / httpPost.ccutil.h
- - - - diff --git a/help/html/dir_000020_000022.html b/help/html/dir_000020_000022.html deleted file mode 100644 index 0061ae1..0000000 --- a/help/html/dir_000020_000022.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api/favorite -> interface Relation - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-

favorite → interface Relation

File in src/cocoatweet/api/favoriteIncludes file in src/cocoatweet/api/interface
create.hhttpPost.h
destroy.hhttpPost.h
favorite.hgroupInterface.h
- - - - diff --git a/help/html/dir_000020_000026.html b/help/html/dir_000020_000026.html deleted file mode 100644 index 68f2246..0000000 --- a/help/html/dir_000020_000026.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api/favorite -> oauth Relation - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-

favorite → oauth Relation

File in src/cocoatweet/api/favoriteIncludes file in src/cocoatweet/oauth
favorite.hoauth.h
- - - - diff --git a/help/html/dir_000021_000022.html b/help/html/dir_000021_000022.html deleted file mode 100644 index 6cbe047..0000000 --- a/help/html/dir_000021_000022.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api -> favorite Relation - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-

api → favorite Relation

File in src/cocoatweet/apiIncludes file in src/cocoatweet/api/favorite
api.hfavorite.h
- - - - diff --git a/help/html/dir_000021_000023.html b/help/html/dir_000021_000023.html deleted file mode 100644 index 72abaf6..0000000 --- a/help/html/dir_000021_000023.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api -> status Relation - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-

api → status Relation

File in src/cocoatweet/apiIncludes file in src/cocoatweet/api/status
api.hstatus.h
- - - - diff --git a/help/html/dir_000021_000024.html b/help/html/dir_000021_000024.html deleted file mode 100644 index 9fa8a6b..0000000 --- a/help/html/dir_000021_000024.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api/status -> model Relation - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-

status → model Relation

File in src/cocoatweet/api/statusIncludes file in src/cocoatweet/api/model
destroy.cctweet.h
destroy.htweet.h
status.htweet.h
update.htweet.h
- - - - diff --git a/help/html/dir_000021_000026.html b/help/html/dir_000021_000026.html deleted file mode 100644 index 9117742..0000000 --- a/help/html/dir_000021_000026.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api/status -> oauth Relation - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-

status → oauth Relation

File in src/cocoatweet/api/statusIncludes file in src/cocoatweet/oauth
status.hoauth.h
- - - - diff --git a/help/html/dir_000021_000027.html b/help/html/dir_000021_000027.html deleted file mode 100644 index 96c9b13..0000000 --- a/help/html/dir_000021_000027.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api -> exception Relation - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-

api → exception Relation

File in src/cocoatweet/apiIncludes file in src/cocoatweet/exception
model / tweet.cctweetNotFoundException.h
- - - - diff --git a/help/html/dir_000021_000028.html b/help/html/dir_000021_000028.html deleted file mode 100644 index 85e53a2..0000000 --- a/help/html/dir_000021_000028.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api -> oauth Relation - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-

api → oauth Relation

File in src/cocoatweet/apiIncludes file in src/cocoatweet/oauth
api.hoauth.h
favorite / favorite.hoauth.h
interface / groupInterface.hoauth.h
interface / httpPost.hoauth.h
status / status.hoauth.h
- - - - diff --git a/help/html/dir_000021_000029.html b/help/html/dir_000021_000029.html deleted file mode 100644 index 708b52c..0000000 --- a/help/html/dir_000021_000029.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api -> util Relation - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-

api → util Relation

File in src/cocoatweet/apiIncludes file in src/cocoatweet/util
interface / httpPost.ccutil.h
- - - - diff --git a/help/html/dir_000022_000024.html b/help/html/dir_000022_000024.html deleted file mode 100644 index 0061ae1..0000000 --- a/help/html/dir_000022_000024.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api/favorite -> interface Relation - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-

favorite → interface Relation

File in src/cocoatweet/api/favoriteIncludes file in src/cocoatweet/api/interface
create.hhttpPost.h
destroy.hhttpPost.h
favorite.hgroupInterface.h
- - - - diff --git a/help/html/dir_000022_000026.html b/help/html/dir_000022_000026.html deleted file mode 100644 index 1c445c2..0000000 --- a/help/html/dir_000022_000026.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api/interface -> oauth Relation - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-

interface → oauth Relation

File in src/cocoatweet/api/interfaceIncludes file in src/cocoatweet/oauth
groupInterface.hoauth.h
httpPost.hoauth.h
- - - - diff --git a/help/html/dir_000022_000027.html b/help/html/dir_000022_000027.html deleted file mode 100644 index 4718e34..0000000 --- a/help/html/dir_000022_000027.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api/interface -> util Relation - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-

interface → util Relation

File in src/cocoatweet/api/interfaceIncludes file in src/cocoatweet/util
httpPost.ccutil.h
- - - - diff --git a/help/html/dir_000022_000028.html b/help/html/dir_000022_000028.html deleted file mode 100644 index 68f2246..0000000 --- a/help/html/dir_000022_000028.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api/favorite -> oauth Relation - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-

favorite → oauth Relation

File in src/cocoatweet/api/favoriteIncludes file in src/cocoatweet/oauth
favorite.hoauth.h
- - - - diff --git a/help/html/dir_000023_000024.html b/help/html/dir_000023_000024.html deleted file mode 100644 index b663e89..0000000 --- a/help/html/dir_000023_000024.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api/status -> interface Relation - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-

status → interface Relation

File in src/cocoatweet/api/statusIncludes file in src/cocoatweet/api/interface
destroy.hhttpPost.h
status.hgroupInterface.h
update.hhttpPost.h
- - - - diff --git a/help/html/dir_000023_000026.html b/help/html/dir_000023_000026.html deleted file mode 100644 index 9fa8a6b..0000000 --- a/help/html/dir_000023_000026.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api/status -> model Relation - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-

status → model Relation

File in src/cocoatweet/api/statusIncludes file in src/cocoatweet/api/model
destroy.cctweet.h
destroy.htweet.h
status.htweet.h
update.htweet.h
- - - - diff --git a/help/html/dir_000023_000028.html b/help/html/dir_000023_000028.html deleted file mode 100644 index 9117742..0000000 --- a/help/html/dir_000023_000028.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api/status -> oauth Relation - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-

status → oauth Relation

File in src/cocoatweet/api/statusIncludes file in src/cocoatweet/oauth
status.hoauth.h
- - - - diff --git a/help/html/dir_000024_000000.html b/help/html/dir_000024_000000.html deleted file mode 100644 index 64bd861..0000000 --- a/help/html/dir_000024_000000.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api/model -> build Relation - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-

model → build Relation

File in src/cocoatweet/api/modelIncludes file in build
tweet.cc_deps / json-src / include / nlohmann / json.hpp
- - - - diff --git a/help/html/dir_000024_000025.html b/help/html/dir_000024_000025.html deleted file mode 100644 index 54c5ec8..0000000 --- a/help/html/dir_000024_000025.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api/model -> exception Relation - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-

model → exception Relation

File in src/cocoatweet/api/modelIncludes file in src/cocoatweet/exception
tweet.cctweetNotFoundException.h
- - - - diff --git a/help/html/dir_000024_000028.html b/help/html/dir_000024_000028.html deleted file mode 100644 index 1c445c2..0000000 --- a/help/html/dir_000024_000028.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api/interface -> oauth Relation - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-

interface → oauth Relation

File in src/cocoatweet/api/interfaceIncludes file in src/cocoatweet/oauth
groupInterface.hoauth.h
httpPost.hoauth.h
- - - - diff --git a/help/html/dir_000024_000029.html b/help/html/dir_000024_000029.html deleted file mode 100644 index 4718e34..0000000 --- a/help/html/dir_000024_000029.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api/interface -> util Relation - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-

interface → util Relation

File in src/cocoatweet/api/interfaceIncludes file in src/cocoatweet/util
httpPost.ccutil.h
- - - - diff --git a/help/html/dir_000026_000000.html b/help/html/dir_000026_000000.html deleted file mode 100644 index d223d71..0000000 --- a/help/html/dir_000026_000000.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/oauth -> build Relation - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-

oauth → build Relation

File in src/cocoatweet/oauthIncludes file in build
key.cc_deps / json-src / include / nlohmann / json.hpp
- - - - diff --git a/help/html/dir_000026_000027.html b/help/html/dir_000026_000027.html deleted file mode 100644 index 54c5ec8..0000000 --- a/help/html/dir_000026_000027.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api/model -> exception Relation - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-

model → exception Relation

File in src/cocoatweet/api/modelIncludes file in src/cocoatweet/exception
tweet.cctweetNotFoundException.h
- - - - diff --git a/help/html/dir_000028_000029.html b/help/html/dir_000028_000029.html deleted file mode 100644 index 32fbbf5..0000000 --- a/help/html/dir_000028_000029.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/oauth -> util Relation - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-

oauth → util Relation

File in src/cocoatweet/oauthIncludes file in src/cocoatweet/util
oauth.ccutil.h
- - - - diff --git a/help/html/dir_02eea93d5f6f49bd82ab4001fdffe1e7.html b/help/html/dir_02eea93d5f6f49bd82ab4001fdffe1e7.html deleted file mode 100644 index 6dc0da9..0000000 --- a/help/html/dir_02eea93d5f6f49bd82ab4001fdffe1e7.html +++ /dev/null @@ -1,97 +0,0 @@ - - - - - - - -CocoaTweet: test/oauth Directory Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
oauth Directory Reference
-
-
-
-Directory dependency graph for oauth:
-
-
test/oauth
- - - - - - -
- - - - -

-Files

file  key.cc
 
-
- - - - diff --git a/help/html/dir_02eea93d5f6f49bd82ab4001fdffe1e7_dep.map b/help/html/dir_02eea93d5f6f49bd82ab4001fdffe1e7_dep.map deleted file mode 100644 index 4e13f5f..0000000 --- a/help/html/dir_02eea93d5f6f49bd82ab4001fdffe1e7_dep.map +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/help/html/dir_02eea93d5f6f49bd82ab4001fdffe1e7_dep.md5 b/help/html/dir_02eea93d5f6f49bd82ab4001fdffe1e7_dep.md5 deleted file mode 100644 index 83b9c64..0000000 --- a/help/html/dir_02eea93d5f6f49bd82ab4001fdffe1e7_dep.md5 +++ /dev/null @@ -1 +0,0 @@ -705f35c28f8b5ee9f5398d90b15fd3ba \ No newline at end of file diff --git a/help/html/dir_02eea93d5f6f49bd82ab4001fdffe1e7_dep.png b/help/html/dir_02eea93d5f6f49bd82ab4001fdffe1e7_dep.png deleted file mode 100644 index b486fd0..0000000 Binary files a/help/html/dir_02eea93d5f6f49bd82ab4001fdffe1e7_dep.png and /dev/null differ diff --git a/help/html/dir_06575b8358e13047479eaa591b69dad2.html b/help/html/dir_06575b8358e13047479eaa591b69dad2.html deleted file mode 100644 index 6ca0f12..0000000 --- a/help/html/dir_06575b8358e13047479eaa591b69dad2.html +++ /dev/null @@ -1,147 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api Directory Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
api Directory Reference
-
-
-
-Directory dependency graph for api:
-
-
src/cocoatweet/api
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - -

-Directories

directory  directMessage
 
directory  favorite
 
directory  interface
 
directory  media
 
directory  model
 
directory  status
 
- - - - - -

-Files

file  api.cc
 
file  api.h [code]
 
-
- - - - diff --git a/help/html/dir_06575b8358e13047479eaa591b69dad2_dep.map b/help/html/dir_06575b8358e13047479eaa591b69dad2_dep.map deleted file mode 100644 index 43de50a..0000000 --- a/help/html/dir_06575b8358e13047479eaa591b69dad2_dep.map +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/help/html/dir_06575b8358e13047479eaa591b69dad2_dep.md5 b/help/html/dir_06575b8358e13047479eaa591b69dad2_dep.md5 deleted file mode 100644 index 81c8950..0000000 --- a/help/html/dir_06575b8358e13047479eaa591b69dad2_dep.md5 +++ /dev/null @@ -1 +0,0 @@ -1f1e844e2ae944e5e580492668687292 \ No newline at end of file diff --git a/help/html/dir_06575b8358e13047479eaa591b69dad2_dep.png b/help/html/dir_06575b8358e13047479eaa591b69dad2_dep.png deleted file mode 100644 index 4c59bef..0000000 Binary files a/help/html/dir_06575b8358e13047479eaa591b69dad2_dep.png and /dev/null differ diff --git a/help/html/dir_06bf8d3e2008620d16ac418f1dde3e85.html b/help/html/dir_06bf8d3e2008620d16ac418f1dde3e85.html deleted file mode 100644 index 7d3d606..0000000 --- a/help/html/dir_06bf8d3e2008620d16ac418f1dde3e85.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - -CocoaTweet: build/_deps/json-src Directory Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
json-src Directory Reference
-
-
- - - - -

-Directories

directory  include
 
- - - -

-Files

file  update.py
 
-
- - - - diff --git a/help/html/dir_0b33dbc856f0018626633bfe56654d6c.html b/help/html/dir_0b33dbc856f0018626633bfe56654d6c.html deleted file mode 100644 index 4855d6b..0000000 --- a/help/html/dir_0b33dbc856f0018626633bfe56654d6c.html +++ /dev/null @@ -1,97 +0,0 @@ - - - - - - - -CocoaTweet: test/api/model Directory Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
model Directory Reference
-
-
-
-Directory dependency graph for model:
-
-
test/api/model
- - - - - - -
- - - - -

-Files

file  tweet.cc
 
-
- - - - diff --git a/help/html/dir_0b33dbc856f0018626633bfe56654d6c_dep.map b/help/html/dir_0b33dbc856f0018626633bfe56654d6c_dep.map deleted file mode 100644 index d7f8e57..0000000 --- a/help/html/dir_0b33dbc856f0018626633bfe56654d6c_dep.map +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/help/html/dir_0b33dbc856f0018626633bfe56654d6c_dep.md5 b/help/html/dir_0b33dbc856f0018626633bfe56654d6c_dep.md5 deleted file mode 100644 index 2c4ec33..0000000 --- a/help/html/dir_0b33dbc856f0018626633bfe56654d6c_dep.md5 +++ /dev/null @@ -1 +0,0 @@ -41580356de0da829dfc2af9f29dad32b \ No newline at end of file diff --git a/help/html/dir_0b33dbc856f0018626633bfe56654d6c_dep.png b/help/html/dir_0b33dbc856f0018626633bfe56654d6c_dep.png deleted file mode 100644 index a36cddb..0000000 Binary files a/help/html/dir_0b33dbc856f0018626633bfe56654d6c_dep.png and /dev/null differ diff --git a/help/html/dir_0c442c3451b59b63dfe09a0379a94178.html b/help/html/dir_0c442c3451b59b63dfe09a0379a94178.html deleted file mode 100644 index abb36fc..0000000 --- a/help/html/dir_0c442c3451b59b63dfe09a0379a94178.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - - -CocoaTweet: build/_deps/json-src/include/nlohmann Directory Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
nlohmann Directory Reference
-
-
- - - - - - -

-Files

file  json.hpp [code]
 
file  json_fwd.hpp [code]
 
-
- - - - diff --git a/help/html/dir_0e9bcac464ba29ef322b4b8f7fba04ee.html b/help/html/dir_0e9bcac464ba29ef322b4b8f7fba04ee.html deleted file mode 100644 index b67cf73..0000000 --- a/help/html/dir_0e9bcac464ba29ef322b4b8f7fba04ee.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - - -CocoaTweet: build/_deps/json-subbuild/json-populate-prefix Directory Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
json-populate-prefix Directory Reference
-
-
- - - - - - -

-Directories

directory  src
 
directory  tmp
 
-
- - - - diff --git a/help/html/dir_13e138d54eb8818da29c3992edef070a.html b/help/html/dir_13e138d54eb8818da29c3992edef070a.html deleted file mode 100644 index 86e7b02..0000000 --- a/help/html/dir_13e138d54eb8818da29c3992edef070a.html +++ /dev/null @@ -1,101 +0,0 @@ - - - - - - - -CocoaTweet: test Directory Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
test Directory Reference
-
-
-
-Directory dependency graph for test:
-
-
test
- - - - - - - - -
- - - - - - -

-Directories

directory  api
 
directory  oauth
 
-
- - - - diff --git a/help/html/dir_13e138d54eb8818da29c3992edef070a_dep.map b/help/html/dir_13e138d54eb8818da29c3992edef070a_dep.map deleted file mode 100644 index fb71105..0000000 --- a/help/html/dir_13e138d54eb8818da29c3992edef070a_dep.map +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/help/html/dir_13e138d54eb8818da29c3992edef070a_dep.md5 b/help/html/dir_13e138d54eb8818da29c3992edef070a_dep.md5 deleted file mode 100644 index f893970..0000000 --- a/help/html/dir_13e138d54eb8818da29c3992edef070a_dep.md5 +++ /dev/null @@ -1 +0,0 @@ -a7471888594454e061fc256c756e0c09 \ No newline at end of file diff --git a/help/html/dir_13e138d54eb8818da29c3992edef070a_dep.png b/help/html/dir_13e138d54eb8818da29c3992edef070a_dep.png deleted file mode 100644 index b92eae1..0000000 Binary files a/help/html/dir_13e138d54eb8818da29c3992edef070a_dep.png and /dev/null differ diff --git a/help/html/dir_1a19983f27cd648658d29847c7bbcb19.html b/help/html/dir_1a19983f27cd648658d29847c7bbcb19.html deleted file mode 100644 index 9fd02d0..0000000 --- a/help/html/dir_1a19983f27cd648658d29847c7bbcb19.html +++ /dev/null @@ -1,80 +0,0 @@ - - - - - - - -CocoaTweet: build/_deps/json-subbuild/CMakeFiles/json-populate.dir Directory Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
json-populate.dir Directory Reference
-
-
-
- - - - diff --git a/help/html/dir_23b5b2bc83a8d87415b91ff4fc156479.html b/help/html/dir_23b5b2bc83a8d87415b91ff4fc156479.html deleted file mode 100644 index 3474460..0000000 --- a/help/html/dir_23b5b2bc83a8d87415b91ff4fc156479.html +++ /dev/null @@ -1,113 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api/interface Directory Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
interface Directory Reference
-
-
-
-Directory dependency graph for interface:
-
-
src/cocoatweet/api/interface
- - - - - - - - - - - - -
- - - - - - - - - - - - - - -

-Files

file  groupInterface.h [code]
 
file  httpBase.h [code]
 
file  httpGet.cc
 
file  httpGet.h [code]
 
file  httpPost.cc
 
file  httpPost.h [code]
 
-
- - - - diff --git a/help/html/dir_23b5b2bc83a8d87415b91ff4fc156479_dep.map b/help/html/dir_23b5b2bc83a8d87415b91ff4fc156479_dep.map deleted file mode 100644 index 5562708..0000000 --- a/help/html/dir_23b5b2bc83a8d87415b91ff4fc156479_dep.map +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/help/html/dir_23b5b2bc83a8d87415b91ff4fc156479_dep.md5 b/help/html/dir_23b5b2bc83a8d87415b91ff4fc156479_dep.md5 deleted file mode 100644 index 453f8ec..0000000 --- a/help/html/dir_23b5b2bc83a8d87415b91ff4fc156479_dep.md5 +++ /dev/null @@ -1 +0,0 @@ -64b2bc2f63746dde8a8800e3396e4abc \ No newline at end of file diff --git a/help/html/dir_23b5b2bc83a8d87415b91ff4fc156479_dep.png b/help/html/dir_23b5b2bc83a8d87415b91ff4fc156479_dep.png deleted file mode 100644 index b7f762c..0000000 Binary files a/help/html/dir_23b5b2bc83a8d87415b91ff4fc156479_dep.png and /dev/null differ diff --git a/help/html/dir_289a9db7f5db18fcebe2284c66b05f94.html b/help/html/dir_289a9db7f5db18fcebe2284c66b05f94.html deleted file mode 100644 index b4a9f5a..0000000 --- a/help/html/dir_289a9db7f5db18fcebe2284c66b05f94.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - - -CocoaTweet: build/CMakeFiles/3.16.3 Directory Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
3.16.3 Directory Reference
-
-
- - - - - - -

-Directories

directory  CompilerIdC
 
directory  CompilerIdCXX
 
-
- - - - diff --git a/help/html/dir_2d70b624766e7af9f02777d40df177e4.html b/help/html/dir_2d70b624766e7af9f02777d40df177e4.html deleted file mode 100644 index 37ec938..0000000 --- a/help/html/dir_2d70b624766e7af9f02777d40df177e4.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - - - - -CocoaTweet: build/_deps/json-subbuild/json-populate-prefix/src Directory Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
src Directory Reference
-
-
- - - - -

-Directories

directory  json-populate-stamp
 
-
- - - - diff --git a/help/html/dir_30efafad49404b27c7a8c0189efd1d72.html b/help/html/dir_30efafad49404b27c7a8c0189efd1d72.html deleted file mode 100644 index 7214013..0000000 --- a/help/html/dir_30efafad49404b27c7a8c0189efd1d72.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - - - - -CocoaTweet: third Directory Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
third Directory Reference
-
-
- - - - -

-Directories

directory  nlohmann
 
-
- - - - diff --git a/help/html/dir_3e4011b093e9094a5bbfad1e0d15235b.html b/help/html/dir_3e4011b093e9094a5bbfad1e0d15235b.html deleted file mode 100644 index 2179c10..0000000 --- a/help/html/dir_3e4011b093e9094a5bbfad1e0d15235b.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - - - - -CocoaTweet: build/CMakeFiles/3.16.3/CompilerIdCXX Directory Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
CompilerIdCXX Directory Reference
-
-
- - - - -

-Files

file  CMakeCXXCompilerId.cpp
 
-
- - - - diff --git a/help/html/dir_4c1fc4c0ab0da9ccb6d8740879749b03.html b/help/html/dir_4c1fc4c0ab0da9ccb6d8740879749b03.html deleted file mode 100644 index 5dbe863..0000000 --- a/help/html/dir_4c1fc4c0ab0da9ccb6d8740879749b03.html +++ /dev/null @@ -1,112 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api/favorite Directory Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
favorite Directory Reference
-
-
-
-Directory dependency graph for favorite:
-
-
src/cocoatweet/api/favorite
- - - - - - - - - - - -
- - - - - - - - - - - - - - -

-Files

file  create.cc
 
file  create.h [code]
 
file  destroy.cc
 
file  destroy.h [code]
 
file  favorite.cc
 
file  favorite.h [code]
 
-
- - - - diff --git a/help/html/dir_4c1fc4c0ab0da9ccb6d8740879749b03_dep.map b/help/html/dir_4c1fc4c0ab0da9ccb6d8740879749b03_dep.map deleted file mode 100644 index a7dd389..0000000 --- a/help/html/dir_4c1fc4c0ab0da9ccb6d8740879749b03_dep.map +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/help/html/dir_4c1fc4c0ab0da9ccb6d8740879749b03_dep.md5 b/help/html/dir_4c1fc4c0ab0da9ccb6d8740879749b03_dep.md5 deleted file mode 100644 index 4a61797..0000000 --- a/help/html/dir_4c1fc4c0ab0da9ccb6d8740879749b03_dep.md5 +++ /dev/null @@ -1 +0,0 @@ -cfbe9d2265fafb747fd0f41131b0c88a \ No newline at end of file diff --git a/help/html/dir_4c1fc4c0ab0da9ccb6d8740879749b03_dep.png b/help/html/dir_4c1fc4c0ab0da9ccb6d8740879749b03_dep.png deleted file mode 100644 index 3f105b4..0000000 Binary files a/help/html/dir_4c1fc4c0ab0da9ccb6d8740879749b03_dep.png and /dev/null differ diff --git a/help/html/dir_4fef79e7177ba769987a8da36c892c5f.html b/help/html/dir_4fef79e7177ba769987a8da36c892c5f.html deleted file mode 100644 index 388ac86..0000000 --- a/help/html/dir_4fef79e7177ba769987a8da36c892c5f.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - - -CocoaTweet: build Directory Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
build Directory Reference
-
-
- - - - - - -

-Directories

directory  _deps
 
directory  CMakeFiles
 
-
- - - - diff --git a/help/html/dir_52baaaedca03977d67375a3431bf5277.html b/help/html/dir_52baaaedca03977d67375a3431bf5277.html deleted file mode 100644 index d28bed3..0000000 --- a/help/html/dir_52baaaedca03977d67375a3431bf5277.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - - - - -CocoaTweet: Testing Directory Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
Testing Directory Reference
-
-
- - - - -

-Directories

directory  Temporary
 
-
- - - - diff --git a/help/html/dir_63772b626f2709090f0bdca0f40827b4.html b/help/html/dir_63772b626f2709090f0bdca0f40827b4.html deleted file mode 100644 index a994f6a..0000000 --- a/help/html/dir_63772b626f2709090f0bdca0f40827b4.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - - - - -CocoaTweet: build/CMakeFiles Directory Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
CMakeFiles Directory Reference
-
-
- - - - -

-Directories

directory  3.16.3
 
-
- - - - diff --git a/help/html/dir_64199ab2432e9ffe93825d4d2601561e.html b/help/html/dir_64199ab2432e9ffe93825d4d2601561e.html deleted file mode 100644 index 451a6ea..0000000 --- a/help/html/dir_64199ab2432e9ffe93825d4d2601561e.html +++ /dev/null @@ -1,80 +0,0 @@ - - - - - - - -CocoaTweet: Testing/Temporary Directory Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
Temporary Directory Reference
-
-
-
- - - - diff --git a/help/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html b/help/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html deleted file mode 100644 index 0a9cde3..0000000 --- a/help/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html +++ /dev/null @@ -1,100 +0,0 @@ - - - - - - - -CocoaTweet: src Directory Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
src Directory Reference
-
-
-
-Directory dependency graph for src:
-
-
src
- - - - -
- - - - -

-Directories

directory  cocoatweet
 
- - - -

-Files

file  main.cc
 
-
- - - - diff --git a/help/html/dir_68267d1309a1af8e8297ef4c3efbcdba_dep.map b/help/html/dir_68267d1309a1af8e8297ef4c3efbcdba_dep.map deleted file mode 100644 index 00ad8cd..0000000 --- a/help/html/dir_68267d1309a1af8e8297ef4c3efbcdba_dep.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/help/html/dir_68267d1309a1af8e8297ef4c3efbcdba_dep.md5 b/help/html/dir_68267d1309a1af8e8297ef4c3efbcdba_dep.md5 deleted file mode 100644 index 4210e70..0000000 --- a/help/html/dir_68267d1309a1af8e8297ef4c3efbcdba_dep.md5 +++ /dev/null @@ -1 +0,0 @@ -8ceda9d941caaaa0fb900d92a5e51b23 \ No newline at end of file diff --git a/help/html/dir_68267d1309a1af8e8297ef4c3efbcdba_dep.png b/help/html/dir_68267d1309a1af8e8297ef4c3efbcdba_dep.png deleted file mode 100644 index f0cdf46..0000000 Binary files a/help/html/dir_68267d1309a1af8e8297ef4c3efbcdba_dep.png and /dev/null differ diff --git a/help/html/dir_68d9d37faf938ef4e7c82b587d705a9a.html b/help/html/dir_68d9d37faf938ef4e7c82b587d705a9a.html deleted file mode 100644 index f47e4f8..0000000 --- a/help/html/dir_68d9d37faf938ef4e7c82b587d705a9a.html +++ /dev/null @@ -1,98 +0,0 @@ - - - - - - - -CocoaTweet: test/api Directory Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
api Directory Reference
-
-
-
-Directory dependency graph for api:
-
-
test/api
- - - - - - - -
- - - - -

-Directories

directory  model
 
-
- - - - diff --git a/help/html/dir_68d9d37faf938ef4e7c82b587d705a9a_dep.map b/help/html/dir_68d9d37faf938ef4e7c82b587d705a9a_dep.map deleted file mode 100644 index cdc2db7..0000000 --- a/help/html/dir_68d9d37faf938ef4e7c82b587d705a9a_dep.map +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/help/html/dir_68d9d37faf938ef4e7c82b587d705a9a_dep.md5 b/help/html/dir_68d9d37faf938ef4e7c82b587d705a9a_dep.md5 deleted file mode 100644 index 5ec67fc..0000000 --- a/help/html/dir_68d9d37faf938ef4e7c82b587d705a9a_dep.md5 +++ /dev/null @@ -1 +0,0 @@ -0c63bc50b153cef29061b211b2272611 \ No newline at end of file diff --git a/help/html/dir_68d9d37faf938ef4e7c82b587d705a9a_dep.png b/help/html/dir_68d9d37faf938ef4e7c82b587d705a9a_dep.png deleted file mode 100644 index 6aadfc8..0000000 Binary files a/help/html/dir_68d9d37faf938ef4e7c82b587d705a9a_dep.png and /dev/null differ diff --git a/help/html/dir_79efdb59f6a5ff44918633d20e92653c.html b/help/html/dir_79efdb59f6a5ff44918633d20e92653c.html deleted file mode 100644 index 28e164e..0000000 --- a/help/html/dir_79efdb59f6a5ff44918633d20e92653c.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - - -CocoaTweet: build/_deps/json-subbuild Directory Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
json-subbuild Directory Reference
-
-
- - - - - - -

-Directories

directory  CMakeFiles
 
directory  json-populate-prefix
 
-
- - - - diff --git a/help/html/dir_7ab4773fac486c7995104695845818e6.html b/help/html/dir_7ab4773fac486c7995104695845818e6.html deleted file mode 100644 index bae2188..0000000 --- a/help/html/dir_7ab4773fac486c7995104695845818e6.html +++ /dev/null @@ -1,110 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet Directory Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
cocoatweet Directory Reference
-
-
-
-Directory dependency graph for cocoatweet:
-
-
src/cocoatweet
- - - - - - - - - - - - - -
- - - - - - - - - - -

-Directories

directory  api
 
directory  exception
 
directory  oauth
 
directory  util
 
-
- - - - diff --git a/help/html/dir_7ab4773fac486c7995104695845818e6_dep.map b/help/html/dir_7ab4773fac486c7995104695845818e6_dep.map deleted file mode 100644 index 8b5b5df..0000000 --- a/help/html/dir_7ab4773fac486c7995104695845818e6_dep.map +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/help/html/dir_7ab4773fac486c7995104695845818e6_dep.md5 b/help/html/dir_7ab4773fac486c7995104695845818e6_dep.md5 deleted file mode 100644 index 815565c..0000000 --- a/help/html/dir_7ab4773fac486c7995104695845818e6_dep.md5 +++ /dev/null @@ -1 +0,0 @@ -153427b31c257a9414121e5f7caab9cb \ No newline at end of file diff --git a/help/html/dir_7ab4773fac486c7995104695845818e6_dep.png b/help/html/dir_7ab4773fac486c7995104695845818e6_dep.png deleted file mode 100644 index d616011..0000000 Binary files a/help/html/dir_7ab4773fac486c7995104695845818e6_dep.png and /dev/null differ diff --git a/help/html/dir_7b204e709373ad92a397cb8b8f7260f0.html b/help/html/dir_7b204e709373ad92a397cb8b8f7260f0.html deleted file mode 100644 index b35e099..0000000 --- a/help/html/dir_7b204e709373ad92a397cb8b8f7260f0.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - - - - -CocoaTweet: build/_deps/json-src/include Directory Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
include Directory Reference
-
-
- - - - -

-Directories

directory  nlohmann
 
-
- - - - diff --git a/help/html/dir_83bb4264a967bda825f8e2a6706cdbe3.html b/help/html/dir_83bb4264a967bda825f8e2a6706cdbe3.html deleted file mode 100644 index 6245b48..0000000 --- a/help/html/dir_83bb4264a967bda825f8e2a6706cdbe3.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/exception Directory Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
exception Directory Reference
-
-
- - - - - - - - - - - - - - - - - - - - -

-Files

file  authenticateException.h [code]
 
file  exception.h [code]
 
file  invalidParameterException.h [code]
 
file  rateLimitException.h [code]
 
file  tokenInvalidException.h [code]
 
file  tweetDuplicateException.h [code]
 
file  tweetNotFoundException.h [code]
 
file  tweetTooLongException.h [code]
 
file  unsupportedMediaTypeException.h [code]
 
-
- - - - diff --git a/help/html/dir_8aa1ed3b12087951e6a0c9105a0a98a2.html b/help/html/dir_8aa1ed3b12087951e6a0c9105a0a98a2.html deleted file mode 100644 index 614271a..0000000 --- a/help/html/dir_8aa1ed3b12087951e6a0c9105a0a98a2.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - - - - -CocoaTweet: build/_deps/json-build Directory Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
json-build Directory Reference
-
-
- - - - -

-Files

file  DartConfiguration.tcl
 
-
- - - - diff --git a/help/html/dir_99f78c8e628118007b622946f3ce3340.html b/help/html/dir_99f78c8e628118007b622946f3ce3340.html deleted file mode 100644 index da198c4..0000000 --- a/help/html/dir_99f78c8e628118007b622946f3ce3340.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - - - - -CocoaTweet: build/_deps/json-subbuild/CMakeFiles Directory Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
CMakeFiles Directory Reference
-
-
- - - - -

-Directories

directory  json-populate.dir
 
-
- - - - diff --git a/help/html/dir_9ae0892d9c56e7b9f2ab4a1221d08892.html b/help/html/dir_9ae0892d9c56e7b9f2ab4a1221d08892.html deleted file mode 100644 index 6c151a9..0000000 --- a/help/html/dir_9ae0892d9c56e7b9f2ab4a1221d08892.html +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/oauth Directory Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
oauth Directory Reference
-
-
-
-Directory dependency graph for oauth:
-
-
src/cocoatweet/oauth
- - - - - - - - -
- - - - - - - - - - -

-Files

file  key.cc
 
file  key.h [code]
 
file  oauth.cc
 
file  oauth.h [code]
 
-
- - - - diff --git a/help/html/dir_9ae0892d9c56e7b9f2ab4a1221d08892_dep.map b/help/html/dir_9ae0892d9c56e7b9f2ab4a1221d08892_dep.map deleted file mode 100644 index cff4ddd..0000000 --- a/help/html/dir_9ae0892d9c56e7b9f2ab4a1221d08892_dep.map +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/help/html/dir_9ae0892d9c56e7b9f2ab4a1221d08892_dep.md5 b/help/html/dir_9ae0892d9c56e7b9f2ab4a1221d08892_dep.md5 deleted file mode 100644 index dfdf349..0000000 --- a/help/html/dir_9ae0892d9c56e7b9f2ab4a1221d08892_dep.md5 +++ /dev/null @@ -1 +0,0 @@ -5538ab11bd28c2f5976081087c7af790 \ No newline at end of file diff --git a/help/html/dir_9ae0892d9c56e7b9f2ab4a1221d08892_dep.png b/help/html/dir_9ae0892d9c56e7b9f2ab4a1221d08892_dep.png deleted file mode 100644 index 19937b6..0000000 Binary files a/help/html/dir_9ae0892d9c56e7b9f2ab4a1221d08892_dep.png and /dev/null differ diff --git a/help/html/dir_9cf5991ce8de267a99f538b490a27ef5.html b/help/html/dir_9cf5991ce8de267a99f538b490a27ef5.html deleted file mode 100644 index e20747b..0000000 --- a/help/html/dir_9cf5991ce8de267a99f538b490a27ef5.html +++ /dev/null @@ -1,107 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api/model Directory Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
model Directory Reference
-
-
-
-Directory dependency graph for model:
-
-
src/cocoatweet/api/model
- - - - - - -
- - - - - - - - - - - - - - -

-Files

file  mediaStore.cc
 
file  mediaStore.h [code]
 
file  tweet.cc
 
file  tweet.h [code]
 
file  user.cc
 
file  user.h [code]
 
-
- - - - diff --git a/help/html/dir_9cf5991ce8de267a99f538b490a27ef5_dep.map b/help/html/dir_9cf5991ce8de267a99f538b490a27ef5_dep.map deleted file mode 100644 index 2410c49..0000000 --- a/help/html/dir_9cf5991ce8de267a99f538b490a27ef5_dep.map +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/help/html/dir_9cf5991ce8de267a99f538b490a27ef5_dep.md5 b/help/html/dir_9cf5991ce8de267a99f538b490a27ef5_dep.md5 deleted file mode 100644 index b31b8dd..0000000 --- a/help/html/dir_9cf5991ce8de267a99f538b490a27ef5_dep.md5 +++ /dev/null @@ -1 +0,0 @@ -1ceb76bb184f79dcbc7c1137356897c0 \ No newline at end of file diff --git a/help/html/dir_9cf5991ce8de267a99f538b490a27ef5_dep.png b/help/html/dir_9cf5991ce8de267a99f538b490a27ef5_dep.png deleted file mode 100644 index 190bec3..0000000 Binary files a/help/html/dir_9cf5991ce8de267a99f538b490a27ef5_dep.png and /dev/null differ diff --git a/help/html/dir_a4143d9535409cad0db9157922ee0522.html b/help/html/dir_a4143d9535409cad0db9157922ee0522.html deleted file mode 100644 index 7882f85..0000000 --- a/help/html/dir_a4143d9535409cad0db9157922ee0522.html +++ /dev/null @@ -1,112 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api/directMessage Directory Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
directMessage Directory Reference
-
-
-
-Directory dependency graph for directMessage:
-
-
src/cocoatweet/api/directMessage
- - - - - - - - - - - - - - - -
- - - - - - - - - - -

-Files

file  directMessage.cc
 
file  directMessage.h [code]
 
file  new.cc
 
file  new.h [code]
 
-
- - - - diff --git a/help/html/dir_a4143d9535409cad0db9157922ee0522_dep.map b/help/html/dir_a4143d9535409cad0db9157922ee0522_dep.map deleted file mode 100644 index 168d0a5..0000000 --- a/help/html/dir_a4143d9535409cad0db9157922ee0522_dep.map +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/help/html/dir_a4143d9535409cad0db9157922ee0522_dep.md5 b/help/html/dir_a4143d9535409cad0db9157922ee0522_dep.md5 deleted file mode 100644 index 82f22fa..0000000 --- a/help/html/dir_a4143d9535409cad0db9157922ee0522_dep.md5 +++ /dev/null @@ -1 +0,0 @@ -092cc4d85e662b740cd71ff188576fa0 \ No newline at end of file diff --git a/help/html/dir_a4143d9535409cad0db9157922ee0522_dep.png b/help/html/dir_a4143d9535409cad0db9157922ee0522_dep.png deleted file mode 100644 index ecbc811..0000000 Binary files a/help/html/dir_a4143d9535409cad0db9157922ee0522_dep.png and /dev/null differ diff --git a/help/html/dir_a57a94e38c03835eed49274b75b0176d.html b/help/html/dir_a57a94e38c03835eed49274b75b0176d.html deleted file mode 100644 index 154dca3..0000000 --- a/help/html/dir_a57a94e38c03835eed49274b75b0176d.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - - -CocoaTweet: build/_deps Directory Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
_deps Directory Reference
-
-
- - - - - - - - -

-Directories

directory  json-build
 
directory  json-src
 
directory  json-subbuild
 
-
- - - - diff --git a/help/html/dir_c06befe8754771f97f430fe979ad2856.html b/help/html/dir_c06befe8754771f97f430fe979ad2856.html deleted file mode 100644 index e41bd02..0000000 --- a/help/html/dir_c06befe8754771f97f430fe979ad2856.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - - - - -CocoaTweet: third/nlohmann Directory Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
nlohmann Directory Reference
-
-
- - - - -

-Files

file  json.hpp [code]
 
-
- - - - diff --git a/help/html/dir_c3fa62a8cff70d54181bfe4edcf32bea.html b/help/html/dir_c3fa62a8cff70d54181bfe4edcf32bea.html deleted file mode 100644 index 98c7b9d..0000000 --- a/help/html/dir_c3fa62a8cff70d54181bfe4edcf32bea.html +++ /dev/null @@ -1,80 +0,0 @@ - - - - - - - -CocoaTweet: build/_deps/json-subbuild/json-populate-prefix/src/json-populate-stamp Directory Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
json-populate-stamp Directory Reference
-
-
-
- - - - diff --git a/help/html/dir_ce57668a0aec1228559c5babc6601945.html b/help/html/dir_ce57668a0aec1228559c5babc6601945.html deleted file mode 100644 index 4ae634d..0000000 --- a/help/html/dir_ce57668a0aec1228559c5babc6601945.html +++ /dev/null @@ -1,128 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api/status Directory Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
status Directory Reference
-
-
-
-Directory dependency graph for status:
-
-
src/cocoatweet/api/status
- - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

-Files

file  destroy.cc
 
file  destroy.h [code]
 
file  retweet.cc
 
file  retweet.h [code]
 
file  status.cc
 
file  status.h [code]
 
file  unretweet.cc
 
file  unretweet.h [code]
 
file  update.cc
 
file  update.h [code]
 
file  userTimeline.cc
 
file  userTimeline.h [code]
 
-
- - - - diff --git a/help/html/dir_ce57668a0aec1228559c5babc6601945_dep.map b/help/html/dir_ce57668a0aec1228559c5babc6601945_dep.map deleted file mode 100644 index 5304a11..0000000 --- a/help/html/dir_ce57668a0aec1228559c5babc6601945_dep.map +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/help/html/dir_ce57668a0aec1228559c5babc6601945_dep.md5 b/help/html/dir_ce57668a0aec1228559c5babc6601945_dep.md5 deleted file mode 100644 index 472fd8a..0000000 --- a/help/html/dir_ce57668a0aec1228559c5babc6601945_dep.md5 +++ /dev/null @@ -1 +0,0 @@ -840b7c16da437495304e6d3d47b21949 \ No newline at end of file diff --git a/help/html/dir_ce57668a0aec1228559c5babc6601945_dep.png b/help/html/dir_ce57668a0aec1228559c5babc6601945_dep.png deleted file mode 100644 index 89a0879..0000000 Binary files a/help/html/dir_ce57668a0aec1228559c5babc6601945_dep.png and /dev/null differ diff --git a/help/html/dir_ceaf37d45d7af60067755dfeb40fde64.html b/help/html/dir_ceaf37d45d7af60067755dfeb40fde64.html deleted file mode 100644 index b53c877..0000000 --- a/help/html/dir_ceaf37d45d7af60067755dfeb40fde64.html +++ /dev/null @@ -1,113 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api/media Directory Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
media Directory Reference
-
-
-
-Directory dependency graph for media:
-
-
src/cocoatweet/api/media
- - - - - - - - - - - - - - - - -
- - - - - - - - - - -

-Files

file  media.cc
 
file  media.h [code]
 
file  upload.cc
 
file  upload.h [code]
 
-
- - - - diff --git a/help/html/dir_ceaf37d45d7af60067755dfeb40fde64_dep.map b/help/html/dir_ceaf37d45d7af60067755dfeb40fde64_dep.map deleted file mode 100644 index 11239ff..0000000 --- a/help/html/dir_ceaf37d45d7af60067755dfeb40fde64_dep.map +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/help/html/dir_ceaf37d45d7af60067755dfeb40fde64_dep.md5 b/help/html/dir_ceaf37d45d7af60067755dfeb40fde64_dep.md5 deleted file mode 100644 index d5f2ffd..0000000 --- a/help/html/dir_ceaf37d45d7af60067755dfeb40fde64_dep.md5 +++ /dev/null @@ -1 +0,0 @@ -9ca958cfda0107d1f205632b97f8acdc \ No newline at end of file diff --git a/help/html/dir_ceaf37d45d7af60067755dfeb40fde64_dep.png b/help/html/dir_ceaf37d45d7af60067755dfeb40fde64_dep.png deleted file mode 100644 index 435957e..0000000 Binary files a/help/html/dir_ceaf37d45d7af60067755dfeb40fde64_dep.png and /dev/null differ diff --git a/help/html/dir_e9d2c87952e388da8e570b477721a3fc.html b/help/html/dir_e9d2c87952e388da8e570b477721a3fc.html deleted file mode 100644 index 38e3ff3..0000000 --- a/help/html/dir_e9d2c87952e388da8e570b477721a3fc.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - - - - -CocoaTweet: build/CMakeFiles/3.16.3/CompilerIdC Directory Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
CompilerIdC Directory Reference
-
-
- - - - -

-Files

file  CMakeCCompilerId.c
 
-
- - - - diff --git a/help/html/dir_ef921c9c7afa4ede73f5526ef5f0e87a.html b/help/html/dir_ef921c9c7afa4ede73f5526ef5f0e87a.html deleted file mode 100644 index 8279f19..0000000 --- a/help/html/dir_ef921c9c7afa4ede73f5526ef5f0e87a.html +++ /dev/null @@ -1,80 +0,0 @@ - - - - - - - -CocoaTweet: build/_deps/json-subbuild/json-populate-prefix/tmp Directory Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
tmp Directory Reference
-
-
-
- - - - diff --git a/help/html/dir_f91a90d4f7f2239d1002731883d1939d.html b/help/html/dir_f91a90d4f7f2239d1002731883d1939d.html deleted file mode 100644 index ee1da72..0000000 --- a/help/html/dir_f91a90d4f7f2239d1002731883d1939d.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/util Directory Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
util Directory Reference
-
-
- - - - - - -

-Files

file  util.cc
 
file  util.h [code]
 
-
- - - - diff --git a/help/html/directMessage_8cc.html b/help/html/directMessage_8cc.html deleted file mode 100644 index ffe5452..0000000 --- a/help/html/directMessage_8cc.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api/directMessage/directMessage.cc File Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
directMessage.cc File Reference
-
-
-
-Include dependency graph for directMessage.cc:
-
-
- - - - - - - - - - - - - - - - - - - -
-
- - - - - - - -

-Namespaces

 CocoaTweet
 
 CocoaTweet::API
 
 CocoaTweet::API::DirectMessages
 
-
- - - - diff --git a/help/html/directMessage_8cc__incl.map b/help/html/directMessage_8cc__incl.map deleted file mode 100644 index e533c71..0000000 --- a/help/html/directMessage_8cc__incl.map +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/help/html/directMessage_8cc__incl.md5 b/help/html/directMessage_8cc__incl.md5 deleted file mode 100644 index 4a04f60..0000000 --- a/help/html/directMessage_8cc__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -690cb514aa31badb54049d234b3b56d1 \ No newline at end of file diff --git a/help/html/directMessage_8cc__incl.png b/help/html/directMessage_8cc__incl.png deleted file mode 100644 index 16aac22..0000000 Binary files a/help/html/directMessage_8cc__incl.png and /dev/null differ diff --git a/help/html/directMessage_8h.html b/help/html/directMessage_8h.html deleted file mode 100644 index 8043cf6..0000000 --- a/help/html/directMessage_8h.html +++ /dev/null @@ -1,136 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api/directMessage/directMessage.h File Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
directMessage.h File Reference
-
-
-
#include "cocoatweet/api/interface/groupInterface.h"
-#include "cocoatweet/oauth/oauth.h"
-#include <cocoatweet/api/model/tweet.h>
-#include <vector>
-#include <utility>
-
-Include dependency graph for directMessage.h:
-
-
- - - - - - - - - - - - - -
-
-This graph shows which files directly or indirectly include this file:
-
-
- - - - - - - -
-
-

Go to the source code of this file.

- - - - - -

-Classes

class  CocoaTweet::API::DirectMessages::DirectMessage
 Entory point for statuses/*. More...
 
- - - - - - - -

-Namespaces

 CocoaTweet
 
 CocoaTweet::API
 
 CocoaTweet::API::DirectMessages
 
-
- - - - diff --git a/help/html/directMessage_8h__dep__incl.map b/help/html/directMessage_8h__dep__incl.map deleted file mode 100644 index 6b4453f..0000000 --- a/help/html/directMessage_8h__dep__incl.map +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/help/html/directMessage_8h__dep__incl.md5 b/help/html/directMessage_8h__dep__incl.md5 deleted file mode 100644 index 1e7e8c8..0000000 --- a/help/html/directMessage_8h__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -a02f54ab41da0a9a9bce689123252482 \ No newline at end of file diff --git a/help/html/directMessage_8h__dep__incl.png b/help/html/directMessage_8h__dep__incl.png deleted file mode 100644 index f038913..0000000 Binary files a/help/html/directMessage_8h__dep__incl.png and /dev/null differ diff --git a/help/html/directMessage_8h__incl.map b/help/html/directMessage_8h__incl.map deleted file mode 100644 index c35e90c..0000000 --- a/help/html/directMessage_8h__incl.map +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/help/html/directMessage_8h__incl.md5 b/help/html/directMessage_8h__incl.md5 deleted file mode 100644 index 8c41c0b..0000000 --- a/help/html/directMessage_8h__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -c0a03d4554206803527adf7628daa125 \ No newline at end of file diff --git a/help/html/directMessage_8h__incl.png b/help/html/directMessage_8h__incl.png deleted file mode 100644 index 2017e1d..0000000 Binary files a/help/html/directMessage_8h__incl.png and /dev/null differ diff --git a/help/html/directMessage_8h_source.html b/help/html/directMessage_8h_source.html deleted file mode 100644 index cebdbce..0000000 --- a/help/html/directMessage_8h_source.html +++ /dev/null @@ -1,112 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api/directMessage/directMessage.h Source File - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
directMessage.h
-
-
-Go to the documentation of this file.
1 #ifndef COCOATWEET_API_DIRECTMESSAGE_DIRECTMESSAGE_H_
-
2 #define COCOATWEET_API_DIRECTMESSAGE_DIRECTMESSAGE_H_
-
3 
- - - -
7 #include <vector>
-
8 #include <utility>
-
9 
- -
11 
-
13 class DirectMessage : public groupInterface {
-
14 public:
-
15  DirectMessage() = default;
-
16 
-
19  DirectMessage(std::shared_ptr<CocoaTweet::OAuth::OAuth1> _oauth);
-
20 
-
21  void messageCreate(const std::string& _recipient, const std::string& _message);
-
22 
-
23 private:
-
24 };
-
25 } // namespace CocoaTweet::API::DirectMessages
-
26 
-
27 #endif
-
-
-
Definition: directMessage.cc:4
-
Definition: groupInterface.h:8
-
-
DirectMessage()=default
-
Entory point for statuses/*.
Definition: directMessage.h:13
-
void messageCreate(const std::string &_recipient, const std::string &_message)
Definition: directMessage.cc:9
-
- - - - diff --git a/help/html/doc.png b/help/html/doc.png deleted file mode 100644 index 17edabf..0000000 Binary files a/help/html/doc.png and /dev/null differ diff --git a/help/html/doxygen.css b/help/html/doxygen.css deleted file mode 100644 index 73ecbb2..0000000 --- a/help/html/doxygen.css +++ /dev/null @@ -1,1771 +0,0 @@ -/* The standard CSS for doxygen 1.8.17 */ - -body, table, div, p, dl { - font: 400 14px/22px Roboto,sans-serif; -} - -p.reference, p.definition { - font: 400 14px/22px Roboto,sans-serif; -} - -/* @group Heading Levels */ - -h1.groupheader { - font-size: 150%; -} - -.title { - font: 400 14px/28px Roboto,sans-serif; - font-size: 150%; - font-weight: bold; - margin: 10px 2px; -} - -h2.groupheader { - border-bottom: 1px solid #879ECB; - color: #354C7B; - font-size: 150%; - font-weight: normal; - margin-top: 1.75em; - padding-top: 8px; - padding-bottom: 4px; - width: 100%; -} - -h3.groupheader { - font-size: 100%; -} - -h1, h2, h3, h4, h5, h6 { - -webkit-transition: text-shadow 0.5s linear; - -moz-transition: text-shadow 0.5s linear; - -ms-transition: text-shadow 0.5s linear; - -o-transition: text-shadow 0.5s linear; - transition: text-shadow 0.5s linear; - margin-right: 15px; -} - -h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { - text-shadow: 0 0 15px cyan; -} - -dt { - font-weight: bold; -} - -ul.multicol { - -moz-column-gap: 1em; - -webkit-column-gap: 1em; - column-gap: 1em; - -moz-column-count: 3; - -webkit-column-count: 3; - column-count: 3; -} - -p.startli, p.startdd { - margin-top: 2px; -} - -th p.starttd, p.intertd, p.endtd { - font-size: 100%; - font-weight: 700; -} - -p.starttd { - margin-top: 0px; -} - -p.endli { - margin-bottom: 0px; -} - -p.enddd { - margin-bottom: 4px; -} - -p.endtd { - margin-bottom: 2px; -} - -p.interli { -} - -p.interdd { -} - -p.intertd { -} - -/* @end */ - -caption { - font-weight: bold; -} - -span.legend { - font-size: 70%; - text-align: center; -} - -h3.version { - font-size: 90%; - text-align: center; -} - -div.qindex, div.navtab{ - background-color: #EBEFF6; - border: 1px solid #A3B4D7; - text-align: center; -} - -div.qindex, div.navpath { - width: 100%; - line-height: 140%; -} - -div.navtab { - margin-right: 15px; -} - -/* @group Link Styling */ - -a { - color: #3D578C; - font-weight: normal; - text-decoration: none; -} - -.contents a:visited { - color: #4665A2; -} - -a:hover { - text-decoration: underline; -} - -a.qindex { - font-weight: bold; -} - -a.qindexHL { - font-weight: bold; - background-color: #9CAFD4; - color: #FFFFFF; - border: 1px double #869DCA; -} - -.contents a.qindexHL:visited { - color: #FFFFFF; -} - -a.el { - font-weight: bold; -} - -a.elRef { -} - -a.code, a.code:visited, a.line, a.line:visited { - color: #4665A2; -} - -a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { - color: #4665A2; -} - -/* @end */ - -dl.el { - margin-left: -1cm; -} - -ul { - overflow: hidden; /*Fixed: list item bullets overlap floating elements*/ -} - -#side-nav ul { - overflow: visible; /* reset ul rule for scroll bar in GENERATE_TREEVIEW window */ -} - -#main-nav ul { - overflow: visible; /* reset ul rule for the navigation bar drop down lists */ -} - -.fragment { - text-align: left; - direction: ltr; - overflow-x: auto; /*Fixed: fragment lines overlap floating elements*/ - overflow-y: hidden; -} - -pre.fragment { - border: 1px solid #C4CFE5; - background-color: #FBFCFD; - padding: 4px 6px; - margin: 4px 8px 4px 2px; - overflow: auto; - word-wrap: break-word; - font-size: 9pt; - line-height: 125%; - font-family: monospace, fixed; - font-size: 105%; -} - -div.fragment { - padding: 0 0 1px 0; /*Fixed: last line underline overlap border*/ - margin: 4px 8px 4px 2px; - background-color: #FBFCFD; - border: 1px solid #C4CFE5; -} - -div.line { - font-family: monospace, fixed; - font-size: 13px; - min-height: 13px; - line-height: 1.0; - text-wrap: unrestricted; - white-space: -moz-pre-wrap; /* Moz */ - white-space: -pre-wrap; /* Opera 4-6 */ - white-space: -o-pre-wrap; /* Opera 7 */ - white-space: pre-wrap; /* CSS3 */ - word-wrap: break-word; /* IE 5.5+ */ - text-indent: -53px; - padding-left: 53px; - padding-bottom: 0px; - margin: 0px; - -webkit-transition-property: background-color, box-shadow; - -webkit-transition-duration: 0.5s; - -moz-transition-property: background-color, box-shadow; - -moz-transition-duration: 0.5s; - -ms-transition-property: background-color, box-shadow; - -ms-transition-duration: 0.5s; - -o-transition-property: background-color, box-shadow; - -o-transition-duration: 0.5s; - transition-property: background-color, box-shadow; - transition-duration: 0.5s; -} - -div.line:after { - content:"\000A"; - white-space: pre; -} - -div.line.glow { - background-color: cyan; - box-shadow: 0 0 10px cyan; -} - - -span.lineno { - padding-right: 4px; - text-align: right; - border-right: 2px solid #0F0; - background-color: #E8E8E8; - white-space: pre; -} -span.lineno a { - background-color: #D8D8D8; -} - -span.lineno a:hover { - background-color: #C8C8C8; -} - -.lineno { - -webkit-touch-callout: none; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -div.ah, span.ah { - background-color: black; - font-weight: bold; - color: #FFFFFF; - margin-bottom: 3px; - margin-top: 3px; - padding: 0.2em; - border: solid thin #333; - border-radius: 0.5em; - -webkit-border-radius: .5em; - -moz-border-radius: .5em; - box-shadow: 2px 2px 3px #999; - -webkit-box-shadow: 2px 2px 3px #999; - -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; - background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); - background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000 110%); -} - -div.classindex ul { - list-style: none; - padding-left: 0; -} - -div.classindex span.ai { - display: inline-block; -} - -div.groupHeader { - margin-left: 16px; - margin-top: 12px; - font-weight: bold; -} - -div.groupText { - margin-left: 16px; - font-style: italic; -} - -body { - background-color: white; - color: black; - margin: 0; -} - -div.contents { - margin-top: 10px; - margin-left: 12px; - margin-right: 8px; -} - -td.indexkey { - background-color: #EBEFF6; - font-weight: bold; - border: 1px solid #C4CFE5; - margin: 2px 0px 2px 0; - padding: 2px 10px; - white-space: nowrap; - vertical-align: top; -} - -td.indexvalue { - background-color: #EBEFF6; - border: 1px solid #C4CFE5; - padding: 2px 10px; - margin: 2px 0px; -} - -tr.memlist { - background-color: #EEF1F7; -} - -p.formulaDsp { - text-align: center; -} - -img.formulaDsp { - -} - -img.formulaInl, img.inline { - vertical-align: middle; -} - -div.center { - text-align: center; - margin-top: 0px; - margin-bottom: 0px; - padding: 0px; -} - -div.center img { - border: 0px; -} - -address.footer { - text-align: right; - padding-right: 12px; -} - -img.footer { - border: 0px; - vertical-align: middle; -} - -/* @group Code Colorization */ - -span.keyword { - color: #008000 -} - -span.keywordtype { - color: #604020 -} - -span.keywordflow { - color: #e08000 -} - -span.comment { - color: #800000 -} - -span.preprocessor { - color: #806020 -} - -span.stringliteral { - color: #002080 -} - -span.charliteral { - color: #008080 -} - -span.vhdldigit { - color: #ff00ff -} - -span.vhdlchar { - color: #000000 -} - -span.vhdlkeyword { - color: #700070 -} - -span.vhdllogic { - color: #ff0000 -} - -blockquote { - background-color: #F7F8FB; - border-left: 2px solid #9CAFD4; - margin: 0 24px 0 4px; - padding: 0 12px 0 16px; -} - -blockquote.DocNodeRTL { - border-left: 0; - border-right: 2px solid #9CAFD4; - margin: 0 4px 0 24px; - padding: 0 16px 0 12px; -} - -/* @end */ - -/* -.search { - color: #003399; - font-weight: bold; -} - -form.search { - margin-bottom: 0px; - margin-top: 0px; -} - -input.search { - font-size: 75%; - color: #000080; - font-weight: normal; - background-color: #e8eef2; -} -*/ - -td.tiny { - font-size: 75%; -} - -.dirtab { - padding: 4px; - border-collapse: collapse; - border: 1px solid #A3B4D7; -} - -th.dirtab { - background: #EBEFF6; - font-weight: bold; -} - -hr { - height: 0px; - border: none; - border-top: 1px solid #4A6AAA; -} - -hr.footer { - height: 1px; -} - -/* @group Member Descriptions */ - -table.memberdecls { - border-spacing: 0px; - padding: 0px; -} - -.memberdecls td, .fieldtable tr { - -webkit-transition-property: background-color, box-shadow; - -webkit-transition-duration: 0.5s; - -moz-transition-property: background-color, box-shadow; - -moz-transition-duration: 0.5s; - -ms-transition-property: background-color, box-shadow; - -ms-transition-duration: 0.5s; - -o-transition-property: background-color, box-shadow; - -o-transition-duration: 0.5s; - transition-property: background-color, box-shadow; - transition-duration: 0.5s; -} - -.memberdecls td.glow, .fieldtable tr.glow { - background-color: cyan; - box-shadow: 0 0 15px cyan; -} - -.mdescLeft, .mdescRight, -.memItemLeft, .memItemRight, -.memTemplItemLeft, .memTemplItemRight, .memTemplParams { - background-color: #F9FAFC; - border: none; - margin: 4px; - padding: 1px 0 0 8px; -} - -.mdescLeft, .mdescRight { - padding: 0px 8px 4px 8px; - color: #555; -} - -.memSeparator { - border-bottom: 1px solid #DEE4F0; - line-height: 1px; - margin: 0px; - padding: 0px; -} - -.memItemLeft, .memTemplItemLeft { - white-space: nowrap; -} - -.memItemRight, .memTemplItemRight { - width: 100%; -} - -.memTemplParams { - color: #4665A2; - white-space: nowrap; - font-size: 80%; -} - -/* @end */ - -/* @group Member Details */ - -/* Styles for detailed member documentation */ - -.memtitle { - padding: 8px; - border-top: 1px solid #A8B8D9; - border-left: 1px solid #A8B8D9; - border-right: 1px solid #A8B8D9; - border-top-right-radius: 4px; - border-top-left-radius: 4px; - margin-bottom: -1px; - background-image: url('nav_f.png'); - background-repeat: repeat-x; - background-color: #E2E8F2; - line-height: 1.25; - font-weight: 300; - float:left; -} - -.permalink -{ - font-size: 65%; - display: inline-block; - vertical-align: middle; -} - -.memtemplate { - font-size: 80%; - color: #4665A2; - font-weight: normal; - margin-left: 9px; -} - -.memnav { - background-color: #EBEFF6; - border: 1px solid #A3B4D7; - text-align: center; - margin: 2px; - margin-right: 15px; - padding: 2px; -} - -.mempage { - width: 100%; -} - -.memitem { - padding: 0; - margin-bottom: 10px; - margin-right: 5px; - -webkit-transition: box-shadow 0.5s linear; - -moz-transition: box-shadow 0.5s linear; - -ms-transition: box-shadow 0.5s linear; - -o-transition: box-shadow 0.5s linear; - transition: box-shadow 0.5s linear; - display: table !important; - width: 100%; -} - -.memitem.glow { - box-shadow: 0 0 15px cyan; -} - -.memname { - font-weight: 400; - margin-left: 6px; -} - -.memname td { - vertical-align: bottom; -} - -.memproto, dl.reflist dt { - border-top: 1px solid #A8B8D9; - border-left: 1px solid #A8B8D9; - border-right: 1px solid #A8B8D9; - padding: 6px 0px 6px 0px; - color: #253555; - font-weight: bold; - text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); - background-color: #DFE5F1; - /* opera specific markup */ - box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); - border-top-right-radius: 4px; - /* firefox specific markup */ - -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; - -moz-border-radius-topright: 4px; - /* webkit specific markup */ - -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); - -webkit-border-top-right-radius: 4px; - -} - -.overload { - font-family: "courier new",courier,monospace; - font-size: 65%; -} - -.memdoc, dl.reflist dd { - border-bottom: 1px solid #A8B8D9; - border-left: 1px solid #A8B8D9; - border-right: 1px solid #A8B8D9; - padding: 6px 10px 2px 10px; - background-color: #FBFCFD; - border-top-width: 0; - background-image:url('nav_g.png'); - background-repeat:repeat-x; - background-color: #FFFFFF; - /* opera specific markup */ - border-bottom-left-radius: 4px; - border-bottom-right-radius: 4px; - box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); - /* firefox specific markup */ - -moz-border-radius-bottomleft: 4px; - -moz-border-radius-bottomright: 4px; - -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; - /* webkit specific markup */ - -webkit-border-bottom-left-radius: 4px; - -webkit-border-bottom-right-radius: 4px; - -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); -} - -dl.reflist dt { - padding: 5px; -} - -dl.reflist dd { - margin: 0px 0px 10px 0px; - padding: 5px; -} - -.paramkey { - text-align: right; -} - -.paramtype { - white-space: nowrap; -} - -.paramname { - color: #602020; - white-space: nowrap; -} -.paramname em { - font-style: normal; -} -.paramname code { - line-height: 14px; -} - -.params, .retval, .exception, .tparams { - margin-left: 0px; - padding-left: 0px; -} - -.params .paramname, .retval .paramname, .tparams .paramname, .exception .paramname { - font-weight: bold; - vertical-align: top; -} - -.params .paramtype, .tparams .paramtype { - font-style: italic; - vertical-align: top; -} - -.params .paramdir, .tparams .paramdir { - font-family: "courier new",courier,monospace; - vertical-align: top; -} - -table.mlabels { - border-spacing: 0px; -} - -td.mlabels-left { - width: 100%; - padding: 0px; -} - -td.mlabels-right { - vertical-align: bottom; - padding: 0px; - white-space: nowrap; -} - -span.mlabels { - margin-left: 8px; -} - -span.mlabel { - background-color: #728DC1; - border-top:1px solid #5373B4; - border-left:1px solid #5373B4; - border-right:1px solid #C4CFE5; - border-bottom:1px solid #C4CFE5; - text-shadow: none; - color: white; - margin-right: 4px; - padding: 2px 3px; - border-radius: 3px; - font-size: 7pt; - white-space: nowrap; - vertical-align: middle; -} - - - -/* @end */ - -/* these are for tree view inside a (index) page */ - -div.directory { - margin: 10px 0px; - border-top: 1px solid #9CAFD4; - border-bottom: 1px solid #9CAFD4; - width: 100%; -} - -.directory table { - border-collapse:collapse; -} - -.directory td { - margin: 0px; - padding: 0px; - vertical-align: top; -} - -.directory td.entry { - white-space: nowrap; - padding-right: 6px; - padding-top: 3px; -} - -.directory td.entry a { - outline:none; -} - -.directory td.entry a img { - border: none; -} - -.directory td.desc { - width: 100%; - padding-left: 6px; - padding-right: 6px; - padding-top: 3px; - border-left: 1px solid rgba(0,0,0,0.05); -} - -.directory tr.even { - padding-left: 6px; - background-color: #F7F8FB; -} - -.directory img { - vertical-align: -30%; -} - -.directory .levels { - white-space: nowrap; - width: 100%; - text-align: right; - font-size: 9pt; -} - -.directory .levels span { - cursor: pointer; - padding-left: 2px; - padding-right: 2px; - color: #3D578C; -} - -.arrow { - color: #9CAFD4; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - cursor: pointer; - font-size: 80%; - display: inline-block; - width: 16px; - height: 22px; -} - -.icon { - font-family: Arial, Helvetica; - font-weight: bold; - font-size: 12px; - height: 14px; - width: 16px; - display: inline-block; - background-color: #728DC1; - color: white; - text-align: center; - border-radius: 4px; - margin-left: 2px; - margin-right: 2px; -} - -.icona { - width: 24px; - height: 22px; - display: inline-block; -} - -.iconfopen { - width: 24px; - height: 18px; - margin-bottom: 4px; - background-image:url('folderopen.png'); - background-position: 0px -4px; - background-repeat: repeat-y; - vertical-align:top; - display: inline-block; -} - -.iconfclosed { - width: 24px; - height: 18px; - margin-bottom: 4px; - background-image:url('folderclosed.png'); - background-position: 0px -4px; - background-repeat: repeat-y; - vertical-align:top; - display: inline-block; -} - -.icondoc { - width: 24px; - height: 18px; - margin-bottom: 4px; - background-image:url('doc.png'); - background-position: 0px -4px; - background-repeat: repeat-y; - vertical-align:top; - display: inline-block; -} - -table.directory { - font: 400 14px Roboto,sans-serif; -} - -/* @end */ - -div.dynheader { - margin-top: 8px; - -webkit-touch-callout: none; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -address { - font-style: normal; - color: #2A3D61; -} - -table.doxtable caption { - caption-side: top; -} - -table.doxtable { - border-collapse:collapse; - margin-top: 4px; - margin-bottom: 4px; -} - -table.doxtable td, table.doxtable th { - border: 1px solid #2D4068; - padding: 3px 7px 2px; -} - -table.doxtable th { - background-color: #374F7F; - color: #FFFFFF; - font-size: 110%; - padding-bottom: 4px; - padding-top: 5px; -} - -table.fieldtable { - /*width: 100%;*/ - margin-bottom: 10px; - border: 1px solid #A8B8D9; - border-spacing: 0px; - -moz-border-radius: 4px; - -webkit-border-radius: 4px; - border-radius: 4px; - -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; - -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); - box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); -} - -.fieldtable td, .fieldtable th { - padding: 3px 7px 2px; -} - -.fieldtable td.fieldtype, .fieldtable td.fieldname { - white-space: nowrap; - border-right: 1px solid #A8B8D9; - border-bottom: 1px solid #A8B8D9; - vertical-align: top; -} - -.fieldtable td.fieldname { - padding-top: 3px; -} - -.fieldtable td.fielddoc { - border-bottom: 1px solid #A8B8D9; - /*width: 100%;*/ -} - -.fieldtable td.fielddoc p:first-child { - margin-top: 0px; -} - -.fieldtable td.fielddoc p:last-child { - margin-bottom: 2px; -} - -.fieldtable tr:last-child td { - border-bottom: none; -} - -.fieldtable th { - background-image:url('nav_f.png'); - background-repeat:repeat-x; - background-color: #E2E8F2; - font-size: 90%; - color: #253555; - padding-bottom: 4px; - padding-top: 5px; - text-align:left; - font-weight: 400; - -moz-border-radius-topleft: 4px; - -moz-border-radius-topright: 4px; - -webkit-border-top-left-radius: 4px; - -webkit-border-top-right-radius: 4px; - border-top-left-radius: 4px; - border-top-right-radius: 4px; - border-bottom: 1px solid #A8B8D9; -} - - -.tabsearch { - top: 0px; - left: 10px; - height: 36px; - background-image: url('tab_b.png'); - z-index: 101; - overflow: hidden; - font-size: 13px; -} - -.navpath ul -{ - font-size: 11px; - background-image:url('tab_b.png'); - background-repeat:repeat-x; - background-position: 0 -5px; - height:30px; - line-height:30px; - color:#8AA0CC; - border:solid 1px #C2CDE4; - overflow:hidden; - margin:0px; - padding:0px; -} - -.navpath li -{ - list-style-type:none; - float:left; - padding-left:10px; - padding-right:15px; - background-image:url('bc_s.png'); - background-repeat:no-repeat; - background-position:right; - color:#364D7C; -} - -.navpath li.navelem a -{ - height:32px; - display:block; - text-decoration: none; - outline: none; - color: #283A5D; - font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; - text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); - text-decoration: none; -} - -.navpath li.navelem a:hover -{ - color:#6884BD; -} - -.navpath li.footer -{ - list-style-type:none; - float:right; - padding-left:10px; - padding-right:15px; - background-image:none; - background-repeat:no-repeat; - background-position:right; - color:#364D7C; - font-size: 8pt; -} - - -div.summary -{ - float: right; - font-size: 8pt; - padding-right: 5px; - width: 50%; - text-align: right; -} - -div.summary a -{ - white-space: nowrap; -} - -table.classindex -{ - margin: 10px; - white-space: nowrap; - margin-left: 3%; - margin-right: 3%; - width: 94%; - border: 0; - border-spacing: 0; - padding: 0; -} - -div.ingroups -{ - font-size: 8pt; - width: 50%; - text-align: left; -} - -div.ingroups a -{ - white-space: nowrap; -} - -div.header -{ - background-image:url('nav_h.png'); - background-repeat:repeat-x; - background-color: #F9FAFC; - margin: 0px; - border-bottom: 1px solid #C4CFE5; -} - -div.headertitle -{ - padding: 5px 5px 5px 10px; -} - -.PageDocRTL-title div.headertitle { - text-align: right; - direction: rtl; -} - -dl { - padding: 0 0 0 0; -} - -/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug, dl.examples */ -dl.section { - margin-left: 0px; - padding-left: 0px; -} - -dl.section.DocNodeRTL { - margin-right: 0px; - padding-right: 0px; -} - -dl.note { - margin-left: -7px; - padding-left: 3px; - border-left: 4px solid; - border-color: #D0C000; -} - -dl.note.DocNodeRTL { - margin-left: 0; - padding-left: 0; - border-left: 0; - margin-right: -7px; - padding-right: 3px; - border-right: 4px solid; - border-color: #D0C000; -} - -dl.warning, dl.attention { - margin-left: -7px; - padding-left: 3px; - border-left: 4px solid; - border-color: #FF0000; -} - -dl.warning.DocNodeRTL, dl.attention.DocNodeRTL { - margin-left: 0; - padding-left: 0; - border-left: 0; - margin-right: -7px; - padding-right: 3px; - border-right: 4px solid; - border-color: #FF0000; -} - -dl.pre, dl.post, dl.invariant { - margin-left: -7px; - padding-left: 3px; - border-left: 4px solid; - border-color: #00D000; -} - -dl.pre.DocNodeRTL, dl.post.DocNodeRTL, dl.invariant.DocNodeRTL { - margin-left: 0; - padding-left: 0; - border-left: 0; - margin-right: -7px; - padding-right: 3px; - border-right: 4px solid; - border-color: #00D000; -} - -dl.deprecated { - margin-left: -7px; - padding-left: 3px; - border-left: 4px solid; - border-color: #505050; -} - -dl.deprecated.DocNodeRTL { - margin-left: 0; - padding-left: 0; - border-left: 0; - margin-right: -7px; - padding-right: 3px; - border-right: 4px solid; - border-color: #505050; -} - -dl.todo { - margin-left: -7px; - padding-left: 3px; - border-left: 4px solid; - border-color: #00C0E0; -} - -dl.todo.DocNodeRTL { - margin-left: 0; - padding-left: 0; - border-left: 0; - margin-right: -7px; - padding-right: 3px; - border-right: 4px solid; - border-color: #00C0E0; -} - -dl.test { - margin-left: -7px; - padding-left: 3px; - border-left: 4px solid; - border-color: #3030E0; -} - -dl.test.DocNodeRTL { - margin-left: 0; - padding-left: 0; - border-left: 0; - margin-right: -7px; - padding-right: 3px; - border-right: 4px solid; - border-color: #3030E0; -} - -dl.bug { - margin-left: -7px; - padding-left: 3px; - border-left: 4px solid; - border-color: #C08050; -} - -dl.bug.DocNodeRTL { - margin-left: 0; - padding-left: 0; - border-left: 0; - margin-right: -7px; - padding-right: 3px; - border-right: 4px solid; - border-color: #C08050; -} - -dl.section dd { - margin-bottom: 6px; -} - - -#projectlogo -{ - text-align: center; - vertical-align: bottom; - border-collapse: separate; -} - -#projectlogo img -{ - border: 0px none; -} - -#projectalign -{ - vertical-align: middle; -} - -#projectname -{ - font: 300% Tahoma, Arial,sans-serif; - margin: 0px; - padding: 2px 0px; -} - -#projectbrief -{ - font: 120% Tahoma, Arial,sans-serif; - margin: 0px; - padding: 0px; -} - -#projectnumber -{ - font: 50% Tahoma, Arial,sans-serif; - margin: 0px; - padding: 0px; -} - -#titlearea -{ - padding: 0px; - margin: 0px; - width: 100%; - border-bottom: 1px solid #5373B4; -} - -.image -{ - text-align: center; -} - -.dotgraph -{ - text-align: center; -} - -.mscgraph -{ - text-align: center; -} - -.plantumlgraph -{ - text-align: center; -} - -.diagraph -{ - text-align: center; -} - -.caption -{ - font-weight: bold; -} - -div.zoom -{ - border: 1px solid #90A5CE; -} - -dl.citelist { - margin-bottom:50px; -} - -dl.citelist dt { - color:#334975; - float:left; - font-weight:bold; - margin-right:10px; - padding:5px; -} - -dl.citelist dd { - margin:2px 0; - padding:5px 0; -} - -div.toc { - padding: 14px 25px; - background-color: #F4F6FA; - border: 1px solid #D8DFEE; - border-radius: 7px 7px 7px 7px; - float: right; - height: auto; - margin: 0 8px 10px 10px; - width: 200px; -} - -.PageDocRTL-title div.toc { - float: left !important; - text-align: right; -} - -div.toc li { - background: url("bdwn.png") no-repeat scroll 0 5px transparent; - font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif; - margin-top: 5px; - padding-left: 10px; - padding-top: 2px; -} - -.PageDocRTL-title div.toc li { - background-position-x: right !important; - padding-left: 0 !important; - padding-right: 10px; -} - -div.toc h3 { - font: bold 12px/1.2 Arial,FreeSans,sans-serif; - color: #4665A2; - border-bottom: 0 none; - margin: 0; -} - -div.toc ul { - list-style: none outside none; - border: medium none; - padding: 0px; -} - -div.toc li.level1 { - margin-left: 0px; -} - -div.toc li.level2 { - margin-left: 15px; -} - -div.toc li.level3 { - margin-left: 30px; -} - -div.toc li.level4 { - margin-left: 45px; -} - -.PageDocRTL-title div.toc li.level1 { - margin-left: 0 !important; - margin-right: 0; -} - -.PageDocRTL-title div.toc li.level2 { - margin-left: 0 !important; - margin-right: 15px; -} - -.PageDocRTL-title div.toc li.level3 { - margin-left: 0 !important; - margin-right: 30px; -} - -.PageDocRTL-title div.toc li.level4 { - margin-left: 0 !important; - margin-right: 45px; -} - -.inherit_header { - font-weight: bold; - color: gray; - cursor: pointer; - -webkit-touch-callout: none; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -.inherit_header td { - padding: 6px 0px 2px 5px; -} - -.inherit { - display: none; -} - -tr.heading h2 { - margin-top: 12px; - margin-bottom: 4px; -} - -/* tooltip related style info */ - -.ttc { - position: absolute; - display: none; -} - -#powerTip { - cursor: default; - white-space: nowrap; - background-color: white; - border: 1px solid gray; - border-radius: 4px 4px 4px 4px; - box-shadow: 1px 1px 7px gray; - display: none; - font-size: smaller; - max-width: 80%; - opacity: 0.9; - padding: 1ex 1em 1em; - position: absolute; - z-index: 2147483647; -} - -#powerTip div.ttdoc { - color: grey; - font-style: italic; -} - -#powerTip div.ttname a { - font-weight: bold; -} - -#powerTip div.ttname { - font-weight: bold; -} - -#powerTip div.ttdeci { - color: #006318; -} - -#powerTip div { - margin: 0px; - padding: 0px; - font: 12px/16px Roboto,sans-serif; -} - -#powerTip:before, #powerTip:after { - content: ""; - position: absolute; - margin: 0px; -} - -#powerTip.n:after, #powerTip.n:before, -#powerTip.s:after, #powerTip.s:before, -#powerTip.w:after, #powerTip.w:before, -#powerTip.e:after, #powerTip.e:before, -#powerTip.ne:after, #powerTip.ne:before, -#powerTip.se:after, #powerTip.se:before, -#powerTip.nw:after, #powerTip.nw:before, -#powerTip.sw:after, #powerTip.sw:before { - border: solid transparent; - content: " "; - height: 0; - width: 0; - position: absolute; -} - -#powerTip.n:after, #powerTip.s:after, -#powerTip.w:after, #powerTip.e:after, -#powerTip.nw:after, #powerTip.ne:after, -#powerTip.sw:after, #powerTip.se:after { - border-color: rgba(255, 255, 255, 0); -} - -#powerTip.n:before, #powerTip.s:before, -#powerTip.w:before, #powerTip.e:before, -#powerTip.nw:before, #powerTip.ne:before, -#powerTip.sw:before, #powerTip.se:before { - border-color: rgba(128, 128, 128, 0); -} - -#powerTip.n:after, #powerTip.n:before, -#powerTip.ne:after, #powerTip.ne:before, -#powerTip.nw:after, #powerTip.nw:before { - top: 100%; -} - -#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { - border-top-color: #FFFFFF; - border-width: 10px; - margin: 0px -10px; -} -#powerTip.n:before { - border-top-color: #808080; - border-width: 11px; - margin: 0px -11px; -} -#powerTip.n:after, #powerTip.n:before { - left: 50%; -} - -#powerTip.nw:after, #powerTip.nw:before { - right: 14px; -} - -#powerTip.ne:after, #powerTip.ne:before { - left: 14px; -} - -#powerTip.s:after, #powerTip.s:before, -#powerTip.se:after, #powerTip.se:before, -#powerTip.sw:after, #powerTip.sw:before { - bottom: 100%; -} - -#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { - border-bottom-color: #FFFFFF; - border-width: 10px; - margin: 0px -10px; -} - -#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { - border-bottom-color: #808080; - border-width: 11px; - margin: 0px -11px; -} - -#powerTip.s:after, #powerTip.s:before { - left: 50%; -} - -#powerTip.sw:after, #powerTip.sw:before { - right: 14px; -} - -#powerTip.se:after, #powerTip.se:before { - left: 14px; -} - -#powerTip.e:after, #powerTip.e:before { - left: 100%; -} -#powerTip.e:after { - border-left-color: #FFFFFF; - border-width: 10px; - top: 50%; - margin-top: -10px; -} -#powerTip.e:before { - border-left-color: #808080; - border-width: 11px; - top: 50%; - margin-top: -11px; -} - -#powerTip.w:after, #powerTip.w:before { - right: 100%; -} -#powerTip.w:after { - border-right-color: #FFFFFF; - border-width: 10px; - top: 50%; - margin-top: -10px; -} -#powerTip.w:before { - border-right-color: #808080; - border-width: 11px; - top: 50%; - margin-top: -11px; -} - -@media print -{ - #top { display: none; } - #side-nav { display: none; } - #nav-path { display: none; } - body { overflow:visible; } - h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } - .summary { display: none; } - .memitem { page-break-inside: avoid; } - #doc-content - { - margin-left:0 !important; - height:auto !important; - width:auto !important; - overflow:inherit; - display:inline; - } -} - -/* @group Markdown */ - -/* -table.markdownTable { - border-collapse:collapse; - margin-top: 4px; - margin-bottom: 4px; -} - -table.markdownTable td, table.markdownTable th { - border: 1px solid #2D4068; - padding: 3px 7px 2px; -} - -table.markdownTableHead tr { -} - -table.markdownTableBodyLeft td, table.markdownTable th { - border: 1px solid #2D4068; - padding: 3px 7px 2px; -} - -th.markdownTableHeadLeft th.markdownTableHeadRight th.markdownTableHeadCenter th.markdownTableHeadNone { - background-color: #374F7F; - color: #FFFFFF; - font-size: 110%; - padding-bottom: 4px; - padding-top: 5px; -} - -th.markdownTableHeadLeft { - text-align: left -} - -th.markdownTableHeadRight { - text-align: right -} - -th.markdownTableHeadCenter { - text-align: center -} -*/ - -table.markdownTable { - border-collapse:collapse; - margin-top: 4px; - margin-bottom: 4px; -} - -table.markdownTable td, table.markdownTable th { - border: 1px solid #2D4068; - padding: 3px 7px 2px; -} - -table.markdownTable tr { -} - -th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { - background-color: #374F7F; - color: #FFFFFF; - font-size: 110%; - padding-bottom: 4px; - padding-top: 5px; -} - -th.markdownTableHeadLeft, td.markdownTableBodyLeft { - text-align: left -} - -th.markdownTableHeadRight, td.markdownTableBodyRight { - text-align: right -} - -th.markdownTableHeadCenter, td.markdownTableBodyCenter { - text-align: center -} - -.DocNodeRTL { - text-align: right; - direction: rtl; -} - -.DocNodeLTR { - text-align: left; - direction: ltr; -} - -table.DocNodeRTL { - width: auto; - margin-right: 0; - margin-left: auto; -} - -table.DocNodeLTR { - width: auto; - margin-right: auto; - margin-left: 0; -} - -tt, code, kbd, samp -{ - display: inline-block; - direction:ltr; -} -/* @end */ - -u { - text-decoration: underline; -} - diff --git a/help/html/doxygen.png b/help/html/doxygen.png deleted file mode 100644 index 3ff17d8..0000000 Binary files a/help/html/doxygen.png and /dev/null differ diff --git a/help/html/dynsections.js b/help/html/dynsections.js deleted file mode 100644 index ea0a7b3..0000000 --- a/help/html/dynsections.js +++ /dev/null @@ -1,120 +0,0 @@ -/* - @licstart The following is the entire license notice for the - JavaScript code in this file. - - Copyright (C) 1997-2017 by Dimitri van Heesch - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - - @licend The above is the entire license notice - for the JavaScript code in this file - */ -function toggleVisibility(linkObj) -{ - var base = $(linkObj).attr('id'); - var summary = $('#'+base+'-summary'); - var content = $('#'+base+'-content'); - var trigger = $('#'+base+'-trigger'); - var src=$(trigger).attr('src'); - if (content.is(':visible')===true) { - content.hide(); - summary.show(); - $(linkObj).addClass('closed').removeClass('opened'); - $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); - } else { - content.show(); - summary.hide(); - $(linkObj).removeClass('closed').addClass('opened'); - $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); - } - return false; -} - -function updateStripes() -{ - $('table.directory tr'). - removeClass('even').filter(':visible:even').addClass('even'); -} - -function toggleLevel(level) -{ - $('table.directory tr').each(function() { - var l = this.id.split('_').length-1; - var i = $('#img'+this.id.substring(3)); - var a = $('#arr'+this.id.substring(3)); - if (l - - - - - - -CocoaTweet: src/cocoatweet/exception/exception.h File Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
exception.h File Reference
-
-
-
#include <string>
-#include <exception>
-
-Include dependency graph for exception.h:
-
-
- - - - - -
-
-This graph shows which files directly or indirectly include this file:
-
-
- - - - - - - - - - - - - - - - - -
-
-

Go to the source code of this file.

- - - - -

-Classes

class  CocoaTweet::Exception::Exception
 
- - - - - -

-Namespaces

 CocoaTweet
 
 CocoaTweet::Exception
 
-
- - - - diff --git a/help/html/exception_8h__dep__incl.map b/help/html/exception_8h__dep__incl.map deleted file mode 100644 index c741774..0000000 --- a/help/html/exception_8h__dep__incl.map +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/help/html/exception_8h__dep__incl.md5 b/help/html/exception_8h__dep__incl.md5 deleted file mode 100644 index bc351d1..0000000 --- a/help/html/exception_8h__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -b96a5f9b76475f879c83345b61925a6e \ No newline at end of file diff --git a/help/html/exception_8h__dep__incl.png b/help/html/exception_8h__dep__incl.png deleted file mode 100644 index 9be7c69..0000000 Binary files a/help/html/exception_8h__dep__incl.png and /dev/null differ diff --git a/help/html/exception_8h__incl.map b/help/html/exception_8h__incl.map deleted file mode 100644 index 4854d3e..0000000 --- a/help/html/exception_8h__incl.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/help/html/exception_8h__incl.md5 b/help/html/exception_8h__incl.md5 deleted file mode 100644 index 4e2c394..0000000 --- a/help/html/exception_8h__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -f217a5e97abe52d4ebb329143f10375f \ No newline at end of file diff --git a/help/html/exception_8h__incl.png b/help/html/exception_8h__incl.png deleted file mode 100644 index 58b5fa4..0000000 Binary files a/help/html/exception_8h__incl.png and /dev/null differ diff --git a/help/html/exception_8h_source.html b/help/html/exception_8h_source.html deleted file mode 100644 index 648309a..0000000 --- a/help/html/exception_8h_source.html +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/exception/exception.h Source File - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
exception.h
-
-
-Go to the documentation of this file.
1 #ifndef COCOATWEET_EXCEPTION_EXCEPTION_H_
-
2 #define COCOATWEET_EXCEPTION_EXCEPTION_H_
-
3 
-
4 #include <string>
-
5 #include <exception>
-
6 
-
7 namespace CocoaTweet::Exception {
-
8 class Exception : public std::exception {
-
9 public:
-
10  Exception(const char* _msg) : msg_(std::string(_msg)) {}
-
11  Exception(const std::string& _msg) : msg_(std::string(_msg)) {}
-
12  const std::string& what() {
-
13  return msg_;
-
14  }
-
15  virtual ~Exception() = default;
-
16 
-
17 protected:
-
18  std::string msg_;
-
19 };
-
20 } // namespace CocoaTweet::Exception
-
21 
-
22 #endif
-
-
const std::string & what()
Definition: exception.h:12
- -
Exception(const char *_msg)
Definition: exception.h:10
-
Definition: authenticateException.h:6
-
std::string msg_
Definition: exception.h:18
-
Exception(const std::string &_msg)
Definition: exception.h:11
-
Definition: exception.h:8
- - - - diff --git a/help/html/favorite_2destroy_8cc.html b/help/html/favorite_2destroy_8cc.html deleted file mode 100644 index 4b5b5be..0000000 --- a/help/html/favorite_2destroy_8cc.html +++ /dev/null @@ -1,113 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api/favorite/destroy.cc File Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
destroy.cc File Reference
-
-
-
-Include dependency graph for destroy.cc:
-
-
- - - - - - - - - - - - - - -
-
- - - - - - - -

-Namespaces

 CocoaTweet
 
 CocoaTweet::API
 
 CocoaTweet::API::Favorites
 
-
- - - - diff --git a/help/html/favorite_2destroy_8cc__incl.map b/help/html/favorite_2destroy_8cc__incl.map deleted file mode 100644 index 58a43dd..0000000 --- a/help/html/favorite_2destroy_8cc__incl.map +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/help/html/favorite_2destroy_8cc__incl.md5 b/help/html/favorite_2destroy_8cc__incl.md5 deleted file mode 100644 index 6bdf7a5..0000000 --- a/help/html/favorite_2destroy_8cc__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -e17784394812d27dcb08b424569ebbf3 \ No newline at end of file diff --git a/help/html/favorite_2destroy_8cc__incl.png b/help/html/favorite_2destroy_8cc__incl.png deleted file mode 100644 index f8fc2f3..0000000 Binary files a/help/html/favorite_2destroy_8cc__incl.png and /dev/null differ diff --git a/help/html/favorite_2destroy_8h.html b/help/html/favorite_2destroy_8h.html deleted file mode 100644 index 3858418..0000000 --- a/help/html/favorite_2destroy_8h.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api/favorite/destroy.h File Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
destroy.h File Reference
-
-
-
-Include dependency graph for destroy.h:
-
-
- - - - - - - - - - - - - -
-
-This graph shows which files directly or indirectly include this file:
-
-
- - - - - -
-
-

Go to the source code of this file.

- - - - -

-Classes

class  CocoaTweet::API::Favorites::Destroy
 
- - - - - - - -

-Namespaces

 CocoaTweet
 
 CocoaTweet::API
 
 CocoaTweet::API::Favorites
 
-
- - - - diff --git a/help/html/favorite_2destroy_8h__dep__incl.map b/help/html/favorite_2destroy_8h__dep__incl.map deleted file mode 100644 index 77da7c6..0000000 --- a/help/html/favorite_2destroy_8h__dep__incl.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/help/html/favorite_2destroy_8h__dep__incl.md5 b/help/html/favorite_2destroy_8h__dep__incl.md5 deleted file mode 100644 index 0cc0e86..0000000 --- a/help/html/favorite_2destroy_8h__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -8c03d0bcef13d3af6d65dc00b0be5fad \ No newline at end of file diff --git a/help/html/favorite_2destroy_8h__dep__incl.png b/help/html/favorite_2destroy_8h__dep__incl.png deleted file mode 100644 index 71786e2..0000000 Binary files a/help/html/favorite_2destroy_8h__dep__incl.png and /dev/null differ diff --git a/help/html/favorite_2destroy_8h__incl.map b/help/html/favorite_2destroy_8h__incl.map deleted file mode 100644 index be303d8..0000000 --- a/help/html/favorite_2destroy_8h__incl.map +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/help/html/favorite_2destroy_8h__incl.md5 b/help/html/favorite_2destroy_8h__incl.md5 deleted file mode 100644 index e0e9796..0000000 --- a/help/html/favorite_2destroy_8h__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -70a23a01c87d30e875bd46b7d6e7093a \ No newline at end of file diff --git a/help/html/favorite_2destroy_8h__incl.png b/help/html/favorite_2destroy_8h__incl.png deleted file mode 100644 index 8894460..0000000 Binary files a/help/html/favorite_2destroy_8h__incl.png and /dev/null differ diff --git a/help/html/favorite_2destroy_8h_source.html b/help/html/favorite_2destroy_8h_source.html deleted file mode 100644 index beb27d2..0000000 --- a/help/html/favorite_2destroy_8h_source.html +++ /dev/null @@ -1,107 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api/favorite/destroy.h Source File - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
destroy.h
-
-
-Go to the documentation of this file.
1 #ifndef COCOATWEET_API_FAVORITE_DESTROY_H_
-
2 #define COCOATWEET_API_FAVORITE_DESTROY_H_
-
3 
- - -
6 
- - -
9 public:
-
10  Destroy();
-
11  void id(const std::string& _id);
-
12  CocoaTweet::API::Model::Tweet process(std::weak_ptr<CocoaTweet::OAuth::OAuth1> _oauth);
-
13 
-
14 private:
-
15 };
-
16 } // namespace CocoaTweet::API::Favorites
-
17 
-
18 #endif
-
-
class for Send request with POST method
Definition: httpPost.h:10
-
data class for tweet object
Definition: tweet.h:10
-
Destroy()
Definition: destroy.cc:5
- -
void id(const std::string &_id)
Definition: destroy.cc:10
-
Definition: create.cc:4
- - -
CocoaTweet::API::Model::Tweet process(std::weak_ptr< CocoaTweet::OAuth::OAuth1 > _oauth)
Definition: destroy.cc:14
- - - - diff --git a/help/html/favorite_8cc.html b/help/html/favorite_8cc.html deleted file mode 100644 index f7919bc..0000000 --- a/help/html/favorite_8cc.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api/favorite/favorite.cc File Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
favorite.cc File Reference
-
-
-
-Include dependency graph for favorite.cc:
-
-
- - - - - - - - - - - - - - - - - -
-
- - - - - - - -

-Namespaces

 CocoaTweet
 
 CocoaTweet::API
 
 CocoaTweet::API::Favorites
 
-
- - - - diff --git a/help/html/favorite_8cc__incl.map b/help/html/favorite_8cc__incl.map deleted file mode 100644 index d1c34e8..0000000 --- a/help/html/favorite_8cc__incl.map +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/help/html/favorite_8cc__incl.md5 b/help/html/favorite_8cc__incl.md5 deleted file mode 100644 index 8ff3731..0000000 --- a/help/html/favorite_8cc__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -93f43c08fbec70ecac96736c4d826da7 \ No newline at end of file diff --git a/help/html/favorite_8cc__incl.png b/help/html/favorite_8cc__incl.png deleted file mode 100644 index f231688..0000000 Binary files a/help/html/favorite_8cc__incl.png and /dev/null differ diff --git a/help/html/favorite_8h.html b/help/html/favorite_8h.html deleted file mode 100644 index f698b96..0000000 --- a/help/html/favorite_8h.html +++ /dev/null @@ -1,131 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api/favorite/favorite.h File Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
favorite.h File Reference
-
-
-
-Include dependency graph for favorite.h:
-
-
- - - - - - - - - - - -
-
-This graph shows which files directly or indirectly include this file:
-
-
- - - - - - - -
-
-

Go to the source code of this file.

- - - - -

-Classes

class  CocoaTweet::API::Favorites::Favorite
 
- - - - - - - -

-Namespaces

 CocoaTweet
 
 CocoaTweet::API
 
 CocoaTweet::API::Favorites
 
-
- - - - diff --git a/help/html/favorite_8h__dep__incl.map b/help/html/favorite_8h__dep__incl.map deleted file mode 100644 index 85e5c32..0000000 --- a/help/html/favorite_8h__dep__incl.map +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/help/html/favorite_8h__dep__incl.md5 b/help/html/favorite_8h__dep__incl.md5 deleted file mode 100644 index 317788e..0000000 --- a/help/html/favorite_8h__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -8bec3ebd6089cb347be940981489ed68 \ No newline at end of file diff --git a/help/html/favorite_8h__dep__incl.png b/help/html/favorite_8h__dep__incl.png deleted file mode 100644 index 673f958..0000000 Binary files a/help/html/favorite_8h__dep__incl.png and /dev/null differ diff --git a/help/html/favorite_8h__incl.map b/help/html/favorite_8h__incl.map deleted file mode 100644 index 013bb70..0000000 --- a/help/html/favorite_8h__incl.map +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/help/html/favorite_8h__incl.md5 b/help/html/favorite_8h__incl.md5 deleted file mode 100644 index 03a9765..0000000 --- a/help/html/favorite_8h__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -271e3f206f9b57518b8f977f5d8b21db \ No newline at end of file diff --git a/help/html/favorite_8h__incl.png b/help/html/favorite_8h__incl.png deleted file mode 100644 index c82aa27..0000000 Binary files a/help/html/favorite_8h__incl.png and /dev/null differ diff --git a/help/html/favorite_8h_source.html b/help/html/favorite_8h_source.html deleted file mode 100644 index e5010cd..0000000 --- a/help/html/favorite_8h_source.html +++ /dev/null @@ -1,108 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api/favorite/favorite.h Source File - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
favorite.h
-
-
-Go to the documentation of this file.
1 #ifndef COCOATWEET_API_FAVORITE_FAVORITE_H_
-
2 #define COCOATWEET_API_FAVORITE_FAVORITE_H_
-
3 
- - - -
7 
- -
9 class Favorite : public groupInterface {
-
10 public:
-
11  Favorite() = default;
-
12  Favorite(std::shared_ptr<CocoaTweet::OAuth::OAuth1> _oauth);
-
13  CocoaTweet::API::Model::Tweet create(const std::string& _id) const;
-
14  CocoaTweet::API::Model::Tweet destroy(const std::string& _id) const;
-
15 };
-
16 } // namespace CocoaTweet::API::Favorites
-
17 
-
18 #endif
-
- -
data class for tweet object
Definition: tweet.h:10
-
Definition: groupInterface.h:8
- - -
CocoaTweet::API::Model::Tweet create(const std::string &_id) const
Definition: favorite.cc:10
-
Definition: favorite.h:9
-
Definition: create.cc:4
-
CocoaTweet::API::Model::Tweet destroy(const std::string &_id) const
Definition: favorite.cc:16
- - - - - diff --git a/help/html/files.html b/help/html/files.html deleted file mode 100644 index 1cc833a..0000000 --- a/help/html/files.html +++ /dev/null @@ -1,150 +0,0 @@ - - - - - - - -CocoaTweet: File List - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
-
File List
-
- - - - - diff --git a/help/html/folderclosed.png b/help/html/folderclosed.png deleted file mode 100644 index bb8ab35..0000000 Binary files a/help/html/folderclosed.png and /dev/null differ diff --git a/help/html/folderopen.png b/help/html/folderopen.png deleted file mode 100644 index d6c7f67..0000000 Binary files a/help/html/folderopen.png and /dev/null differ diff --git a/help/html/formula.repository b/help/html/formula.repository deleted file mode 100644 index 9b4f8f9..0000000 --- a/help/html/formula.repository +++ /dev/null @@ -1 +0,0 @@ -\_form#0:$[-2^{53}+1, 2^{53}-1]$ diff --git a/help/html/functions.html b/help/html/functions.html deleted file mode 100644 index d1b9879..0000000 --- a/help/html/functions.html +++ /dev/null @@ -1,503 +0,0 @@ - - - - - - - -CocoaTweet: Class Members - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all class members with links to the classes they belong to:
- -

- a -

- - -

- b -

- - -

- c -

- - -

- d -

- - -

- e -

- - -

- f -

- - -

- g -

- - -

- h -

- - -

- i -

- - -

- k -

- - -

- l -

- - -

- m -

- - -

- n -

- - -

- o -

- - -

- p -

- - -

- r -

- - -

- s -

- - -

- t -

- - -

- u -

- - -

- v -

- - -

- w -

- - -

- ~ -

-
- - - - diff --git a/help/html/functions_a.html b/help/html/functions_a.html deleted file mode 100644 index 9240b90..0000000 --- a/help/html/functions_a.html +++ /dev/null @@ -1,112 +0,0 @@ - - - - - - - -CocoaTweet: Class Members - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - -
- -
-
- - -
- -
- - - - - - diff --git a/help/html/functions_b.html b/help/html/functions_b.html deleted file mode 100644 index 6d3e3a9..0000000 --- a/help/html/functions_b.html +++ /dev/null @@ -1,135 +0,0 @@ - - - - - - - -CocoaTweet: Class Members - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all class members with links to the classes they belong to:
- -

- b -

-
- - - - diff --git a/help/html/functions_c.html b/help/html/functions_c.html deleted file mode 100644 index 99cb653..0000000 --- a/help/html/functions_c.html +++ /dev/null @@ -1,178 +0,0 @@ - - - - - - - -CocoaTweet: Class Members - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all class members with links to the classes they belong to:
- -

- c -

-
- - - - diff --git a/help/html/functions_d.html b/help/html/functions_d.html deleted file mode 100644 index 27e60aa..0000000 --- a/help/html/functions_d.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - - -CocoaTweet: Class Members - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - -
- -
-
- - -
- -
- - - - - - diff --git a/help/html/functions_e.html b/help/html/functions_e.html deleted file mode 100644 index 2f8a412..0000000 --- a/help/html/functions_e.html +++ /dev/null @@ -1,121 +0,0 @@ - - - - - - - -CocoaTweet: Class Members - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - -
- -
-
- - -
- -
- - - - - - diff --git a/help/html/functions_enum.html b/help/html/functions_enum.html deleted file mode 100644 index 3fbbdf4..0000000 --- a/help/html/functions_enum.html +++ /dev/null @@ -1,77 +0,0 @@ - - - - - - - -CocoaTweet: Class Members - Enumerations - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
- - - - diff --git a/help/html/functions_eval.html b/help/html/functions_eval.html deleted file mode 100644 index 4c3e1d7..0000000 --- a/help/html/functions_eval.html +++ /dev/null @@ -1,80 +0,0 @@ - - - - - - - -CocoaTweet: Class Members - Enumerator - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
- - - - diff --git a/help/html/functions_f.html b/help/html/functions_f.html deleted file mode 100644 index 717bac0..0000000 --- a/help/html/functions_f.html +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - -CocoaTweet: Class Members - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - -
- -
-
- - -
- -
- - - - - - diff --git a/help/html/functions_func.html b/help/html/functions_func.html deleted file mode 100644 index d2ab0cf..0000000 --- a/help/html/functions_func.html +++ /dev/null @@ -1,469 +0,0 @@ - - - - - - - -CocoaTweet: Class Members - Functions - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-  - -

- a -

- - -

- b -

- - -

- c -

- - -

- d -

- - -

- e -

- - -

- f -

- - -

- g -

- - -

- h -

- - -

- i -

- - -

- k -

- - -

- l -

- - -

- m -

- - -

- n -

- - -

- o -

- - -

- p -

- - -

- r -

- - -

- s -

- - -

- t -

- - -

- u -

- - -

- v -

- - -

- w -

- - -

- ~ -

-
- - - - diff --git a/help/html/functions_func_b.html b/help/html/functions_func_b.html deleted file mode 100644 index edbf4f9..0000000 --- a/help/html/functions_func_b.html +++ /dev/null @@ -1,112 +0,0 @@ - - - - - - - -CocoaTweet: Class Members - Functions - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - -
- -
-
- - -
- -
- - - - - - diff --git a/help/html/functions_func_c.html b/help/html/functions_func_c.html deleted file mode 100644 index 357d7e2..0000000 --- a/help/html/functions_func_c.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - -CocoaTweet: Class Members - Functions - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-  - -

- c -

-
- - - - diff --git a/help/html/functions_func_d.html b/help/html/functions_func_d.html deleted file mode 100644 index 7a53573..0000000 --- a/help/html/functions_func_d.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - -CocoaTweet: Class Members - Functions - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - -
- -
-
- - -
- -
- - - - - - diff --git a/help/html/functions_func_e.html b/help/html/functions_func_e.html deleted file mode 100644 index a1c35a4..0000000 --- a/help/html/functions_func_e.html +++ /dev/null @@ -1,113 +0,0 @@ - - - - - - - -CocoaTweet: Class Members - Functions - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - -
- -
-
- - -
- -
- - - - - - diff --git a/help/html/functions_func_f.html b/help/html/functions_func_f.html deleted file mode 100644 index 393d33e..0000000 --- a/help/html/functions_func_f.html +++ /dev/null @@ -1,119 +0,0 @@ - - - - - - - -CocoaTweet: Class Members - Functions - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - -
- -
-
- - -
- -
- - - - - - diff --git a/help/html/functions_func_g.html b/help/html/functions_func_g.html deleted file mode 100644 index 0abf350..0000000 --- a/help/html/functions_func_g.html +++ /dev/null @@ -1,127 +0,0 @@ - - - - - - - -CocoaTweet: Class Members - Functions - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - -
- -
-
- - -
- -
- - - - - - diff --git a/help/html/functions_func_h.html b/help/html/functions_func_h.html deleted file mode 100644 index b4a9a01..0000000 --- a/help/html/functions_func_h.html +++ /dev/null @@ -1,82 +0,0 @@ - - - - - - - -CocoaTweet: Class Members - Functions - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-  - -

- h -

-
- - - - diff --git a/help/html/functions_func_i.html b/help/html/functions_func_i.html deleted file mode 100644 index 7b10865..0000000 --- a/help/html/functions_func_i.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - - -CocoaTweet: Class Members - Functions - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-  - -

- i -

-
- - - - diff --git a/help/html/functions_func_j.html b/help/html/functions_func_j.html deleted file mode 100644 index 112b5fc..0000000 --- a/help/html/functions_func_j.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - -CocoaTweet: Class Members - Functions - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - -
- -
-
- - -
- -
- - - - - - diff --git a/help/html/functions_func_k.html b/help/html/functions_func_k.html deleted file mode 100644 index 1743b38..0000000 --- a/help/html/functions_func_k.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - - -CocoaTweet: Class Members - Functions - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - -
- -
-
- - -
- -
- - - - - - diff --git a/help/html/functions_func_l.html b/help/html/functions_func_l.html deleted file mode 100644 index 1e529cc..0000000 --- a/help/html/functions_func_l.html +++ /dev/null @@ -1,82 +0,0 @@ - - - - - - - -CocoaTweet: Class Members - Functions - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - -
- -
-
- - -
- -
- - - - - - diff --git a/help/html/functions_func_m.html b/help/html/functions_func_m.html deleted file mode 100644 index c453b30..0000000 --- a/help/html/functions_func_m.html +++ /dev/null @@ -1,100 +0,0 @@ - - - - - - - -CocoaTweet: Class Members - Functions - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-  - -

- m -

-
- - - - diff --git a/help/html/functions_func_n.html b/help/html/functions_func_n.html deleted file mode 100644 index bfbf6ab..0000000 --- a/help/html/functions_func_n.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - - -CocoaTweet: Class Members - Functions - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - -
- -
-
- - -
- -
- - - - - - diff --git a/help/html/functions_func_o.html b/help/html/functions_func_o.html deleted file mode 100644 index a826b57..0000000 --- a/help/html/functions_func_o.html +++ /dev/null @@ -1,208 +0,0 @@ - - - - - - - -CocoaTweet: Class Members - Functions - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-  - -

- o -

-
- - - - diff --git a/help/html/functions_func_p.html b/help/html/functions_func_p.html deleted file mode 100644 index c94104c..0000000 --- a/help/html/functions_func_p.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - - -CocoaTweet: Class Members - Functions - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - -
- -
-
- - -
- -
- - - - - - diff --git a/help/html/functions_func_r.html b/help/html/functions_func_r.html deleted file mode 100644 index 54bfec4..0000000 --- a/help/html/functions_func_r.html +++ /dev/null @@ -1,82 +0,0 @@ - - - - - - - -CocoaTweet: Class Members - Functions - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-  - -

- r -

-
- - - - diff --git a/help/html/functions_func_s.html b/help/html/functions_func_s.html deleted file mode 100644 index d2dc46d..0000000 --- a/help/html/functions_func_s.html +++ /dev/null @@ -1,151 +0,0 @@ - - - - - - - -CocoaTweet: Class Members - Functions - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-  - -

- s -

-
- - - - diff --git a/help/html/functions_func_t.html b/help/html/functions_func_t.html deleted file mode 100644 index 5301350..0000000 --- a/help/html/functions_func_t.html +++ /dev/null @@ -1,113 +0,0 @@ - - - - - - - -CocoaTweet: Class Members - Functions - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - -
- -
-
- - -
- -
- - - - - - diff --git a/help/html/functions_func_u.html b/help/html/functions_func_u.html deleted file mode 100644 index d626a70..0000000 --- a/help/html/functions_func_u.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - - -CocoaTweet: Class Members - Functions - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-  - -

- u -

-
- - - - diff --git a/help/html/functions_func_v.html b/help/html/functions_func_v.html deleted file mode 100644 index dcfb155..0000000 --- a/help/html/functions_func_v.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - - -CocoaTweet: Class Members - Functions - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - -
- -
-
- - -
- -
- - - - - - diff --git a/help/html/functions_func_w.html b/help/html/functions_func_w.html deleted file mode 100644 index 3984a0c..0000000 --- a/help/html/functions_func_w.html +++ /dev/null @@ -1,107 +0,0 @@ - - - - - - - -CocoaTweet: Class Members - Functions - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - -
- -
-
- - -
- -
- - - - - - diff --git a/help/html/functions_func_~.html b/help/html/functions_func_~.html deleted file mode 100644 index 5d88aeb..0000000 --- a/help/html/functions_func_~.html +++ /dev/null @@ -1,121 +0,0 @@ - - - - - - - -CocoaTweet: Class Members - Functions - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - -
- -
-
- - -
- -
- - - - - - diff --git a/help/html/functions_g.html b/help/html/functions_g.html deleted file mode 100644 index 23140da..0000000 --- a/help/html/functions_g.html +++ /dev/null @@ -1,127 +0,0 @@ - - - - - - - -CocoaTweet: Class Members - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - -
- -
-
- - -
- -
- - - - - - diff --git a/help/html/functions_h.html b/help/html/functions_h.html deleted file mode 100644 index 60cefe6..0000000 --- a/help/html/functions_h.html +++ /dev/null @@ -1,82 +0,0 @@ - - - - - - - -CocoaTweet: Class Members - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all class members with links to the classes they belong to:
- -

- h -

-
- - - - diff --git a/help/html/functions_i.html b/help/html/functions_i.html deleted file mode 100644 index 2ed3a1a..0000000 --- a/help/html/functions_i.html +++ /dev/null @@ -1,191 +0,0 @@ - - - - - - - -CocoaTweet: Class Members - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all class members with links to the classes they belong to:
- -

- i -

-
- - - - diff --git a/help/html/functions_j.html b/help/html/functions_j.html deleted file mode 100644 index c7dde37..0000000 --- a/help/html/functions_j.html +++ /dev/null @@ -1,98 +0,0 @@ - - - - - - - -CocoaTweet: Class Members - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all class members with links to the classes they belong to:
- -

- j -

-
- - - - diff --git a/help/html/functions_k.html b/help/html/functions_k.html deleted file mode 100644 index d0f4e2d..0000000 --- a/help/html/functions_k.html +++ /dev/null @@ -1,98 +0,0 @@ - - - - - - - -CocoaTweet: Class Members - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - -
- -
-
- - -
- -
- - - - - - diff --git a/help/html/functions_l.html b/help/html/functions_l.html deleted file mode 100644 index 40615aa..0000000 --- a/help/html/functions_l.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - - -CocoaTweet: Class Members - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all class members with links to the classes they belong to:
- -

- l -

-
- - - - diff --git a/help/html/functions_m.html b/help/html/functions_m.html deleted file mode 100644 index 180c815..0000000 --- a/help/html/functions_m.html +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - - -CocoaTweet: Class Members - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all class members with links to the classes they belong to:
- -

- m -

-
- - - - diff --git a/help/html/functions_n.html b/help/html/functions_n.html deleted file mode 100644 index 9a5d752..0000000 --- a/help/html/functions_n.html +++ /dev/null @@ -1,139 +0,0 @@ - - - - - - - -CocoaTweet: Class Members - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all class members with links to the classes they belong to:
- -

- n -

-
- - - - diff --git a/help/html/functions_o.html b/help/html/functions_o.html deleted file mode 100644 index 75ca547..0000000 --- a/help/html/functions_o.html +++ /dev/null @@ -1,251 +0,0 @@ - - - - - - - -CocoaTweet: Class Members - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all class members with links to the classes they belong to:
- -

- o -

-
- - - - diff --git a/help/html/functions_p.html b/help/html/functions_p.html deleted file mode 100644 index bce1a0c..0000000 --- a/help/html/functions_p.html +++ /dev/null @@ -1,135 +0,0 @@ - - - - - - - -CocoaTweet: Class Members - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all class members with links to the classes they belong to:
- -

- p -

-
- - - - diff --git a/help/html/functions_r.html b/help/html/functions_r.html deleted file mode 100644 index b23314a..0000000 --- a/help/html/functions_r.html +++ /dev/null @@ -1,97 +0,0 @@ - - - - - - - -CocoaTweet: Class Members - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - -
- -
-
- - -
- -
- - - - - - diff --git a/help/html/functions_rela.html b/help/html/functions_rela.html deleted file mode 100644 index 690d63c..0000000 --- a/help/html/functions_rela.html +++ /dev/null @@ -1,163 +0,0 @@ - - - - - - - -CocoaTweet: Class Members - Related Functions - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-  - -

- : -

- - -

- b -

- - -

- d -

- - -

- o -

- - -

- s -

- - -

- w -

-
- - - - diff --git a/help/html/functions_s.html b/help/html/functions_s.html deleted file mode 100644 index c102887..0000000 --- a/help/html/functions_s.html +++ /dev/null @@ -1,170 +0,0 @@ - - - - - - - -CocoaTweet: Class Members - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all class members with links to the classes they belong to:
- -

- s -

-
- - - - diff --git a/help/html/functions_t.html b/help/html/functions_t.html deleted file mode 100644 index 366dc58..0000000 --- a/help/html/functions_t.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - - - - -CocoaTweet: Class Members - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - -
- -
-
- - -
- -
- - - - - - diff --git a/help/html/functions_type.html b/help/html/functions_type.html deleted file mode 100644 index 57ace83..0000000 --- a/help/html/functions_type.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - - - - -CocoaTweet: Class Members - Typedefs - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - -
- -
-
- - -
- -
- - - - - - diff --git a/help/html/functions_type_b.html b/help/html/functions_type_b.html deleted file mode 100644 index c67477e..0000000 --- a/help/html/functions_type_b.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - -CocoaTweet: Class Members - Typedefs - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - -
- -
-
- - -
- -
- - - - - - diff --git a/help/html/functions_type_c.html b/help/html/functions_type_c.html deleted file mode 100644 index 50029be..0000000 --- a/help/html/functions_type_c.html +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - - -CocoaTweet: Class Members - Typedefs - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - -
- -
-
- - -
- -
- - - - - - diff --git a/help/html/functions_type_d.html b/help/html/functions_type_d.html deleted file mode 100644 index 3ee9c23..0000000 --- a/help/html/functions_type_d.html +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - - -CocoaTweet: Class Members - Typedefs - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - -
- -
-
- - -
- -
- - - - - - diff --git a/help/html/functions_type_e.html b/help/html/functions_type_e.html deleted file mode 100644 index cf3f3d4..0000000 --- a/help/html/functions_type_e.html +++ /dev/null @@ -1,82 +0,0 @@ - - - - - - - -CocoaTweet: Class Members - Typedefs - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-  - -

- e -

-
- - - - diff --git a/help/html/functions_type_i.html b/help/html/functions_type_i.html deleted file mode 100644 index 408643a..0000000 --- a/help/html/functions_type_i.html +++ /dev/null @@ -1,98 +0,0 @@ - - - - - - - -CocoaTweet: Class Members - Typedefs - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - -
- -
-
- - -
- -
- - - - - - diff --git a/help/html/functions_type_j.html b/help/html/functions_type_j.html deleted file mode 100644 index be5d0fa..0000000 --- a/help/html/functions_type_j.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - - -CocoaTweet: Class Members - Typedefs - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-  - -

- j -

-
- - - - diff --git a/help/html/functions_type_k.html b/help/html/functions_type_k.html deleted file mode 100644 index 29d44ab..0000000 --- a/help/html/functions_type_k.html +++ /dev/null @@ -1,79 +0,0 @@ - - - - - - - -CocoaTweet: Class Members - Typedefs - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - -
- -
-
- - -
- -
- - - - - - diff --git a/help/html/functions_type_m.html b/help/html/functions_type_m.html deleted file mode 100644 index 11b719a..0000000 --- a/help/html/functions_type_m.html +++ /dev/null @@ -1,79 +0,0 @@ - - - - - - - -CocoaTweet: Class Members - Typedefs - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - -
- -
-
- - -
- -
- - - - - - diff --git a/help/html/functions_type_n.html b/help/html/functions_type_n.html deleted file mode 100644 index 3809339..0000000 --- a/help/html/functions_type_n.html +++ /dev/null @@ -1,97 +0,0 @@ - - - - - - - -CocoaTweet: Class Members - Typedefs - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - -
- -
-
- - -
- -
- - - - - - diff --git a/help/html/functions_type_o.html b/help/html/functions_type_o.html deleted file mode 100644 index 42aff4a..0000000 --- a/help/html/functions_type_o.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - -CocoaTweet: Class Members - Typedefs - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - -
- -
-
- - -
- -
- - - - - - diff --git a/help/html/functions_type_p.html b/help/html/functions_type_p.html deleted file mode 100644 index 4494a01..0000000 --- a/help/html/functions_type_p.html +++ /dev/null @@ -1,95 +0,0 @@ - - - - - - - -CocoaTweet: Class Members - Typedefs - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - -
- -
-
- - -
- -
- - - - - - diff --git a/help/html/functions_type_r.html b/help/html/functions_type_r.html deleted file mode 100644 index 123d093..0000000 --- a/help/html/functions_type_r.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - -CocoaTweet: Class Members - Typedefs - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - -
- -
-
- - -
- -
- - - - - - diff --git a/help/html/functions_type_s.html b/help/html/functions_type_s.html deleted file mode 100644 index e6b7ee5..0000000 --- a/help/html/functions_type_s.html +++ /dev/null @@ -1,97 +0,0 @@ - - - - - - - -CocoaTweet: Class Members - Typedefs - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - -
- -
-
- - -
- -
- - - - - - diff --git a/help/html/functions_type_t.html b/help/html/functions_type_t.html deleted file mode 100644 index 457564b..0000000 --- a/help/html/functions_type_t.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - - -CocoaTweet: Class Members - Typedefs - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - -
- -
-
- - -
- -
- - - - - - diff --git a/help/html/functions_type_v.html b/help/html/functions_type_v.html deleted file mode 100644 index 5ee0399..0000000 --- a/help/html/functions_type_v.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - -CocoaTweet: Class Members - Typedefs - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - -
- -
-
- - -
- -
- - - - - - diff --git a/help/html/functions_u.html b/help/html/functions_u.html deleted file mode 100644 index 1a17cbc..0000000 --- a/help/html/functions_u.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - -CocoaTweet: Class Members - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all class members with links to the classes they belong to:
- -

- u -

-
- - - - diff --git a/help/html/functions_v.html b/help/html/functions_v.html deleted file mode 100644 index 7ba22ff..0000000 --- a/help/html/functions_v.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - - -CocoaTweet: Class Members - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all class members with links to the classes they belong to:
- -

- v -

-
- - - - diff --git a/help/html/functions_vars.html b/help/html/functions_vars.html deleted file mode 100644 index 7414e67..0000000 --- a/help/html/functions_vars.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - - -CocoaTweet: Class Members - Variables - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - -
- -
-
- - -
- -
- - - - - - diff --git a/help/html/functions_w.html b/help/html/functions_w.html deleted file mode 100644 index 1e11037..0000000 --- a/help/html/functions_w.html +++ /dev/null @@ -1,113 +0,0 @@ - - - - - - - -CocoaTweet: Class Members - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - -
- -
-
- - -
- -
- - - - - - diff --git a/help/html/functions_~.html b/help/html/functions_~.html deleted file mode 100644 index 613ee2a..0000000 --- a/help/html/functions_~.html +++ /dev/null @@ -1,121 +0,0 @@ - - - - - - - -CocoaTweet: Class Members - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all class members with links to the classes they belong to:
- -

- ~ -

-
- - - - diff --git a/help/html/globals.html b/help/html/globals.html deleted file mode 100644 index 7f5af9b..0000000 --- a/help/html/globals.html +++ /dev/null @@ -1,101 +0,0 @@ - - - - - - - -CocoaTweet: File Members - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all file members with links to the files they belong to:
-
- - - - diff --git a/help/html/globals_a.html b/help/html/globals_a.html deleted file mode 100644 index acd3833..0000000 --- a/help/html/globals_a.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - -CocoaTweet: File Members - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all file members with links to the files they belong to:
- -

- a -

-
- - - - diff --git a/help/html/globals_b.html b/help/html/globals_b.html deleted file mode 100644 index 4618bae..0000000 --- a/help/html/globals_b.html +++ /dev/null @@ -1,82 +0,0 @@ - - - - - - - -CocoaTweet: File Members - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all file members with links to the files they belong to:
- -

- b -

-
- - - - diff --git a/help/html/globals_c.html b/help/html/globals_c.html deleted file mode 100644 index 060ef34..0000000 --- a/help/html/globals_c.html +++ /dev/null @@ -1,98 +0,0 @@ - - - - - - - -CocoaTweet: File Members - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all file members with links to the files they belong to:
- -

- c -

-
- - - - diff --git a/help/html/globals_d.html b/help/html/globals_d.html deleted file mode 100644 index 64cbf68..0000000 --- a/help/html/globals_d.html +++ /dev/null @@ -1,80 +0,0 @@ - - - - - - - -CocoaTweet: File Members - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all file members with links to the files they belong to:
- -

- d -

-
- - - - diff --git a/help/html/globals_defs.html b/help/html/globals_defs.html deleted file mode 100644 index feb838b..0000000 --- a/help/html/globals_defs.html +++ /dev/null @@ -1,78 +0,0 @@ - - - - - - - -CocoaTweet: File Members - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
- - - - diff --git a/help/html/globals_defs_c.html b/help/html/globals_defs_c.html deleted file mode 100644 index 37b72e9..0000000 --- a/help/html/globals_defs_c.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - - - - -CocoaTweet: File Members - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-  - -

- c -

-
- - - - diff --git a/help/html/globals_defs_d.html b/help/html/globals_defs_d.html deleted file mode 100644 index 327c10a..0000000 --- a/help/html/globals_defs_d.html +++ /dev/null @@ -1,80 +0,0 @@ - - - - - - - -CocoaTweet: File Members - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-  - -

- d -

-
- - - - diff --git a/help/html/globals_defs_h.html b/help/html/globals_defs_h.html deleted file mode 100644 index 892ae40..0000000 --- a/help/html/globals_defs_h.html +++ /dev/null @@ -1,80 +0,0 @@ - - - - - - - -CocoaTweet: File Members - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-  - -

- h -

-
- - - - diff --git a/help/html/globals_defs_i.html b/help/html/globals_defs_i.html deleted file mode 100644 index a23ea11..0000000 --- a/help/html/globals_defs_i.html +++ /dev/null @@ -1,79 +0,0 @@ - - - - - - - -CocoaTweet: File Members - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-  - -

- i -

    -
  • INCLUDE_NLOHMANN_JSON_FWD_HPP_ -: json.hpp -
  • -
-
- - - - diff --git a/help/html/globals_defs_j.html b/help/html/globals_defs_j.html deleted file mode 100644 index 3788a1a..0000000 --- a/help/html/globals_defs_j.html +++ /dev/null @@ -1,463 +0,0 @@ - - - - - - - -CocoaTweet: File Members - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-  - -

- j -

    -
  • JSON_ASSERT -: json.hpp -
  • -
  • JSON_CATCH -: json.hpp -
  • -
  • JSON_EXPLICIT -: json.hpp -
  • -
  • JSON_HEDLEY_ALWAYS_INLINE -: json.hpp -
  • -
  • JSON_HEDLEY_ARM_VERSION_CHECK -: json.hpp -
  • -
  • JSON_HEDLEY_ARRAY_PARAM -: json.hpp -
  • -
  • JSON_HEDLEY_ASSUME -: json.hpp -
  • -
  • JSON_HEDLEY_BEGIN_C_DECLS -: json.hpp -
  • -
  • JSON_HEDLEY_C_DECL -: json.hpp -
  • -
  • JSON_HEDLEY_CLANG_HAS_ATTRIBUTE -: json.hpp -
  • -
  • JSON_HEDLEY_CLANG_HAS_BUILTIN -: json.hpp -
  • -
  • JSON_HEDLEY_CLANG_HAS_CPP_ATTRIBUTE -: json.hpp -
  • -
  • JSON_HEDLEY_CLANG_HAS_DECLSPEC_ATTRIBUTE -: json.hpp -
  • -
  • JSON_HEDLEY_CLANG_HAS_EXTENSION -: json.hpp -
  • -
  • JSON_HEDLEY_CLANG_HAS_FEATURE -: json.hpp -
  • -
  • JSON_HEDLEY_CLANG_HAS_WARNING -: json.hpp -
  • -
  • JSON_HEDLEY_COMPCERT_VERSION_CHECK -: json.hpp -
  • -
  • JSON_HEDLEY_CONCAT -: json.hpp -
  • -
  • JSON_HEDLEY_CONCAT3 -: json.hpp -
  • -
  • JSON_HEDLEY_CONCAT3_EX -: json.hpp -
  • -
  • JSON_HEDLEY_CONCAT_EX -: json.hpp -
  • -
  • JSON_HEDLEY_CONST -: json.hpp -
  • -
  • JSON_HEDLEY_CONST_CAST -: json.hpp -
  • -
  • JSON_HEDLEY_CONSTEXPR -: json.hpp -
  • -
  • JSON_HEDLEY_CPP_CAST -: json.hpp -
  • -
  • JSON_HEDLEY_CRAY_VERSION_CHECK -: json.hpp -
  • -
  • JSON_HEDLEY_DEPRECATED -: json.hpp -
  • -
  • JSON_HEDLEY_DEPRECATED_FOR -: json.hpp -
  • -
  • JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL -: json.hpp -
  • -
  • JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_ -: json.hpp -
  • -
  • JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED -: json.hpp -
  • -
  • JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES -: json.hpp -
  • -
  • JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS -: json.hpp -
  • -
  • JSON_HEDLEY_DIAGNOSTIC_POP -: json.hpp -
  • -
  • JSON_HEDLEY_DIAGNOSTIC_PUSH -: json.hpp -
  • -
  • JSON_HEDLEY_DMC_VERSION_CHECK -: json.hpp -
  • -
  • JSON_HEDLEY_EMPTY_BASES -: json.hpp -
  • -
  • JSON_HEDLEY_EMSCRIPTEN_VERSION_CHECK -: json.hpp -
  • -
  • JSON_HEDLEY_END_C_DECLS -: json.hpp -
  • -
  • JSON_HEDLEY_FALL_THROUGH -: json.hpp -
  • -
  • JSON_HEDLEY_FLAGS_CAST -: json.hpp -
  • -
  • JSON_HEDLEY_GCC_HAS_ATTRIBUTE -: json.hpp -
  • -
  • JSON_HEDLEY_GCC_HAS_BUILTIN -: json.hpp -
  • -
  • JSON_HEDLEY_GCC_HAS_CPP_ATTRIBUTE -: json.hpp -
  • -
  • JSON_HEDLEY_GCC_HAS_DECLSPEC_ATTRIBUTE -: json.hpp -
  • -
  • JSON_HEDLEY_GCC_HAS_EXTENSION -: json.hpp -
  • -
  • JSON_HEDLEY_GCC_HAS_FEATURE -: json.hpp -
  • -
  • JSON_HEDLEY_GCC_HAS_WARNING -: json.hpp -
  • -
  • JSON_HEDLEY_GCC_NOT_CLANG_VERSION_CHECK -: json.hpp -
  • -
  • JSON_HEDLEY_GCC_VERSION_CHECK -: json.hpp -
  • -
  • JSON_HEDLEY_GNUC_HAS_ATTRIBUTE -: json.hpp -
  • -
  • JSON_HEDLEY_GNUC_HAS_BUILTIN -: json.hpp -
  • -
  • JSON_HEDLEY_GNUC_HAS_CPP_ATTRIBUTE -: json.hpp -
  • -
  • JSON_HEDLEY_GNUC_HAS_DECLSPEC_ATTRIBUTE -: json.hpp -
  • -
  • JSON_HEDLEY_GNUC_HAS_EXTENSION -: json.hpp -
  • -
  • JSON_HEDLEY_GNUC_HAS_FEATURE -: json.hpp -
  • -
  • JSON_HEDLEY_GNUC_HAS_WARNING -: json.hpp -
  • -
  • JSON_HEDLEY_GNUC_VERSION_CHECK -: json.hpp -
  • -
  • JSON_HEDLEY_HAS_ATTRIBUTE -: json.hpp -
  • -
  • JSON_HEDLEY_HAS_BUILTIN -: json.hpp -
  • -
  • JSON_HEDLEY_HAS_CPP_ATTRIBUTE -: json.hpp -
  • -
  • JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS -: json.hpp -
  • -
  • JSON_HEDLEY_HAS_DECLSPEC_ATTRIBUTE -: json.hpp -
  • -
  • JSON_HEDLEY_HAS_EXTENSION -: json.hpp -
  • -
  • JSON_HEDLEY_HAS_FEATURE -: json.hpp -
  • -
  • JSON_HEDLEY_HAS_WARNING -: json.hpp -
  • -
  • JSON_HEDLEY_IAR_VERSION_CHECK -: json.hpp -
  • -
  • JSON_HEDLEY_IBM_VERSION_CHECK -: json.hpp -
  • -
  • JSON_HEDLEY_IMPORT -: json.hpp -
  • -
  • JSON_HEDLEY_INLINE -: json.hpp -
  • -
  • JSON_HEDLEY_INTEL_VERSION_CHECK -: json.hpp -
  • -
  • JSON_HEDLEY_IS_CONSTANT -: json.hpp -
  • -
  • JSON_HEDLEY_LIKELY -: json.hpp -
  • -
  • JSON_HEDLEY_MALLOC -: json.hpp -
  • -
  • JSON_HEDLEY_MESSAGE -: json.hpp -
  • -
  • JSON_HEDLEY_MSVC_VERSION_CHECK -: json.hpp -
  • -
  • JSON_HEDLEY_NEVER_INLINE -: json.hpp -
  • -
  • JSON_HEDLEY_NO_ESCAPE -: json.hpp -
  • -
  • JSON_HEDLEY_NO_RETURN -: json.hpp -
  • -
  • JSON_HEDLEY_NO_THROW -: json.hpp -
  • -
  • JSON_HEDLEY_NON_NULL -: json.hpp -
  • -
  • JSON_HEDLEY_NULL -: json.hpp -
  • -
  • JSON_HEDLEY_PELLES_VERSION_CHECK -: json.hpp -
  • -
  • JSON_HEDLEY_PGI_VERSION_CHECK -: json.hpp -
  • -
  • JSON_HEDLEY_PRAGMA -: json.hpp -
  • -
  • JSON_HEDLEY_PREDICT -: json.hpp -
  • -
  • JSON_HEDLEY_PREDICT_FALSE -: json.hpp -
  • -
  • JSON_HEDLEY_PREDICT_TRUE -: json.hpp -
  • -
  • JSON_HEDLEY_PRINTF_FORMAT -: json.hpp -
  • -
  • JSON_HEDLEY_PRIVATE -: json.hpp -
  • -
  • JSON_HEDLEY_PUBLIC -: json.hpp -
  • -
  • JSON_HEDLEY_PURE -: json.hpp -
  • -
  • JSON_HEDLEY_REINTERPRET_CAST -: json.hpp -
  • -
  • JSON_HEDLEY_REQUIRE -: json.hpp -
  • -
  • JSON_HEDLEY_REQUIRE_CONSTEXPR -: json.hpp -
  • -
  • JSON_HEDLEY_REQUIRE_MSG -: json.hpp -
  • -
  • JSON_HEDLEY_RESTRICT -: json.hpp -
  • -
  • JSON_HEDLEY_RETURNS_NON_NULL -: json.hpp -
  • -
  • JSON_HEDLEY_SENTINEL -: json.hpp -
  • -
  • JSON_HEDLEY_STATIC_ASSERT -: json.hpp -
  • -
  • JSON_HEDLEY_STATIC_CAST -: json.hpp -
  • -
  • JSON_HEDLEY_STRINGIFY -: json.hpp -
  • -
  • JSON_HEDLEY_STRINGIFY_EX -: json.hpp -
  • -
  • JSON_HEDLEY_SUNPRO_VERSION_CHECK -: json.hpp -
  • -
  • JSON_HEDLEY_TI_ARMCL_VERSION_CHECK -: json.hpp -
  • -
  • JSON_HEDLEY_TI_CL2000_VERSION_CHECK -: json.hpp -
  • -
  • JSON_HEDLEY_TI_CL430_VERSION_CHECK -: json.hpp -
  • -
  • JSON_HEDLEY_TI_CL6X_VERSION_CHECK -: json.hpp -
  • -
  • JSON_HEDLEY_TI_CL7X_VERSION_CHECK -: json.hpp -
  • -
  • JSON_HEDLEY_TI_CLPRU_VERSION_CHECK -: json.hpp -
  • -
  • JSON_HEDLEY_TI_VERSION_CHECK -: json.hpp -
  • -
  • JSON_HEDLEY_TINYC_VERSION_CHECK -: json.hpp -
  • -
  • JSON_HEDLEY_UNAVAILABLE -: json.hpp -
  • -
  • JSON_HEDLEY_UNLIKELY -: json.hpp -
  • -
  • JSON_HEDLEY_UNPREDICTABLE -: json.hpp -
  • -
  • JSON_HEDLEY_UNREACHABLE -: json.hpp -
  • -
  • JSON_HEDLEY_UNREACHABLE_RETURN -: json.hpp -
  • -
  • JSON_HEDLEY_VERSION -: json.hpp -
  • -
  • JSON_HEDLEY_VERSION_DECODE_MAJOR -: json.hpp -
  • -
  • JSON_HEDLEY_VERSION_DECODE_MINOR -: json.hpp -
  • -
  • JSON_HEDLEY_VERSION_DECODE_REVISION -: json.hpp -
  • -
  • JSON_HEDLEY_VERSION_ENCODE -: json.hpp -
  • -
  • JSON_HEDLEY_WARN_UNUSED_RESULT -: json.hpp -
  • -
  • JSON_HEDLEY_WARN_UNUSED_RESULT_MSG -: json.hpp -
  • -
  • JSON_HEDLEY_WARNING -: json.hpp -
  • -
  • JSON_INTERNAL_CATCH -: json.hpp -
  • -
  • JSON_THROW -: json.hpp -
  • -
  • JSON_TRY -: json.hpp -
  • -
  • JSON_USE_IMPLICIT_CONVERSIONS -: json.hpp -
  • -
-
- - - - diff --git a/help/html/globals_defs_n.html b/help/html/globals_defs_n.html deleted file mode 100644 index 4fc9c15..0000000 --- a/help/html/globals_defs_n.html +++ /dev/null @@ -1,304 +0,0 @@ - - - - - - - -CocoaTweet: File Members - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-  - -

- n -

-
- - - - diff --git a/help/html/globals_defs_p.html b/help/html/globals_defs_p.html deleted file mode 100644 index 961a714..0000000 --- a/help/html/globals_defs_p.html +++ /dev/null @@ -1,80 +0,0 @@ - - - - - - - -CocoaTweet: File Members - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-  - -

- p -

-
- - - - diff --git a/help/html/globals_defs_s.html b/help/html/globals_defs_s.html deleted file mode 100644 index 2662cb7..0000000 --- a/help/html/globals_defs_s.html +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - - -CocoaTweet: File Members - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-  - -

- s -

-
- - - - diff --git a/help/html/globals_f.html b/help/html/globals_f.html deleted file mode 100644 index f8ef2cc..0000000 --- a/help/html/globals_f.html +++ /dev/null @@ -1,79 +0,0 @@ - - - - - - - -CocoaTweet: File Members - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all file members with links to the files they belong to:
- -

- f -

-
- - - - diff --git a/help/html/globals_func.html b/help/html/globals_func.html deleted file mode 100644 index 7498b77..0000000 --- a/help/html/globals_func.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - - -CocoaTweet: File Members - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
- - - - diff --git a/help/html/globals_g.html b/help/html/globals_g.html deleted file mode 100644 index 62e8963..0000000 --- a/help/html/globals_g.html +++ /dev/null @@ -1,79 +0,0 @@ - - - - - - - -CocoaTweet: File Members - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all file members with links to the files they belong to:
- -

- g -

-
- - - - diff --git a/help/html/globals_h.html b/help/html/globals_h.html deleted file mode 100644 index 252fa57..0000000 --- a/help/html/globals_h.html +++ /dev/null @@ -1,83 +0,0 @@ - - - - - - - -CocoaTweet: File Members - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all file members with links to the files they belong to:
- -

- h -

-
- - - - diff --git a/help/html/globals_i.html b/help/html/globals_i.html deleted file mode 100644 index b4a2a30..0000000 --- a/help/html/globals_i.html +++ /dev/null @@ -1,107 +0,0 @@ - - - - - - - -CocoaTweet: File Members - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all file members with links to the files they belong to:
- -

- i -

-
- - - - diff --git a/help/html/globals_j.html b/help/html/globals_j.html deleted file mode 100644 index 1d85b12..0000000 --- a/help/html/globals_j.html +++ /dev/null @@ -1,463 +0,0 @@ - - - - - - - -CocoaTweet: File Members - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all file members with links to the files they belong to:
- -

- j -

    -
  • JSON_ASSERT -: json.hpp -
  • -
  • JSON_CATCH -: json.hpp -
  • -
  • JSON_EXPLICIT -: json.hpp -
  • -
  • JSON_HEDLEY_ALWAYS_INLINE -: json.hpp -
  • -
  • JSON_HEDLEY_ARM_VERSION_CHECK -: json.hpp -
  • -
  • JSON_HEDLEY_ARRAY_PARAM -: json.hpp -
  • -
  • JSON_HEDLEY_ASSUME -: json.hpp -
  • -
  • JSON_HEDLEY_BEGIN_C_DECLS -: json.hpp -
  • -
  • JSON_HEDLEY_C_DECL -: json.hpp -
  • -
  • JSON_HEDLEY_CLANG_HAS_ATTRIBUTE -: json.hpp -
  • -
  • JSON_HEDLEY_CLANG_HAS_BUILTIN -: json.hpp -
  • -
  • JSON_HEDLEY_CLANG_HAS_CPP_ATTRIBUTE -: json.hpp -
  • -
  • JSON_HEDLEY_CLANG_HAS_DECLSPEC_ATTRIBUTE -: json.hpp -
  • -
  • JSON_HEDLEY_CLANG_HAS_EXTENSION -: json.hpp -
  • -
  • JSON_HEDLEY_CLANG_HAS_FEATURE -: json.hpp -
  • -
  • JSON_HEDLEY_CLANG_HAS_WARNING -: json.hpp -
  • -
  • JSON_HEDLEY_COMPCERT_VERSION_CHECK -: json.hpp -
  • -
  • JSON_HEDLEY_CONCAT -: json.hpp -
  • -
  • JSON_HEDLEY_CONCAT3 -: json.hpp -
  • -
  • JSON_HEDLEY_CONCAT3_EX -: json.hpp -
  • -
  • JSON_HEDLEY_CONCAT_EX -: json.hpp -
  • -
  • JSON_HEDLEY_CONST -: json.hpp -
  • -
  • JSON_HEDLEY_CONST_CAST -: json.hpp -
  • -
  • JSON_HEDLEY_CONSTEXPR -: json.hpp -
  • -
  • JSON_HEDLEY_CPP_CAST -: json.hpp -
  • -
  • JSON_HEDLEY_CRAY_VERSION_CHECK -: json.hpp -
  • -
  • JSON_HEDLEY_DEPRECATED -: json.hpp -
  • -
  • JSON_HEDLEY_DEPRECATED_FOR -: json.hpp -
  • -
  • JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL -: json.hpp -
  • -
  • JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_ -: json.hpp -
  • -
  • JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED -: json.hpp -
  • -
  • JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES -: json.hpp -
  • -
  • JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS -: json.hpp -
  • -
  • JSON_HEDLEY_DIAGNOSTIC_POP -: json.hpp -
  • -
  • JSON_HEDLEY_DIAGNOSTIC_PUSH -: json.hpp -
  • -
  • JSON_HEDLEY_DMC_VERSION_CHECK -: json.hpp -
  • -
  • JSON_HEDLEY_EMPTY_BASES -: json.hpp -
  • -
  • JSON_HEDLEY_EMSCRIPTEN_VERSION_CHECK -: json.hpp -
  • -
  • JSON_HEDLEY_END_C_DECLS -: json.hpp -
  • -
  • JSON_HEDLEY_FALL_THROUGH -: json.hpp -
  • -
  • JSON_HEDLEY_FLAGS_CAST -: json.hpp -
  • -
  • JSON_HEDLEY_GCC_HAS_ATTRIBUTE -: json.hpp -
  • -
  • JSON_HEDLEY_GCC_HAS_BUILTIN -: json.hpp -
  • -
  • JSON_HEDLEY_GCC_HAS_CPP_ATTRIBUTE -: json.hpp -
  • -
  • JSON_HEDLEY_GCC_HAS_DECLSPEC_ATTRIBUTE -: json.hpp -
  • -
  • JSON_HEDLEY_GCC_HAS_EXTENSION -: json.hpp -
  • -
  • JSON_HEDLEY_GCC_HAS_FEATURE -: json.hpp -
  • -
  • JSON_HEDLEY_GCC_HAS_WARNING -: json.hpp -
  • -
  • JSON_HEDLEY_GCC_NOT_CLANG_VERSION_CHECK -: json.hpp -
  • -
  • JSON_HEDLEY_GCC_VERSION_CHECK -: json.hpp -
  • -
  • JSON_HEDLEY_GNUC_HAS_ATTRIBUTE -: json.hpp -
  • -
  • JSON_HEDLEY_GNUC_HAS_BUILTIN -: json.hpp -
  • -
  • JSON_HEDLEY_GNUC_HAS_CPP_ATTRIBUTE -: json.hpp -
  • -
  • JSON_HEDLEY_GNUC_HAS_DECLSPEC_ATTRIBUTE -: json.hpp -
  • -
  • JSON_HEDLEY_GNUC_HAS_EXTENSION -: json.hpp -
  • -
  • JSON_HEDLEY_GNUC_HAS_FEATURE -: json.hpp -
  • -
  • JSON_HEDLEY_GNUC_HAS_WARNING -: json.hpp -
  • -
  • JSON_HEDLEY_GNUC_VERSION_CHECK -: json.hpp -
  • -
  • JSON_HEDLEY_HAS_ATTRIBUTE -: json.hpp -
  • -
  • JSON_HEDLEY_HAS_BUILTIN -: json.hpp -
  • -
  • JSON_HEDLEY_HAS_CPP_ATTRIBUTE -: json.hpp -
  • -
  • JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS -: json.hpp -
  • -
  • JSON_HEDLEY_HAS_DECLSPEC_ATTRIBUTE -: json.hpp -
  • -
  • JSON_HEDLEY_HAS_EXTENSION -: json.hpp -
  • -
  • JSON_HEDLEY_HAS_FEATURE -: json.hpp -
  • -
  • JSON_HEDLEY_HAS_WARNING -: json.hpp -
  • -
  • JSON_HEDLEY_IAR_VERSION_CHECK -: json.hpp -
  • -
  • JSON_HEDLEY_IBM_VERSION_CHECK -: json.hpp -
  • -
  • JSON_HEDLEY_IMPORT -: json.hpp -
  • -
  • JSON_HEDLEY_INLINE -: json.hpp -
  • -
  • JSON_HEDLEY_INTEL_VERSION_CHECK -: json.hpp -
  • -
  • JSON_HEDLEY_IS_CONSTANT -: json.hpp -
  • -
  • JSON_HEDLEY_LIKELY -: json.hpp -
  • -
  • JSON_HEDLEY_MALLOC -: json.hpp -
  • -
  • JSON_HEDLEY_MESSAGE -: json.hpp -
  • -
  • JSON_HEDLEY_MSVC_VERSION_CHECK -: json.hpp -
  • -
  • JSON_HEDLEY_NEVER_INLINE -: json.hpp -
  • -
  • JSON_HEDLEY_NO_ESCAPE -: json.hpp -
  • -
  • JSON_HEDLEY_NO_RETURN -: json.hpp -
  • -
  • JSON_HEDLEY_NO_THROW -: json.hpp -
  • -
  • JSON_HEDLEY_NON_NULL -: json.hpp -
  • -
  • JSON_HEDLEY_NULL -: json.hpp -
  • -
  • JSON_HEDLEY_PELLES_VERSION_CHECK -: json.hpp -
  • -
  • JSON_HEDLEY_PGI_VERSION_CHECK -: json.hpp -
  • -
  • JSON_HEDLEY_PRAGMA -: json.hpp -
  • -
  • JSON_HEDLEY_PREDICT -: json.hpp -
  • -
  • JSON_HEDLEY_PREDICT_FALSE -: json.hpp -
  • -
  • JSON_HEDLEY_PREDICT_TRUE -: json.hpp -
  • -
  • JSON_HEDLEY_PRINTF_FORMAT -: json.hpp -
  • -
  • JSON_HEDLEY_PRIVATE -: json.hpp -
  • -
  • JSON_HEDLEY_PUBLIC -: json.hpp -
  • -
  • JSON_HEDLEY_PURE -: json.hpp -
  • -
  • JSON_HEDLEY_REINTERPRET_CAST -: json.hpp -
  • -
  • JSON_HEDLEY_REQUIRE -: json.hpp -
  • -
  • JSON_HEDLEY_REQUIRE_CONSTEXPR -: json.hpp -
  • -
  • JSON_HEDLEY_REQUIRE_MSG -: json.hpp -
  • -
  • JSON_HEDLEY_RESTRICT -: json.hpp -
  • -
  • JSON_HEDLEY_RETURNS_NON_NULL -: json.hpp -
  • -
  • JSON_HEDLEY_SENTINEL -: json.hpp -
  • -
  • JSON_HEDLEY_STATIC_ASSERT -: json.hpp -
  • -
  • JSON_HEDLEY_STATIC_CAST -: json.hpp -
  • -
  • JSON_HEDLEY_STRINGIFY -: json.hpp -
  • -
  • JSON_HEDLEY_STRINGIFY_EX -: json.hpp -
  • -
  • JSON_HEDLEY_SUNPRO_VERSION_CHECK -: json.hpp -
  • -
  • JSON_HEDLEY_TI_ARMCL_VERSION_CHECK -: json.hpp -
  • -
  • JSON_HEDLEY_TI_CL2000_VERSION_CHECK -: json.hpp -
  • -
  • JSON_HEDLEY_TI_CL430_VERSION_CHECK -: json.hpp -
  • -
  • JSON_HEDLEY_TI_CL6X_VERSION_CHECK -: json.hpp -
  • -
  • JSON_HEDLEY_TI_CL7X_VERSION_CHECK -: json.hpp -
  • -
  • JSON_HEDLEY_TI_CLPRU_VERSION_CHECK -: json.hpp -
  • -
  • JSON_HEDLEY_TI_VERSION_CHECK -: json.hpp -
  • -
  • JSON_HEDLEY_TINYC_VERSION_CHECK -: json.hpp -
  • -
  • JSON_HEDLEY_UNAVAILABLE -: json.hpp -
  • -
  • JSON_HEDLEY_UNLIKELY -: json.hpp -
  • -
  • JSON_HEDLEY_UNPREDICTABLE -: json.hpp -
  • -
  • JSON_HEDLEY_UNREACHABLE -: json.hpp -
  • -
  • JSON_HEDLEY_UNREACHABLE_RETURN -: json.hpp -
  • -
  • JSON_HEDLEY_VERSION -: json.hpp -
  • -
  • JSON_HEDLEY_VERSION_DECODE_MAJOR -: json.hpp -
  • -
  • JSON_HEDLEY_VERSION_DECODE_MINOR -: json.hpp -
  • -
  • JSON_HEDLEY_VERSION_DECODE_REVISION -: json.hpp -
  • -
  • JSON_HEDLEY_VERSION_ENCODE -: json.hpp -
  • -
  • JSON_HEDLEY_WARN_UNUSED_RESULT -: json.hpp -
  • -
  • JSON_HEDLEY_WARN_UNUSED_RESULT_MSG -: json.hpp -
  • -
  • JSON_HEDLEY_WARNING -: json.hpp -
  • -
  • JSON_INTERNAL_CATCH -: json.hpp -
  • -
  • JSON_THROW -: json.hpp -
  • -
  • JSON_TRY -: json.hpp -
  • -
  • JSON_USE_IMPLICIT_CONVERSIONS -: json.hpp -
  • -
-
- - - - diff --git a/help/html/globals_k.html b/help/html/globals_k.html deleted file mode 100644 index 1bd7269..0000000 --- a/help/html/globals_k.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - - -CocoaTweet: File Members - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all file members with links to the files they belong to:
- -

- k -

-
- - - - diff --git a/help/html/globals_l.html b/help/html/globals_l.html deleted file mode 100644 index c4785a3..0000000 --- a/help/html/globals_l.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - -CocoaTweet: File Members - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all file members with links to the files they belong to:
- -

- l -

-
- - - - diff --git a/help/html/globals_m.html b/help/html/globals_m.html deleted file mode 100644 index 60f3c37..0000000 --- a/help/html/globals_m.html +++ /dev/null @@ -1,81 +0,0 @@ - - - - - - - -CocoaTweet: File Members - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all file members with links to the files they belong to:
- -

- m -

-
- - - - diff --git a/help/html/globals_n.html b/help/html/globals_n.html deleted file mode 100644 index e8032fa..0000000 --- a/help/html/globals_n.html +++ /dev/null @@ -1,316 +0,0 @@ - - - - - - - -CocoaTweet: File Members - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all file members with links to the files they belong to:
- -

- n -

-
- - - - diff --git a/help/html/globals_o.html b/help/html/globals_o.html deleted file mode 100644 index 2af8195..0000000 --- a/help/html/globals_o.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - - -CocoaTweet: File Members - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all file members with links to the files they belong to:
- -

- o -

-
- - - - diff --git a/help/html/globals_p.html b/help/html/globals_p.html deleted file mode 100644 index 95dd590..0000000 --- a/help/html/globals_p.html +++ /dev/null @@ -1,95 +0,0 @@ - - - - - - - -CocoaTweet: File Members - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all file members with links to the files they belong to:
- -

- p -

-
- - - - diff --git a/help/html/globals_r.html b/help/html/globals_r.html deleted file mode 100644 index 7127996..0000000 --- a/help/html/globals_r.html +++ /dev/null @@ -1,82 +0,0 @@ - - - - - - - -CocoaTweet: File Members - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all file members with links to the files they belong to:
- -

- r -

-
- - - - diff --git a/help/html/globals_s.html b/help/html/globals_s.html deleted file mode 100644 index 02e103e..0000000 --- a/help/html/globals_s.html +++ /dev/null @@ -1,96 +0,0 @@ - - - - - - - -CocoaTweet: File Members - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all file members with links to the files they belong to:
- -

- s -

-
- - - - diff --git a/help/html/globals_u.html b/help/html/globals_u.html deleted file mode 100644 index 5f1b435..0000000 --- a/help/html/globals_u.html +++ /dev/null @@ -1,79 +0,0 @@ - - - - - - - -CocoaTweet: File Members - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all file members with links to the files they belong to:
- -

- u -

-
- - - - diff --git a/help/html/globals_vars.html b/help/html/globals_vars.html deleted file mode 100644 index 99441f5..0000000 --- a/help/html/globals_vars.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - - - - -CocoaTweet: File Members - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
- - - - diff --git a/help/html/globals_w.html b/help/html/globals_w.html deleted file mode 100644 index 26fac22..0000000 --- a/help/html/globals_w.html +++ /dev/null @@ -1,79 +0,0 @@ - - - - - - - -CocoaTweet: File Members - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all file members with links to the files they belong to:
- -

- w -

-
- - - - diff --git a/help/html/globals_z.html b/help/html/globals_z.html deleted file mode 100644 index d0f727c..0000000 --- a/help/html/globals_z.html +++ /dev/null @@ -1,80 +0,0 @@ - - - - - - - -CocoaTweet: File Members - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all file members with links to the files they belong to:
- -

- z -

-
- - - - diff --git a/help/html/graph_legend.html b/help/html/graph_legend.html deleted file mode 100644 index 2f49303..0000000 --- a/help/html/graph_legend.html +++ /dev/null @@ -1,136 +0,0 @@ - - - - - - - -CocoaTweet: Graph Legend - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
-
Graph Legend
-
-
-

This page explains how to interpret the graphs that are generated by doxygen.

-

Consider the following example:

/*! Invisible class because of truncation */
-
class Invisible { };
-
-
/*! Truncated class, inheritance relation is hidden */
-
class Truncated : public Invisible { };
-
-
/* Class not documented with doxygen comments */
-
class Undocumented { };
-
-
/*! Class that is inherited using public inheritance */
-
class PublicBase : public Truncated { };
-
-
/*! A template class */
-
template<class T> class Templ { };
-
-
/*! Class that is inherited using protected inheritance */
-
class ProtectedBase { };
-
-
/*! Class that is inherited using private inheritance */
-
class PrivateBase { };
-
-
/*! Class that is used by the Inherited class */
-
class Used { };
-
-
/*! Super class that inherits a number of other classes */
-
class Inherited : public PublicBase,
-
protected ProtectedBase,
-
private PrivateBase,
-
public Undocumented,
-
public Templ<int>
-
{
-
private:
-
Used *m_usedClass;
-
};
-

This will result in the following graph:

-

The boxes in the above graph have the following meaning:

-
    -
  • -A filled gray box represents the struct or class for which the graph is generated.
  • -
  • -A box with a black border denotes a documented struct or class.
  • -
  • -A box with a gray border denotes an undocumented struct or class.
  • -
  • -A box with a red border denotes a documented struct or class forwhich not all inheritance/containment relations are shown. A graph is truncated if it does not fit within the specified boundaries.
  • -
-

The arrows have the following meaning:

-
    -
  • -A dark blue arrow is used to visualize a public inheritance relation between two classes.
  • -
  • -A dark green arrow is used for protected inheritance.
  • -
  • -A dark red arrow is used for private inheritance.
  • -
  • -A purple dashed arrow is used if a class is contained or used by another class. The arrow is labelled with the variable(s) through which the pointed class or struct is accessible.
  • -
  • -A yellow dashed arrow denotes a relation between a template instance and the template class it was instantiated from. The arrow is labelled with the template parameters of the instance.
  • -
-
- - - - diff --git a/help/html/graph_legend.md5 b/help/html/graph_legend.md5 deleted file mode 100644 index 8fcdccd..0000000 --- a/help/html/graph_legend.md5 +++ /dev/null @@ -1 +0,0 @@ -f51bf6e9a10430aafef59831b08dcbfe \ No newline at end of file diff --git a/help/html/graph_legend.png b/help/html/graph_legend.png deleted file mode 100644 index 83dfada..0000000 Binary files a/help/html/graph_legend.png and /dev/null differ diff --git a/help/html/groupInterface_8h.html b/help/html/groupInterface_8h.html deleted file mode 100644 index 1d21d26..0000000 --- a/help/html/groupInterface_8h.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api/interface/groupInterface.h File Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
groupInterface.h File Reference
-
-
-
#include <memory>
-#include "cocoatweet/oauth/oauth.h"
-
-Include dependency graph for groupInterface.h:
-
-
- - - - - - - - -
-
-This graph shows which files directly or indirectly include this file:
-
-
- - - - - - - - - - - - - - -
-
-

Go to the source code of this file.

- - - - -

-Classes

class  CocoaTweet::API::groupInterface
 
- - - - - -

-Namespaces

 CocoaTweet
 
 CocoaTweet::API
 
-
- - - - diff --git a/help/html/groupInterface_8h__dep__incl.map b/help/html/groupInterface_8h__dep__incl.map deleted file mode 100644 index 9ca0728..0000000 --- a/help/html/groupInterface_8h__dep__incl.map +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/help/html/groupInterface_8h__dep__incl.md5 b/help/html/groupInterface_8h__dep__incl.md5 deleted file mode 100644 index 3e157e8..0000000 --- a/help/html/groupInterface_8h__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -64ef1c2ed6f5d6a4714f5605a6149537 \ No newline at end of file diff --git a/help/html/groupInterface_8h__dep__incl.png b/help/html/groupInterface_8h__dep__incl.png deleted file mode 100644 index f92e3cb..0000000 Binary files a/help/html/groupInterface_8h__dep__incl.png and /dev/null differ diff --git a/help/html/groupInterface_8h__incl.map b/help/html/groupInterface_8h__incl.map deleted file mode 100644 index bc2c696..0000000 --- a/help/html/groupInterface_8h__incl.map +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/help/html/groupInterface_8h__incl.md5 b/help/html/groupInterface_8h__incl.md5 deleted file mode 100644 index 3d63548..0000000 --- a/help/html/groupInterface_8h__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -c9d895c8c0d97449f35814346a07d019 \ No newline at end of file diff --git a/help/html/groupInterface_8h__incl.png b/help/html/groupInterface_8h__incl.png deleted file mode 100644 index 7d25c4c..0000000 Binary files a/help/html/groupInterface_8h__incl.png and /dev/null differ diff --git a/help/html/groupInterface_8h_source.html b/help/html/groupInterface_8h_source.html deleted file mode 100644 index a385e8a..0000000 --- a/help/html/groupInterface_8h_source.html +++ /dev/null @@ -1,98 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api/interface/groupInterface.h Source File - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
groupInterface.h
-
-
-Go to the documentation of this file.
1 #ifndef COCOATWEET_API_INTERFACE_GROUPINTERFACE_H_
-
2 #define COCOATWEET_API_INTERFACE_GROUPINTERFACE_H_
-
3 
-
4 #include <memory>
- -
6 
-
7 namespace CocoaTweet::API {
- -
9 protected:
-
10  std::weak_ptr<CocoaTweet::OAuth::OAuth1> oauth_;
-
11 };
-
12 } // namespace CocoaTweet::API
-
13 
-
14 #endif
-
-
Definition: groupInterface.h:8
-
std::weak_ptr< CocoaTweet::OAuth::OAuth1 > oauth_
Definition: groupInterface.h:10
-
Definition: api.cc:3
- - - - - diff --git a/help/html/hierarchy.html b/help/html/hierarchy.html deleted file mode 100644 index 47b19e3..0000000 --- a/help/html/hierarchy.html +++ /dev/null @@ -1,116 +0,0 @@ - - - - - - - -CocoaTweet: Class Hierarchy - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
-
Class Hierarchy
-
-
-
-

Go to the graphical class hierarchy

-This inheritance list is sorted roughly, but not completely, alphabetically:
-
[detail level 123]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 CCocoaTweet::API::APITwitter API Entry Point
 Cexception
 CCocoaTweet::Exception::Exception
 CCocoaTweet::Exception::AuthenticateException
 CCocoaTweet::Exception::InvalidParameterException
 CCocoaTweet::Exception::RateLimitException
 CCocoaTweet::Exception::TokenInvalidException
 CCocoaTweet::Exception::TweetDuplicateException
 CCocoaTweet::Exception::TweetNotFoundException
 CCocoaTweet::Exception::TweetTooLongException
 CCocoaTweet::Exception::UnsupportedMediaTypeException
 CCocoaTweet::API::groupInterface
 CCocoaTweet::API::DirectMessages::DirectMessageEntory point for statuses/*
 CCocoaTweet::API::Favorites::Favorite
 CCocoaTweet::API::Medias::MediaEntory point for statuses/*
 CCocoaTweet::API::Statuses::StatusEntory point for statuses/*
 CCocoaTweet::API::Interface::HttpBase
 CCocoaTweet::API::Interface::HttpGetClass for Send request with POST method
 CCocoaTweet::API::Statuses::UserTimelineClass for using statuses/user_timeline endpoint
 CCocoaTweet::API::Interface::HttpPostClass for Send request with POST method
 CCocoaTweet::API::DirectMessages::NewClass for using statuses/update endpoint
 CCocoaTweet::API::Favorites::Create
 CCocoaTweet::API::Favorites::Destroy
 CCocoaTweet::API::Medias::UploadEntry point for using media/upload endpoint
 CCocoaTweet::API::Statuses::DestroyClass for using status/destroy:id endpoint
 CCocoaTweet::API::Statuses::Retweet
 CCocoaTweet::API::Statuses::Unretweet
 CCocoaTweet::API::Statuses::UpdateClass for using statuses/update endpoint
 CCocoaTweet::OAuth::Key
 CCocoaTweet::API::Model::MediaStoreData class for tweet object
 CCocoaTweet::OAuth::OAuth1
 CCocoaTweet::API::Statuses::Status::Options
 CCocoaTweet::API::Model::TweetData class for tweet object
 CCocoaTweet::API::Model::UserData class for tweet object
-
-
- - - - diff --git a/help/html/httpBase_8h.html b/help/html/httpBase_8h.html deleted file mode 100644 index 5d2dc3d..0000000 --- a/help/html/httpBase_8h.html +++ /dev/null @@ -1,154 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api/interface/httpBase.h File Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
httpBase.h File Reference
-
-
-
#include <functional>
-#include "cocoatweet/oauth/oauth.h"
-
-Include dependency graph for httpBase.h:
-
-
- - - - - - - - - -
-
-This graph shows which files directly or indirectly include this file:
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-

Go to the source code of this file.

- - - - -

-Classes

class  CocoaTweet::API::Interface::HttpBase
 
- - - - - - - -

-Namespaces

 CocoaTweet
 
 CocoaTweet::API
 
 CocoaTweet::API::Interface
 
-
- - - - diff --git a/help/html/httpBase_8h__dep__incl.map b/help/html/httpBase_8h__dep__incl.map deleted file mode 100644 index 4481fc3..0000000 --- a/help/html/httpBase_8h__dep__incl.map +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/help/html/httpBase_8h__dep__incl.md5 b/help/html/httpBase_8h__dep__incl.md5 deleted file mode 100644 index b75a70b..0000000 --- a/help/html/httpBase_8h__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -2a43de6f79989df06ecc63da8f0cc10e \ No newline at end of file diff --git a/help/html/httpBase_8h__dep__incl.png b/help/html/httpBase_8h__dep__incl.png deleted file mode 100644 index 7e1204c..0000000 Binary files a/help/html/httpBase_8h__dep__incl.png and /dev/null differ diff --git a/help/html/httpBase_8h__incl.map b/help/html/httpBase_8h__incl.map deleted file mode 100644 index a363b48..0000000 --- a/help/html/httpBase_8h__incl.map +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/help/html/httpBase_8h__incl.md5 b/help/html/httpBase_8h__incl.md5 deleted file mode 100644 index 8c25e93..0000000 --- a/help/html/httpBase_8h__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -53d18f35cf4bdc352d90643dc0b6c0ec \ No newline at end of file diff --git a/help/html/httpBase_8h__incl.png b/help/html/httpBase_8h__incl.png deleted file mode 100644 index 060522c..0000000 Binary files a/help/html/httpBase_8h__incl.png and /dev/null differ diff --git a/help/html/httpBase_8h_source.html b/help/html/httpBase_8h_source.html deleted file mode 100644 index 5526742..0000000 --- a/help/html/httpBase_8h_source.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api/interface/httpBase.h Source File - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
httpBase.h
-
-
-Go to the documentation of this file.
1 #ifndef COCOATWEET_API_INTERFACE_HTTPBASE_H_
-
2 #define COCOATWEET_API_INTERFACE_HTTPBASE_H_
-
3 
-
4 #include <functional>
- -
6 
- -
8 class HttpBase {
-
9 public:
-
10 protected:
-
11  std::weak_ptr<CocoaTweet::OAuth::OAuth1> oauth_;
-
12  std::map<std::string, std::string> bodyParam_;
-
13  std::string url_;
-
14  std::string contentType_;
-
15  virtual void process(std::weak_ptr<CocoaTweet::OAuth::OAuth1> _oauth,
-
16  std::function<void(const std::string&)> _callback) = 0;
-
17  static size_t curlCallback_(char* _ptr, size_t _size, size_t _nmemb, std::string* _stream) {
-
18  int realsize = _size * _nmemb;
-
19  _stream->append(_ptr, realsize);
-
20  return realsize;
-
21  }
-
22 };
-
23 } // namespace CocoaTweet::API::Interface
-
24 
-
25 #endif
-
-
virtual void process(std::weak_ptr< CocoaTweet::OAuth::OAuth1 > _oauth, std::function< void(const std::string &)> _callback)=0
-
Definition: httpBase.h:7
-
std::weak_ptr< CocoaTweet::OAuth::OAuth1 > oauth_
Definition: httpBase.h:11
-
Definition: httpBase.h:8
-
std::string url_
Definition: httpBase.h:13
-
std::string contentType_
Definition: httpBase.h:14
-
static size_t curlCallback_(char *_ptr, size_t _size, size_t _nmemb, std::string *_stream)
Definition: httpBase.h:17
- -
std::map< std::string, std::string > bodyParam_
Definition: httpBase.h:12
- - - - diff --git a/help/html/httpGet_8cc.html b/help/html/httpGet_8cc.html deleted file mode 100644 index e6473a7..0000000 --- a/help/html/httpGet_8cc.html +++ /dev/null @@ -1,140 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api/interface/httpGet.cc File Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
httpGet.cc File Reference
-
-
-
#include <cocoatweet/api/interface/httpGet.h>
-#include "cocoatweet/util/util.h"
-#include <cocoatweet/exception/tweetNotFoundException.h>
-#include <cocoatweet/exception/authenticateException.h>
-#include <cocoatweet/exception/tweetDuplicateException.h>
-#include <cocoatweet/exception/tweetTooLongException.h>
-#include <cocoatweet/exception/rateLimitException.h>
-#include <cocoatweet/exception/tokenInvalidException.h>
-#include "nlohmann/json.hpp"
-#include <iterator>
-#include <memory>
-#include <vector>
-#include <sstream>
-#include <stdexcept>
-#include <curl/curl.h>
-#include <iostream>
-
-Include dependency graph for httpGet.cc:
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- - - - - - - -

-Namespaces

 CocoaTweet
 
 CocoaTweet::API
 
 CocoaTweet::API::Interface
 
-
- - - - diff --git a/help/html/httpGet_8cc__incl.map b/help/html/httpGet_8cc__incl.map deleted file mode 100644 index aa7b157..0000000 --- a/help/html/httpGet_8cc__incl.map +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/help/html/httpGet_8cc__incl.md5 b/help/html/httpGet_8cc__incl.md5 deleted file mode 100644 index 11fbd48..0000000 --- a/help/html/httpGet_8cc__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -a7a1167248882a1c5827678156f6c1ba \ No newline at end of file diff --git a/help/html/httpGet_8cc__incl.png b/help/html/httpGet_8cc__incl.png deleted file mode 100644 index 86e85fe..0000000 Binary files a/help/html/httpGet_8cc__incl.png and /dev/null differ diff --git a/help/html/httpGet_8h.html b/help/html/httpGet_8h.html deleted file mode 100644 index 32c2151..0000000 --- a/help/html/httpGet_8h.html +++ /dev/null @@ -1,131 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api/interface/httpGet.h File Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
httpGet.h File Reference
-
-
-
#include <functional>
-#include "cocoatweet/oauth/oauth.h"
-#include <cocoatweet/api/interface/httpBase.h>
-
-Include dependency graph for httpGet.h:
-
-
- - - - - - - - - - -
-
-This graph shows which files directly or indirectly include this file:
-
-
- - - - - - - -
-
-

Go to the source code of this file.

- - - - - -

-Classes

class  CocoaTweet::API::Interface::HttpGet
 class for Send request with POST method More...
 
- - - - - - - -

-Namespaces

 CocoaTweet
 
 CocoaTweet::API
 
 CocoaTweet::API::Interface
 
-
- - - - diff --git a/help/html/httpGet_8h__dep__incl.map b/help/html/httpGet_8h__dep__incl.map deleted file mode 100644 index 30fa308..0000000 --- a/help/html/httpGet_8h__dep__incl.map +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/help/html/httpGet_8h__dep__incl.md5 b/help/html/httpGet_8h__dep__incl.md5 deleted file mode 100644 index c03d734..0000000 --- a/help/html/httpGet_8h__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -3a177ff6d01a80bf1b88bdf3952943da \ No newline at end of file diff --git a/help/html/httpGet_8h__dep__incl.png b/help/html/httpGet_8h__dep__incl.png deleted file mode 100644 index 238a709..0000000 Binary files a/help/html/httpGet_8h__dep__incl.png and /dev/null differ diff --git a/help/html/httpGet_8h__incl.map b/help/html/httpGet_8h__incl.map deleted file mode 100644 index e787005..0000000 --- a/help/html/httpGet_8h__incl.map +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/help/html/httpGet_8h__incl.md5 b/help/html/httpGet_8h__incl.md5 deleted file mode 100644 index d252568..0000000 --- a/help/html/httpGet_8h__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -6bee47fb76c33c13e8f1f89878fe5e71 \ No newline at end of file diff --git a/help/html/httpGet_8h__incl.png b/help/html/httpGet_8h__incl.png deleted file mode 100644 index 4da811a..0000000 Binary files a/help/html/httpGet_8h__incl.png and /dev/null differ diff --git a/help/html/httpGet_8h_source.html b/help/html/httpGet_8h_source.html deleted file mode 100644 index 1755c0d..0000000 --- a/help/html/httpGet_8h_source.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api/interface/httpGet.h Source File - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
httpGet.h
-
-
-Go to the documentation of this file.
1 #ifndef COCOATWEET_API_INTERFACE_HTTPGET_H_
-
2 #define COCOATWEET_API_INTERFACE_HTTPGET_H_
-
3 
-
4 #include <functional>
- - -
7 
- -
10 class HttpGet : public virtual HttpBase {
-
11 public:
-
12 protected:
-
18  void process(std::weak_ptr<CocoaTweet::OAuth::OAuth1> _oauth,
-
19  std::function<void(const std::string&)> _callback);
-
20 };
-
21 } // namespace CocoaTweet::API::Interface
-
22 
-
23 #endif
-
- -
Definition: httpBase.h:7
-
Definition: httpBase.h:8
-
class for Send request with POST method
Definition: httpGet.h:10
-
void process(std::weak_ptr< CocoaTweet::OAuth::OAuth1 > _oauth, std::function< void(const std::string &)> _callback)
Send HTTP/POST using OAuth object.
Definition: httpGet.cc:24
- - - - - diff --git a/help/html/httpPost_8cc.html b/help/html/httpPost_8cc.html deleted file mode 100644 index ecc3c79..0000000 --- a/help/html/httpPost_8cc.html +++ /dev/null @@ -1,140 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api/interface/httpPost.cc File Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
httpPost.cc File Reference
-
-
-
#include <cocoatweet/api/interface/httpPost.h>
-#include "cocoatweet/util/util.h"
-#include <cocoatweet/exception/tweetNotFoundException.h>
-#include <cocoatweet/exception/authenticateException.h>
-#include <cocoatweet/exception/tweetDuplicateException.h>
-#include <cocoatweet/exception/tweetTooLongException.h>
-#include <cocoatweet/exception/rateLimitException.h>
-#include <cocoatweet/exception/tokenInvalidException.h>
-#include "nlohmann/json.hpp"
-#include <iterator>
-#include <memory>
-#include <vector>
-#include <sstream>
-#include <stdexcept>
-#include <curl/curl.h>
-#include <iostream>
-
-Include dependency graph for httpPost.cc:
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- - - - - - - -

-Namespaces

 CocoaTweet
 
 CocoaTweet::API
 
 CocoaTweet::API::Interface
 
-
- - - - diff --git a/help/html/httpPost_8cc__incl.map b/help/html/httpPost_8cc__incl.map deleted file mode 100644 index b4a0d84..0000000 --- a/help/html/httpPost_8cc__incl.map +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/help/html/httpPost_8cc__incl.md5 b/help/html/httpPost_8cc__incl.md5 deleted file mode 100644 index 4200e01..0000000 --- a/help/html/httpPost_8cc__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -c186097b25353a1a26d17b29ba8d0096 \ No newline at end of file diff --git a/help/html/httpPost_8cc__incl.png b/help/html/httpPost_8cc__incl.png deleted file mode 100644 index 19694af..0000000 Binary files a/help/html/httpPost_8cc__incl.png and /dev/null differ diff --git a/help/html/httpPost_8h.html b/help/html/httpPost_8h.html deleted file mode 100644 index 514d8e7..0000000 --- a/help/html/httpPost_8h.html +++ /dev/null @@ -1,152 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api/interface/httpPost.h File Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
httpPost.h File Reference
-
-
-
#include <functional>
-#include "cocoatweet/oauth/oauth.h"
-#include <cocoatweet/api/interface/httpBase.h>
-
-Include dependency graph for httpPost.h:
-
-
- - - - - - - - - - -
-
-This graph shows which files directly or indirectly include this file:
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-

Go to the source code of this file.

- - - - - -

-Classes

class  CocoaTweet::API::Interface::HttpPost
 class for Send request with POST method More...
 
- - - - - - - -

-Namespaces

 CocoaTweet
 
 CocoaTweet::API
 
 CocoaTweet::API::Interface
 
-
- - - - diff --git a/help/html/httpPost_8h__dep__incl.map b/help/html/httpPost_8h__dep__incl.map deleted file mode 100644 index 14e8b50..0000000 --- a/help/html/httpPost_8h__dep__incl.map +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/help/html/httpPost_8h__dep__incl.md5 b/help/html/httpPost_8h__dep__incl.md5 deleted file mode 100644 index 8b858e8..0000000 --- a/help/html/httpPost_8h__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -9a123dedafab809e669c948ba484a1f8 \ No newline at end of file diff --git a/help/html/httpPost_8h__dep__incl.png b/help/html/httpPost_8h__dep__incl.png deleted file mode 100644 index d1d2c89..0000000 Binary files a/help/html/httpPost_8h__dep__incl.png and /dev/null differ diff --git a/help/html/httpPost_8h__incl.map b/help/html/httpPost_8h__incl.map deleted file mode 100644 index a995c18..0000000 --- a/help/html/httpPost_8h__incl.map +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/help/html/httpPost_8h__incl.md5 b/help/html/httpPost_8h__incl.md5 deleted file mode 100644 index 88a276e..0000000 --- a/help/html/httpPost_8h__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -c89888010434a1c0931ab065278186b1 \ No newline at end of file diff --git a/help/html/httpPost_8h__incl.png b/help/html/httpPost_8h__incl.png deleted file mode 100644 index 5f7fc9e..0000000 Binary files a/help/html/httpPost_8h__incl.png and /dev/null differ diff --git a/help/html/httpPost_8h_source.html b/help/html/httpPost_8h_source.html deleted file mode 100644 index dff6d91..0000000 --- a/help/html/httpPost_8h_source.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api/interface/httpPost.h Source File - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
httpPost.h
-
-
-Go to the documentation of this file.
1 #ifndef COCOATWEET_API_INTERFACE_HTTPPOST_H_
-
2 #define COCOATWEET_API_INTERFACE_HTTPPOST_H_
-
3 
-
4 #include <functional>
- - -
7 
- -
10 class HttpPost : public HttpBase {
-
11 public:
-
12 protected:
-
18  void process(std::weak_ptr<CocoaTweet::OAuth::OAuth1> _oauth,
-
19  std::function<void(const std::string&)> _callback);
-
20 };
-
21 } // namespace CocoaTweet::API::Interface
-
22 
-
23 #endif
-
- -
class for Send request with POST method
Definition: httpPost.h:10
-
Definition: httpBase.h:7
-
Definition: httpBase.h:8
-
void process(std::weak_ptr< CocoaTweet::OAuth::OAuth1 > _oauth, std::function< void(const std::string &)> _callback)
Send HTTP/POST using OAuth object.
Definition: httpPost.cc:24
- - - - - diff --git a/help/html/index.html b/help/html/index.html deleted file mode 100644 index 161e70e..0000000 --- a/help/html/index.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - -CocoaTweet: Main Page - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
-
CocoaTweet Documentation
-
-
-
- - - - diff --git a/help/html/inherit_graph_0.map b/help/html/inherit_graph_0.map deleted file mode 100644 index a279d27..0000000 --- a/help/html/inherit_graph_0.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/help/html/inherit_graph_0.md5 b/help/html/inherit_graph_0.md5 deleted file mode 100644 index ea6de6a..0000000 --- a/help/html/inherit_graph_0.md5 +++ /dev/null @@ -1 +0,0 @@ -8c9650b0640341b796e72c78f2af31bd \ No newline at end of file diff --git a/help/html/inherit_graph_0.png b/help/html/inherit_graph_0.png deleted file mode 100644 index f14f5d0..0000000 Binary files a/help/html/inherit_graph_0.png and /dev/null differ diff --git a/help/html/inherit_graph_1.map b/help/html/inherit_graph_1.map deleted file mode 100644 index c9166d3..0000000 --- a/help/html/inherit_graph_1.map +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/help/html/inherit_graph_1.md5 b/help/html/inherit_graph_1.md5 deleted file mode 100644 index 07067fb..0000000 --- a/help/html/inherit_graph_1.md5 +++ /dev/null @@ -1 +0,0 @@ -60fbd2b397c14777515d23198202215a \ No newline at end of file diff --git a/help/html/inherit_graph_1.png b/help/html/inherit_graph_1.png deleted file mode 100644 index a329517..0000000 Binary files a/help/html/inherit_graph_1.png and /dev/null differ diff --git a/help/html/inherit_graph_10.map b/help/html/inherit_graph_10.map deleted file mode 100644 index 0ac8fa4..0000000 --- a/help/html/inherit_graph_10.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/help/html/inherit_graph_10.md5 b/help/html/inherit_graph_10.md5 deleted file mode 100644 index a724733..0000000 --- a/help/html/inherit_graph_10.md5 +++ /dev/null @@ -1 +0,0 @@ -4bc6d322de21bce09fa60632f0f809f5 \ No newline at end of file diff --git a/help/html/inherit_graph_10.png b/help/html/inherit_graph_10.png deleted file mode 100644 index 290b0ea..0000000 Binary files a/help/html/inherit_graph_10.png and /dev/null differ diff --git a/help/html/inherit_graph_100.map b/help/html/inherit_graph_100.map deleted file mode 100644 index 2a30f15..0000000 --- a/help/html/inherit_graph_100.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/help/html/inherit_graph_100.md5 b/help/html/inherit_graph_100.md5 deleted file mode 100644 index d0e477b..0000000 --- a/help/html/inherit_graph_100.md5 +++ /dev/null @@ -1 +0,0 @@ -25e3ae7253884badc948c1134ed53a45 \ No newline at end of file diff --git a/help/html/inherit_graph_100.png b/help/html/inherit_graph_100.png deleted file mode 100644 index 2fbccb0..0000000 Binary files a/help/html/inherit_graph_100.png and /dev/null differ diff --git a/help/html/inherit_graph_101.map b/help/html/inherit_graph_101.map deleted file mode 100644 index 0be404f..0000000 --- a/help/html/inherit_graph_101.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/help/html/inherit_graph_101.md5 b/help/html/inherit_graph_101.md5 deleted file mode 100644 index 5c9725f..0000000 --- a/help/html/inherit_graph_101.md5 +++ /dev/null @@ -1 +0,0 @@ -fc6eefa966c1d9663b535c0eb134a4a3 \ No newline at end of file diff --git a/help/html/inherit_graph_101.png b/help/html/inherit_graph_101.png deleted file mode 100644 index 7e034b4..0000000 Binary files a/help/html/inherit_graph_101.png and /dev/null differ diff --git a/help/html/inherit_graph_102.map b/help/html/inherit_graph_102.map deleted file mode 100644 index 3ee6d23..0000000 --- a/help/html/inherit_graph_102.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/help/html/inherit_graph_102.md5 b/help/html/inherit_graph_102.md5 deleted file mode 100644 index 243ec17..0000000 --- a/help/html/inherit_graph_102.md5 +++ /dev/null @@ -1 +0,0 @@ -c85399c2954ed7dad908c01338edebd7 \ No newline at end of file diff --git a/help/html/inherit_graph_102.png b/help/html/inherit_graph_102.png deleted file mode 100644 index 1ac96ea..0000000 Binary files a/help/html/inherit_graph_102.png and /dev/null differ diff --git a/help/html/inherit_graph_103.map b/help/html/inherit_graph_103.map deleted file mode 100644 index a92ebf3..0000000 --- a/help/html/inherit_graph_103.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/help/html/inherit_graph_103.md5 b/help/html/inherit_graph_103.md5 deleted file mode 100644 index ba4ff25..0000000 --- a/help/html/inherit_graph_103.md5 +++ /dev/null @@ -1 +0,0 @@ -9c9c3df6c7be9eda31a89a597bf7b541 \ No newline at end of file diff --git a/help/html/inherit_graph_103.png b/help/html/inherit_graph_103.png deleted file mode 100644 index a44e98a..0000000 Binary files a/help/html/inherit_graph_103.png and /dev/null differ diff --git a/help/html/inherit_graph_104.map b/help/html/inherit_graph_104.map deleted file mode 100644 index f711e38..0000000 --- a/help/html/inherit_graph_104.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/help/html/inherit_graph_104.md5 b/help/html/inherit_graph_104.md5 deleted file mode 100644 index 14bcd97..0000000 --- a/help/html/inherit_graph_104.md5 +++ /dev/null @@ -1 +0,0 @@ -79df0fce6f01d85746163bde7213e86b \ No newline at end of file diff --git a/help/html/inherit_graph_104.png b/help/html/inherit_graph_104.png deleted file mode 100644 index 9ad7719..0000000 Binary files a/help/html/inherit_graph_104.png and /dev/null differ diff --git a/help/html/inherit_graph_105.map b/help/html/inherit_graph_105.map deleted file mode 100644 index 25132f9..0000000 --- a/help/html/inherit_graph_105.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/help/html/inherit_graph_105.md5 b/help/html/inherit_graph_105.md5 deleted file mode 100644 index a2d356f..0000000 --- a/help/html/inherit_graph_105.md5 +++ /dev/null @@ -1 +0,0 @@ -41f8ea59cf5fe9d53dbb9a1009d3ff10 \ No newline at end of file diff --git a/help/html/inherit_graph_105.png b/help/html/inherit_graph_105.png deleted file mode 100644 index e2fdefa..0000000 Binary files a/help/html/inherit_graph_105.png and /dev/null differ diff --git a/help/html/inherit_graph_106.map b/help/html/inherit_graph_106.map deleted file mode 100644 index bd7b600..0000000 --- a/help/html/inherit_graph_106.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/help/html/inherit_graph_106.md5 b/help/html/inherit_graph_106.md5 deleted file mode 100644 index 5b9f836..0000000 --- a/help/html/inherit_graph_106.md5 +++ /dev/null @@ -1 +0,0 @@ -177591b65edbf3e237f09812b59d483d \ No newline at end of file diff --git a/help/html/inherit_graph_106.png b/help/html/inherit_graph_106.png deleted file mode 100644 index 8b56c3e..0000000 Binary files a/help/html/inherit_graph_106.png and /dev/null differ diff --git a/help/html/inherit_graph_107.map b/help/html/inherit_graph_107.map deleted file mode 100644 index 766bcc5..0000000 --- a/help/html/inherit_graph_107.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/help/html/inherit_graph_107.md5 b/help/html/inherit_graph_107.md5 deleted file mode 100644 index 74f93b8..0000000 --- a/help/html/inherit_graph_107.md5 +++ /dev/null @@ -1 +0,0 @@ -523f63fe9734c2631d524a4cdc856cca \ No newline at end of file diff --git a/help/html/inherit_graph_107.png b/help/html/inherit_graph_107.png deleted file mode 100644 index a6376f7..0000000 Binary files a/help/html/inherit_graph_107.png and /dev/null differ diff --git a/help/html/inherit_graph_11.map b/help/html/inherit_graph_11.map deleted file mode 100644 index 9b23744..0000000 --- a/help/html/inherit_graph_11.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/help/html/inherit_graph_11.md5 b/help/html/inherit_graph_11.md5 deleted file mode 100644 index ee6b1c3..0000000 --- a/help/html/inherit_graph_11.md5 +++ /dev/null @@ -1 +0,0 @@ -c5f59e94adc6fdacb74eaa7a9b29331f \ No newline at end of file diff --git a/help/html/inherit_graph_11.png b/help/html/inherit_graph_11.png deleted file mode 100644 index 8220ecc..0000000 Binary files a/help/html/inherit_graph_11.png and /dev/null differ diff --git a/help/html/inherit_graph_12.map b/help/html/inherit_graph_12.map deleted file mode 100644 index 94b1322..0000000 --- a/help/html/inherit_graph_12.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/help/html/inherit_graph_12.md5 b/help/html/inherit_graph_12.md5 deleted file mode 100644 index 9da610f..0000000 --- a/help/html/inherit_graph_12.md5 +++ /dev/null @@ -1 +0,0 @@ -76e52ca05ade81dd14bdd5969b0140d5 \ No newline at end of file diff --git a/help/html/inherit_graph_12.png b/help/html/inherit_graph_12.png deleted file mode 100644 index 2730649..0000000 Binary files a/help/html/inherit_graph_12.png and /dev/null differ diff --git a/help/html/inherit_graph_13.map b/help/html/inherit_graph_13.map deleted file mode 100644 index 796a4be..0000000 --- a/help/html/inherit_graph_13.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/help/html/inherit_graph_13.md5 b/help/html/inherit_graph_13.md5 deleted file mode 100644 index be8a89d..0000000 --- a/help/html/inherit_graph_13.md5 +++ /dev/null @@ -1 +0,0 @@ -e33936de4befb1e77ad589e01884f449 \ No newline at end of file diff --git a/help/html/inherit_graph_13.png b/help/html/inherit_graph_13.png deleted file mode 100644 index bdd32d3..0000000 Binary files a/help/html/inherit_graph_13.png and /dev/null differ diff --git a/help/html/inherit_graph_14.map b/help/html/inherit_graph_14.map deleted file mode 100644 index a48754e..0000000 --- a/help/html/inherit_graph_14.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/help/html/inherit_graph_14.md5 b/help/html/inherit_graph_14.md5 deleted file mode 100644 index 320ce2e..0000000 --- a/help/html/inherit_graph_14.md5 +++ /dev/null @@ -1 +0,0 @@ -d857d4bd2a9900bedf3687fe66a64e74 \ No newline at end of file diff --git a/help/html/inherit_graph_14.png b/help/html/inherit_graph_14.png deleted file mode 100644 index 6011cda..0000000 Binary files a/help/html/inherit_graph_14.png and /dev/null differ diff --git a/help/html/inherit_graph_15.map b/help/html/inherit_graph_15.map deleted file mode 100644 index 5df6528..0000000 --- a/help/html/inherit_graph_15.map +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/help/html/inherit_graph_15.md5 b/help/html/inherit_graph_15.md5 deleted file mode 100644 index 99230ff..0000000 --- a/help/html/inherit_graph_15.md5 +++ /dev/null @@ -1 +0,0 @@ -b2a4cc089e107d2f6760e73f1f6a2278 \ No newline at end of file diff --git a/help/html/inherit_graph_15.png b/help/html/inherit_graph_15.png deleted file mode 100644 index 3c07a78..0000000 Binary files a/help/html/inherit_graph_15.png and /dev/null differ diff --git a/help/html/inherit_graph_16.map b/help/html/inherit_graph_16.map deleted file mode 100644 index 1c8face..0000000 --- a/help/html/inherit_graph_16.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/help/html/inherit_graph_16.md5 b/help/html/inherit_graph_16.md5 deleted file mode 100644 index c33e230..0000000 --- a/help/html/inherit_graph_16.md5 +++ /dev/null @@ -1 +0,0 @@ -f40546a11f693e37f7b169cd011a8e5d \ No newline at end of file diff --git a/help/html/inherit_graph_16.png b/help/html/inherit_graph_16.png deleted file mode 100644 index e1ce7f1..0000000 Binary files a/help/html/inherit_graph_16.png and /dev/null differ diff --git a/help/html/inherit_graph_17.map b/help/html/inherit_graph_17.map deleted file mode 100644 index 46e5141..0000000 --- a/help/html/inherit_graph_17.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/help/html/inherit_graph_17.md5 b/help/html/inherit_graph_17.md5 deleted file mode 100644 index e1d5465..0000000 --- a/help/html/inherit_graph_17.md5 +++ /dev/null @@ -1 +0,0 @@ -4c6360116598838d5ada3f1bb8007af8 \ No newline at end of file diff --git a/help/html/inherit_graph_17.png b/help/html/inherit_graph_17.png deleted file mode 100644 index 0b2eb02..0000000 Binary files a/help/html/inherit_graph_17.png and /dev/null differ diff --git a/help/html/inherit_graph_18.map b/help/html/inherit_graph_18.map deleted file mode 100644 index 6b89a9f..0000000 --- a/help/html/inherit_graph_18.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/help/html/inherit_graph_18.md5 b/help/html/inherit_graph_18.md5 deleted file mode 100644 index 9639893..0000000 --- a/help/html/inherit_graph_18.md5 +++ /dev/null @@ -1 +0,0 @@ -fc9d73cb7138f80629248e615f4efc3d \ No newline at end of file diff --git a/help/html/inherit_graph_18.png b/help/html/inherit_graph_18.png deleted file mode 100644 index 7b9c8fc..0000000 Binary files a/help/html/inherit_graph_18.png and /dev/null differ diff --git a/help/html/inherit_graph_19.map b/help/html/inherit_graph_19.map deleted file mode 100644 index d25b846..0000000 --- a/help/html/inherit_graph_19.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/help/html/inherit_graph_19.md5 b/help/html/inherit_graph_19.md5 deleted file mode 100644 index fc72b08..0000000 --- a/help/html/inherit_graph_19.md5 +++ /dev/null @@ -1 +0,0 @@ -c10be4267c39df775bb9350ec79e336a \ No newline at end of file diff --git a/help/html/inherit_graph_19.png b/help/html/inherit_graph_19.png deleted file mode 100644 index 24949cd..0000000 Binary files a/help/html/inherit_graph_19.png and /dev/null differ diff --git a/help/html/inherit_graph_2.map b/help/html/inherit_graph_2.map deleted file mode 100644 index 5a6be6b..0000000 --- a/help/html/inherit_graph_2.map +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/help/html/inherit_graph_2.md5 b/help/html/inherit_graph_2.md5 deleted file mode 100644 index 8c73d1f..0000000 --- a/help/html/inherit_graph_2.md5 +++ /dev/null @@ -1 +0,0 @@ -91bb947a3913130651535ba58486be81 \ No newline at end of file diff --git a/help/html/inherit_graph_2.png b/help/html/inherit_graph_2.png deleted file mode 100644 index ab345d6..0000000 Binary files a/help/html/inherit_graph_2.png and /dev/null differ diff --git a/help/html/inherit_graph_20.map b/help/html/inherit_graph_20.map deleted file mode 100644 index 56f69a1..0000000 --- a/help/html/inherit_graph_20.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/help/html/inherit_graph_20.md5 b/help/html/inherit_graph_20.md5 deleted file mode 100644 index 8c2648c..0000000 --- a/help/html/inherit_graph_20.md5 +++ /dev/null @@ -1 +0,0 @@ -a0c495476e93670a229b46432fe4b82c \ No newline at end of file diff --git a/help/html/inherit_graph_20.png b/help/html/inherit_graph_20.png deleted file mode 100644 index fdb3cf2..0000000 Binary files a/help/html/inherit_graph_20.png and /dev/null differ diff --git a/help/html/inherit_graph_21.map b/help/html/inherit_graph_21.map deleted file mode 100644 index c6bfdf1..0000000 --- a/help/html/inherit_graph_21.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/help/html/inherit_graph_21.md5 b/help/html/inherit_graph_21.md5 deleted file mode 100644 index d14bd48..0000000 --- a/help/html/inherit_graph_21.md5 +++ /dev/null @@ -1 +0,0 @@ -e53a4f6c3a542f99c6e8aad07d428162 \ No newline at end of file diff --git a/help/html/inherit_graph_21.png b/help/html/inherit_graph_21.png deleted file mode 100644 index 8618f5a..0000000 Binary files a/help/html/inherit_graph_21.png and /dev/null differ diff --git a/help/html/inherit_graph_22.map b/help/html/inherit_graph_22.map deleted file mode 100644 index 9e2738b..0000000 --- a/help/html/inherit_graph_22.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/help/html/inherit_graph_22.md5 b/help/html/inherit_graph_22.md5 deleted file mode 100644 index b3e1dad..0000000 --- a/help/html/inherit_graph_22.md5 +++ /dev/null @@ -1 +0,0 @@ -d41f2a1dc3171c7e64cc633c2a6460f2 \ No newline at end of file diff --git a/help/html/inherit_graph_22.png b/help/html/inherit_graph_22.png deleted file mode 100644 index 24e1364..0000000 Binary files a/help/html/inherit_graph_22.png and /dev/null differ diff --git a/help/html/inherit_graph_23.map b/help/html/inherit_graph_23.map deleted file mode 100644 index de0e31e..0000000 --- a/help/html/inherit_graph_23.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/help/html/inherit_graph_23.md5 b/help/html/inherit_graph_23.md5 deleted file mode 100644 index c7e4e61..0000000 --- a/help/html/inherit_graph_23.md5 +++ /dev/null @@ -1 +0,0 @@ -50fe0b04554ac709dc0d9f07c87b73cd \ No newline at end of file diff --git a/help/html/inherit_graph_23.png b/help/html/inherit_graph_23.png deleted file mode 100644 index 5e54418..0000000 Binary files a/help/html/inherit_graph_23.png and /dev/null differ diff --git a/help/html/inherit_graph_24.map b/help/html/inherit_graph_24.map deleted file mode 100644 index 1087c97..0000000 --- a/help/html/inherit_graph_24.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/help/html/inherit_graph_24.md5 b/help/html/inherit_graph_24.md5 deleted file mode 100644 index 30e8f0a..0000000 --- a/help/html/inherit_graph_24.md5 +++ /dev/null @@ -1 +0,0 @@ -90f52300987e2766bda7af2a8405a970 \ No newline at end of file diff --git a/help/html/inherit_graph_24.png b/help/html/inherit_graph_24.png deleted file mode 100644 index 318ec6a..0000000 Binary files a/help/html/inherit_graph_24.png and /dev/null differ diff --git a/help/html/inherit_graph_25.map b/help/html/inherit_graph_25.map deleted file mode 100644 index 8edccee..0000000 --- a/help/html/inherit_graph_25.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/help/html/inherit_graph_25.md5 b/help/html/inherit_graph_25.md5 deleted file mode 100644 index f55daad..0000000 --- a/help/html/inherit_graph_25.md5 +++ /dev/null @@ -1 +0,0 @@ -837a05e2ebb7600f034aa7df1717f418 \ No newline at end of file diff --git a/help/html/inherit_graph_25.png b/help/html/inherit_graph_25.png deleted file mode 100644 index aa65796..0000000 Binary files a/help/html/inherit_graph_25.png and /dev/null differ diff --git a/help/html/inherit_graph_26.map b/help/html/inherit_graph_26.map deleted file mode 100644 index 53ffd54..0000000 --- a/help/html/inherit_graph_26.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/help/html/inherit_graph_26.md5 b/help/html/inherit_graph_26.md5 deleted file mode 100644 index c629bd6..0000000 --- a/help/html/inherit_graph_26.md5 +++ /dev/null @@ -1 +0,0 @@ -d151e4df36887ad6bdf015d851466bcb \ No newline at end of file diff --git a/help/html/inherit_graph_26.png b/help/html/inherit_graph_26.png deleted file mode 100644 index 3aed33d..0000000 Binary files a/help/html/inherit_graph_26.png and /dev/null differ diff --git a/help/html/inherit_graph_27.map b/help/html/inherit_graph_27.map deleted file mode 100644 index 6017130..0000000 --- a/help/html/inherit_graph_27.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/help/html/inherit_graph_27.md5 b/help/html/inherit_graph_27.md5 deleted file mode 100644 index b6a5e64..0000000 --- a/help/html/inherit_graph_27.md5 +++ /dev/null @@ -1 +0,0 @@ -e5c4a6d0b3954be842af16c83ad7d1c6 \ No newline at end of file diff --git a/help/html/inherit_graph_27.png b/help/html/inherit_graph_27.png deleted file mode 100644 index 9828801..0000000 Binary files a/help/html/inherit_graph_27.png and /dev/null differ diff --git a/help/html/inherit_graph_28.map b/help/html/inherit_graph_28.map deleted file mode 100644 index f019518..0000000 --- a/help/html/inherit_graph_28.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/help/html/inherit_graph_28.md5 b/help/html/inherit_graph_28.md5 deleted file mode 100644 index 8daa6e2..0000000 --- a/help/html/inherit_graph_28.md5 +++ /dev/null @@ -1 +0,0 @@ -108b11e176c84d515b6ae0fd5bc4e048 \ No newline at end of file diff --git a/help/html/inherit_graph_28.png b/help/html/inherit_graph_28.png deleted file mode 100644 index dbfded8..0000000 Binary files a/help/html/inherit_graph_28.png and /dev/null differ diff --git a/help/html/inherit_graph_29.map b/help/html/inherit_graph_29.map deleted file mode 100644 index a6e0b52..0000000 --- a/help/html/inherit_graph_29.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/help/html/inherit_graph_29.md5 b/help/html/inherit_graph_29.md5 deleted file mode 100644 index 98d5332..0000000 --- a/help/html/inherit_graph_29.md5 +++ /dev/null @@ -1 +0,0 @@ -e39307dad0243ac9e8ff30b0ddfac934 \ No newline at end of file diff --git a/help/html/inherit_graph_29.png b/help/html/inherit_graph_29.png deleted file mode 100644 index 4fa5670..0000000 Binary files a/help/html/inherit_graph_29.png and /dev/null differ diff --git a/help/html/inherit_graph_3.map b/help/html/inherit_graph_3.map deleted file mode 100644 index b3c82a7..0000000 --- a/help/html/inherit_graph_3.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/help/html/inherit_graph_3.md5 b/help/html/inherit_graph_3.md5 deleted file mode 100644 index 16e3b2f..0000000 --- a/help/html/inherit_graph_3.md5 +++ /dev/null @@ -1 +0,0 @@ -57f9b40ef3643b848624396e07753926 \ No newline at end of file diff --git a/help/html/inherit_graph_3.png b/help/html/inherit_graph_3.png deleted file mode 100644 index 61af22f..0000000 Binary files a/help/html/inherit_graph_3.png and /dev/null differ diff --git a/help/html/inherit_graph_30.map b/help/html/inherit_graph_30.map deleted file mode 100644 index 186c86c..0000000 --- a/help/html/inherit_graph_30.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/help/html/inherit_graph_30.md5 b/help/html/inherit_graph_30.md5 deleted file mode 100644 index 254e147..0000000 --- a/help/html/inherit_graph_30.md5 +++ /dev/null @@ -1 +0,0 @@ -868dde8e5637b094cd00da514221f008 \ No newline at end of file diff --git a/help/html/inherit_graph_30.png b/help/html/inherit_graph_30.png deleted file mode 100644 index dffcd13..0000000 Binary files a/help/html/inherit_graph_30.png and /dev/null differ diff --git a/help/html/inherit_graph_31.map b/help/html/inherit_graph_31.map deleted file mode 100644 index 9a5113d..0000000 --- a/help/html/inherit_graph_31.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/help/html/inherit_graph_31.md5 b/help/html/inherit_graph_31.md5 deleted file mode 100644 index 95e847f..0000000 --- a/help/html/inherit_graph_31.md5 +++ /dev/null @@ -1 +0,0 @@ -2715fcb1a1bceed7fc0f00564e642c47 \ No newline at end of file diff --git a/help/html/inherit_graph_31.png b/help/html/inherit_graph_31.png deleted file mode 100644 index 61ad716..0000000 Binary files a/help/html/inherit_graph_31.png and /dev/null differ diff --git a/help/html/inherit_graph_32.map b/help/html/inherit_graph_32.map deleted file mode 100644 index 1501c63..0000000 --- a/help/html/inherit_graph_32.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/help/html/inherit_graph_32.md5 b/help/html/inherit_graph_32.md5 deleted file mode 100644 index 94b1f05..0000000 --- a/help/html/inherit_graph_32.md5 +++ /dev/null @@ -1 +0,0 @@ -f71d9a20ab039d270fc61e78ad3ae6a8 \ No newline at end of file diff --git a/help/html/inherit_graph_32.png b/help/html/inherit_graph_32.png deleted file mode 100644 index 32d7bd2..0000000 Binary files a/help/html/inherit_graph_32.png and /dev/null differ diff --git a/help/html/inherit_graph_33.map b/help/html/inherit_graph_33.map deleted file mode 100644 index 819bf81..0000000 --- a/help/html/inherit_graph_33.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/help/html/inherit_graph_33.md5 b/help/html/inherit_graph_33.md5 deleted file mode 100644 index 4eb74f7..0000000 --- a/help/html/inherit_graph_33.md5 +++ /dev/null @@ -1 +0,0 @@ -ece1b5ff19134c4cfb37166978e5922a \ No newline at end of file diff --git a/help/html/inherit_graph_33.png b/help/html/inherit_graph_33.png deleted file mode 100644 index 251eedb..0000000 Binary files a/help/html/inherit_graph_33.png and /dev/null differ diff --git a/help/html/inherit_graph_34.map b/help/html/inherit_graph_34.map deleted file mode 100644 index 1576a1b..0000000 --- a/help/html/inherit_graph_34.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/help/html/inherit_graph_34.md5 b/help/html/inherit_graph_34.md5 deleted file mode 100644 index f1b97d1..0000000 --- a/help/html/inherit_graph_34.md5 +++ /dev/null @@ -1 +0,0 @@ -e99b9e2befd831ccde20072555eae692 \ No newline at end of file diff --git a/help/html/inherit_graph_34.png b/help/html/inherit_graph_34.png deleted file mode 100644 index e60c412..0000000 Binary files a/help/html/inherit_graph_34.png and /dev/null differ diff --git a/help/html/inherit_graph_35.map b/help/html/inherit_graph_35.map deleted file mode 100644 index 45b6810..0000000 --- a/help/html/inherit_graph_35.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/help/html/inherit_graph_35.md5 b/help/html/inherit_graph_35.md5 deleted file mode 100644 index 9a95ff2..0000000 --- a/help/html/inherit_graph_35.md5 +++ /dev/null @@ -1 +0,0 @@ -5d210ca30302c78529e24cfecfedbe6c \ No newline at end of file diff --git a/help/html/inherit_graph_35.png b/help/html/inherit_graph_35.png deleted file mode 100644 index 7bbb545..0000000 Binary files a/help/html/inherit_graph_35.png and /dev/null differ diff --git a/help/html/inherit_graph_36.map b/help/html/inherit_graph_36.map deleted file mode 100644 index 0a772e9..0000000 --- a/help/html/inherit_graph_36.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/help/html/inherit_graph_36.md5 b/help/html/inherit_graph_36.md5 deleted file mode 100644 index 82031c3..0000000 --- a/help/html/inherit_graph_36.md5 +++ /dev/null @@ -1 +0,0 @@ -0841ece04d2633c40330144d78766ed8 \ No newline at end of file diff --git a/help/html/inherit_graph_36.png b/help/html/inherit_graph_36.png deleted file mode 100644 index 4b7de87..0000000 Binary files a/help/html/inherit_graph_36.png and /dev/null differ diff --git a/help/html/inherit_graph_37.map b/help/html/inherit_graph_37.map deleted file mode 100644 index e4d78c3..0000000 --- a/help/html/inherit_graph_37.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/help/html/inherit_graph_37.md5 b/help/html/inherit_graph_37.md5 deleted file mode 100644 index 7f0921f..0000000 --- a/help/html/inherit_graph_37.md5 +++ /dev/null @@ -1 +0,0 @@ -0b7cb52c49a0bd73c84d05cc39a3403d \ No newline at end of file diff --git a/help/html/inherit_graph_37.png b/help/html/inherit_graph_37.png deleted file mode 100644 index b29b5cb..0000000 Binary files a/help/html/inherit_graph_37.png and /dev/null differ diff --git a/help/html/inherit_graph_38.map b/help/html/inherit_graph_38.map deleted file mode 100644 index 21302f2..0000000 --- a/help/html/inherit_graph_38.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/help/html/inherit_graph_38.md5 b/help/html/inherit_graph_38.md5 deleted file mode 100644 index ed13291..0000000 --- a/help/html/inherit_graph_38.md5 +++ /dev/null @@ -1 +0,0 @@ -695799bf74cb002a011c34458f4c0bb9 \ No newline at end of file diff --git a/help/html/inherit_graph_38.png b/help/html/inherit_graph_38.png deleted file mode 100644 index ed3ee73..0000000 Binary files a/help/html/inherit_graph_38.png and /dev/null differ diff --git a/help/html/inherit_graph_39.map b/help/html/inherit_graph_39.map deleted file mode 100644 index 42b40bd..0000000 --- a/help/html/inherit_graph_39.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/help/html/inherit_graph_39.md5 b/help/html/inherit_graph_39.md5 deleted file mode 100644 index 34e88ef..0000000 --- a/help/html/inherit_graph_39.md5 +++ /dev/null @@ -1 +0,0 @@ -b313301744b422002d0386aebcaf595c \ No newline at end of file diff --git a/help/html/inherit_graph_39.png b/help/html/inherit_graph_39.png deleted file mode 100644 index fb2030c..0000000 Binary files a/help/html/inherit_graph_39.png and /dev/null differ diff --git a/help/html/inherit_graph_4.map b/help/html/inherit_graph_4.map deleted file mode 100644 index 3dc3b9b..0000000 --- a/help/html/inherit_graph_4.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/help/html/inherit_graph_4.md5 b/help/html/inherit_graph_4.md5 deleted file mode 100644 index d5fbd0a..0000000 --- a/help/html/inherit_graph_4.md5 +++ /dev/null @@ -1 +0,0 @@ -fd635966862aac8b267da4e10ae2c5b4 \ No newline at end of file diff --git a/help/html/inherit_graph_4.png b/help/html/inherit_graph_4.png deleted file mode 100644 index 34c2730..0000000 Binary files a/help/html/inherit_graph_4.png and /dev/null differ diff --git a/help/html/inherit_graph_40.map b/help/html/inherit_graph_40.map deleted file mode 100644 index ec8a5dd..0000000 --- a/help/html/inherit_graph_40.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/help/html/inherit_graph_40.md5 b/help/html/inherit_graph_40.md5 deleted file mode 100644 index 73ccb55..0000000 --- a/help/html/inherit_graph_40.md5 +++ /dev/null @@ -1 +0,0 @@ -0b112489e6f6f2cf08d31483e0fd1af6 \ No newline at end of file diff --git a/help/html/inherit_graph_40.png b/help/html/inherit_graph_40.png deleted file mode 100644 index e19dfd0..0000000 Binary files a/help/html/inherit_graph_40.png and /dev/null differ diff --git a/help/html/inherit_graph_41.map b/help/html/inherit_graph_41.map deleted file mode 100644 index b4a55df..0000000 --- a/help/html/inherit_graph_41.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/help/html/inherit_graph_41.md5 b/help/html/inherit_graph_41.md5 deleted file mode 100644 index 43711bc..0000000 --- a/help/html/inherit_graph_41.md5 +++ /dev/null @@ -1 +0,0 @@ -e8010a37a348d6aef583c866deda9fd8 \ No newline at end of file diff --git a/help/html/inherit_graph_41.png b/help/html/inherit_graph_41.png deleted file mode 100644 index e313b83..0000000 Binary files a/help/html/inherit_graph_41.png and /dev/null differ diff --git a/help/html/inherit_graph_42.map b/help/html/inherit_graph_42.map deleted file mode 100644 index 0bd18be..0000000 --- a/help/html/inherit_graph_42.map +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/help/html/inherit_graph_42.md5 b/help/html/inherit_graph_42.md5 deleted file mode 100644 index 806b48c..0000000 --- a/help/html/inherit_graph_42.md5 +++ /dev/null @@ -1 +0,0 @@ -2f67f64ec706e044d1ee0a1ea37f2563 \ No newline at end of file diff --git a/help/html/inherit_graph_42.png b/help/html/inherit_graph_42.png deleted file mode 100644 index 699794f..0000000 Binary files a/help/html/inherit_graph_42.png and /dev/null differ diff --git a/help/html/inherit_graph_43.map b/help/html/inherit_graph_43.map deleted file mode 100644 index 8232731..0000000 --- a/help/html/inherit_graph_43.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/help/html/inherit_graph_43.md5 b/help/html/inherit_graph_43.md5 deleted file mode 100644 index e07c2ad..0000000 --- a/help/html/inherit_graph_43.md5 +++ /dev/null @@ -1 +0,0 @@ -92cdd7ec923b36cc8faf5c1672db621b \ No newline at end of file diff --git a/help/html/inherit_graph_43.png b/help/html/inherit_graph_43.png deleted file mode 100644 index 3c4236f..0000000 Binary files a/help/html/inherit_graph_43.png and /dev/null differ diff --git a/help/html/inherit_graph_44.map b/help/html/inherit_graph_44.map deleted file mode 100644 index 678b6c0..0000000 --- a/help/html/inherit_graph_44.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/help/html/inherit_graph_44.md5 b/help/html/inherit_graph_44.md5 deleted file mode 100644 index 827b169..0000000 --- a/help/html/inherit_graph_44.md5 +++ /dev/null @@ -1 +0,0 @@ -f881be913e655eda4fa45b181eb37b03 \ No newline at end of file diff --git a/help/html/inherit_graph_44.png b/help/html/inherit_graph_44.png deleted file mode 100644 index 71af8c0..0000000 Binary files a/help/html/inherit_graph_44.png and /dev/null differ diff --git a/help/html/inherit_graph_45.map b/help/html/inherit_graph_45.map deleted file mode 100644 index 44d5559..0000000 --- a/help/html/inherit_graph_45.map +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/help/html/inherit_graph_45.md5 b/help/html/inherit_graph_45.md5 deleted file mode 100644 index 3d358ab..0000000 --- a/help/html/inherit_graph_45.md5 +++ /dev/null @@ -1 +0,0 @@ -4562f69a666a80c05e468b0add1b5255 \ No newline at end of file diff --git a/help/html/inherit_graph_45.png b/help/html/inherit_graph_45.png deleted file mode 100644 index 8758585..0000000 Binary files a/help/html/inherit_graph_45.png and /dev/null differ diff --git a/help/html/inherit_graph_46.map b/help/html/inherit_graph_46.map deleted file mode 100644 index ed09396..0000000 --- a/help/html/inherit_graph_46.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/help/html/inherit_graph_46.md5 b/help/html/inherit_graph_46.md5 deleted file mode 100644 index a8205bb..0000000 --- a/help/html/inherit_graph_46.md5 +++ /dev/null @@ -1 +0,0 @@ -fb30d1518a50362cb25f87212a84cfaf \ No newline at end of file diff --git a/help/html/inherit_graph_46.png b/help/html/inherit_graph_46.png deleted file mode 100644 index 84e04e1..0000000 Binary files a/help/html/inherit_graph_46.png and /dev/null differ diff --git a/help/html/inherit_graph_47.map b/help/html/inherit_graph_47.map deleted file mode 100644 index a4b6a57..0000000 --- a/help/html/inherit_graph_47.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/help/html/inherit_graph_47.md5 b/help/html/inherit_graph_47.md5 deleted file mode 100644 index 58fc105..0000000 --- a/help/html/inherit_graph_47.md5 +++ /dev/null @@ -1 +0,0 @@ -d73487598b394ec34e35c1fc7729121c \ No newline at end of file diff --git a/help/html/inherit_graph_47.png b/help/html/inherit_graph_47.png deleted file mode 100644 index a20c347..0000000 Binary files a/help/html/inherit_graph_47.png and /dev/null differ diff --git a/help/html/inherit_graph_48.map b/help/html/inherit_graph_48.map deleted file mode 100644 index 0b5f909..0000000 --- a/help/html/inherit_graph_48.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/help/html/inherit_graph_48.md5 b/help/html/inherit_graph_48.md5 deleted file mode 100644 index c565caa..0000000 --- a/help/html/inherit_graph_48.md5 +++ /dev/null @@ -1 +0,0 @@ -082f17137dffdb6f33d5bc6d829a446f \ No newline at end of file diff --git a/help/html/inherit_graph_48.png b/help/html/inherit_graph_48.png deleted file mode 100644 index 72ae366..0000000 Binary files a/help/html/inherit_graph_48.png and /dev/null differ diff --git a/help/html/inherit_graph_49.map b/help/html/inherit_graph_49.map deleted file mode 100644 index 10b0662..0000000 --- a/help/html/inherit_graph_49.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/help/html/inherit_graph_49.md5 b/help/html/inherit_graph_49.md5 deleted file mode 100644 index e51cfd2..0000000 --- a/help/html/inherit_graph_49.md5 +++ /dev/null @@ -1 +0,0 @@ -26b77955d7d55a376ff01a1eb31b41c5 \ No newline at end of file diff --git a/help/html/inherit_graph_49.png b/help/html/inherit_graph_49.png deleted file mode 100644 index 81e215b..0000000 Binary files a/help/html/inherit_graph_49.png and /dev/null differ diff --git a/help/html/inherit_graph_5.map b/help/html/inherit_graph_5.map deleted file mode 100644 index d00357b..0000000 --- a/help/html/inherit_graph_5.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/help/html/inherit_graph_5.md5 b/help/html/inherit_graph_5.md5 deleted file mode 100644 index 98d7cce..0000000 --- a/help/html/inherit_graph_5.md5 +++ /dev/null @@ -1 +0,0 @@ -0eecf6d34c01078bb5a6dab72a97e9d5 \ No newline at end of file diff --git a/help/html/inherit_graph_5.png b/help/html/inherit_graph_5.png deleted file mode 100644 index 2624848..0000000 Binary files a/help/html/inherit_graph_5.png and /dev/null differ diff --git a/help/html/inherit_graph_50.map b/help/html/inherit_graph_50.map deleted file mode 100644 index e6641e6..0000000 --- a/help/html/inherit_graph_50.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/help/html/inherit_graph_50.md5 b/help/html/inherit_graph_50.md5 deleted file mode 100644 index 4826f88..0000000 --- a/help/html/inherit_graph_50.md5 +++ /dev/null @@ -1 +0,0 @@ -cefc31c51868cc8ee1e41518ddf1c917 \ No newline at end of file diff --git a/help/html/inherit_graph_50.png b/help/html/inherit_graph_50.png deleted file mode 100644 index e3c6d42..0000000 Binary files a/help/html/inherit_graph_50.png and /dev/null differ diff --git a/help/html/inherit_graph_51.map b/help/html/inherit_graph_51.map deleted file mode 100644 index 52e65e4..0000000 --- a/help/html/inherit_graph_51.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/help/html/inherit_graph_51.md5 b/help/html/inherit_graph_51.md5 deleted file mode 100644 index 0c9a418..0000000 --- a/help/html/inherit_graph_51.md5 +++ /dev/null @@ -1 +0,0 @@ -d8603b3ecb8c935526832253014630d1 \ No newline at end of file diff --git a/help/html/inherit_graph_51.png b/help/html/inherit_graph_51.png deleted file mode 100644 index c8a4244..0000000 Binary files a/help/html/inherit_graph_51.png and /dev/null differ diff --git a/help/html/inherit_graph_52.map b/help/html/inherit_graph_52.map deleted file mode 100644 index b484298..0000000 --- a/help/html/inherit_graph_52.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/help/html/inherit_graph_52.md5 b/help/html/inherit_graph_52.md5 deleted file mode 100644 index edbb536..0000000 --- a/help/html/inherit_graph_52.md5 +++ /dev/null @@ -1 +0,0 @@ -a11b34faa86172375d11f59323e9dd9d \ No newline at end of file diff --git a/help/html/inherit_graph_52.png b/help/html/inherit_graph_52.png deleted file mode 100644 index e4033d9..0000000 Binary files a/help/html/inherit_graph_52.png and /dev/null differ diff --git a/help/html/inherit_graph_53.map b/help/html/inherit_graph_53.map deleted file mode 100644 index e419d68..0000000 --- a/help/html/inherit_graph_53.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/help/html/inherit_graph_53.md5 b/help/html/inherit_graph_53.md5 deleted file mode 100644 index 88b76a6..0000000 --- a/help/html/inherit_graph_53.md5 +++ /dev/null @@ -1 +0,0 @@ -a0b15ec7d07edad8cd8f65ead0bd0700 \ No newline at end of file diff --git a/help/html/inherit_graph_53.png b/help/html/inherit_graph_53.png deleted file mode 100644 index ff01ccc..0000000 Binary files a/help/html/inherit_graph_53.png and /dev/null differ diff --git a/help/html/inherit_graph_54.map b/help/html/inherit_graph_54.map deleted file mode 100644 index b2d2c09..0000000 --- a/help/html/inherit_graph_54.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/help/html/inherit_graph_54.md5 b/help/html/inherit_graph_54.md5 deleted file mode 100644 index 4d831d0..0000000 --- a/help/html/inherit_graph_54.md5 +++ /dev/null @@ -1 +0,0 @@ -55870e5effcf5c29e568f4213945086e \ No newline at end of file diff --git a/help/html/inherit_graph_54.png b/help/html/inherit_graph_54.png deleted file mode 100644 index c09091f..0000000 Binary files a/help/html/inherit_graph_54.png and /dev/null differ diff --git a/help/html/inherit_graph_55.map b/help/html/inherit_graph_55.map deleted file mode 100644 index 69528a9..0000000 --- a/help/html/inherit_graph_55.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/help/html/inherit_graph_55.md5 b/help/html/inherit_graph_55.md5 deleted file mode 100644 index 90d9c45..0000000 --- a/help/html/inherit_graph_55.md5 +++ /dev/null @@ -1 +0,0 @@ -9246b57d50c50b7830d996a148de3fcf \ No newline at end of file diff --git a/help/html/inherit_graph_55.png b/help/html/inherit_graph_55.png deleted file mode 100644 index bb54f2d..0000000 Binary files a/help/html/inherit_graph_55.png and /dev/null differ diff --git a/help/html/inherit_graph_56.map b/help/html/inherit_graph_56.map deleted file mode 100644 index b3c4901..0000000 --- a/help/html/inherit_graph_56.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/help/html/inherit_graph_56.md5 b/help/html/inherit_graph_56.md5 deleted file mode 100644 index 5db5814..0000000 --- a/help/html/inherit_graph_56.md5 +++ /dev/null @@ -1 +0,0 @@ -ecb227e91ce0bb2d2cf446764156720d \ No newline at end of file diff --git a/help/html/inherit_graph_56.png b/help/html/inherit_graph_56.png deleted file mode 100644 index 39dade3..0000000 Binary files a/help/html/inherit_graph_56.png and /dev/null differ diff --git a/help/html/inherit_graph_57.map b/help/html/inherit_graph_57.map deleted file mode 100644 index 7c6ef14..0000000 --- a/help/html/inherit_graph_57.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/help/html/inherit_graph_57.md5 b/help/html/inherit_graph_57.md5 deleted file mode 100644 index b3a4419..0000000 --- a/help/html/inherit_graph_57.md5 +++ /dev/null @@ -1 +0,0 @@ -3fb65958704aa0f15e9922df9dcfd812 \ No newline at end of file diff --git a/help/html/inherit_graph_57.png b/help/html/inherit_graph_57.png deleted file mode 100644 index 6e19eee..0000000 Binary files a/help/html/inherit_graph_57.png and /dev/null differ diff --git a/help/html/inherit_graph_58.map b/help/html/inherit_graph_58.map deleted file mode 100644 index 5f62d22..0000000 --- a/help/html/inherit_graph_58.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/help/html/inherit_graph_58.md5 b/help/html/inherit_graph_58.md5 deleted file mode 100644 index 7228f13..0000000 --- a/help/html/inherit_graph_58.md5 +++ /dev/null @@ -1 +0,0 @@ -94ce751810e1c5afd9782d5a7d9ce80a \ No newline at end of file diff --git a/help/html/inherit_graph_58.png b/help/html/inherit_graph_58.png deleted file mode 100644 index 70e0d46..0000000 Binary files a/help/html/inherit_graph_58.png and /dev/null differ diff --git a/help/html/inherit_graph_59.map b/help/html/inherit_graph_59.map deleted file mode 100644 index e7c3c45..0000000 --- a/help/html/inherit_graph_59.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/help/html/inherit_graph_59.md5 b/help/html/inherit_graph_59.md5 deleted file mode 100644 index e623f85..0000000 --- a/help/html/inherit_graph_59.md5 +++ /dev/null @@ -1 +0,0 @@ -9da7357f921e9a39d07a7343182a71cd \ No newline at end of file diff --git a/help/html/inherit_graph_59.png b/help/html/inherit_graph_59.png deleted file mode 100644 index d806dde..0000000 Binary files a/help/html/inherit_graph_59.png and /dev/null differ diff --git a/help/html/inherit_graph_6.map b/help/html/inherit_graph_6.map deleted file mode 100644 index a2bbcc5..0000000 --- a/help/html/inherit_graph_6.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/help/html/inherit_graph_6.md5 b/help/html/inherit_graph_6.md5 deleted file mode 100644 index 0c34a87..0000000 --- a/help/html/inherit_graph_6.md5 +++ /dev/null @@ -1 +0,0 @@ -be07ea45ce5af1e13fabfe655622e801 \ No newline at end of file diff --git a/help/html/inherit_graph_6.png b/help/html/inherit_graph_6.png deleted file mode 100644 index 4776dfb..0000000 Binary files a/help/html/inherit_graph_6.png and /dev/null differ diff --git a/help/html/inherit_graph_60.map b/help/html/inherit_graph_60.map deleted file mode 100644 index 70af357..0000000 --- a/help/html/inherit_graph_60.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/help/html/inherit_graph_60.md5 b/help/html/inherit_graph_60.md5 deleted file mode 100644 index 4b82b2a..0000000 --- a/help/html/inherit_graph_60.md5 +++ /dev/null @@ -1 +0,0 @@ -6b1079acb55fcd70cf8687eea61d1acf \ No newline at end of file diff --git a/help/html/inherit_graph_60.png b/help/html/inherit_graph_60.png deleted file mode 100644 index 21131ff..0000000 Binary files a/help/html/inherit_graph_60.png and /dev/null differ diff --git a/help/html/inherit_graph_61.map b/help/html/inherit_graph_61.map deleted file mode 100644 index 5efc6e3..0000000 --- a/help/html/inherit_graph_61.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/help/html/inherit_graph_61.md5 b/help/html/inherit_graph_61.md5 deleted file mode 100644 index 502f40a..0000000 --- a/help/html/inherit_graph_61.md5 +++ /dev/null @@ -1 +0,0 @@ -9266bd186ede7c24a58ef6f53cefaeef \ No newline at end of file diff --git a/help/html/inherit_graph_61.png b/help/html/inherit_graph_61.png deleted file mode 100644 index 3f2329d..0000000 Binary files a/help/html/inherit_graph_61.png and /dev/null differ diff --git a/help/html/inherit_graph_62.map b/help/html/inherit_graph_62.map deleted file mode 100644 index ab42954..0000000 --- a/help/html/inherit_graph_62.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/help/html/inherit_graph_62.md5 b/help/html/inherit_graph_62.md5 deleted file mode 100644 index 57a9f66..0000000 --- a/help/html/inherit_graph_62.md5 +++ /dev/null @@ -1 +0,0 @@ -50833445edba7c78d2c6dc7793ef14b6 \ No newline at end of file diff --git a/help/html/inherit_graph_62.png b/help/html/inherit_graph_62.png deleted file mode 100644 index d3e8400..0000000 Binary files a/help/html/inherit_graph_62.png and /dev/null differ diff --git a/help/html/inherit_graph_63.map b/help/html/inherit_graph_63.map deleted file mode 100644 index 7355942..0000000 --- a/help/html/inherit_graph_63.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/help/html/inherit_graph_63.md5 b/help/html/inherit_graph_63.md5 deleted file mode 100644 index 378eca0..0000000 --- a/help/html/inherit_graph_63.md5 +++ /dev/null @@ -1 +0,0 @@ -b789cddc89d0fa97979bd5d06f4e11e9 \ No newline at end of file diff --git a/help/html/inherit_graph_63.png b/help/html/inherit_graph_63.png deleted file mode 100644 index babda91..0000000 Binary files a/help/html/inherit_graph_63.png and /dev/null differ diff --git a/help/html/inherit_graph_64.map b/help/html/inherit_graph_64.map deleted file mode 100644 index f48b5f4..0000000 --- a/help/html/inherit_graph_64.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/help/html/inherit_graph_64.md5 b/help/html/inherit_graph_64.md5 deleted file mode 100644 index 9ca2399..0000000 --- a/help/html/inherit_graph_64.md5 +++ /dev/null @@ -1 +0,0 @@ -f9a42ee29899d423b185d0ed158140d3 \ No newline at end of file diff --git a/help/html/inherit_graph_64.png b/help/html/inherit_graph_64.png deleted file mode 100644 index eae3660..0000000 Binary files a/help/html/inherit_graph_64.png and /dev/null differ diff --git a/help/html/inherit_graph_65.map b/help/html/inherit_graph_65.map deleted file mode 100644 index a2ffcf0..0000000 --- a/help/html/inherit_graph_65.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/help/html/inherit_graph_65.md5 b/help/html/inherit_graph_65.md5 deleted file mode 100644 index 743c868..0000000 --- a/help/html/inherit_graph_65.md5 +++ /dev/null @@ -1 +0,0 @@ -fb6bbf6f2e01f8d026d2c2fc5049d01f \ No newline at end of file diff --git a/help/html/inherit_graph_65.png b/help/html/inherit_graph_65.png deleted file mode 100644 index 7c3869f..0000000 Binary files a/help/html/inherit_graph_65.png and /dev/null differ diff --git a/help/html/inherit_graph_66.map b/help/html/inherit_graph_66.map deleted file mode 100644 index d3b2f2a..0000000 --- a/help/html/inherit_graph_66.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/help/html/inherit_graph_66.md5 b/help/html/inherit_graph_66.md5 deleted file mode 100644 index 5e8789c..0000000 --- a/help/html/inherit_graph_66.md5 +++ /dev/null @@ -1 +0,0 @@ -16ad5bb7e87437edfa2a0f6594976cdb \ No newline at end of file diff --git a/help/html/inherit_graph_66.png b/help/html/inherit_graph_66.png deleted file mode 100644 index de317dd..0000000 Binary files a/help/html/inherit_graph_66.png and /dev/null differ diff --git a/help/html/inherit_graph_67.map b/help/html/inherit_graph_67.map deleted file mode 100644 index 40a141b..0000000 --- a/help/html/inherit_graph_67.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/help/html/inherit_graph_67.md5 b/help/html/inherit_graph_67.md5 deleted file mode 100644 index ab3466a..0000000 --- a/help/html/inherit_graph_67.md5 +++ /dev/null @@ -1 +0,0 @@ -10b8f5aec094b7eddd23becbe384e6fc \ No newline at end of file diff --git a/help/html/inherit_graph_67.png b/help/html/inherit_graph_67.png deleted file mode 100644 index 63f0a90..0000000 Binary files a/help/html/inherit_graph_67.png and /dev/null differ diff --git a/help/html/inherit_graph_68.map b/help/html/inherit_graph_68.map deleted file mode 100644 index 93f41d5..0000000 --- a/help/html/inherit_graph_68.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/help/html/inherit_graph_68.md5 b/help/html/inherit_graph_68.md5 deleted file mode 100644 index a77c093..0000000 --- a/help/html/inherit_graph_68.md5 +++ /dev/null @@ -1 +0,0 @@ -498a1781f8cd82879f0236d5375becc3 \ No newline at end of file diff --git a/help/html/inherit_graph_68.png b/help/html/inherit_graph_68.png deleted file mode 100644 index 2d2a339..0000000 Binary files a/help/html/inherit_graph_68.png and /dev/null differ diff --git a/help/html/inherit_graph_69.map b/help/html/inherit_graph_69.map deleted file mode 100644 index 5b4123b..0000000 --- a/help/html/inherit_graph_69.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/help/html/inherit_graph_69.md5 b/help/html/inherit_graph_69.md5 deleted file mode 100644 index c143bbb..0000000 --- a/help/html/inherit_graph_69.md5 +++ /dev/null @@ -1 +0,0 @@ -d69583c368b66c7a7039929ff11ffa75 \ No newline at end of file diff --git a/help/html/inherit_graph_69.png b/help/html/inherit_graph_69.png deleted file mode 100644 index 7e9e129..0000000 Binary files a/help/html/inherit_graph_69.png and /dev/null differ diff --git a/help/html/inherit_graph_7.map b/help/html/inherit_graph_7.map deleted file mode 100644 index 743d7be..0000000 --- a/help/html/inherit_graph_7.map +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/help/html/inherit_graph_7.md5 b/help/html/inherit_graph_7.md5 deleted file mode 100644 index 2f0c78d..0000000 --- a/help/html/inherit_graph_7.md5 +++ /dev/null @@ -1 +0,0 @@ -1db6b52fd7c0d94a87bff1ce7f5e1622 \ No newline at end of file diff --git a/help/html/inherit_graph_7.png b/help/html/inherit_graph_7.png deleted file mode 100644 index 25140dd..0000000 Binary files a/help/html/inherit_graph_7.png and /dev/null differ diff --git a/help/html/inherit_graph_70.map b/help/html/inherit_graph_70.map deleted file mode 100644 index f9e6e15..0000000 --- a/help/html/inherit_graph_70.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/help/html/inherit_graph_70.md5 b/help/html/inherit_graph_70.md5 deleted file mode 100644 index 1d78f3b..0000000 --- a/help/html/inherit_graph_70.md5 +++ /dev/null @@ -1 +0,0 @@ -0d25e7b8747fd77dfcf2a574f4054d50 \ No newline at end of file diff --git a/help/html/inherit_graph_70.png b/help/html/inherit_graph_70.png deleted file mode 100644 index f128a55..0000000 Binary files a/help/html/inherit_graph_70.png and /dev/null differ diff --git a/help/html/inherit_graph_71.map b/help/html/inherit_graph_71.map deleted file mode 100644 index 1e20673..0000000 --- a/help/html/inherit_graph_71.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/help/html/inherit_graph_71.md5 b/help/html/inherit_graph_71.md5 deleted file mode 100644 index 0bb7ed5..0000000 --- a/help/html/inherit_graph_71.md5 +++ /dev/null @@ -1 +0,0 @@ -b99a67fdc66d7eb50691d535984475af \ No newline at end of file diff --git a/help/html/inherit_graph_71.png b/help/html/inherit_graph_71.png deleted file mode 100644 index 06ce4c0..0000000 Binary files a/help/html/inherit_graph_71.png and /dev/null differ diff --git a/help/html/inherit_graph_72.map b/help/html/inherit_graph_72.map deleted file mode 100644 index c71c22e..0000000 --- a/help/html/inherit_graph_72.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/help/html/inherit_graph_72.md5 b/help/html/inherit_graph_72.md5 deleted file mode 100644 index 8b57031..0000000 --- a/help/html/inherit_graph_72.md5 +++ /dev/null @@ -1 +0,0 @@ -38393961dc11cae454bbeaf7f1ab82c3 \ No newline at end of file diff --git a/help/html/inherit_graph_72.png b/help/html/inherit_graph_72.png deleted file mode 100644 index fd9dfc2..0000000 Binary files a/help/html/inherit_graph_72.png and /dev/null differ diff --git a/help/html/inherit_graph_73.map b/help/html/inherit_graph_73.map deleted file mode 100644 index d724964..0000000 --- a/help/html/inherit_graph_73.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/help/html/inherit_graph_73.md5 b/help/html/inherit_graph_73.md5 deleted file mode 100644 index efae215..0000000 --- a/help/html/inherit_graph_73.md5 +++ /dev/null @@ -1 +0,0 @@ -6a73fd9d1a3988dacf655b8665e7bb7d \ No newline at end of file diff --git a/help/html/inherit_graph_73.png b/help/html/inherit_graph_73.png deleted file mode 100644 index 0164573..0000000 Binary files a/help/html/inherit_graph_73.png and /dev/null differ diff --git a/help/html/inherit_graph_74.map b/help/html/inherit_graph_74.map deleted file mode 100644 index ad5210c..0000000 --- a/help/html/inherit_graph_74.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/help/html/inherit_graph_74.md5 b/help/html/inherit_graph_74.md5 deleted file mode 100644 index f711b0b..0000000 --- a/help/html/inherit_graph_74.md5 +++ /dev/null @@ -1 +0,0 @@ -c85f89ecaf5ae0b23eac0e905c90fc7a \ No newline at end of file diff --git a/help/html/inherit_graph_74.png b/help/html/inherit_graph_74.png deleted file mode 100644 index 590af2a..0000000 Binary files a/help/html/inherit_graph_74.png and /dev/null differ diff --git a/help/html/inherit_graph_75.map b/help/html/inherit_graph_75.map deleted file mode 100644 index 97d7aad..0000000 --- a/help/html/inherit_graph_75.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/help/html/inherit_graph_75.md5 b/help/html/inherit_graph_75.md5 deleted file mode 100644 index 71dc877..0000000 --- a/help/html/inherit_graph_75.md5 +++ /dev/null @@ -1 +0,0 @@ -15d310a34c9c15ca646751c63cf0ab5f \ No newline at end of file diff --git a/help/html/inherit_graph_75.png b/help/html/inherit_graph_75.png deleted file mode 100644 index 7b8066f..0000000 Binary files a/help/html/inherit_graph_75.png and /dev/null differ diff --git a/help/html/inherit_graph_76.map b/help/html/inherit_graph_76.map deleted file mode 100644 index eec9496..0000000 --- a/help/html/inherit_graph_76.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/help/html/inherit_graph_76.md5 b/help/html/inherit_graph_76.md5 deleted file mode 100644 index ebdd18f..0000000 --- a/help/html/inherit_graph_76.md5 +++ /dev/null @@ -1 +0,0 @@ -9b9d8e3576ca7ae57c4a8d4ec639f369 \ No newline at end of file diff --git a/help/html/inherit_graph_76.png b/help/html/inherit_graph_76.png deleted file mode 100644 index f9738e8..0000000 Binary files a/help/html/inherit_graph_76.png and /dev/null differ diff --git a/help/html/inherit_graph_77.map b/help/html/inherit_graph_77.map deleted file mode 100644 index 7ac62cd..0000000 --- a/help/html/inherit_graph_77.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/help/html/inherit_graph_77.md5 b/help/html/inherit_graph_77.md5 deleted file mode 100644 index 2241cc7..0000000 --- a/help/html/inherit_graph_77.md5 +++ /dev/null @@ -1 +0,0 @@ -48464932fa7050e4c8c789edb74b2cae \ No newline at end of file diff --git a/help/html/inherit_graph_77.png b/help/html/inherit_graph_77.png deleted file mode 100644 index 5e7d3ce..0000000 Binary files a/help/html/inherit_graph_77.png and /dev/null differ diff --git a/help/html/inherit_graph_78.map b/help/html/inherit_graph_78.map deleted file mode 100644 index 3a96247..0000000 --- a/help/html/inherit_graph_78.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/help/html/inherit_graph_78.md5 b/help/html/inherit_graph_78.md5 deleted file mode 100644 index db62909..0000000 --- a/help/html/inherit_graph_78.md5 +++ /dev/null @@ -1 +0,0 @@ -fd4ba70c74afdbd0946efee87466293d \ No newline at end of file diff --git a/help/html/inherit_graph_78.png b/help/html/inherit_graph_78.png deleted file mode 100644 index 03167d5..0000000 Binary files a/help/html/inherit_graph_78.png and /dev/null differ diff --git a/help/html/inherit_graph_79.map b/help/html/inherit_graph_79.map deleted file mode 100644 index 342f0c6..0000000 --- a/help/html/inherit_graph_79.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/help/html/inherit_graph_79.md5 b/help/html/inherit_graph_79.md5 deleted file mode 100644 index 9c4c878..0000000 --- a/help/html/inherit_graph_79.md5 +++ /dev/null @@ -1 +0,0 @@ -cdfd98d1f2d0604753918c74cac4d176 \ No newline at end of file diff --git a/help/html/inherit_graph_79.png b/help/html/inherit_graph_79.png deleted file mode 100644 index 6ff46f5..0000000 Binary files a/help/html/inherit_graph_79.png and /dev/null differ diff --git a/help/html/inherit_graph_8.map b/help/html/inherit_graph_8.map deleted file mode 100644 index 0c00cd4..0000000 --- a/help/html/inherit_graph_8.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/help/html/inherit_graph_8.md5 b/help/html/inherit_graph_8.md5 deleted file mode 100644 index 1326b63..0000000 --- a/help/html/inherit_graph_8.md5 +++ /dev/null @@ -1 +0,0 @@ -55a7904bf4829082a8812e1ba977f97f \ No newline at end of file diff --git a/help/html/inherit_graph_8.png b/help/html/inherit_graph_8.png deleted file mode 100644 index e3587a2..0000000 Binary files a/help/html/inherit_graph_8.png and /dev/null differ diff --git a/help/html/inherit_graph_80.map b/help/html/inherit_graph_80.map deleted file mode 100644 index 2a8df47..0000000 --- a/help/html/inherit_graph_80.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/help/html/inherit_graph_80.md5 b/help/html/inherit_graph_80.md5 deleted file mode 100644 index e57218c..0000000 --- a/help/html/inherit_graph_80.md5 +++ /dev/null @@ -1 +0,0 @@ -01c8776d5ba3298dbbf9193a666b5659 \ No newline at end of file diff --git a/help/html/inherit_graph_80.png b/help/html/inherit_graph_80.png deleted file mode 100644 index 64f6fac..0000000 Binary files a/help/html/inherit_graph_80.png and /dev/null differ diff --git a/help/html/inherit_graph_81.map b/help/html/inherit_graph_81.map deleted file mode 100644 index becc5af..0000000 --- a/help/html/inherit_graph_81.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/help/html/inherit_graph_81.md5 b/help/html/inherit_graph_81.md5 deleted file mode 100644 index 45c84d1..0000000 --- a/help/html/inherit_graph_81.md5 +++ /dev/null @@ -1 +0,0 @@ -34bc82325c7a7d215a7c167a15e195a9 \ No newline at end of file diff --git a/help/html/inherit_graph_81.png b/help/html/inherit_graph_81.png deleted file mode 100644 index 65acd81..0000000 Binary files a/help/html/inherit_graph_81.png and /dev/null differ diff --git a/help/html/inherit_graph_82.map b/help/html/inherit_graph_82.map deleted file mode 100644 index 864b509..0000000 --- a/help/html/inherit_graph_82.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/help/html/inherit_graph_82.md5 b/help/html/inherit_graph_82.md5 deleted file mode 100644 index 6889f6a..0000000 --- a/help/html/inherit_graph_82.md5 +++ /dev/null @@ -1 +0,0 @@ -cfaad452f300587296fd16b3fb34684f \ No newline at end of file diff --git a/help/html/inherit_graph_82.png b/help/html/inherit_graph_82.png deleted file mode 100644 index 3de9732..0000000 Binary files a/help/html/inherit_graph_82.png and /dev/null differ diff --git a/help/html/inherit_graph_83.map b/help/html/inherit_graph_83.map deleted file mode 100644 index 5f2e9ed..0000000 --- a/help/html/inherit_graph_83.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/help/html/inherit_graph_83.md5 b/help/html/inherit_graph_83.md5 deleted file mode 100644 index 5a3d0a0..0000000 --- a/help/html/inherit_graph_83.md5 +++ /dev/null @@ -1 +0,0 @@ -227329d509832e171efeddd849dcde3d \ No newline at end of file diff --git a/help/html/inherit_graph_83.png b/help/html/inherit_graph_83.png deleted file mode 100644 index e8731d0..0000000 Binary files a/help/html/inherit_graph_83.png and /dev/null differ diff --git a/help/html/inherit_graph_84.map b/help/html/inherit_graph_84.map deleted file mode 100644 index 0807bc3..0000000 --- a/help/html/inherit_graph_84.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/help/html/inherit_graph_84.md5 b/help/html/inherit_graph_84.md5 deleted file mode 100644 index 12a4631..0000000 --- a/help/html/inherit_graph_84.md5 +++ /dev/null @@ -1 +0,0 @@ -173c43b96a22b47aeca87a27c2b548e5 \ No newline at end of file diff --git a/help/html/inherit_graph_84.png b/help/html/inherit_graph_84.png deleted file mode 100644 index 1318e88..0000000 Binary files a/help/html/inherit_graph_84.png and /dev/null differ diff --git a/help/html/inherit_graph_85.map b/help/html/inherit_graph_85.map deleted file mode 100644 index affeda8..0000000 --- a/help/html/inherit_graph_85.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/help/html/inherit_graph_85.md5 b/help/html/inherit_graph_85.md5 deleted file mode 100644 index 046dddc..0000000 --- a/help/html/inherit_graph_85.md5 +++ /dev/null @@ -1 +0,0 @@ -589c3ee99851b1f8da9798bd13e6ff73 \ No newline at end of file diff --git a/help/html/inherit_graph_85.png b/help/html/inherit_graph_85.png deleted file mode 100644 index 08063c5..0000000 Binary files a/help/html/inherit_graph_85.png and /dev/null differ diff --git a/help/html/inherit_graph_86.map b/help/html/inherit_graph_86.map deleted file mode 100644 index 1ff9753..0000000 --- a/help/html/inherit_graph_86.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/help/html/inherit_graph_86.md5 b/help/html/inherit_graph_86.md5 deleted file mode 100644 index 7a16d14..0000000 --- a/help/html/inherit_graph_86.md5 +++ /dev/null @@ -1 +0,0 @@ -62e112ade50345b304e124e9cadc70ca \ No newline at end of file diff --git a/help/html/inherit_graph_86.png b/help/html/inherit_graph_86.png deleted file mode 100644 index db4cfc0..0000000 Binary files a/help/html/inherit_graph_86.png and /dev/null differ diff --git a/help/html/inherit_graph_87.map b/help/html/inherit_graph_87.map deleted file mode 100644 index 1860374..0000000 --- a/help/html/inherit_graph_87.map +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/help/html/inherit_graph_87.md5 b/help/html/inherit_graph_87.md5 deleted file mode 100644 index 3e45ec8..0000000 --- a/help/html/inherit_graph_87.md5 +++ /dev/null @@ -1 +0,0 @@ -26152c523b6a88528da2b2e28c8c407b \ No newline at end of file diff --git a/help/html/inherit_graph_87.png b/help/html/inherit_graph_87.png deleted file mode 100644 index 0f5a8a0..0000000 Binary files a/help/html/inherit_graph_87.png and /dev/null differ diff --git a/help/html/inherit_graph_88.map b/help/html/inherit_graph_88.map deleted file mode 100644 index 2e54a2f..0000000 --- a/help/html/inherit_graph_88.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/help/html/inherit_graph_88.md5 b/help/html/inherit_graph_88.md5 deleted file mode 100644 index fed4556..0000000 --- a/help/html/inherit_graph_88.md5 +++ /dev/null @@ -1 +0,0 @@ -2d2578f1762630f296e24147c1a262eb \ No newline at end of file diff --git a/help/html/inherit_graph_88.png b/help/html/inherit_graph_88.png deleted file mode 100644 index 590075c..0000000 Binary files a/help/html/inherit_graph_88.png and /dev/null differ diff --git a/help/html/inherit_graph_89.map b/help/html/inherit_graph_89.map deleted file mode 100644 index fc69cc8..0000000 --- a/help/html/inherit_graph_89.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/help/html/inherit_graph_89.md5 b/help/html/inherit_graph_89.md5 deleted file mode 100644 index fca550a..0000000 --- a/help/html/inherit_graph_89.md5 +++ /dev/null @@ -1 +0,0 @@ -a4f5aa7041ff65c693170dc855bd4721 \ No newline at end of file diff --git a/help/html/inherit_graph_89.png b/help/html/inherit_graph_89.png deleted file mode 100644 index d1bfc11..0000000 Binary files a/help/html/inherit_graph_89.png and /dev/null differ diff --git a/help/html/inherit_graph_9.map b/help/html/inherit_graph_9.map deleted file mode 100644 index b479b24..0000000 --- a/help/html/inherit_graph_9.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/help/html/inherit_graph_9.md5 b/help/html/inherit_graph_9.md5 deleted file mode 100644 index 1c13e5f..0000000 --- a/help/html/inherit_graph_9.md5 +++ /dev/null @@ -1 +0,0 @@ -c46ebfd3954b58742e8d85a627a27fb6 \ No newline at end of file diff --git a/help/html/inherit_graph_9.png b/help/html/inherit_graph_9.png deleted file mode 100644 index c9eab42..0000000 Binary files a/help/html/inherit_graph_9.png and /dev/null differ diff --git a/help/html/inherit_graph_90.map b/help/html/inherit_graph_90.map deleted file mode 100644 index 689ffa6..0000000 --- a/help/html/inherit_graph_90.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/help/html/inherit_graph_90.md5 b/help/html/inherit_graph_90.md5 deleted file mode 100644 index 7693ea8..0000000 --- a/help/html/inherit_graph_90.md5 +++ /dev/null @@ -1 +0,0 @@ -466abc6bc302a50642288e62a895f336 \ No newline at end of file diff --git a/help/html/inherit_graph_90.png b/help/html/inherit_graph_90.png deleted file mode 100644 index aa3f944..0000000 Binary files a/help/html/inherit_graph_90.png and /dev/null differ diff --git a/help/html/inherit_graph_91.map b/help/html/inherit_graph_91.map deleted file mode 100644 index 5aa8a1d..0000000 --- a/help/html/inherit_graph_91.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/help/html/inherit_graph_91.md5 b/help/html/inherit_graph_91.md5 deleted file mode 100644 index 628c3c2..0000000 --- a/help/html/inherit_graph_91.md5 +++ /dev/null @@ -1 +0,0 @@ -e82b052c239ffcec5b7c7e418207933c \ No newline at end of file diff --git a/help/html/inherit_graph_91.png b/help/html/inherit_graph_91.png deleted file mode 100644 index 8c1f47f..0000000 Binary files a/help/html/inherit_graph_91.png and /dev/null differ diff --git a/help/html/inherit_graph_92.map b/help/html/inherit_graph_92.map deleted file mode 100644 index 7fa95d2..0000000 --- a/help/html/inherit_graph_92.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/help/html/inherit_graph_92.md5 b/help/html/inherit_graph_92.md5 deleted file mode 100644 index d221018..0000000 --- a/help/html/inherit_graph_92.md5 +++ /dev/null @@ -1 +0,0 @@ -6c274be470503838de4b7fdffbf1703e \ No newline at end of file diff --git a/help/html/inherit_graph_92.png b/help/html/inherit_graph_92.png deleted file mode 100644 index f97c37a..0000000 Binary files a/help/html/inherit_graph_92.png and /dev/null differ diff --git a/help/html/inherit_graph_93.map b/help/html/inherit_graph_93.map deleted file mode 100644 index ba59cbb..0000000 --- a/help/html/inherit_graph_93.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/help/html/inherit_graph_93.md5 b/help/html/inherit_graph_93.md5 deleted file mode 100644 index c7951ee..0000000 --- a/help/html/inherit_graph_93.md5 +++ /dev/null @@ -1 +0,0 @@ -c71e2aa077bc6a2de8266e200494be7f \ No newline at end of file diff --git a/help/html/inherit_graph_93.png b/help/html/inherit_graph_93.png deleted file mode 100644 index 5de4761..0000000 Binary files a/help/html/inherit_graph_93.png and /dev/null differ diff --git a/help/html/inherit_graph_94.map b/help/html/inherit_graph_94.map deleted file mode 100644 index 24e46f0..0000000 --- a/help/html/inherit_graph_94.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/help/html/inherit_graph_94.md5 b/help/html/inherit_graph_94.md5 deleted file mode 100644 index 78a43f2..0000000 --- a/help/html/inherit_graph_94.md5 +++ /dev/null @@ -1 +0,0 @@ -47d3e339bbb779d3b209cec7be2e6039 \ No newline at end of file diff --git a/help/html/inherit_graph_94.png b/help/html/inherit_graph_94.png deleted file mode 100644 index 4419a2f..0000000 Binary files a/help/html/inherit_graph_94.png and /dev/null differ diff --git a/help/html/inherit_graph_95.map b/help/html/inherit_graph_95.map deleted file mode 100644 index 2f5ad65..0000000 --- a/help/html/inherit_graph_95.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/help/html/inherit_graph_95.md5 b/help/html/inherit_graph_95.md5 deleted file mode 100644 index 4b8f482..0000000 --- a/help/html/inherit_graph_95.md5 +++ /dev/null @@ -1 +0,0 @@ -5831b36a68416dab6ec9a43cbed4302b \ No newline at end of file diff --git a/help/html/inherit_graph_95.png b/help/html/inherit_graph_95.png deleted file mode 100644 index 4d05028..0000000 Binary files a/help/html/inherit_graph_95.png and /dev/null differ diff --git a/help/html/inherit_graph_96.map b/help/html/inherit_graph_96.map deleted file mode 100644 index 153261c..0000000 --- a/help/html/inherit_graph_96.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/help/html/inherit_graph_96.md5 b/help/html/inherit_graph_96.md5 deleted file mode 100644 index 1e19093..0000000 --- a/help/html/inherit_graph_96.md5 +++ /dev/null @@ -1 +0,0 @@ -6fc895644a3bd10143c065686b6cb965 \ No newline at end of file diff --git a/help/html/inherit_graph_96.png b/help/html/inherit_graph_96.png deleted file mode 100644 index b9cbf13..0000000 Binary files a/help/html/inherit_graph_96.png and /dev/null differ diff --git a/help/html/inherit_graph_97.map b/help/html/inherit_graph_97.map deleted file mode 100644 index 938a26a..0000000 --- a/help/html/inherit_graph_97.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/help/html/inherit_graph_97.md5 b/help/html/inherit_graph_97.md5 deleted file mode 100644 index 90305f8..0000000 --- a/help/html/inherit_graph_97.md5 +++ /dev/null @@ -1 +0,0 @@ -7f29244ccbbdfdf104fa5320da1ad7db \ No newline at end of file diff --git a/help/html/inherit_graph_97.png b/help/html/inherit_graph_97.png deleted file mode 100644 index d9813fc..0000000 Binary files a/help/html/inherit_graph_97.png and /dev/null differ diff --git a/help/html/inherit_graph_98.map b/help/html/inherit_graph_98.map deleted file mode 100644 index 3b98c5c..0000000 --- a/help/html/inherit_graph_98.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/help/html/inherit_graph_98.md5 b/help/html/inherit_graph_98.md5 deleted file mode 100644 index 59e5939..0000000 --- a/help/html/inherit_graph_98.md5 +++ /dev/null @@ -1 +0,0 @@ -b984c5d4449347cd82796149c2a8a5bb \ No newline at end of file diff --git a/help/html/inherit_graph_98.png b/help/html/inherit_graph_98.png deleted file mode 100644 index 5d089b1..0000000 Binary files a/help/html/inherit_graph_98.png and /dev/null differ diff --git a/help/html/inherit_graph_99.map b/help/html/inherit_graph_99.map deleted file mode 100644 index 451fdbf..0000000 --- a/help/html/inherit_graph_99.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/help/html/inherit_graph_99.md5 b/help/html/inherit_graph_99.md5 deleted file mode 100644 index 2ed3911..0000000 --- a/help/html/inherit_graph_99.md5 +++ /dev/null @@ -1 +0,0 @@ -11f340d54b6025ff227a4bb1ee592c51 \ No newline at end of file diff --git a/help/html/inherit_graph_99.png b/help/html/inherit_graph_99.png deleted file mode 100644 index 08520f6..0000000 Binary files a/help/html/inherit_graph_99.png and /dev/null differ diff --git a/help/html/inherits.html b/help/html/inherits.html deleted file mode 100644 index 6b0406d..0000000 --- a/help/html/inherits.html +++ /dev/null @@ -1,154 +0,0 @@ - - - - - - - -CocoaTweet: Class Hierarchy - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
-
Class Hierarchy
-
-
- - - - - - - - - - - -
- - - -
- - - - - - - -
- - - - - - - - - - - - - - -
- - - -
- - - -
- - - -
- - - -
- - - - - - - - - - - - -
- - - -
- - - -
-
- - - - diff --git a/help/html/invalidParameterException_8h.html b/help/html/invalidParameterException_8h.html deleted file mode 100644 index eff9475..0000000 --- a/help/html/invalidParameterException_8h.html +++ /dev/null @@ -1,119 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/exception/invalidParameterException.h File Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
invalidParameterException.h File Reference
-
-
-
-Include dependency graph for invalidParameterException.h:
-
-
- - - - - - -
-
-This graph shows which files directly or indirectly include this file:
-
-
- - - - -
-
-

Go to the source code of this file.

- - - - -

-Classes

class  CocoaTweet::Exception::InvalidParameterException
 
- - - - - -

-Namespaces

 CocoaTweet
 
 CocoaTweet::Exception
 
-
- - - - diff --git a/help/html/invalidParameterException_8h__dep__incl.map b/help/html/invalidParameterException_8h__dep__incl.map deleted file mode 100644 index a7989b6..0000000 --- a/help/html/invalidParameterException_8h__dep__incl.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/help/html/invalidParameterException_8h__dep__incl.md5 b/help/html/invalidParameterException_8h__dep__incl.md5 deleted file mode 100644 index 6f4ba59..0000000 --- a/help/html/invalidParameterException_8h__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -10ca2ef78197e188b8973c79c1e5f626 \ No newline at end of file diff --git a/help/html/invalidParameterException_8h__dep__incl.png b/help/html/invalidParameterException_8h__dep__incl.png deleted file mode 100644 index bcdf4d1..0000000 Binary files a/help/html/invalidParameterException_8h__dep__incl.png and /dev/null differ diff --git a/help/html/invalidParameterException_8h__incl.map b/help/html/invalidParameterException_8h__incl.map deleted file mode 100644 index e2f8b38..0000000 --- a/help/html/invalidParameterException_8h__incl.map +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/help/html/invalidParameterException_8h__incl.md5 b/help/html/invalidParameterException_8h__incl.md5 deleted file mode 100644 index ea457e7..0000000 --- a/help/html/invalidParameterException_8h__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -3873ac1d61f9a1d7bda9c42aee4e0d0d \ No newline at end of file diff --git a/help/html/invalidParameterException_8h__incl.png b/help/html/invalidParameterException_8h__incl.png deleted file mode 100644 index caae243..0000000 Binary files a/help/html/invalidParameterException_8h__incl.png and /dev/null differ diff --git a/help/html/invalidParameterException_8h_source.html b/help/html/invalidParameterException_8h_source.html deleted file mode 100644 index 049d4d8..0000000 --- a/help/html/invalidParameterException_8h_source.html +++ /dev/null @@ -1,97 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/exception/invalidParameterException.h Source File - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
invalidParameterException.h
-
-
-Go to the documentation of this file.
1 #ifndef COCOATWEET_EXCEPTION_INVALIDPARAMETEREXCEPTION_H_
-
2 #define COCOATWEET_EXCEPTION_INVALIDPARAMETEREXCEPTION_H_
-
3 
- -
5 
-
6 namespace CocoaTweet::Exception {
-
7 class InvalidParameterException final : public Exception {
- -
9 };
-
10 } // namespace CocoaTweet::Exception
-
11 
-
12 #endif
-
-
Exception(const char *_msg)
Definition: exception.h:10
-
Definition: authenticateException.h:6
-
Definition: exception.h:8
-
Definition: invalidParameterException.h:7
- - - - - diff --git a/help/html/jquery.js b/help/html/jquery.js deleted file mode 100644 index 103c32d..0000000 --- a/help/html/jquery.js +++ /dev/null @@ -1,35 +0,0 @@ -/*! jQuery v3.4.1 | (c) JS Foundation and other contributors | jquery.org/license */ -!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.1",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;nx",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;while(l--)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(R)||[""]).length;while(l--)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/\s*$/g;function Oe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Re(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Me(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Q.hasData(e)&&(o=Q.access(e),a=Q.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Vt,Gt=[],Yt=/(=)\?(?=&|$)|\?\?/;k.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Gt.pop()||k.expando+"_"+kt++;return this[e]=!0,e}}),k.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Yt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Yt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Yt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||k.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?k(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Gt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Vt=E.implementation.createHTMLDocument("").body).innerHTML="
",2===Vt.childNodes.length),k.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=we([e],t,o),o&&o.length&&k(o).remove(),k.merge([],i.childNodes)));var r,i,o},k.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=k.css(e,"position"),c=k(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=k.css(e,"top"),u=k.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,k.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===k.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===k.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),i.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-k.css(r,"marginTop",!0),left:t.left-i.left-k.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===k.css(e,"position"))e=e.offsetParent;return e||ie})}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;k.fn[t]=function(e){return _(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),k.each(["top","left"],function(e,n){k.cssHooks[n]=ze(y.pixelPosition,function(e,t){if(t)return t=_e(e,n),$e.test(t)?k(e).position()[n]+"px":t})}),k.each({Height:"height",Width:"width"},function(a,s){k.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){k.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return _(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?k.css(e,t,i):k.style(e,t,n,i)},s,n?e:void 0,n)}})}),k.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){k.fn[n]=function(e,t){return 0a;a++)for(i in o[a])n=o[a][i],o[a].hasOwnProperty(i)&&void 0!==n&&(e[i]=t.isPlainObject(n)?t.isPlainObject(e[i])?t.widget.extend({},e[i],n):t.widget.extend({},n):n);return e},t.widget.bridge=function(e,i){var n=i.prototype.widgetFullName||e;t.fn[e]=function(o){var a="string"==typeof o,r=s.call(arguments,1),h=this;return a?this.length||"instance"!==o?this.each(function(){var i,s=t.data(this,n);return"instance"===o?(h=s,!1):s?t.isFunction(s[o])&&"_"!==o.charAt(0)?(i=s[o].apply(s,r),i!==s&&void 0!==i?(h=i&&i.jquery?h.pushStack(i.get()):i,!1):void 0):t.error("no such method '"+o+"' for "+e+" widget instance"):t.error("cannot call methods on "+e+" prior to initialization; "+"attempted to call method '"+o+"'")}):h=void 0:(r.length&&(o=t.widget.extend.apply(null,[o].concat(r))),this.each(function(){var e=t.data(this,n);e?(e.option(o||{}),e._init&&e._init()):t.data(this,n,new i(o,this))})),h}},t.Widget=function(){},t.Widget._childConstructors=[],t.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"
",options:{classes:{},disabled:!1,create:null},_createWidget:function(e,s){s=t(s||this.defaultElement||this)[0],this.element=t(s),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=t(),this.hoverable=t(),this.focusable=t(),this.classesElementLookup={},s!==this&&(t.data(s,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===s&&this.destroy()}}),this.document=t(s.style?s.ownerDocument:s.document||s),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this.options=t.widget.extend({},this.options,this._getCreateOptions(),e),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){var e=this;this._destroy(),t.each(this.classesElementLookup,function(t,i){e._removeClass(i,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:t.noop,widget:function(){return this.element},option:function(e,i){var s,n,o,a=e;if(0===arguments.length)return t.widget.extend({},this.options);if("string"==typeof e)if(a={},s=e.split("."),e=s.shift(),s.length){for(n=a[e]=t.widget.extend({},this.options[e]),o=0;s.length-1>o;o++)n[s[o]]=n[s[o]]||{},n=n[s[o]];if(e=s.pop(),1===arguments.length)return void 0===n[e]?null:n[e];n[e]=i}else{if(1===arguments.length)return void 0===this.options[e]?null:this.options[e];a[e]=i}return this._setOptions(a),this},_setOptions:function(t){var e;for(e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(e){var i,s,n;for(i in e)n=this.classesElementLookup[i],e[i]!==this.options.classes[i]&&n&&n.length&&(s=t(n.get()),this._removeClass(n,i),s.addClass(this._classes({element:s,keys:i,classes:e,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_classes:function(e){function i(i,o){var a,r;for(r=0;i.length>r;r++)a=n.classesElementLookup[i[r]]||t(),a=e.add?t(t.unique(a.get().concat(e.element.get()))):t(a.not(e.element).get()),n.classesElementLookup[i[r]]=a,s.push(i[r]),o&&e.classes[i[r]]&&s.push(e.classes[i[r]])}var s=[],n=this;return e=t.extend({element:this.element,classes:this.options.classes||{}},e),this._on(e.element,{remove:"_untrackClassesElement"}),e.keys&&i(e.keys.match(/\S+/g)||[],!0),e.extra&&i(e.extra.match(/\S+/g)||[]),s.join(" ")},_untrackClassesElement:function(e){var i=this;t.each(i.classesElementLookup,function(s,n){-1!==t.inArray(e.target,n)&&(i.classesElementLookup[s]=t(n.not(e.target).get()))})},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){s="boolean"==typeof s?s:i;var n="string"==typeof t||null===t,o={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s};return o.element.toggleClass(this._classes(o),s),this},_on:function(e,i,s){var n,o=this;"boolean"!=typeof e&&(s=i,i=e,e=!1),s?(i=n=t(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),t.each(s,function(s,a){function r(){return e||o.options.disabled!==!0&&!t(this).hasClass("ui-state-disabled")?("string"==typeof a?o[a]:a).apply(o,arguments):void 0}"string"!=typeof a&&(r.guid=a.guid=a.guid||r.guid||t.guid++);var h=s.match(/^([\w:-]*)\s*(.*)$/),l=h[1]+o.eventNamespace,c=h[2];c?n.on(l,c,r):i.on(l,r)})},_off:function(e,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.off(i).off(i),this.bindings=t(this.bindings.not(e).get()),this.focusable=t(this.focusable.not(e).get()),this.hoverable=t(this.hoverable.not(e).get())},_delay:function(t,e){function i(){return("string"==typeof t?s[t]:t).apply(s,arguments)}var s=this;return setTimeout(i,e||0)},_hoverable:function(e){this.hoverable=this.hoverable.add(e),this._on(e,{mouseenter:function(e){this._addClass(t(e.currentTarget),null,"ui-state-hover")},mouseleave:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-hover")}})},_focusable:function(e){this.focusable=this.focusable.add(e),this._on(e,{focusin:function(e){this._addClass(t(e.currentTarget),null,"ui-state-focus")},focusout:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-focus")}})},_trigger:function(e,i,s){var n,o,a=this.options[e];if(s=s||{},i=t.Event(i),i.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase(),i.target=this.element[0],o=i.originalEvent)for(n in o)n in i||(i[n]=o[n]);return this.element.trigger(i,s),!(t.isFunction(a)&&a.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},t.each({show:"fadeIn",hide:"fadeOut"},function(e,i){t.Widget.prototype["_"+e]=function(s,n,o){"string"==typeof n&&(n={effect:n});var a,r=n?n===!0||"number"==typeof n?i:n.effect||i:e;n=n||{},"number"==typeof n&&(n={duration:n}),a=!t.isEmptyObject(n),n.complete=o,n.delay&&s.delay(n.delay),a&&t.effects&&t.effects.effect[r]?s[e](n):r!==e&&s[r]?s[r](n.duration,n.easing,o):s.queue(function(i){t(this)[e](),o&&o.call(s[0]),i()})}}),t.widget,function(){function e(t,e,i){return[parseFloat(t[0])*(u.test(t[0])?e/100:1),parseFloat(t[1])*(u.test(t[1])?i/100:1)]}function i(e,i){return parseInt(t.css(e,i),10)||0}function s(e){var i=e[0];return 9===i.nodeType?{width:e.width(),height:e.height(),offset:{top:0,left:0}}:t.isWindow(i)?{width:e.width(),height:e.height(),offset:{top:e.scrollTop(),left:e.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:e.outerWidth(),height:e.outerHeight(),offset:e.offset()}}var n,o=Math.max,a=Math.abs,r=/left|center|right/,h=/top|center|bottom/,l=/[\+\-]\d+(\.[\d]+)?%?/,c=/^\w+/,u=/%$/,d=t.fn.position;t.position={scrollbarWidth:function(){if(void 0!==n)return n;var e,i,s=t("
"),o=s.children()[0];return t("body").append(s),e=o.offsetWidth,s.css("overflow","scroll"),i=o.offsetWidth,e===i&&(i=s[0].clientWidth),s.remove(),n=e-i},getScrollInfo:function(e){var i=e.isWindow||e.isDocument?"":e.element.css("overflow-x"),s=e.isWindow||e.isDocument?"":e.element.css("overflow-y"),n="scroll"===i||"auto"===i&&e.widthi?"left":e>0?"right":"center",vertical:0>r?"top":s>0?"bottom":"middle"};l>p&&p>a(e+i)&&(u.horizontal="center"),c>f&&f>a(s+r)&&(u.vertical="middle"),u.important=o(a(e),a(i))>o(a(s),a(r))?"horizontal":"vertical",n.using.call(this,t,u)}),h.offset(t.extend(D,{using:r}))})},t.ui.position={fit:{left:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=t.left-e.collisionPosition.marginLeft,h=n-r,l=r+e.collisionWidth-a-n;e.collisionWidth>a?h>0&&0>=l?(i=t.left+h+e.collisionWidth-a-n,t.left+=h-i):t.left=l>0&&0>=h?n:h>l?n+a-e.collisionWidth:n:h>0?t.left+=h:l>0?t.left-=l:t.left=o(t.left-r,t.left)},top:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollTop:s.offset.top,a=e.within.height,r=t.top-e.collisionPosition.marginTop,h=n-r,l=r+e.collisionHeight-a-n;e.collisionHeight>a?h>0&&0>=l?(i=t.top+h+e.collisionHeight-a-n,t.top+=h-i):t.top=l>0&&0>=h?n:h>l?n+a-e.collisionHeight:n:h>0?t.top+=h:l>0?t.top-=l:t.top=o(t.top-r,t.top)}},flip:{left:function(t,e){var i,s,n=e.within,o=n.offset.left+n.scrollLeft,r=n.width,h=n.isWindow?n.scrollLeft:n.offset.left,l=t.left-e.collisionPosition.marginLeft,c=l-h,u=l+e.collisionWidth-r-h,d="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,p="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,f=-2*e.offset[0];0>c?(i=t.left+d+p+f+e.collisionWidth-r-o,(0>i||a(c)>i)&&(t.left+=d+p+f)):u>0&&(s=t.left-e.collisionPosition.marginLeft+d+p+f-h,(s>0||u>a(s))&&(t.left+=d+p+f))},top:function(t,e){var i,s,n=e.within,o=n.offset.top+n.scrollTop,r=n.height,h=n.isWindow?n.scrollTop:n.offset.top,l=t.top-e.collisionPosition.marginTop,c=l-h,u=l+e.collisionHeight-r-h,d="top"===e.my[1],p=d?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,f="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,m=-2*e.offset[1];0>c?(s=t.top+p+f+m+e.collisionHeight-r-o,(0>s||a(c)>s)&&(t.top+=p+f+m)):u>0&&(i=t.top-e.collisionPosition.marginTop+p+f+m-h,(i>0||u>a(i))&&(t.top+=p+f+m))}},flipfit:{left:function(){t.ui.position.flip.left.apply(this,arguments),t.ui.position.fit.left.apply(this,arguments)},top:function(){t.ui.position.flip.top.apply(this,arguments),t.ui.position.fit.top.apply(this,arguments)}}}}(),t.ui.position,t.extend(t.expr[":"],{data:t.expr.createPseudo?t.expr.createPseudo(function(e){return function(i){return!!t.data(i,e)}}):function(e,i,s){return!!t.data(e,s[3])}}),t.fn.extend({disableSelection:function(){var t="onselectstart"in document.createElement("div")?"selectstart":"mousedown";return function(){return this.on(t+".ui-disableSelection",function(t){t.preventDefault()})}}(),enableSelection:function(){return this.off(".ui-disableSelection")}}),t.ui.focusable=function(i,s){var n,o,a,r,h,l=i.nodeName.toLowerCase();return"area"===l?(n=i.parentNode,o=n.name,i.href&&o&&"map"===n.nodeName.toLowerCase()?(a=t("img[usemap='#"+o+"']"),a.length>0&&a.is(":visible")):!1):(/^(input|select|textarea|button|object)$/.test(l)?(r=!i.disabled,r&&(h=t(i).closest("fieldset")[0],h&&(r=!h.disabled))):r="a"===l?i.href||s:s,r&&t(i).is(":visible")&&e(t(i)))},t.extend(t.expr[":"],{focusable:function(e){return t.ui.focusable(e,null!=t.attr(e,"tabindex"))}}),t.ui.focusable,t.fn.form=function(){return"string"==typeof this[0].form?this.closest("form"):t(this[0].form)},t.ui.formResetMixin={_formResetHandler:function(){var e=t(this);setTimeout(function(){var i=e.data("ui-form-reset-instances");t.each(i,function(){this.refresh()})})},_bindFormResetHandler:function(){if(this.form=this.element.form(),this.form.length){var t=this.form.data("ui-form-reset-instances")||[];t.length||this.form.on("reset.ui-form-reset",this._formResetHandler),t.push(this),this.form.data("ui-form-reset-instances",t)}},_unbindFormResetHandler:function(){if(this.form.length){var e=this.form.data("ui-form-reset-instances");e.splice(t.inArray(this,e),1),e.length?this.form.data("ui-form-reset-instances",e):this.form.removeData("ui-form-reset-instances").off("reset.ui-form-reset")}}},"1.7"===t.fn.jquery.substring(0,3)&&(t.each(["Width","Height"],function(e,i){function s(e,i,s,o){return t.each(n,function(){i-=parseFloat(t.css(e,"padding"+this))||0,s&&(i-=parseFloat(t.css(e,"border"+this+"Width"))||0),o&&(i-=parseFloat(t.css(e,"margin"+this))||0)}),i}var n="Width"===i?["Left","Right"]:["Top","Bottom"],o=i.toLowerCase(),a={innerWidth:t.fn.innerWidth,innerHeight:t.fn.innerHeight,outerWidth:t.fn.outerWidth,outerHeight:t.fn.outerHeight};t.fn["inner"+i]=function(e){return void 0===e?a["inner"+i].call(this):this.each(function(){t(this).css(o,s(this,e)+"px")})},t.fn["outer"+i]=function(e,n){return"number"!=typeof e?a["outer"+i].call(this,e):this.each(function(){t(this).css(o,s(this,e,!0,n)+"px")})}}),t.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),t.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},t.ui.escapeSelector=function(){var t=/([!"#$%&'()*+,./:;<=>?@[\]^`{|}~])/g;return function(e){return e.replace(t,"\\$1")}}(),t.fn.labels=function(){var e,i,s,n,o;return this[0].labels&&this[0].labels.length?this.pushStack(this[0].labels):(n=this.eq(0).parents("label"),s=this.attr("id"),s&&(e=this.eq(0).parents().last(),o=e.add(e.length?e.siblings():this.siblings()),i="label[for='"+t.ui.escapeSelector(s)+"']",n=n.add(o.find(i).addBack(i))),this.pushStack(n))},t.fn.scrollParent=function(e){var i=this.css("position"),s="absolute"===i,n=e?/(auto|scroll|hidden)/:/(auto|scroll)/,o=this.parents().filter(function(){var e=t(this);return s&&"static"===e.css("position")?!1:n.test(e.css("overflow")+e.css("overflow-y")+e.css("overflow-x"))}).eq(0);return"fixed"!==i&&o.length?o:t(this[0].ownerDocument||document)},t.extend(t.expr[":"],{tabbable:function(e){var i=t.attr(e,"tabindex"),s=null!=i;return(!s||i>=0)&&t.ui.focusable(e,s)}}),t.fn.extend({uniqueId:function(){var t=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++t)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&t(this).removeAttr("id")})}}),t.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase());var n=!1;t(document).on("mouseup",function(){n=!1}),t.widget("ui.mouse",{version:"1.12.1",options:{cancel:"input, textarea, button, select, option",distance:1,delay:0},_mouseInit:function(){var e=this;this.element.on("mousedown."+this.widgetName,function(t){return e._mouseDown(t)}).on("click."+this.widgetName,function(i){return!0===t.data(i.target,e.widgetName+".preventClickEvent")?(t.removeData(i.target,e.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):void 0}),this.started=!1},_mouseDestroy:function(){this.element.off("."+this.widgetName),this._mouseMoveDelegate&&this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(e){if(!n){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(e),this._mouseDownEvent=e;var i=this,s=1===e.which,o="string"==typeof this.options.cancel&&e.target.nodeName?t(e.target).closest(this.options.cancel).length:!1;return s&&!o&&this._mouseCapture(e)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){i.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(e)!==!1,!this._mouseStarted)?(e.preventDefault(),!0):(!0===t.data(e.target,this.widgetName+".preventClickEvent")&&t.removeData(e.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(t){return i._mouseMove(t)},this._mouseUpDelegate=function(t){return i._mouseUp(t)},this.document.on("mousemove."+this.widgetName,this._mouseMoveDelegate).on("mouseup."+this.widgetName,this._mouseUpDelegate),e.preventDefault(),n=!0,!0)):!0}},_mouseMove:function(e){if(this._mouseMoved){if(t.ui.ie&&(!document.documentMode||9>document.documentMode)&&!e.button)return this._mouseUp(e);if(!e.which)if(e.originalEvent.altKey||e.originalEvent.ctrlKey||e.originalEvent.metaKey||e.originalEvent.shiftKey)this.ignoreMissingWhich=!0;else if(!this.ignoreMissingWhich)return this._mouseUp(e)}return(e.which||e.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(e),e.preventDefault()):(this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,e)!==!1,this._mouseStarted?this._mouseDrag(e):this._mouseUp(e)),!this._mouseStarted)},_mouseUp:function(e){this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,e.target===this._mouseDownEvent.target&&t.data(e.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(e)),this._mouseDelayTimer&&(clearTimeout(this._mouseDelayTimer),delete this._mouseDelayTimer),this.ignoreMissingWhich=!1,n=!1,e.preventDefault()},_mouseDistanceMet:function(t){return Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),t.ui.plugin={add:function(e,i,s){var n,o=t.ui[e].prototype;for(n in s)o.plugins[n]=o.plugins[n]||[],o.plugins[n].push([i,s[n]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;o.length>n;n++)t.options[o[n][0]]&&o[n][1].apply(t.element,i)}},t.widget("ui.resizable",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,classes:{"ui-resizable-se":"ui-icon ui-icon-gripsmall-diagonal-se"},containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(t){return parseFloat(t)||0},_isNumber:function(t){return!isNaN(parseFloat(t))},_hasScroll:function(e,i){if("hidden"===t(e).css("overflow"))return!1;var s=i&&"left"===i?"scrollLeft":"scrollTop",n=!1;return e[s]>0?!0:(e[s]=1,n=e[s]>0,e[s]=0,n)},_create:function(){var e,i=this.options,s=this;this._addClass("ui-resizable"),t.extend(this,{_aspectRatio:!!i.aspectRatio,aspectRatio:i.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:i.helper||i.ghost||i.animate?i.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)&&(this.element.wrap(t("
").css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,e={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(e),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(e),this._proportionallyResize()),this._setupHandles(),i.autoHide&&t(this.element).on("mouseenter",function(){i.disabled||(s._removeClass("ui-resizable-autohide"),s._handles.show())}).on("mouseleave",function(){i.disabled||s.resizing||(s._addClass("ui-resizable-autohide"),s._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy();var e,i=function(e){t(e).removeData("resizable").removeData("ui-resizable").off(".resizable").find(".ui-resizable-handle").remove()};return this.elementIsWrapper&&(i(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),i(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;default:}},_setupHandles:function(){var e,i,s,n,o,a=this.options,r=this;if(this.handles=a.handles||(t(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=t(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),s=this.handles.split(","),this.handles={},i=0;s.length>i;i++)e=t.trim(s[i]),n="ui-resizable-"+e,o=t("
"),this._addClass(o,"ui-resizable-handle "+n),o.css({zIndex:a.zIndex}),this.handles[e]=".ui-resizable-"+e,this.element.append(o);this._renderAxis=function(e){var i,s,n,o;e=e||this.element;for(i in this.handles)this.handles[i].constructor===String?this.handles[i]=this.element.children(this.handles[i]).first().show():(this.handles[i].jquery||this.handles[i].nodeType)&&(this.handles[i]=t(this.handles[i]),this._on(this.handles[i],{mousedown:r._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(s=t(this.handles[i],this.element),o=/sw|ne|nw|se|n|s/.test(i)?s.outerHeight():s.outerWidth(),n=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join(""),e.css(n,o),this._proportionallyResize()),this._handles=this._handles.add(this.handles[i])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){r.resizing||(this.className&&(o=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),r.axis=o&&o[1]?o[1]:"se")}),a.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._handles.remove()},_mouseCapture:function(e){var i,s,n=!1;for(i in this.handles)s=t(this.handles[i])[0],(s===e.target||t.contains(s,e.target))&&(n=!0);return!this.options.disabled&&n},_mouseStart:function(e){var i,s,n,o=this.options,a=this.element;return this.resizing=!0,this._renderProxy(),i=this._num(this.helper.css("left")),s=this._num(this.helper.css("top")),o.containment&&(i+=t(o.containment).scrollLeft()||0,s+=t(o.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:i,top:s},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:a.width(),height:a.height()},this.originalSize=this._helper?{width:a.outerWidth(),height:a.outerHeight()}:{width:a.width(),height:a.height()},this.sizeDiff={width:a.outerWidth()-a.width(),height:a.outerHeight()-a.height()},this.originalPosition={left:i,top:s},this.originalMousePosition={left:e.pageX,top:e.pageY},this.aspectRatio="number"==typeof o.aspectRatio?o.aspectRatio:this.originalSize.width/this.originalSize.height||1,n=t(".ui-resizable-"+this.axis).css("cursor"),t("body").css("cursor","auto"===n?this.axis+"-resize":n),this._addClass("ui-resizable-resizing"),this._propagate("start",e),!0},_mouseDrag:function(e){var i,s,n=this.originalMousePosition,o=this.axis,a=e.pageX-n.left||0,r=e.pageY-n.top||0,h=this._change[o];return this._updatePrevProperties(),h?(i=h.apply(this,[e,a,r]),this._updateVirtualBoundaries(e.shiftKey),(this._aspectRatio||e.shiftKey)&&(i=this._updateRatio(i,e)),i=this._respectSize(i,e),this._updateCache(i),this._propagate("resize",e),s=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),t.isEmptyObject(s)||(this._updatePrevProperties(),this._trigger("resize",e,this.ui()),this._applyChanges()),!1):!1},_mouseStop:function(e){this.resizing=!1;var i,s,n,o,a,r,h,l=this.options,c=this;return this._helper&&(i=this._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),n=s&&this._hasScroll(i[0],"left")?0:c.sizeDiff.height,o=s?0:c.sizeDiff.width,a={width:c.helper.width()-o,height:c.helper.height()-n},r=parseFloat(c.element.css("left"))+(c.position.left-c.originalPosition.left)||null,h=parseFloat(c.element.css("top"))+(c.position.top-c.originalPosition.top)||null,l.animate||this.element.css(t.extend(a,{top:h,left:r})),c.helper.height(c.size.height),c.helper.width(c.size.width),this._helper&&!l.animate&&this._proportionallyResize()),t("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",e),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s,n,o,a=this.options;o={minWidth:this._isNumber(a.minWidth)?a.minWidth:0,maxWidth:this._isNumber(a.maxWidth)?a.maxWidth:1/0,minHeight:this._isNumber(a.minHeight)?a.minHeight:0,maxHeight:this._isNumber(a.maxHeight)?a.maxHeight:1/0},(this._aspectRatio||t)&&(e=o.minHeight*this.aspectRatio,s=o.minWidth/this.aspectRatio,i=o.maxHeight*this.aspectRatio,n=o.maxWidth/this.aspectRatio,e>o.minWidth&&(o.minWidth=e),s>o.minHeight&&(o.minHeight=s),o.maxWidth>i&&(o.maxWidth=i),o.maxHeight>n&&(o.maxHeight=n)),this._vBoundaries=o},_updateCache:function(t){this.offset=this.helper.offset(),this._isNumber(t.left)&&(this.position.left=t.left),this._isNumber(t.top)&&(this.position.top=t.top),this._isNumber(t.height)&&(this.size.height=t.height),this._isNumber(t.width)&&(this.size.width=t.width)},_updateRatio:function(t){var e=this.position,i=this.size,s=this.axis;return this._isNumber(t.height)?t.width=t.height*this.aspectRatio:this._isNumber(t.width)&&(t.height=t.width/this.aspectRatio),"sw"===s&&(t.left=e.left+(i.width-t.width),t.top=null),"nw"===s&&(t.top=e.top+(i.height-t.height),t.left=e.left+(i.width-t.width)),t},_respectSize:function(t){var e=this._vBoundaries,i=this.axis,s=this._isNumber(t.width)&&e.maxWidth&&e.maxWidtht.width,a=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,r=this.originalPosition.left+this.originalSize.width,h=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),c=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),a&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=r-e.minWidth),s&&l&&(t.left=r-e.maxWidth),a&&c&&(t.top=h-e.minHeight),n&&c&&(t.top=h-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];4>e;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;this._proportionallyResizeElements.length>e;e++)t=this._proportionallyResizeElements[e],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(t)),t.css({height:i.height()-this.outerDimensions.height||0,width:i.width()-this.outerDimensions.width||0})},_renderProxy:function(){var e=this.element,i=this.options;this.elementOffset=e.offset(),this._helper?(this.helper=this.helper||t("
"),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++i.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element -},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize,s=this.originalPosition;return{left:s.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize,n=this.originalPosition;return{top:n.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},sw:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[e,i,s]))},ne:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},nw:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[e,i,s]))}},_propagate:function(e,i){t.ui.plugin.call(this,e,[i,this.ui()]),"resize"!==e&&this._trigger(e,i,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),t.ui.plugin.add("resizable","animate",{stop:function(e){var i=t(this).resizable("instance"),s=i.options,n=i._proportionallyResizeElements,o=n.length&&/textarea/i.test(n[0].nodeName),a=o&&i._hasScroll(n[0],"left")?0:i.sizeDiff.height,r=o?0:i.sizeDiff.width,h={width:i.size.width-r,height:i.size.height-a},l=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,c=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(t.extend(h,c&&l?{top:c,left:l}:{}),{duration:s.animateDuration,easing:s.animateEasing,step:function(){var s={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};n&&n.length&&t(n[0]).css({width:s.width,height:s.height}),i._updateCache(s),i._propagate("resize",e)}})}}),t.ui.plugin.add("resizable","containment",{start:function(){var e,i,s,n,o,a,r,h=t(this).resizable("instance"),l=h.options,c=h.element,u=l.containment,d=u instanceof t?u.get(0):/parent/.test(u)?c.parent().get(0):u;d&&(h.containerElement=t(d),/document/.test(u)||u===document?(h.containerOffset={left:0,top:0},h.containerPosition={left:0,top:0},h.parentData={element:t(document),left:0,top:0,width:t(document).width(),height:t(document).height()||document.body.parentNode.scrollHeight}):(e=t(d),i=[],t(["Top","Right","Left","Bottom"]).each(function(t,s){i[t]=h._num(e.css("padding"+s))}),h.containerOffset=e.offset(),h.containerPosition=e.position(),h.containerSize={height:e.innerHeight()-i[3],width:e.innerWidth()-i[1]},s=h.containerOffset,n=h.containerSize.height,o=h.containerSize.width,a=h._hasScroll(d,"left")?d.scrollWidth:o,r=h._hasScroll(d)?d.scrollHeight:n,h.parentData={element:d,left:s.left,top:s.top,width:a,height:r}))},resize:function(e){var i,s,n,o,a=t(this).resizable("instance"),r=a.options,h=a.containerOffset,l=a.position,c=a._aspectRatio||e.shiftKey,u={top:0,left:0},d=a.containerElement,p=!0;d[0]!==document&&/static/.test(d.css("position"))&&(u=h),l.left<(a._helper?h.left:0)&&(a.size.width=a.size.width+(a._helper?a.position.left-h.left:a.position.left-u.left),c&&(a.size.height=a.size.width/a.aspectRatio,p=!1),a.position.left=r.helper?h.left:0),l.top<(a._helper?h.top:0)&&(a.size.height=a.size.height+(a._helper?a.position.top-h.top:a.position.top),c&&(a.size.width=a.size.height*a.aspectRatio,p=!1),a.position.top=a._helper?h.top:0),n=a.containerElement.get(0)===a.element.parent().get(0),o=/relative|absolute/.test(a.containerElement.css("position")),n&&o?(a.offset.left=a.parentData.left+a.position.left,a.offset.top=a.parentData.top+a.position.top):(a.offset.left=a.element.offset().left,a.offset.top=a.element.offset().top),i=Math.abs(a.sizeDiff.width+(a._helper?a.offset.left-u.left:a.offset.left-h.left)),s=Math.abs(a.sizeDiff.height+(a._helper?a.offset.top-u.top:a.offset.top-h.top)),i+a.size.width>=a.parentData.width&&(a.size.width=a.parentData.width-i,c&&(a.size.height=a.size.width/a.aspectRatio,p=!1)),s+a.size.height>=a.parentData.height&&(a.size.height=a.parentData.height-s,c&&(a.size.width=a.size.height*a.aspectRatio,p=!1)),p||(a.position.left=a.prevPosition.left,a.position.top=a.prevPosition.top,a.size.width=a.prevSize.width,a.size.height=a.prevSize.height)},stop:function(){var e=t(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.containerPosition,o=e.containerElement,a=t(e.helper),r=a.offset(),h=a.outerWidth()-e.sizeDiff.width,l=a.outerHeight()-e.sizeDiff.height;e._helper&&!i.animate&&/relative/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l}),e._helper&&!i.animate&&/static/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l})}}),t.ui.plugin.add("resizable","alsoResize",{start:function(){var e=t(this).resizable("instance"),i=e.options;t(i.alsoResize).each(function(){var e=t(this);e.data("ui-resizable-alsoresize",{width:parseFloat(e.width()),height:parseFloat(e.height()),left:parseFloat(e.css("left")),top:parseFloat(e.css("top"))})})},resize:function(e,i){var s=t(this).resizable("instance"),n=s.options,o=s.originalSize,a=s.originalPosition,r={height:s.size.height-o.height||0,width:s.size.width-o.width||0,top:s.position.top-a.top||0,left:s.position.left-a.left||0};t(n.alsoResize).each(function(){var e=t(this),s=t(this).data("ui-resizable-alsoresize"),n={},o=e.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];t.each(o,function(t,e){var i=(s[e]||0)+(r[e]||0);i&&i>=0&&(n[e]=i||null)}),e.css(n)})},stop:function(){t(this).removeData("ui-resizable-alsoresize")}}),t.ui.plugin.add("resizable","ghost",{start:function(){var e=t(this).resizable("instance"),i=e.size;e.ghost=e.originalElement.clone(),e.ghost.css({opacity:.25,display:"block",position:"relative",height:i.height,width:i.width,margin:0,left:0,top:0}),e._addClass(e.ghost,"ui-resizable-ghost"),t.uiBackCompat!==!1&&"string"==typeof e.options.ghost&&e.ghost.addClass(this.options.ghost),e.ghost.appendTo(e.helper)},resize:function(){var e=t(this).resizable("instance");e.ghost&&e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})},stop:function(){var e=t(this).resizable("instance");e.ghost&&e.helper&&e.helper.get(0).removeChild(e.ghost.get(0))}}),t.ui.plugin.add("resizable","grid",{resize:function(){var e,i=t(this).resizable("instance"),s=i.options,n=i.size,o=i.originalSize,a=i.originalPosition,r=i.axis,h="number"==typeof s.grid?[s.grid,s.grid]:s.grid,l=h[0]||1,c=h[1]||1,u=Math.round((n.width-o.width)/l)*l,d=Math.round((n.height-o.height)/c)*c,p=o.width+u,f=o.height+d,m=s.maxWidth&&p>s.maxWidth,g=s.maxHeight&&f>s.maxHeight,_=s.minWidth&&s.minWidth>p,v=s.minHeight&&s.minHeight>f;s.grid=h,_&&(p+=l),v&&(f+=c),m&&(p-=l),g&&(f-=c),/^(se|s|e)$/.test(r)?(i.size.width=p,i.size.height=f):/^(ne)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.top=a.top-d):/^(sw)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.left=a.left-u):((0>=f-c||0>=p-l)&&(e=i._getPaddingPlusBorderDimensions(this)),f-c>0?(i.size.height=f,i.position.top=a.top-d):(f=c-e.height,i.size.height=f,i.position.top=a.top+o.height-f),p-l>0?(i.size.width=p,i.position.left=a.left-u):(p=l-e.width,i.size.width=p,i.position.left=a.left+o.width-p))}}),t.ui.resizable});/** - * Copyright (c) 2007 Ariel Flesler - aflesler ○ gmail • com | https://github.com/flesler - * Licensed under MIT - * @author Ariel Flesler - * @version 2.1.2 - */ -;(function(f){"use strict";"function"===typeof define&&define.amd?define(["jquery"],f):"undefined"!==typeof module&&module.exports?module.exports=f(require("jquery")):f(jQuery)})(function($){"use strict";function n(a){return!a.nodeName||-1!==$.inArray(a.nodeName.toLowerCase(),["iframe","#document","html","body"])}function h(a){return $.isFunction(a)||$.isPlainObject(a)?a:{top:a,left:a}}var p=$.scrollTo=function(a,d,b){return $(window).scrollTo(a,d,b)};p.defaults={axis:"xy",duration:0,limit:!0};$.fn.scrollTo=function(a,d,b){"object"=== typeof d&&(b=d,d=0);"function"===typeof b&&(b={onAfter:b});"max"===a&&(a=9E9);b=$.extend({},p.defaults,b);d=d||b.duration;var u=b.queue&&1=f[g]?0:Math.min(f[g],n));!a&&1-1){targetElements.on(evt+EVENT_NAMESPACE,function elementToggle(event){$.powerTip.toggle(this,event)})}else{targetElements.on(evt+EVENT_NAMESPACE,function elementOpen(event){$.powerTip.show(this,event)})}});$.each(options.closeEvents,function(idx,evt){if($.inArray(evt,options.openEvents)<0){targetElements.on(evt+EVENT_NAMESPACE,function elementClose(event){$.powerTip.hide(this,!isMouseEvent(event))})}});targetElements.on("keydown"+EVENT_NAMESPACE,function elementKeyDown(event){if(event.keyCode===27){$.powerTip.hide(this,true)}})}return targetElements};$.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",popupClass:null,intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false,openEvents:["mouseenter","focus"],closeEvents:["mouseleave","blur"]};$.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se","n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};$.powerTip={show:function apiShowTip(element,event){if(isMouseEvent(event)){trackMouse(event);session.previousX=event.pageX;session.previousY=event.pageY;$(element).data(DATA_DISPLAYCONTROLLER).show()}else{$(element).first().data(DATA_DISPLAYCONTROLLER).show(true,true)}return element},reposition:function apiResetPosition(element){$(element).first().data(DATA_DISPLAYCONTROLLER).resetPosition();return element},hide:function apiCloseTip(element,immediate){var displayController;immediate=element?immediate:true;if(element){displayController=$(element).first().data(DATA_DISPLAYCONTROLLER)}else if(session.activeHover){displayController=session.activeHover.data(DATA_DISPLAYCONTROLLER)}if(displayController){displayController.hide(immediate)}return element},toggle:function apiToggle(element,event){if(session.activeHover&&session.activeHover.is(element)){$.powerTip.hide(element,!isMouseEvent(event))}else{$.powerTip.show(element,event)}return element}};$.powerTip.showTip=$.powerTip.show;$.powerTip.closeTip=$.powerTip.hide;function CSSCoordinates(){var me=this;me.top="auto";me.left="auto";me.right="auto";me.bottom="auto";me.set=function(property,value){if($.isNumeric(value)){me[property]=Math.round(value)}}}function DisplayController(element,options,tipController){var hoverTimer=null,myCloseDelay=null;function openTooltip(immediate,forceOpen){cancelTimer();if(!element.data(DATA_HASACTIVEHOVER)){if(!immediate){session.tipOpenImminent=true;hoverTimer=setTimeout(function intentDelay(){hoverTimer=null;checkForIntent()},options.intentPollInterval)}else{if(forceOpen){element.data(DATA_FORCEDOPEN,true)}closeAnyDelayed();tipController.showTip(element)}}else{cancelClose()}}function closeTooltip(disableDelay){if(myCloseDelay){myCloseDelay=session.closeDelayTimeout=clearTimeout(myCloseDelay);session.delayInProgress=false}cancelTimer();session.tipOpenImminent=false;if(element.data(DATA_HASACTIVEHOVER)){element.data(DATA_FORCEDOPEN,false);if(!disableDelay){session.delayInProgress=true;session.closeDelayTimeout=setTimeout(function closeDelay(){session.closeDelayTimeout=null;tipController.hideTip(element);session.delayInProgress=false;myCloseDelay=null},options.closeDelay);myCloseDelay=session.closeDelayTimeout}else{tipController.hideTip(element)}}}function checkForIntent(){var xDifference=Math.abs(session.previousX-session.currentX),yDifference=Math.abs(session.previousY-session.currentY),totalDifference=xDifference+yDifference;if(totalDifference",{id:options.popupId});if($body.length===0){$body=$("body")}$body.append(tipElement);session.tooltips=session.tooltips?session.tooltips.add(tipElement):tipElement}if(options.followMouse){if(!tipElement.data(DATA_HASMOUSEMOVE)){$document.on("mousemove"+EVENT_NAMESPACE,positionTipOnCursor);$window.on("scroll"+EVENT_NAMESPACE,positionTipOnCursor);tipElement.data(DATA_HASMOUSEMOVE,true)}}function beginShowTip(element){element.data(DATA_HASACTIVEHOVER,true);tipElement.queue(function queueTipInit(next){showTip(element);next()})}function showTip(element){var tipContent;if(!element.data(DATA_HASACTIVEHOVER)){return}if(session.isTipOpen){if(!session.isClosing){hideTip(session.activeHover)}tipElement.delay(100).queue(function queueTipAgain(next){showTip(element);next()});return}element.trigger("powerTipPreRender");tipContent=getTooltipContent(element);if(tipContent){tipElement.empty().append(tipContent)}else{return}element.trigger("powerTipRender");session.activeHover=element;session.isTipOpen=true;tipElement.data(DATA_MOUSEONTOTIP,options.mouseOnToPopup);tipElement.addClass(options.popupClass);if(!options.followMouse||element.data(DATA_FORCEDOPEN)){positionTipOnElement(element);session.isFixedTipOpen=true}else{positionTipOnCursor()}if(!element.data(DATA_FORCEDOPEN)&&!options.followMouse){$document.on("click"+EVENT_NAMESPACE,function documentClick(event){var target=event.target;if(target!==element[0]){if(options.mouseOnToPopup){if(target!==tipElement[0]&&!$.contains(tipElement[0],target)){$.powerTip.hide()}}else{$.powerTip.hide()}}})}if(options.mouseOnToPopup&&!options.manual){tipElement.on("mouseenter"+EVENT_NAMESPACE,function tipMouseEnter(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).cancel()}});tipElement.on("mouseleave"+EVENT_NAMESPACE,function tipMouseLeave(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide()}})}tipElement.fadeIn(options.fadeInTime,function fadeInCallback(){if(!session.desyncTimeout){session.desyncTimeout=setInterval(closeDesyncedTip,500)}element.trigger("powerTipOpen")})}function hideTip(element){session.isClosing=true;session.isTipOpen=false;session.desyncTimeout=clearInterval(session.desyncTimeout);element.data(DATA_HASACTIVEHOVER,false);element.data(DATA_FORCEDOPEN,false);$document.off("click"+EVENT_NAMESPACE);tipElement.off(EVENT_NAMESPACE);tipElement.fadeOut(options.fadeOutTime,function fadeOutCallback(){var coords=new CSSCoordinates;session.activeHover=null;session.isClosing=false;session.isFixedTipOpen=false;tipElement.removeClass();coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);tipElement.css(coords);element.trigger("powerTipClose")})}function positionTipOnCursor(){var tipWidth,tipHeight,coords,collisions,collisionCount;if(!session.isFixedTipOpen&&(session.isTipOpen||session.tipOpenImminent&&tipElement.data(DATA_HASMOUSEMOVE))){tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=new CSSCoordinates;coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);collisions=getViewportCollisions(coords,tipWidth,tipHeight);if(collisions!==Collision.none){collisionCount=countFlags(collisions);if(collisionCount===1){if(collisions===Collision.right){coords.set("left",session.scrollLeft+session.windowWidth-tipWidth)}else if(collisions===Collision.bottom){coords.set("top",session.scrollTop+session.windowHeight-tipHeight)}}else{coords.set("left",session.currentX-tipWidth-options.offset);coords.set("top",session.currentY-tipHeight-options.offset)}}tipElement.css(coords)}}function positionTipOnElement(element){var priorityList,finalPlacement;if(options.smartPlacement||options.followMouse&&element.data(DATA_FORCEDOPEN)){priorityList=$.fn.powerTip.smartPlacementLists[options.placement];$.each(priorityList,function(idx,pos){var collisions=getViewportCollisions(placeTooltip(element,pos),tipElement.outerWidth(),tipElement.outerHeight());finalPlacement=pos;return collisions!==Collision.none})}else{placeTooltip(element,options.placement);finalPlacement=options.placement}tipElement.removeClass("w nw sw e ne se n s w se-alt sw-alt ne-alt nw-alt");tipElement.addClass(finalPlacement)}function placeTooltip(element,placement){var iterationCount=0,tipWidth,tipHeight,coords=new CSSCoordinates;coords.set("top",0);coords.set("left",0);tipElement.css(coords);do{tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=placementCalculator.compute(element,placement,tipWidth,tipHeight,options.offset);tipElement.css(coords)}while(++iterationCount<=5&&(tipWidth!==tipElement.outerWidth()||tipHeight!==tipElement.outerHeight()));return coords}function closeDesyncedTip(){var isDesynced=false,hasDesyncableCloseEvent=$.grep(["mouseleave","mouseout","blur","focusout"],function(eventType){return $.inArray(eventType,options.closeEvents)!==-1}).length>0;if(session.isTipOpen&&!session.isClosing&&!session.delayInProgress&&hasDesyncableCloseEvent){if(session.activeHover.data(DATA_HASACTIVEHOVER)===false||session.activeHover.is(":disabled")){isDesynced=true}else if(!isMouseOver(session.activeHover)&&!session.activeHover.is(":focus")&&!session.activeHover.data(DATA_FORCEDOPEN)){if(tipElement.data(DATA_MOUSEONTOTIP)){if(!isMouseOver(tipElement)){isDesynced=true}}else{isDesynced=true}}if(isDesynced){hideTip(session.activeHover)}}}this.showTip=beginShowTip;this.hideTip=hideTip;this.resetPosition=positionTipOnElement}function isSvgElement(element){return Boolean(window.SVGElement&&element[0]instanceof SVGElement)}function isMouseEvent(event){return Boolean(event&&$.inArray(event.type,MOUSE_EVENTS)>-1&&typeof event.pageX==="number")}function initTracking(){if(!session.mouseTrackingActive){session.mouseTrackingActive=true;getViewportDimensions();$(getViewportDimensions);$document.on("mousemove"+EVENT_NAMESPACE,trackMouse);$window.on("resize"+EVENT_NAMESPACE,trackResize);$window.on("scroll"+EVENT_NAMESPACE,trackScroll)}}function getViewportDimensions(){session.scrollLeft=$window.scrollLeft();session.scrollTop=$window.scrollTop();session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackResize(){session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackScroll(){var x=$window.scrollLeft(),y=$window.scrollTop();if(x!==session.scrollLeft){session.currentX+=x-session.scrollLeft;session.scrollLeft=x}if(y!==session.scrollTop){session.currentY+=y-session.scrollTop;session.scrollTop=y}}function trackMouse(event){session.currentX=event.pageX;session.currentY=event.pageY}function isMouseOver(element){var elementPosition=element.offset(),elementBox=element[0].getBoundingClientRect(),elementWidth=elementBox.right-elementBox.left,elementHeight=elementBox.bottom-elementBox.top;return session.currentX>=elementPosition.left&&session.currentX<=elementPosition.left+elementWidth&&session.currentY>=elementPosition.top&&session.currentY<=elementPosition.top+elementHeight}function getTooltipContent(element){var tipText=element.data(DATA_POWERTIP),tipObject=element.data(DATA_POWERTIPJQ),tipTarget=element.data(DATA_POWERTIPTARGET),targetElement,content;if(tipText){if($.isFunction(tipText)){tipText=tipText.call(element[0])}content=tipText}else if(tipObject){if($.isFunction(tipObject)){tipObject=tipObject.call(element[0])}if(tipObject.length>0){content=tipObject.clone(true,true)}}else if(tipTarget){targetElement=$("#"+tipTarget);if(targetElement.length>0){content=targetElement.html()}}return content}function getViewportCollisions(coords,elementWidth,elementHeight){var viewportTop=session.scrollTop,viewportLeft=session.scrollLeft,viewportBottom=viewportTop+session.windowHeight,viewportRight=viewportLeft+session.windowWidth,collisions=Collision.none;if(coords.topviewportBottom||Math.abs(coords.bottom-session.windowHeight)>viewportBottom){collisions|=Collision.bottom}if(coords.leftviewportRight){collisions|=Collision.left}if(coords.left+elementWidth>viewportRight||coords.right1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery);/*! SmartMenus jQuery Plugin - v1.1.0 - September 17, 2017 - * http://www.smartmenus.org/ - * Copyright Vasil Dinkov, Vadikom Web Ltd. http://vadikom.com; Licensed MIT */(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof module&&"object"==typeof module.exports?module.exports=t(require("jquery")):t(jQuery)})(function($){function initMouseDetection(t){var e=".smartmenus_mouse";if(mouseDetectionEnabled||t)mouseDetectionEnabled&&t&&($(document).off(e),mouseDetectionEnabled=!1);else{var i=!0,s=null,o={mousemove:function(t){var e={x:t.pageX,y:t.pageY,timeStamp:(new Date).getTime()};if(s){var o=Math.abs(s.x-e.x),a=Math.abs(s.y-e.y);if((o>0||a>0)&&2>=o&&2>=a&&300>=e.timeStamp-s.timeStamp&&(mouse=!0,i)){var n=$(t.target).closest("a");n.is("a")&&$.each(menuTrees,function(){return $.contains(this.$root[0],n[0])?(this.itemEnter({currentTarget:n[0]}),!1):void 0}),i=!1}}s=e}};o[touchEvents?"touchstart":"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut"]=function(t){isTouchEvent(t.originalEvent)&&(mouse=!1)},$(document).on(getEventsNS(o,e)),mouseDetectionEnabled=!0}}function isTouchEvent(t){return!/^(4|mouse)$/.test(t.pointerType)}function getEventsNS(t,e){e||(e="");var i={};for(var s in t)i[s.split(" ").join(e+" ")+e]=t[s];return i}var menuTrees=[],mouse=!1,touchEvents="ontouchstart"in window,mouseDetectionEnabled=!1,requestAnimationFrame=window.requestAnimationFrame||function(t){return setTimeout(t,1e3/60)},cancelAnimationFrame=window.cancelAnimationFrame||function(t){clearTimeout(t)},canAnimate=!!$.fn.animate;return $.SmartMenus=function(t,e){this.$root=$(t),this.opts=e,this.rootId="",this.accessIdPrefix="",this.$subArrow=null,this.activatedItems=[],this.visibleSubMenus=[],this.showTimeout=0,this.hideTimeout=0,this.scrollTimeout=0,this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.idInc=0,this.$firstLink=null,this.$firstSub=null,this.disabled=!1,this.$disableOverlay=null,this.$touchScrollingSub=null,this.cssTransforms3d="perspective"in t.style||"webkitPerspective"in t.style,this.wasCollapsible=!1,this.init()},$.extend($.SmartMenus,{hideAll:function(){$.each(menuTrees,function(){this.menuHideAll()})},destroy:function(){for(;menuTrees.length;)menuTrees[0].destroy();initMouseDetection(!0)},prototype:{init:function(t){var e=this;if(!t){menuTrees.push(this),this.rootId=((new Date).getTime()+Math.random()+"").replace(/\D/g,""),this.accessIdPrefix="sm-"+this.rootId+"-",this.$root.hasClass("sm-rtl")&&(this.opts.rightToLeftSubMenus=!0);var i=".smartmenus";this.$root.data("smartmenus",this).attr("data-smartmenus-id",this.rootId).dataSM("level",1).on(getEventsNS({"mouseover focusin":$.proxy(this.rootOver,this),"mouseout focusout":$.proxy(this.rootOut,this),keydown:$.proxy(this.rootKeyDown,this)},i)).on(getEventsNS({mouseenter:$.proxy(this.itemEnter,this),mouseleave:$.proxy(this.itemLeave,this),mousedown:$.proxy(this.itemDown,this),focus:$.proxy(this.itemFocus,this),blur:$.proxy(this.itemBlur,this),click:$.proxy(this.itemClick,this)},i),"a"),i+=this.rootId,this.opts.hideOnClick&&$(document).on(getEventsNS({touchstart:$.proxy(this.docTouchStart,this),touchmove:$.proxy(this.docTouchMove,this),touchend:$.proxy(this.docTouchEnd,this),click:$.proxy(this.docClick,this)},i)),$(window).on(getEventsNS({"resize orientationchange":$.proxy(this.winResize,this)},i)),this.opts.subIndicators&&(this.$subArrow=$("").addClass("sub-arrow"),this.opts.subIndicatorsText&&this.$subArrow.html(this.opts.subIndicatorsText)),initMouseDetection()}if(this.$firstSub=this.$root.find("ul").each(function(){e.menuInit($(this))}).eq(0),this.$firstLink=this.$root.find("a").eq(0),this.opts.markCurrentItem){var s=/(index|default)\.[^#\?\/]*/i,o=/#.*/,a=window.location.href.replace(s,""),n=a.replace(o,"");this.$root.find("a").each(function(){var t=this.href.replace(s,""),i=$(this);(t==a||t==n)&&(i.addClass("current"),e.opts.markCurrentTree&&i.parentsUntil("[data-smartmenus-id]","ul").each(function(){$(this).dataSM("parent-a").addClass("current")}))})}this.wasCollapsible=this.isCollapsible()},destroy:function(t){if(!t){var e=".smartmenus";this.$root.removeData("smartmenus").removeAttr("data-smartmenus-id").removeDataSM("level").off(e),e+=this.rootId,$(document).off(e),$(window).off(e),this.opts.subIndicators&&(this.$subArrow=null)}this.menuHideAll();var i=this;this.$root.find("ul").each(function(){var t=$(this);t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.dataSM("shown-before")&&((i.opts.subMenusMinWidth||i.opts.subMenusMaxWidth)&&t.css({width:"",minWidth:"",maxWidth:""}).removeClass("sm-nowrap"),t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.css({zIndex:"",top:"",left:"",marginLeft:"",marginTop:"",display:""})),0==(t.attr("id")||"").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeDataSM("in-mega").removeDataSM("shown-before").removeDataSM("scroll-arrows").removeDataSM("parent-a").removeDataSM("level").removeDataSM("beforefirstshowfired").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeAttr("aria-expanded"),this.$root.find("a.has-submenu").each(function(){var t=$(this);0==t.attr("id").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeClass("has-submenu").removeDataSM("sub").removeAttr("aria-haspopup").removeAttr("aria-controls").removeAttr("aria-expanded").closest("li").removeDataSM("sub"),this.opts.subIndicators&&this.$root.find("span.sub-arrow").remove(),this.opts.markCurrentItem&&this.$root.find("a.current").removeClass("current"),t||(this.$root=null,this.$firstLink=null,this.$firstSub=null,this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),menuTrees.splice($.inArray(this,menuTrees),1))},disable:function(t){if(!this.disabled){if(this.menuHideAll(),!t&&!this.opts.isPopup&&this.$root.is(":visible")){var e=this.$root.offset();this.$disableOverlay=$('
').css({position:"absolute",top:e.top,left:e.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(!0),opacity:0}).appendTo(document.body)}this.disabled=!0}},docClick:function(t){return this.$touchScrollingSub?(this.$touchScrollingSub=null,void 0):((this.visibleSubMenus.length&&!$.contains(this.$root[0],t.target)||$(t.target).closest("a").length)&&this.menuHideAll(),void 0)},docTouchEnd:function(){if(this.lastTouch){if(!(!this.visibleSubMenus.length||void 0!==this.lastTouch.x2&&this.lastTouch.x1!=this.lastTouch.x2||void 0!==this.lastTouch.y2&&this.lastTouch.y1!=this.lastTouch.y2||this.lastTouch.target&&$.contains(this.$root[0],this.lastTouch.target))){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var t=this;this.hideTimeout=setTimeout(function(){t.menuHideAll()},350)}this.lastTouch=null}},docTouchMove:function(t){if(this.lastTouch){var e=t.originalEvent.touches[0];this.lastTouch.x2=e.pageX,this.lastTouch.y2=e.pageY}},docTouchStart:function(t){var e=t.originalEvent.touches[0];this.lastTouch={x1:e.pageX,y1:e.pageY,target:e.target}},enable:function(){this.disabled&&(this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),this.disabled=!1)},getClosestMenu:function(t){for(var e=$(t).closest("ul");e.dataSM("in-mega");)e=e.parent().closest("ul");return e[0]||null},getHeight:function(t){return this.getOffset(t,!0)},getOffset:function(t,e){var i;"none"==t.css("display")&&(i={position:t[0].style.position,visibility:t[0].style.visibility},t.css({position:"absolute",visibility:"hidden"}).show());var s=t[0].getBoundingClientRect&&t[0].getBoundingClientRect(),o=s&&(e?s.height||s.bottom-s.top:s.width||s.right-s.left);return o||0===o||(o=e?t[0].offsetHeight:t[0].offsetWidth),i&&t.hide().css(i),o},getStartZIndex:function(t){var e=parseInt(this[t?"$root":"$firstSub"].css("z-index"));return!t&&isNaN(e)&&(e=parseInt(this.$root.css("z-index"))),isNaN(e)?1:e},getTouchPoint:function(t){return t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0]||t},getViewport:function(t){var e=t?"Height":"Width",i=document.documentElement["client"+e],s=window["inner"+e];return s&&(i=Math.min(i,s)),i},getViewportHeight:function(){return this.getViewport(!0)},getViewportWidth:function(){return this.getViewport()},getWidth:function(t){return this.getOffset(t)},handleEvents:function(){return!this.disabled&&this.isCSSOn()},handleItemEvents:function(t){return this.handleEvents()&&!this.isLinkInMegaMenu(t)},isCollapsible:function(){return"static"==this.$firstSub.css("position")},isCSSOn:function(){return"inline"!=this.$firstLink.css("display")},isFixed:function(){var t="fixed"==this.$root.css("position");return t||this.$root.parentsUntil("body").each(function(){return"fixed"==$(this).css("position")?(t=!0,!1):void 0}),t},isLinkInMegaMenu:function(t){return $(this.getClosestMenu(t[0])).hasClass("mega-menu")},isTouchMode:function(){return!mouse||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(t,e){var i=t.closest("ul"),s=i.dataSM("level");if(s>1&&(!this.activatedItems[s-2]||this.activatedItems[s-2][0]!=i.dataSM("parent-a")[0])){var o=this;$(i.parentsUntil("[data-smartmenus-id]","ul").get().reverse()).add(i).each(function(){o.itemActivate($(this).dataSM("parent-a"))})}if((!this.isCollapsible()||e)&&this.menuHideSubMenus(this.activatedItems[s-1]&&this.activatedItems[s-1][0]==t[0]?s:s-1),this.activatedItems[s-1]=t,this.$root.triggerHandler("activate.smapi",t[0])!==!1){var a=t.dataSM("sub");a&&(this.isTouchMode()||!this.opts.showOnClick||this.clickActivated)&&this.menuShow(a)}},itemBlur:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&this.$root.triggerHandler("blur.smapi",e[0])},itemClick:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==e.closest("ul")[0])return this.$touchScrollingSub=null,t.stopPropagation(),!1;if(this.$root.triggerHandler("click.smapi",e[0])===!1)return!1;var i=$(t.target).is(".sub-arrow"),s=e.dataSM("sub"),o=s?2==s.dataSM("level"):!1,a=this.isCollapsible(),n=/toggle$/.test(this.opts.collapsibleBehavior),r=/link$/.test(this.opts.collapsibleBehavior),h=/^accordion/.test(this.opts.collapsibleBehavior);if(s&&!s.is(":visible")){if((!r||!a||i)&&(this.opts.showOnClick&&o&&(this.clickActivated=!0),this.itemActivate(e,h),s.is(":visible")))return this.focusActivated=!0,!1}else if(a&&(n||i))return this.itemActivate(e,h),this.menuHide(s),n&&(this.focusActivated=!1),!1;return this.opts.showOnClick&&o||e.hasClass("disabled")||this.$root.triggerHandler("select.smapi",e[0])===!1?!1:void 0}},itemDown:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&e.dataSM("mousedown",!0)},itemEnter:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(!this.isTouchMode()){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);var i=this;this.showTimeout=setTimeout(function(){i.itemActivate(e)},this.opts.showOnClick&&1==e.closest("ul").dataSM("level")?1:this.opts.showTimeout)}this.$root.triggerHandler("mouseenter.smapi",e[0])}},itemFocus:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(!this.focusActivated||this.isTouchMode()&&e.dataSM("mousedown")||this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0]==e[0]||this.itemActivate(e,!0),this.$root.triggerHandler("focus.smapi",e[0]))},itemLeave:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(this.isTouchMode()||(e[0].blur(),this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0)),e.removeDataSM("mousedown"),this.$root.triggerHandler("mouseleave.smapi",e[0]))},menuHide:function(t){if(this.$root.triggerHandler("beforehide.smapi",t[0])!==!1&&(canAnimate&&t.stop(!0,!0),"none"!=t.css("display"))){var e=function(){t.css("z-index","")};this.isCollapsible()?canAnimate&&this.opts.collapsibleHideFunction?this.opts.collapsibleHideFunction.call(this,t,e):t.hide(this.opts.collapsibleHideDuration,e):canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,t,e):t.hide(this.opts.hideDuration,e),t.dataSM("scroll")&&(this.menuScrollStop(t),t.css({"touch-action":"","-ms-touch-action":"","-webkit-transform":"",transform:""}).off(".smartmenus_scroll").removeDataSM("scroll").dataSM("scroll-arrows").hide()),t.dataSM("parent-a").removeClass("highlighted").attr("aria-expanded","false"),t.attr({"aria-expanded":"false","aria-hidden":"true"});var i=t.dataSM("level");this.activatedItems.splice(i-1,1),this.visibleSubMenus.splice($.inArray(t,this.visibleSubMenus),1),this.$root.triggerHandler("hide.smapi",t[0])}},menuHideAll:function(){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);for(var t=this.opts.isPopup?1:0,e=this.visibleSubMenus.length-1;e>=t;e--)this.menuHide(this.visibleSubMenus[e]);this.opts.isPopup&&(canAnimate&&this.$root.stop(!0,!0),this.$root.is(":visible")&&(canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,this.$root):this.$root.hide(this.opts.hideDuration))),this.activatedItems=[],this.visibleSubMenus=[],this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.$root.triggerHandler("hideAll.smapi")},menuHideSubMenus:function(t){for(var e=this.activatedItems.length-1;e>=t;e--){var i=this.activatedItems[e].dataSM("sub");i&&this.menuHide(i)}},menuInit:function(t){if(!t.dataSM("in-mega")){t.hasClass("mega-menu")&&t.find("ul").dataSM("in-mega",!0);for(var e=2,i=t[0];(i=i.parentNode.parentNode)!=this.$root[0];)e++;var s=t.prevAll("a").eq(-1);s.length||(s=t.prevAll().find("a").eq(-1)),s.addClass("has-submenu").dataSM("sub",t),t.dataSM("parent-a",s).dataSM("level",e).parent().dataSM("sub",t);var o=s.attr("id")||this.accessIdPrefix+ ++this.idInc,a=t.attr("id")||this.accessIdPrefix+ ++this.idInc;s.attr({id:o,"aria-haspopup":"true","aria-controls":a,"aria-expanded":"false"}),t.attr({id:a,role:"group","aria-hidden":"true","aria-labelledby":o,"aria-expanded":"false"}),this.opts.subIndicators&&s[this.opts.subIndicatorsPos](this.$subArrow.clone())}},menuPosition:function(t){var e,i,s=t.dataSM("parent-a"),o=s.closest("li"),a=o.parent(),n=t.dataSM("level"),r=this.getWidth(t),h=this.getHeight(t),u=s.offset(),l=u.left,c=u.top,d=this.getWidth(s),m=this.getHeight(s),p=$(window),f=p.scrollLeft(),v=p.scrollTop(),b=this.getViewportWidth(),S=this.getViewportHeight(),g=a.parent().is("[data-sm-horizontal-sub]")||2==n&&!a.hasClass("sm-vertical"),M=this.opts.rightToLeftSubMenus&&!o.is("[data-sm-reverse]")||!this.opts.rightToLeftSubMenus&&o.is("[data-sm-reverse]"),w=2==n?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,T=2==n?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY;if(g?(e=M?d-r-w:w,i=this.opts.bottomToTopSubMenus?-h-T:m+T):(e=M?w-r:d-w,i=this.opts.bottomToTopSubMenus?m-T-h:T),this.opts.keepInViewport){var y=l+e,I=c+i;if(M&&f>y?e=g?f-y+e:d-w:!M&&y+r>f+b&&(e=g?f+b-r-y+e:w-r),g||(S>h&&I+h>v+S?i+=v+S-h-I:(h>=S||v>I)&&(i+=v-I)),g&&(I+h>v+S+.49||v>I)||!g&&h>S+.49){var x=this;t.dataSM("scroll-arrows")||t.dataSM("scroll-arrows",$([$('')[0],$('')[0]]).on({mouseenter:function(){t.dataSM("scroll").up=$(this).hasClass("scroll-up"),x.menuScroll(t)},mouseleave:function(e){x.menuScrollStop(t),x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(t){t.preventDefault()}}).insertAfter(t));var A=".smartmenus_scroll";if(t.dataSM("scroll",{y:this.cssTransforms3d?0:i-m,step:1,itemH:m,subH:h,arrowDownH:this.getHeight(t.dataSM("scroll-arrows").eq(1))}).on(getEventsNS({mouseover:function(e){x.menuScrollOver(t,e)},mouseout:function(e){x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(e){x.menuScrollMousewheel(t,e)}},A)).dataSM("scroll-arrows").css({top:"auto",left:"0",marginLeft:e+(parseInt(t.css("border-left-width"))||0),width:r-(parseInt(t.css("border-left-width"))||0)-(parseInt(t.css("border-right-width"))||0),zIndex:t.css("z-index")}).eq(g&&this.opts.bottomToTopSubMenus?0:1).show(),this.isFixed()){var C={};C[touchEvents?"touchstart touchmove touchend":"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp"]=function(e){x.menuScrollTouch(t,e)},t.css({"touch-action":"none","-ms-touch-action":"none"}).on(getEventsNS(C,A))}}}t.css({top:"auto",left:"0",marginLeft:e,marginTop:i-m})},menuScroll:function(t,e,i){var s,o=t.dataSM("scroll"),a=t.dataSM("scroll-arrows"),n=o.up?o.upEnd:o.downEnd;if(!e&&o.momentum){if(o.momentum*=.92,s=o.momentum,.5>s)return this.menuScrollStop(t),void 0}else s=i||(e||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(o.step));var r=t.dataSM("level");if(this.activatedItems[r-1]&&this.activatedItems[r-1].dataSM("sub")&&this.activatedItems[r-1].dataSM("sub").is(":visible")&&this.menuHideSubMenus(r-1),o.y=o.up&&o.y>=n||!o.up&&n>=o.y?o.y:Math.abs(n-o.y)>s?o.y+(o.up?s:-s):n,t.css(this.cssTransforms3d?{"-webkit-transform":"translate3d(0, "+o.y+"px, 0)",transform:"translate3d(0, "+o.y+"px, 0)"}:{marginTop:o.y}),mouse&&(o.up&&o.y>o.downEnd||!o.up&&o.y0;t.dataSM("scroll-arrows").eq(i?0:1).is(":visible")&&(t.dataSM("scroll").up=i,this.menuScroll(t,!0))}e.preventDefault()},menuScrollOut:function(t,e){mouse&&(/^scroll-(up|down)/.test((e.relatedTarget||"").className)||(t[0]==e.relatedTarget||$.contains(t[0],e.relatedTarget))&&this.getClosestMenu(e.relatedTarget)==t[0]||t.dataSM("scroll-arrows").css("visibility","hidden"))},menuScrollOver:function(t,e){if(mouse&&!/^scroll-(up|down)/.test(e.target.className)&&this.getClosestMenu(e.target)==t[0]){this.menuScrollRefreshData(t);var i=t.dataSM("scroll"),s=$(window).scrollTop()-t.dataSM("parent-a").offset().top-i.itemH;t.dataSM("scroll-arrows").eq(0).css("margin-top",s).end().eq(1).css("margin-top",s+this.getViewportHeight()-i.arrowDownH).end().css("visibility","visible")}},menuScrollRefreshData:function(t){var e=t.dataSM("scroll"),i=$(window).scrollTop()-t.dataSM("parent-a").offset().top-e.itemH;this.cssTransforms3d&&(i=-(parseFloat(t.css("margin-top"))-i)),$.extend(e,{upEnd:i,downEnd:i+this.getViewportHeight()-e.subH})},menuScrollStop:function(t){return this.scrollTimeout?(cancelAnimationFrame(this.scrollTimeout),this.scrollTimeout=0,t.dataSM("scroll").step=1,!0):void 0},menuScrollTouch:function(t,e){if(e=e.originalEvent,isTouchEvent(e)){var i=this.getTouchPoint(e);if(this.getClosestMenu(i.target)==t[0]){var s=t.dataSM("scroll");if(/(start|down)$/i.test(e.type))this.menuScrollStop(t)?(e.preventDefault(),this.$touchScrollingSub=t):this.$touchScrollingSub=null,this.menuScrollRefreshData(t),$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp});else if(/move$/i.test(e.type)){var o=void 0!==s.touchY?s.touchY:s.touchStartY;if(void 0!==o&&o!=i.pageY){this.$touchScrollingSub=t;var a=i.pageY>o;void 0!==s.up&&s.up!=a&&$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp}),$.extend(s,{up:a,touchY:i.pageY}),this.menuScroll(t,!0,Math.abs(i.pageY-o))}e.preventDefault()}else void 0!==s.touchY&&((s.momentum=15*Math.pow(Math.abs(i.pageY-s.touchStartY)/(e.timeStamp-s.touchStartTime),2))&&(this.menuScrollStop(t),this.menuScroll(t),e.preventDefault()),delete s.touchY)}}},menuShow:function(t){if((t.dataSM("beforefirstshowfired")||(t.dataSM("beforefirstshowfired",!0),this.$root.triggerHandler("beforefirstshow.smapi",t[0])!==!1))&&this.$root.triggerHandler("beforeshow.smapi",t[0])!==!1&&(t.dataSM("shown-before",!0),canAnimate&&t.stop(!0,!0),!t.is(":visible"))){var e=t.dataSM("parent-a"),i=this.isCollapsible();if((this.opts.keepHighlighted||i)&&e.addClass("highlighted"),i)t.removeClass("sm-nowrap").css({zIndex:"",width:"auto",minWidth:"",maxWidth:"",top:"",left:"",marginLeft:"",marginTop:""});else{if(t.css("z-index",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1),(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth)&&(t.css({width:"auto",minWidth:"",maxWidth:""}).addClass("sm-nowrap"),this.opts.subMenusMinWidth&&t.css("min-width",this.opts.subMenusMinWidth),this.opts.subMenusMaxWidth)){var s=this.getWidth(t);t.css("max-width",this.opts.subMenusMaxWidth),s>this.getWidth(t)&&t.removeClass("sm-nowrap").css("width",this.opts.subMenusMaxWidth)}this.menuPosition(t)}var o=function(){t.css("overflow","")};i?canAnimate&&this.opts.collapsibleShowFunction?this.opts.collapsibleShowFunction.call(this,t,o):t.show(this.opts.collapsibleShowDuration,o):canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,t,o):t.show(this.opts.showDuration,o),e.attr("aria-expanded","true"),t.attr({"aria-expanded":"true","aria-hidden":"false"}),this.visibleSubMenus.push(t),this.$root.triggerHandler("show.smapi",t[0])}},popupHide:function(t){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},t?1:this.opts.hideTimeout)},popupShow:function(t,e){if(!this.opts.isPopup)return alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.'),void 0;if(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),this.$root.dataSM("shown-before",!0),canAnimate&&this.$root.stop(!0,!0),!this.$root.is(":visible")){this.$root.css({left:t,top:e});var i=this,s=function(){i.$root.css("overflow","")};canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,this.$root,s):this.$root.show(this.opts.showDuration,s),this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(!0),this.init(!0)},rootKeyDown:function(t){if(this.handleEvents())switch(t.keyCode){case 27:var e=this.activatedItems[0];if(e){this.menuHideAll(),e[0].focus();var i=e.dataSM("sub");i&&this.menuHide(i)}break;case 32:var s=$(t.target);if(s.is("a")&&this.handleItemEvents(s)){var i=s.dataSM("sub");i&&!i.is(":visible")&&(this.itemClick({currentTarget:t.target}),t.preventDefault())}}},rootOut:function(t){if(this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),!this.opts.showOnClick||!this.opts.hideOnClick)){var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},this.opts.hideTimeout)}},rootOver:function(t){this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0)},winResize:function(t){if(this.handleEvents()){if(!("onorientationchange"in window)||"orientationchange"==t.type){var e=this.isCollapsible();this.wasCollapsible&&e||(this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0].blur(),this.menuHideAll()),this.wasCollapsible=e}}else if(this.$disableOverlay){var i=this.$root.offset();this.$disableOverlay.css({top:i.top,left:i.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}}}}),$.fn.dataSM=function(t,e){return e?this.data(t+"_smartmenus",e):this.data(t+"_smartmenus")},$.fn.removeDataSM=function(t){return this.removeData(t+"_smartmenus")},$.fn.smartmenus=function(options){if("string"==typeof options){var args=arguments,method=options;return Array.prototype.shift.call(args),this.each(function(){var t=$(this).data("smartmenus");t&&t[method]&&t[method].apply(t,args)})}return this.each(function(){var dataOpts=$(this).data("sm-options")||null;if(dataOpts)try{dataOpts=eval("("+dataOpts+")")}catch(e){dataOpts=null,alert('ERROR\n\nSmartMenus jQuery init:\nInvalid "data-sm-options" attribute value syntax.')}new $.SmartMenus(this,$.extend({},$.fn.smartmenus.defaults,options,dataOpts))})},$.fn.smartmenus.defaults={isPopup:!1,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:"10em",subMenusMaxWidth:"20em",subIndicators:!0,subIndicatorsPos:"append",subIndicatorsText:"",scrollStep:30,scrollAccelerate:!0,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(t,e){t.fadeOut(200,e)},collapsibleShowDuration:0,collapsibleShowFunction:function(t,e){t.slideDown(200,e)},collapsibleHideDuration:0,collapsibleHideFunction:function(t,e){t.slideUp(200,e)},showOnClick:!1,hideOnClick:!0,noMouseOver:!1,keepInViewport:!0,keepHighlighted:!0,markCurrentItem:!1,markCurrentTree:!0,rightToLeftSubMenus:!1,bottomToTopSubMenus:!1,collapsibleBehavior:"default"},$}); \ No newline at end of file diff --git a/help/html/json-populate-cfgcmd_8txt.html b/help/html/json-populate-cfgcmd_8txt.html deleted file mode 100644 index ccd8f8b..0000000 --- a/help/html/json-populate-cfgcmd_8txt.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - -CocoaTweet: build/_deps/json-subbuild/json-populate-prefix/tmp/json-populate-cfgcmd.txt File Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
build/_deps/json-subbuild/json-populate-prefix/tmp/json-populate-cfgcmd.txt File Reference
-
-
-
- - - - diff --git a/help/html/json-populate-gitclone-lastrun_8txt.html b/help/html/json-populate-gitclone-lastrun_8txt.html deleted file mode 100644 index cca7fcf..0000000 --- a/help/html/json-populate-gitclone-lastrun_8txt.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - -CocoaTweet: build/_deps/json-subbuild/json-populate-prefix/src/json-populate-stamp/json-populate-gitclone-lastrun.txt File Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
build/_deps/json-subbuild/json-populate-prefix/src/json-populate-stamp/json-populate-gitclone-lastrun.txt File Reference
-
-
-
- - - - diff --git a/help/html/json-populate-gitinfo_8txt.html b/help/html/json-populate-gitinfo_8txt.html deleted file mode 100644 index 39f05f5..0000000 --- a/help/html/json-populate-gitinfo_8txt.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - -CocoaTweet: build/_deps/json-subbuild/json-populate-prefix/src/json-populate-stamp/json-populate-gitinfo.txt File Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
build/_deps/json-subbuild/json-populate-prefix/src/json-populate-stamp/json-populate-gitinfo.txt File Reference
-
-
-
- - - - diff --git a/help/html/json_8hpp.html b/help/html/json_8hpp.html deleted file mode 100644 index bebe100..0000000 --- a/help/html/json_8hpp.html +++ /dev/null @@ -1,4042 +0,0 @@ - - - - - - - -CocoaTweet: build/_deps/json-src/include/nlohmann/json.hpp File Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
json.hpp File Reference
-
-
-
#include <algorithm>
-#include <cassert>
-#include <ciso646>
-#include <cstddef>
-#include <functional>
-#include <initializer_list>
-#include <iosfwd>
-#include <iterator>
-#include <memory>
-#include <numeric>
-#include <string>
-#include <utility>
-#include <vector>
-#include <array>
-#include <forward_list>
-#include <map>
-#include <tuple>
-#include <type_traits>
-#include <unordered_map>
-#include <valarray>
-#include <exception>
-#include <stdexcept>
-#include <cstdlib>
-#include <limits>
-#include <cstdint>
-#include <cmath>
-#include <cstdio>
-#include <cstring>
-#include <istream>
-#include <clocale>
-#include <cctype>
-#include <ios>
-#include <ostream>
-
-Include dependency graph for json.hpp:
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-This graph shows which files directly or indirectly include this file:
-
-
- - - - - -
-
-

Go to the source code of this file.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Classes

struct  nlohmann::detail::position_t
 struct to capture the start position of the current token More...
 
class  nlohmann::detail::exception
 general exception of the basic_json class More...
 
class  nlohmann::detail::parse_error
 exception indicating a parse error More...
 
class  nlohmann::detail::invalid_iterator
 exception indicating errors with iterators More...
 
class  nlohmann::detail::type_error
 exception indicating executing a member function with a wrong type More...
 
class  nlohmann::detail::out_of_range
 exception indicating access out of the defined range More...
 
class  nlohmann::detail::other_error
 exception indicating other library errors More...
 
struct  nlohmann::detail::index_sequence< Ints >
 
struct  nlohmann::detail::merge_and_renumber< Sequence1, Sequence2 >
 
struct  nlohmann::detail::merge_and_renumber< index_sequence< I1... >, index_sequence< I2... > >
 
struct  nlohmann::detail::make_index_sequence< N >
 
struct  nlohmann::detail::make_index_sequence< 0 >
 
struct  nlohmann::detail::make_index_sequence< 1 >
 
struct  nlohmann::detail::priority_tag< N >
 
struct  nlohmann::detail::priority_tag< 0 >
 
struct  nlohmann::detail::static_const< T >
 
struct  nlohmann::detail::make_void< Ts >
 
struct  nlohmann::detail::iterator_types< It, typename >
 
struct  nlohmann::detail::iterator_types< It, void_t< typename It::difference_type, typename It::value_type, typename It::pointer, typename It::reference, typename It::iterator_category > >
 
struct  nlohmann::detail::iterator_traits< T, typename >
 
struct  nlohmann::detail::iterator_traits< T, enable_if_t< !std::is_pointer< T >::value > >
 
struct  nlohmann::detail::iterator_traits< T *, enable_if_t< std::is_object< T >::value > >
 
struct  nlohmann::detail::nonesuch
 
struct  nlohmann::detail::detector< Default, AlwaysVoid, Op, Args >
 
struct  nlohmann::detail::detector< Default, void_t< Op< Args... > >, Op, Args... >
 
struct  nlohmann::adl_serializer< typename, typename >
 default JSONSerializer template argument More...
 
class  nlohmann::basic_json< ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType, JSONSerializer >
 a class to store JSON values More...
 
class  nlohmann::json_pointer< BasicJsonType >
 JSON Pointer. More...
 
struct  nlohmann::detail::is_basic_json< typename >
 
struct  nlohmann::detail::is_basic_json< NLOHMANN_BASIC_JSON_TPL >
 
struct  nlohmann::detail::has_from_json< BasicJsonType, T, typename >
 
struct  nlohmann::detail::has_from_json< BasicJsonType, T, enable_if_t< not is_basic_json< T >::value > >
 
struct  nlohmann::detail::has_non_default_from_json< BasicJsonType, T, typename >
 
struct  nlohmann::detail::has_non_default_from_json< BasicJsonType, T, enable_if_t< not is_basic_json< T >::value > >
 
struct  nlohmann::detail::has_to_json< BasicJsonType, T, typename >
 
struct  nlohmann::detail::has_to_json< BasicJsonType, T, enable_if_t< not is_basic_json< T >::value > >
 
struct  nlohmann::detail::is_iterator_traits< T, typename >
 
struct  nlohmann::detail::is_iterator_traits< iterator_traits< T > >
 
struct  nlohmann::detail::is_complete_type< T, typename >
 
struct  nlohmann::detail::is_complete_type< T, decltype(void(sizeof(T)))>
 
struct  nlohmann::detail::is_compatible_object_type_impl< BasicJsonType, CompatibleObjectType, typename >
 
struct  nlohmann::detail::is_compatible_object_type_impl< BasicJsonType, CompatibleObjectType, enable_if_t< is_detected< mapped_type_t, CompatibleObjectType >::value and is_detected< key_type_t, CompatibleObjectType >::value > >
 
struct  nlohmann::detail::is_compatible_object_type< BasicJsonType, CompatibleObjectType >
 
struct  nlohmann::detail::is_constructible_object_type_impl< BasicJsonType, ConstructibleObjectType, typename >
 
struct  nlohmann::detail::is_constructible_object_type_impl< BasicJsonType, ConstructibleObjectType, enable_if_t< is_detected< mapped_type_t, ConstructibleObjectType >::value and is_detected< key_type_t, ConstructibleObjectType >::value > >
 
struct  nlohmann::detail::is_constructible_object_type< BasicJsonType, ConstructibleObjectType >
 
struct  nlohmann::detail::is_compatible_string_type_impl< BasicJsonType, CompatibleStringType, typename >
 
struct  nlohmann::detail::is_compatible_string_type_impl< BasicJsonType, CompatibleStringType, enable_if_t< is_detected_exact< typename BasicJsonType::string_t::value_type, value_type_t, CompatibleStringType >::value > >
 
struct  nlohmann::detail::is_compatible_string_type< BasicJsonType, ConstructibleStringType >
 
struct  nlohmann::detail::is_constructible_string_type_impl< BasicJsonType, ConstructibleStringType, typename >
 
struct  nlohmann::detail::is_constructible_string_type_impl< BasicJsonType, ConstructibleStringType, enable_if_t< is_detected_exact< typename BasicJsonType::string_t::value_type, value_type_t, ConstructibleStringType >::value > >
 
struct  nlohmann::detail::is_constructible_string_type< BasicJsonType, ConstructibleStringType >
 
struct  nlohmann::detail::is_compatible_array_type_impl< BasicJsonType, CompatibleArrayType, typename >
 
struct  nlohmann::detail::is_compatible_array_type_impl< BasicJsonType, CompatibleArrayType, enable_if_t< is_detected< value_type_t, CompatibleArrayType >::value and is_detected< iterator_t, CompatibleArrayType >::value and not is_iterator_traits< iterator_traits< CompatibleArrayType > >::value > >
 
struct  nlohmann::detail::is_compatible_array_type< BasicJsonType, CompatibleArrayType >
 
struct  nlohmann::detail::is_constructible_array_type_impl< BasicJsonType, ConstructibleArrayType, typename >
 
struct  nlohmann::detail::is_constructible_array_type_impl< BasicJsonType, ConstructibleArrayType, enable_if_t< std::is_same< ConstructibleArrayType, typename BasicJsonType::value_type >::value > >
 
struct  nlohmann::detail::is_constructible_array_type_impl< BasicJsonType, ConstructibleArrayType, enable_if_t< not std::is_same< ConstructibleArrayType, typename BasicJsonType::value_type >::value and std::is_default_constructible< ConstructibleArrayType >::value and(std::is_move_assignable< ConstructibleArrayType >::value or std::is_copy_assignable< ConstructibleArrayType >::value) andis_detected< value_type_t, ConstructibleArrayType >::value andis_detected< iterator_t, ConstructibleArrayType >::value andis_complete_type< detected_t< value_type_t, ConstructibleArrayType > >::value > >
 
struct  nlohmann::detail::is_constructible_array_type< BasicJsonType, ConstructibleArrayType >
 
struct  nlohmann::detail::is_compatible_integer_type_impl< RealIntegerType, CompatibleNumberIntegerType, typename >
 
struct  nlohmann::detail::is_compatible_integer_type_impl< RealIntegerType, CompatibleNumberIntegerType, enable_if_t< std::is_integral< RealIntegerType >::value and std::is_integral< CompatibleNumberIntegerType >::value and not std::is_same< bool, CompatibleNumberIntegerType >::value > >
 
struct  nlohmann::detail::is_compatible_integer_type< RealIntegerType, CompatibleNumberIntegerType >
 
struct  nlohmann::detail::is_compatible_type_impl< BasicJsonType, CompatibleType, typename >
 
struct  nlohmann::detail::is_compatible_type_impl< BasicJsonType, CompatibleType, enable_if_t< is_complete_type< CompatibleType >::value > >
 
struct  nlohmann::detail::is_compatible_type< BasicJsonType, CompatibleType >
 
struct  nlohmann::detail::conjunction<... >
 
struct  nlohmann::detail::conjunction< B1 >
 
struct  nlohmann::detail::conjunction< B1, Bn... >
 
struct  nlohmann::detail::is_constructible_tuple< T1, T2 >
 
struct  nlohmann::detail::is_constructible_tuple< T1, std::tuple< Args... > >
 
struct  nlohmann::detail::from_json_fn
 
class  nlohmann::detail::iteration_proxy_value< IteratorType >
 
class  nlohmann::detail::iteration_proxy< IteratorType >
 proxy class for the items() function More...
 
class  std::tuple_size<::nlohmann::detail::iteration_proxy_value< IteratorType > >
 
class  std::tuple_element< N, ::nlohmann::detail::iteration_proxy_value< IteratorType > >
 
struct  nlohmann::detail::external_constructor< value_t >
 
struct  nlohmann::detail::external_constructor< value_t::boolean >
 
struct  nlohmann::detail::external_constructor< value_t::string >
 
struct  nlohmann::detail::external_constructor< value_t::number_float >
 
struct  nlohmann::detail::external_constructor< value_t::number_unsigned >
 
struct  nlohmann::detail::external_constructor< value_t::number_integer >
 
struct  nlohmann::detail::external_constructor< value_t::array >
 
struct  nlohmann::detail::external_constructor< value_t::object >
 
struct  nlohmann::detail::to_json_fn
 
struct  nlohmann::adl_serializer< typename, typename >
 default JSONSerializer template argument More...
 
struct  nlohmann::detail::input_adapter_protocol
 abstract input adapter interface More...
 
class  nlohmann::detail::file_input_adapter
 
class  nlohmann::detail::input_stream_adapter
 
class  nlohmann::detail::input_buffer_adapter
 input adapter for buffer input More...
 
struct  nlohmann::detail::wide_string_input_helper< WideStringType, T >
 
struct  nlohmann::detail::wide_string_input_helper< WideStringType, 2 >
 
class  nlohmann::detail::wide_string_input_adapter< WideStringType >
 
class  nlohmann::detail::input_adapter
 
struct  nlohmann::json_sax< BasicJsonType >
 SAX interface. More...
 
class  nlohmann::detail::json_sax_dom_parser< BasicJsonType >
 SAX implementation to create a JSON value from SAX events. More...
 
class  nlohmann::detail::json_sax_dom_callback_parser< BasicJsonType >
 
class  nlohmann::detail::json_sax_acceptor< BasicJsonType >
 
struct  nlohmann::detail::is_sax< SAX, BasicJsonType >
 
struct  nlohmann::detail::is_sax_static_asserts< SAX, BasicJsonType >
 
class  nlohmann::detail::binary_reader< BasicJsonType, SAX >
 deserialization of CBOR, MessagePack, and UBJSON values More...
 
class  nlohmann::detail::lexer< BasicJsonType >
 lexical analysis More...
 
class  nlohmann::detail::parser< BasicJsonType >
 syntax analysis More...
 
class  nlohmann::detail::primitive_iterator_t
 
struct  nlohmann::detail::internal_iterator< BasicJsonType >
 an iterator value More...
 
class  nlohmann::detail::iteration_proxy< IteratorType >
 proxy class for the items() function More...
 
class  nlohmann::detail::iteration_proxy_value< IteratorType >
 
class  nlohmann::detail::iter_impl< BasicJsonType >
 a template for a bidirectional iterator for the basic_json class This class implements a both iterators (iterator and const_iterator) for the basic_json class. More...
 
class  nlohmann::detail::json_reverse_iterator< Base >
 a template for a reverse iterator class More...
 
class  nlohmann::json_pointer< BasicJsonType >
 JSON Pointer. More...
 
class  nlohmann::detail::json_ref< BasicJsonType >
 
struct  nlohmann::detail::output_adapter_protocol< CharType >
 abstract output adapter interface More...
 
class  nlohmann::detail::output_vector_adapter< CharType >
 output adapter for byte vectors More...
 
class  nlohmann::detail::output_stream_adapter< CharType >
 output adapter for output streams More...
 
class  nlohmann::detail::output_string_adapter< CharType, StringType >
 output adapter for basic_string More...
 
class  nlohmann::detail::output_adapter< CharType, StringType >
 
class  nlohmann::detail::binary_writer< BasicJsonType, CharType >
 serialization to CBOR and MessagePack values More...
 
struct  nlohmann::detail::dtoa_impl::diyfp
 
struct  nlohmann::detail::dtoa_impl::boundaries
 
struct  nlohmann::detail::dtoa_impl::cached_power
 
class  nlohmann::detail::serializer< BasicJsonType >
 
class  nlohmann::basic_json< ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType, JSONSerializer >
 a class to store JSON values More...
 
struct  std::hash< nlohmann::json >
 hash value for JSON objects More...
 
struct  std::less<::nlohmann::detail::value_t >
 
- - - - - - - - - - - - -

-Namespaces

 nlohmann
 namespace for Niels Lohmann
 
 nlohmann::detail
 detail namespace with internal helper functions
 
 std
 
 nlohmann::detail::dtoa_impl
 implements the Grisu2 algorithm for binary to decimal floating-point conversion.
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Macros

#define NLOHMANN_JSON_VERSION_MAJOR   3
 
#define NLOHMANN_JSON_VERSION_MINOR   7
 
#define NLOHMANN_JSON_VERSION_PATCH   3
 
#define JSON_HEDLEY_VERSION   11
 
#define JSON_HEDLEY_STRINGIFY_EX(x)   #x
 
#define JSON_HEDLEY_STRINGIFY(x)   JSON_HEDLEY_STRINGIFY_EX(x)
 
#define JSON_HEDLEY_CONCAT_EX(a, b)   a##b
 
#define JSON_HEDLEY_CONCAT(a, b)   JSON_HEDLEY_CONCAT_EX(a,b)
 
#define JSON_HEDLEY_VERSION_ENCODE(major, minor, revision)   (((major) * 1000000) + ((minor) * 1000) + (revision))
 
#define JSON_HEDLEY_VERSION_DECODE_MAJOR(version)   ((version) / 1000000)
 
#define JSON_HEDLEY_VERSION_DECODE_MINOR(version)   (((version) % 1000000) / 1000)
 
#define JSON_HEDLEY_VERSION_DECODE_REVISION(version)   ((version) % 1000)
 
#define JSON_HEDLEY_GNUC_VERSION_CHECK(major, minor, patch)   (0)
 
#define JSON_HEDLEY_MSVC_VERSION_CHECK(major, minor, patch)   (0)
 
#define JSON_HEDLEY_INTEL_VERSION_CHECK(major, minor, patch)   (0)
 
#define JSON_HEDLEY_PGI_VERSION_CHECK(major, minor, patch)   (0)
 
#define JSON_HEDLEY_SUNPRO_VERSION_CHECK(major, minor, patch)   (0)
 
#define JSON_HEDLEY_EMSCRIPTEN_VERSION_CHECK(major, minor, patch)   (0)
 
#define JSON_HEDLEY_ARM_VERSION_CHECK(major, minor, patch)   (0)
 
#define JSON_HEDLEY_IBM_VERSION_CHECK(major, minor, patch)   (0)
 
#define JSON_HEDLEY_TI_VERSION_CHECK(major, minor, patch)   (0)
 
#define JSON_HEDLEY_CRAY_VERSION_CHECK(major, minor, patch)   (0)
 
#define JSON_HEDLEY_IAR_VERSION_CHECK(major, minor, patch)   (0)
 
#define JSON_HEDLEY_TINYC_VERSION_CHECK(major, minor, patch)   (0)
 
#define JSON_HEDLEY_DMC_VERSION_CHECK(major, minor, patch)   (0)
 
#define JSON_HEDLEY_COMPCERT_VERSION_CHECK(major, minor, patch)   (0)
 
#define JSON_HEDLEY_PELLES_VERSION_CHECK(major, minor, patch)   (0)
 
#define JSON_HEDLEY_GCC_VERSION_CHECK(major, minor, patch)   (0)
 
#define JSON_HEDLEY_HAS_ATTRIBUTE(attribute)   (0)
 
#define JSON_HEDLEY_GNUC_HAS_ATTRIBUTE(attribute, major, minor, patch)   JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch)
 
#define JSON_HEDLEY_GCC_HAS_ATTRIBUTE(attribute, major, minor, patch)   JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch)
 
#define JSON_HEDLEY_HAS_CPP_ATTRIBUTE(attribute)   (0)
 
#define JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS(ns, attribute)   (0)
 
#define JSON_HEDLEY_GNUC_HAS_CPP_ATTRIBUTE(attribute, major, minor, patch)   JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch)
 
#define JSON_HEDLEY_GCC_HAS_CPP_ATTRIBUTE(attribute, major, minor, patch)   JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch)
 
#define JSON_HEDLEY_HAS_BUILTIN(builtin)   (0)
 
#define JSON_HEDLEY_GNUC_HAS_BUILTIN(builtin, major, minor, patch)   JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch)
 
#define JSON_HEDLEY_GCC_HAS_BUILTIN(builtin, major, minor, patch)   JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch)
 
#define JSON_HEDLEY_HAS_FEATURE(feature)   (0)
 
#define JSON_HEDLEY_GNUC_HAS_FEATURE(feature, major, minor, patch)   JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch)
 
#define JSON_HEDLEY_GCC_HAS_FEATURE(feature, major, minor, patch)   JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch)
 
#define JSON_HEDLEY_HAS_EXTENSION(extension)   (0)
 
#define JSON_HEDLEY_GNUC_HAS_EXTENSION(extension, major, minor, patch)   JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch)
 
#define JSON_HEDLEY_GCC_HAS_EXTENSION(extension, major, minor, patch)   JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch)
 
#define JSON_HEDLEY_HAS_DECLSPEC_ATTRIBUTE(attribute)   (0)
 
#define JSON_HEDLEY_GNUC_HAS_DECLSPEC_ATTRIBUTE(attribute, major, minor, patch)   JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch)
 
#define JSON_HEDLEY_GCC_HAS_DECLSPEC_ATTRIBUTE(attribute, major, minor, patch)   JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch)
 
#define JSON_HEDLEY_HAS_WARNING(warning)   (0)
 
#define JSON_HEDLEY_GNUC_HAS_WARNING(warning, major, minor, patch)   JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch)
 
#define JSON_HEDLEY_GCC_HAS_WARNING(warning, major, minor, patch)   JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch)
 
#define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(x)   x
 
#define JSON_HEDLEY_PRAGMA(value)
 
#define JSON_HEDLEY_DIAGNOSTIC_PUSH
 
#define JSON_HEDLEY_DIAGNOSTIC_POP
 
#define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED
 
#define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS
 
#define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES
 
#define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL
 
#define JSON_HEDLEY_DEPRECATED(since)
 
#define JSON_HEDLEY_DEPRECATED_FOR(since, replacement)
 
#define JSON_HEDLEY_UNAVAILABLE(available_since)
 
#define JSON_HEDLEY_WARN_UNUSED_RESULT
 
#define JSON_HEDLEY_SENTINEL(position)
 
#define JSON_HEDLEY_NO_RETURN
 
#define JSON_HEDLEY_NO_ESCAPE
 
#define JSON_HEDLEY_UNREACHABLE()
 
#define JSON_HEDLEY_UNREACHABLE_RETURN(value)   return value
 
#define JSON_HEDLEY_ASSUME(expr)   ((void) (expr))
 
#define JSON_HEDLEY_NON_NULL(...)
 
#define JSON_HEDLEY_PRINTF_FORMAT(string_idx, first_to_check)
 
#define JSON_HEDLEY_CONSTEXPR
 
#define JSON_HEDLEY_PREDICT(expr, expected, probability)   (((void) (expected)), !!(expr))
 
#define JSON_HEDLEY_PREDICT_TRUE(expr, probability)   (!!(expr))
 
#define JSON_HEDLEY_PREDICT_FALSE(expr, probability)   (!!(expr))
 
#define JSON_HEDLEY_LIKELY(expr)   (!!(expr))
 
#define JSON_HEDLEY_UNLIKELY(expr)   (!!(expr))
 
#define JSON_HEDLEY_UNPREDICTABLE(expr)   JSON_HEDLEY_PREDICT(expr, 1, 0.5)
 
#define JSON_HEDLEY_MALLOC
 
#define JSON_HEDLEY_PURE
 
#define JSON_HEDLEY_CONST   JSON_HEDLEY_PURE
 
#define JSON_HEDLEY_RESTRICT
 
#define JSON_HEDLEY_INLINE
 
#define JSON_HEDLEY_ALWAYS_INLINE   JSON_HEDLEY_INLINE
 
#define JSON_HEDLEY_NEVER_INLINE
 
#define JSON_HEDLEY_PRIVATE
 
#define JSON_HEDLEY_PUBLIC
 
#define JSON_HEDLEY_IMPORT   extern
 
#define JSON_HEDLEY_NO_THROW
 
#define JSON_HEDLEY_FALL_THROUGH
 
#define JSON_HEDLEY_RETURNS_NON_NULL
 
#define JSON_HEDLEY_ARRAY_PARAM(name)
 
#define JSON_HEDLEY_IS_CONSTANT(expr)   (0)
 
#define JSON_HEDLEY_REQUIRE_CONSTEXPR(expr)   (expr)
 
#define JSON_HEDLEY_BEGIN_C_DECLS
 
#define JSON_HEDLEY_END_C_DECLS
 
#define JSON_HEDLEY_C_DECL
 
#define JSON_HEDLEY_STATIC_ASSERT(expr, message)
 
#define JSON_HEDLEY_CONST_CAST(T, expr)   ((T) (expr))
 
#define JSON_HEDLEY_REINTERPRET_CAST(T, expr)   (*((T*) &(expr)))
 
#define JSON_HEDLEY_STATIC_CAST(T, expr)   ((T) (expr))
 
#define JSON_HEDLEY_CPP_CAST(T, expr)   (expr)
 
#define JSON_HEDLEY_NULL   ((void*) 0)
 
#define JSON_HEDLEY_MESSAGE(msg)
 
#define JSON_HEDLEY_WARNING(msg)   JSON_HEDLEY_MESSAGE(msg)
 
#define JSON_HEDLEY_REQUIRE(expr)
 
#define JSON_HEDLEY_REQUIRE_MSG(expr, msg)
 
#define JSON_HEDLEY_FLAGS_CAST(T, expr)   JSON_HEDLEY_STATIC_CAST(T, expr)
 
#define JSON_HEDLEY_EMPTY_BASES
 
#define JSON_HEDLEY_GCC_NOT_CLANG_VERSION_CHECK(major, minor, patch)   JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch)
 
#define JSON_HEDLEY_CLANG_HAS_ATTRIBUTE(attribute)   JSON_HEDLEY_HAS_ATTRIBUTE(attribute)
 
#define JSON_HEDLEY_CLANG_HAS_CPP_ATTRIBUTE(attribute)   JSON_HEDLEY_HAS_CPP_ATTRIBUTE(attribute)
 
#define JSON_HEDLEY_CLANG_HAS_BUILTIN(builtin)   JSON_HEDLEY_HAS_BUILTIN(builtin)
 
#define JSON_HEDLEY_CLANG_HAS_FEATURE(feature)   JSON_HEDLEY_HAS_FEATURE(feature)
 
#define JSON_HEDLEY_CLANG_HAS_EXTENSION(extension)   JSON_HEDLEY_HAS_EXTENSION(extension)
 
#define JSON_HEDLEY_CLANG_HAS_DECLSPEC_ATTRIBUTE(attribute)   JSON_HEDLEY_HAS_DECLSPEC_ATTRIBUTE(attribute)
 
#define JSON_HEDLEY_CLANG_HAS_WARNING(warning)   JSON_HEDLEY_HAS_WARNING(warning)
 
#define JSON_THROW(exception)   std::abort()
 
#define JSON_TRY   if(true)
 
#define JSON_CATCH(exception)   if(false)
 
#define JSON_INTERNAL_CATCH(exception)   if(false)
 
#define NLOHMANN_JSON_SERIALIZE_ENUM(ENUM_TYPE, ...)
 macro to briefly define a mapping between an enum and JSON More...
 
#define NLOHMANN_BASIC_JSON_TPL_DECLARATION
 
#define NLOHMANN_BASIC_JSON_TPL
 
#define INCLUDE_NLOHMANN_JSON_FWD_HPP_
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Typedefs

template<bool B, typename T = void>
using nlohmann::detail::enable_if_t = typename std::enable_if< B, T >::type
 
template<typename T >
using nlohmann::detail::uncvref_t = typename std::remove_cv< typename std::remove_reference< T >::type >::type
 
template<typename... Ts>
using nlohmann::detail::index_sequence_for = make_index_sequence< sizeof...(Ts)>
 
template<typename ... Ts>
using nlohmann::detail::void_t = typename make_void< Ts... >::type
 
template<template< class... > class Op, class... Args>
using nlohmann::detail::is_detected = typename detector< nonesuch, void, Op, Args... >::value_t
 
template<template< class... > class Op, class... Args>
using nlohmann::detail::detected_t = typename detector< nonesuch, void, Op, Args... >::type
 
template<class Default , template< class... > class Op, class... Args>
using nlohmann::detail::detected_or = detector< Default, void, Op, Args... >
 
template<class Default , template< class... > class Op, class... Args>
using nlohmann::detail::detected_or_t = typename detected_or< Default, Op, Args... >::type
 
template<class Expected , template< class... > class Op, class... Args>
using nlohmann::detail::is_detected_exact = std::is_same< Expected, detected_t< Op, Args... > >
 
template<class To , template< class... > class Op, class... Args>
using nlohmann::detail::is_detected_convertible = std::is_convertible< detected_t< Op, Args... >, To >
 
using nlohmann::json = basic_json<>
 default JSON class More...
 
template<typename T >
using nlohmann::detail::mapped_type_t = typename T::mapped_type
 
template<typename T >
using nlohmann::detail::key_type_t = typename T::key_type
 
template<typename T >
using nlohmann::detail::value_type_t = typename T::value_type
 
template<typename T >
using nlohmann::detail::difference_type_t = typename T::difference_type
 
template<typename T >
using nlohmann::detail::pointer_t = typename T::pointer
 
template<typename T >
using nlohmann::detail::reference_t = typename T::reference
 
template<typename T >
using nlohmann::detail::iterator_category_t = typename T::iterator_category
 
template<typename T >
using nlohmann::detail::iterator_t = typename T::iterator
 
template<typename T , typename... Args>
using nlohmann::detail::to_json_function = decltype(T::to_json(std::declval< Args >()...))
 
template<typename T , typename... Args>
using nlohmann::detail::from_json_function = decltype(T::from_json(std::declval< Args >()...))
 
template<typename T , typename U >
using nlohmann::detail::get_template_function = decltype(std::declval< T >().template get< U >())
 
using nlohmann::detail::input_adapter_t = std::shared_ptr< input_adapter_protocol >
 a type to simplify interfaces More...
 
template<typename T >
using nlohmann::detail::null_function_t = decltype(std::declval< T & >().null())
 
template<typename T >
using nlohmann::detail::boolean_function_t = decltype(std::declval< T & >().boolean(std::declval< bool >()))
 
template<typename T , typename Integer >
using nlohmann::detail::number_integer_function_t = decltype(std::declval< T & >().number_integer(std::declval< Integer >()))
 
template<typename T , typename Unsigned >
using nlohmann::detail::number_unsigned_function_t = decltype(std::declval< T & >().number_unsigned(std::declval< Unsigned >()))
 
template<typename T , typename Float , typename String >
using nlohmann::detail::number_float_function_t = decltype(std::declval< T & >().number_float(std::declval< Float >(), std::declval< const String & >()))
 
template<typename T , typename String >
using nlohmann::detail::string_function_t = decltype(std::declval< T & >().string(std::declval< String & >()))
 
template<typename T >
using nlohmann::detail::start_object_function_t = decltype(std::declval< T & >().start_object(std::declval< std::size_t >()))
 
template<typename T , typename String >
using nlohmann::detail::key_function_t = decltype(std::declval< T & >().key(std::declval< String & >()))
 
template<typename T >
using nlohmann::detail::end_object_function_t = decltype(std::declval< T & >().end_object())
 
template<typename T >
using nlohmann::detail::start_array_function_t = decltype(std::declval< T & >().start_array(std::declval< std::size_t >()))
 
template<typename T >
using nlohmann::detail::end_array_function_t = decltype(std::declval< T & >().end_array())
 
template<typename T , typename Exception >
using nlohmann::detail::parse_error_function_t = decltype(std::declval< T & >().parse_error(std::declval< std::size_t >(), std::declval< const std::string & >(), std::declval< const Exception & >()))
 
template<typename CharType >
using nlohmann::detail::output_adapter_t = std::shared_ptr< output_adapter_protocol< CharType > >
 a type to simplify interfaces More...
 
- - - - - - - - - - -

-Enumerations

enum  nlohmann::detail::value_t : std::uint8_t {
-  nlohmann::detail::value_t::null, -nlohmann::detail::value_t::object, -nlohmann::detail::value_t::array, -nlohmann::detail::value_t::string, -
-  nlohmann::detail::value_t::boolean, -nlohmann::detail::value_t::number_integer, -nlohmann::detail::value_t::number_unsigned, -nlohmann::detail::value_t::number_float, -
-  nlohmann::detail::value_t::discarded -
- }
 the JSON type enumeration More...
 
enum  nlohmann::detail::input_format_t {
-  nlohmann::detail::input_format_t::json, -nlohmann::detail::input_format_t::cbor, -nlohmann::detail::input_format_t::msgpack, -nlohmann::detail::input_format_t::ubjson, -
-  nlohmann::detail::input_format_t::bson -
- }
 the supported input formats More...
 
enum  nlohmann::detail::error_handler_t { nlohmann::detail::error_handler_t::strict, -nlohmann::detail::error_handler_t::replace, -nlohmann::detail::error_handler_t::ignore - }
 how to treat decoding errors More...
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

bool nlohmann::detail::operator< (const value_t lhs, const value_t rhs) noexcept
 comparison operator for JSON types More...
 
template<typename BasicJsonType >
void nlohmann::detail::from_json (const BasicJsonType &j, typename std::nullptr_t &n)
 
template<typename BasicJsonType , typename ArithmeticType , enable_if_t< std::is_arithmetic< ArithmeticType >::value and not std::is_same< ArithmeticType, typename BasicJsonType::boolean_t >::value, int > = 0>
void nlohmann::detail::get_arithmetic_value (const BasicJsonType &j, ArithmeticType &val)
 
template<typename BasicJsonType >
void nlohmann::detail::from_json (const BasicJsonType &j, typename BasicJsonType::boolean_t &b)
 
template<typename BasicJsonType >
void nlohmann::detail::from_json (const BasicJsonType &j, typename BasicJsonType::string_t &s)
 
template<typename BasicJsonType , typename ConstructibleStringType , enable_if_t< is_constructible_string_type< BasicJsonType, ConstructibleStringType >::value and not std::is_same< typename BasicJsonType::string_t, ConstructibleStringType >::value, int > = 0>
void nlohmann::detail::from_json (const BasicJsonType &j, ConstructibleStringType &s)
 
template<typename BasicJsonType >
void nlohmann::detail::from_json (const BasicJsonType &j, typename BasicJsonType::number_float_t &val)
 
template<typename BasicJsonType >
void nlohmann::detail::from_json (const BasicJsonType &j, typename BasicJsonType::number_unsigned_t &val)
 
template<typename BasicJsonType >
void nlohmann::detail::from_json (const BasicJsonType &j, typename BasicJsonType::number_integer_t &val)
 
template<typename BasicJsonType , typename EnumType , enable_if_t< std::is_enum< EnumType >::value, int > = 0>
void nlohmann::detail::from_json (const BasicJsonType &j, EnumType &e)
 
template<typename BasicJsonType , typename T , typename Allocator , enable_if_t< std::is_convertible< BasicJsonType, T >::value, int > = 0>
void nlohmann::detail::from_json (const BasicJsonType &j, std::forward_list< T, Allocator > &l)
 
template<typename BasicJsonType , typename T , enable_if_t< std::is_convertible< BasicJsonType, T >::value, int > = 0>
void nlohmann::detail::from_json (const BasicJsonType &j, std::valarray< T > &l)
 
template<typename BasicJsonType , typename T , std::size_t N>
auto nlohmann::detail::from_json (const BasicJsonType &j, T(&arr)[N]) -> decltype(j.template get< T >(), void())
 
template<typename BasicJsonType >
void nlohmann::detail::from_json_array_impl (const BasicJsonType &j, typename BasicJsonType::array_t &arr, priority_tag< 3 >)
 
template<typename BasicJsonType , typename T , std::size_t N>
auto nlohmann::detail::from_json_array_impl (const BasicJsonType &j, std::array< T, N > &arr, priority_tag< 2 >) -> decltype(j.template get< T >(), void())
 
template<typename BasicJsonType , typename ConstructibleArrayType >
auto nlohmann::detail::from_json_array_impl (const BasicJsonType &j, ConstructibleArrayType &arr, priority_tag< 1 >) -> decltype(arr.reserve(std::declval< typename ConstructibleArrayType::size_type >()), j.template get< typename ConstructibleArrayType::value_type >(), void())
 
template<typename BasicJsonType , typename ConstructibleArrayType >
void nlohmann::detail::from_json_array_impl (const BasicJsonType &j, ConstructibleArrayType &arr, priority_tag< 0 >)
 
template<typename BasicJsonType , typename ConstructibleArrayType , enable_if_t< is_constructible_array_type< BasicJsonType, ConstructibleArrayType >::value and not is_constructible_object_type< BasicJsonType, ConstructibleArrayType >::value and not is_constructible_string_type< BasicJsonType, ConstructibleArrayType >::value and not is_basic_json< ConstructibleArrayType >::value, int > = 0>
auto nlohmann::detail::from_json (const BasicJsonType &j, ConstructibleArrayType &arr) -> decltype(from_json_array_impl(j, arr, priority_tag< 3 >
 
j template nlohmann::detail::get< typename ConstructibleArrayType::value_type > ()
 
j template nlohmann::detail::void ())
 
template<typename BasicJsonType , typename ConstructibleObjectType , enable_if_t< is_constructible_object_type< BasicJsonType, ConstructibleObjectType >::value, int > = 0>
void nlohmann::detail::from_json (const BasicJsonType &j, ConstructibleObjectType &obj)
 
template<typename BasicJsonType , typename ArithmeticType , enable_if_t< std::is_arithmetic< ArithmeticType >::value and not std::is_same< ArithmeticType, typename BasicJsonType::number_unsigned_t >::value and not std::is_same< ArithmeticType, typename BasicJsonType::number_integer_t >::value and not std::is_same< ArithmeticType, typename BasicJsonType::number_float_t >::value and not std::is_same< ArithmeticType, typename BasicJsonType::boolean_t >::value, int > = 0>
void nlohmann::detail::from_json (const BasicJsonType &j, ArithmeticType &val)
 
template<typename BasicJsonType , typename A1 , typename A2 >
void nlohmann::detail::from_json (const BasicJsonType &j, std::pair< A1, A2 > &p)
 
template<typename BasicJsonType , typename Tuple , std::size_t... Idx>
void nlohmann::detail::from_json_tuple_impl (const BasicJsonType &j, Tuple &t, index_sequence< Idx... >)
 
template<typename BasicJsonType , typename... Args>
void nlohmann::detail::from_json (const BasicJsonType &j, std::tuple< Args... > &t)
 
template<typename BasicJsonType , typename Key , typename Value , typename Compare , typename Allocator , typename = enable_if_t<not std::is_constructible< typename BasicJsonType::string_t, Key>::value>>
void nlohmann::detail::from_json (const BasicJsonType &j, std::map< Key, Value, Compare, Allocator > &m)
 
template<typename BasicJsonType , typename Key , typename Value , typename Hash , typename KeyEqual , typename Allocator , typename = enable_if_t<not std::is_constructible< typename BasicJsonType::string_t, Key>::value>>
void nlohmann::detail::from_json (const BasicJsonType &j, std::unordered_map< Key, Value, Hash, KeyEqual, Allocator > &m)
 
template<typename string_type >
void nlohmann::detail::int_to_string (string_type &target, std::size_t value)
 
template<std::size_t N, typename IteratorType , enable_if_t< N==0, int > = 0>
auto nlohmann::detail::get (const nlohmann::detail::iteration_proxy_value< IteratorType > &i) -> decltype(i.key())
 
template<typename BasicJsonType , typename T , enable_if_t< std::is_same< T, typename BasicJsonType::boolean_t >::value, int > = 0>
void nlohmann::detail::to_json (BasicJsonType &j, T b) noexcept
 
template<typename BasicJsonType , typename CompatibleString , enable_if_t< std::is_constructible< typename BasicJsonType::string_t, CompatibleString >::value, int > = 0>
void nlohmann::detail::to_json (BasicJsonType &j, const CompatibleString &s)
 
template<typename BasicJsonType >
void nlohmann::detail::to_json (BasicJsonType &j, typename BasicJsonType::string_t &&s)
 
template<typename BasicJsonType , typename FloatType , enable_if_t< std::is_floating_point< FloatType >::value, int > = 0>
void nlohmann::detail::to_json (BasicJsonType &j, FloatType val) noexcept
 
template<typename BasicJsonType , typename CompatibleNumberUnsignedType , enable_if_t< is_compatible_integer_type< typename BasicJsonType::number_unsigned_t, CompatibleNumberUnsignedType >::value, int > = 0>
void nlohmann::detail::to_json (BasicJsonType &j, CompatibleNumberUnsignedType val) noexcept
 
template<typename BasicJsonType , typename CompatibleNumberIntegerType , enable_if_t< is_compatible_integer_type< typename BasicJsonType::number_integer_t, CompatibleNumberIntegerType >::value, int > = 0>
void nlohmann::detail::to_json (BasicJsonType &j, CompatibleNumberIntegerType val) noexcept
 
template<typename BasicJsonType , typename EnumType , enable_if_t< std::is_enum< EnumType >::value, int > = 0>
void nlohmann::detail::to_json (BasicJsonType &j, EnumType e) noexcept
 
template<typename BasicJsonType >
void nlohmann::detail::to_json (BasicJsonType &j, const std::vector< bool > &e)
 
template<typename BasicJsonType , typename CompatibleArrayType , enable_if_t< is_compatible_array_type< BasicJsonType, CompatibleArrayType >::value and not is_compatible_object_type< BasicJsonType, CompatibleArrayType >::value and not is_compatible_string_type< BasicJsonType, CompatibleArrayType >::value and not is_basic_json< CompatibleArrayType >::value, int > = 0>
void nlohmann::detail::to_json (BasicJsonType &j, const CompatibleArrayType &arr)
 
template<typename BasicJsonType , typename T , enable_if_t< std::is_convertible< T, BasicJsonType >::value, int > = 0>
void nlohmann::detail::to_json (BasicJsonType &j, const std::valarray< T > &arr)
 
template<typename BasicJsonType >
void nlohmann::detail::to_json (BasicJsonType &j, typename BasicJsonType::array_t &&arr)
 
template<typename BasicJsonType , typename CompatibleObjectType , enable_if_t< is_compatible_object_type< BasicJsonType, CompatibleObjectType >::value and not is_basic_json< CompatibleObjectType >::value, int > = 0>
void nlohmann::detail::to_json (BasicJsonType &j, const CompatibleObjectType &obj)
 
template<typename BasicJsonType >
void nlohmann::detail::to_json (BasicJsonType &j, typename BasicJsonType::object_t &&obj)
 
template<typename BasicJsonType , typename T , std::size_t N, enable_if_t< not std::is_constructible< typename BasicJsonType::string_t, const T(&)[N]>::value, int > = 0>
void nlohmann::detail::to_json (BasicJsonType &j, const T(&arr)[N])
 
template<typename BasicJsonType , typename T1 , typename T2 , enable_if_t< std::is_constructible< BasicJsonType, T1 >::value &&std::is_constructible< BasicJsonType, T2 >::value, int > = 0>
void nlohmann::detail::to_json (BasicJsonType &j, const std::pair< T1, T2 > &p)
 
template<typename BasicJsonType , typename T , enable_if_t< std::is_same< T, iteration_proxy_value< typename BasicJsonType::iterator >>::value, int > = 0>
void nlohmann::detail::to_json (BasicJsonType &j, const T &b)
 
template<typename BasicJsonType , typename Tuple , std::size_t... Idx>
void nlohmann::detail::to_json_tuple_impl (BasicJsonType &j, const Tuple &t, index_sequence< Idx... >)
 
template<typename Target , typename Source >
Target nlohmann::detail::dtoa_impl::reinterpret_bits (const Source source)
 
template<typename FloatType >
boundaries nlohmann::detail::dtoa_impl::compute_boundaries (FloatType value)
 
cached_power nlohmann::detail::dtoa_impl::get_cached_power_for_binary_exponent (int e)
 
int nlohmann::detail::dtoa_impl::find_largest_pow10 (const std::uint32_t n, std::uint32_t &pow10)
 
void nlohmann::detail::dtoa_impl::grisu2_round (char *buf, int len, std::uint64_t dist, std::uint64_t delta, std::uint64_t rest, std::uint64_t ten_k)
 
void nlohmann::detail::dtoa_impl::grisu2_digit_gen (char *buffer, int &length, int &decimal_exponent, diyfp M_minus, diyfp w, diyfp M_plus)
 
void nlohmann::detail::dtoa_impl::grisu2 (char *buf, int &len, int &decimal_exponent, diyfp m_minus, diyfp v, diyfp m_plus)
 
template<typename FloatType >
void nlohmann::detail::dtoa_impl::grisu2 (char *buf, int &len, int &decimal_exponent, FloatType value)
 
JSON_HEDLEY_RETURNS_NON_NULL char * nlohmann::detail::dtoa_impl::append_exponent (char *buf, int e)
 appends a decimal representation of e to buf More...
 
JSON_HEDLEY_RETURNS_NON_NULL char * nlohmann::detail::dtoa_impl::format_buffer (char *buf, int len, int decimal_exponent, int min_exp, int max_exp)
 prettify v = buf * 10^decimal_exponent More...
 
template<typename FloatType >
JSON_HEDLEY_RETURNS_NON_NULL char * nlohmann::detail::to_chars (char *first, const char *last, FloatType value)
 generates a decimal representation of the floating-point number value in [first, last). More...
 
NLOHMANN_BASIC_JSON_TPL_DECLARATION std::string nlohmann::to_string (const NLOHMANN_BASIC_JSON_TPL &j)
 user-defined to_string function for JSON values More...
 
template<>
void std::swap< nlohmann::json > (nlohmann::json &j1, nlohmann::json &j2) noexcept(is_nothrow_move_constructible< nlohmann::json >::value and is_nothrow_move_assignable< nlohmann::json >::value)
 exchanges the values of two JSON objects More...
 
nlohmann::json operator""_json (const char *s, std::size_t n)
 user-defined string literal for JSON values More...
 
nlohmann::json::json_pointer operator""_json_pointer (const char *s, std::size_t n)
 user-defined string literal for JSON pointer More...
 
- - - - - -

-Variables

constexpr int nlohmann::detail::dtoa_impl::kAlpha = -60
 
constexpr int nlohmann::detail::dtoa_impl::kGamma = -32
 
-

Macro Definition Documentation

- -

◆ INCLUDE_NLOHMANN_JSON_FWD_HPP_

- -
-
- - - - -
#define INCLUDE_NLOHMANN_JSON_FWD_HPP_
-
- -
-
- -

◆ JSON_CATCH

- -
-
- - - - - - - - -
#define JSON_CATCH( exception)   if(false)
-
- -
-
- -

◆ JSON_HEDLEY_ALWAYS_INLINE

- -
-
- - - - -
#define JSON_HEDLEY_ALWAYS_INLINE   JSON_HEDLEY_INLINE
-
- -
-
- -

◆ JSON_HEDLEY_ARM_VERSION_CHECK

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
#define JSON_HEDLEY_ARM_VERSION_CHECK( major,
 minor,
 patch 
)   (0)
-
- -
-
- -

◆ JSON_HEDLEY_ARRAY_PARAM

- -
-
- - - - - - - - -
#define JSON_HEDLEY_ARRAY_PARAM( name)
-
- -
-
- -

◆ JSON_HEDLEY_ASSUME

- -
-
- - - - - - - - -
#define JSON_HEDLEY_ASSUME( expr)   ((void) (expr))
-
- -
-
- -

◆ JSON_HEDLEY_BEGIN_C_DECLS

- -
-
- - - - -
#define JSON_HEDLEY_BEGIN_C_DECLS
-
- -
-
- -

◆ JSON_HEDLEY_C_DECL

- -
-
- - - - -
#define JSON_HEDLEY_C_DECL
-
- -
-
- -

◆ JSON_HEDLEY_CLANG_HAS_ATTRIBUTE

- -
-
- - - - - - - - -
#define JSON_HEDLEY_CLANG_HAS_ATTRIBUTE( attribute)   JSON_HEDLEY_HAS_ATTRIBUTE(attribute)
-
- -
-
- -

◆ JSON_HEDLEY_CLANG_HAS_BUILTIN

- -
-
- - - - - - - - -
#define JSON_HEDLEY_CLANG_HAS_BUILTIN( builtin)   JSON_HEDLEY_HAS_BUILTIN(builtin)
-
- -
-
- -

◆ JSON_HEDLEY_CLANG_HAS_CPP_ATTRIBUTE

- -
-
- - - - - - - - -
#define JSON_HEDLEY_CLANG_HAS_CPP_ATTRIBUTE( attribute)   JSON_HEDLEY_HAS_CPP_ATTRIBUTE(attribute)
-
- -
-
- -

◆ JSON_HEDLEY_CLANG_HAS_DECLSPEC_ATTRIBUTE

- -
-
- - - - - - - - -
#define JSON_HEDLEY_CLANG_HAS_DECLSPEC_ATTRIBUTE( attribute)   JSON_HEDLEY_HAS_DECLSPEC_ATTRIBUTE(attribute)
-
- -
-
- -

◆ JSON_HEDLEY_CLANG_HAS_EXTENSION

- -
-
- - - - - - - - -
#define JSON_HEDLEY_CLANG_HAS_EXTENSION( extension)   JSON_HEDLEY_HAS_EXTENSION(extension)
-
- -
-
- -

◆ JSON_HEDLEY_CLANG_HAS_FEATURE

- -
-
- - - - - - - - -
#define JSON_HEDLEY_CLANG_HAS_FEATURE( feature)   JSON_HEDLEY_HAS_FEATURE(feature)
-
- -
-
- -

◆ JSON_HEDLEY_CLANG_HAS_WARNING

- -
-
- - - - - - - - -
#define JSON_HEDLEY_CLANG_HAS_WARNING( warning)   JSON_HEDLEY_HAS_WARNING(warning)
-
- -
-
- -

◆ JSON_HEDLEY_COMPCERT_VERSION_CHECK

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
#define JSON_HEDLEY_COMPCERT_VERSION_CHECK( major,
 minor,
 patch 
)   (0)
-
- -
-
- -

◆ JSON_HEDLEY_CONCAT

- -
-
- - - - - - - - - - - - - - - - - - -
#define JSON_HEDLEY_CONCAT( a,
 
)   JSON_HEDLEY_CONCAT_EX(a,b)
-
- -
-
- -

◆ JSON_HEDLEY_CONCAT_EX

- -
-
- - - - - - - - - - - - - - - - - - -
#define JSON_HEDLEY_CONCAT_EX( a,
 
)   a##b
-
- -
-
- -

◆ JSON_HEDLEY_CONST

- -
-
- - - - -
#define JSON_HEDLEY_CONST   JSON_HEDLEY_PURE
-
- -
-
- -

◆ JSON_HEDLEY_CONST_CAST

- -
-
- - - - - - - - - - - - - - - - - - -
#define JSON_HEDLEY_CONST_CAST( T,
 expr 
)   ((T) (expr))
-
- -
-
- -

◆ JSON_HEDLEY_CONSTEXPR

- -
-
- - - - -
#define JSON_HEDLEY_CONSTEXPR
-
- -
-
- -

◆ JSON_HEDLEY_CPP_CAST

- -
-
- - - - - - - - - - - - - - - - - - -
#define JSON_HEDLEY_CPP_CAST( T,
 expr 
)   (expr)
-
- -
-
- -

◆ JSON_HEDLEY_CRAY_VERSION_CHECK

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
#define JSON_HEDLEY_CRAY_VERSION_CHECK( major,
 minor,
 patch 
)   (0)
-
- -
-
- -

◆ JSON_HEDLEY_DEPRECATED

- -
-
- - - - - - - - -
#define JSON_HEDLEY_DEPRECATED( since)
-
- -
-
- -

◆ JSON_HEDLEY_DEPRECATED_FOR

- -
-
- - - - - - - - - - - - - - - - - - -
#define JSON_HEDLEY_DEPRECATED_FOR( since,
 replacement 
)
-
- -
-
- -

◆ JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL

- -
-
- - - - -
#define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL
-
- -
-
- -

◆ JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_

- -
-
- - - - - - - - -
#define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_( x)   x
-
- -
-
- -

◆ JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED

- -
-
- - - - -
#define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED
-
- -
-
- -

◆ JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES

- -
-
- - - - -
#define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES
-
- -
-
- -

◆ JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS

- -
-
- - - - -
#define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS
-
- -
-
- -

◆ JSON_HEDLEY_DIAGNOSTIC_POP

- -
-
- - - - -
#define JSON_HEDLEY_DIAGNOSTIC_POP
-
- -
-
- -

◆ JSON_HEDLEY_DIAGNOSTIC_PUSH

- -
-
- - - - -
#define JSON_HEDLEY_DIAGNOSTIC_PUSH
-
- -
-
- -

◆ JSON_HEDLEY_DMC_VERSION_CHECK

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
#define JSON_HEDLEY_DMC_VERSION_CHECK( major,
 minor,
 patch 
)   (0)
-
- -
-
- -

◆ JSON_HEDLEY_EMPTY_BASES

- -
-
- - - - -
#define JSON_HEDLEY_EMPTY_BASES
-
- -
-
- -

◆ JSON_HEDLEY_EMSCRIPTEN_VERSION_CHECK

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
#define JSON_HEDLEY_EMSCRIPTEN_VERSION_CHECK( major,
 minor,
 patch 
)   (0)
-
- -
-
- -

◆ JSON_HEDLEY_END_C_DECLS

- -
-
- - - - -
#define JSON_HEDLEY_END_C_DECLS
-
- -
-
- -

◆ JSON_HEDLEY_FALL_THROUGH

- -
-
- - - - -
#define JSON_HEDLEY_FALL_THROUGH
-
- -
-
- -

◆ JSON_HEDLEY_FLAGS_CAST

- -
-
- - - - - - - - - - - - - - - - - - -
#define JSON_HEDLEY_FLAGS_CAST( T,
 expr 
)   JSON_HEDLEY_STATIC_CAST(T, expr)
-
- -
-
- -

◆ JSON_HEDLEY_GCC_HAS_ATTRIBUTE

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#define JSON_HEDLEY_GCC_HAS_ATTRIBUTE( attribute,
 major,
 minor,
 patch 
)   JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch)
-
- -
-
- -

◆ JSON_HEDLEY_GCC_HAS_BUILTIN

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#define JSON_HEDLEY_GCC_HAS_BUILTIN( builtin,
 major,
 minor,
 patch 
)   JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch)
-
- -
-
- -

◆ JSON_HEDLEY_GCC_HAS_CPP_ATTRIBUTE

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#define JSON_HEDLEY_GCC_HAS_CPP_ATTRIBUTE( attribute,
 major,
 minor,
 patch 
)   JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch)
-
- -
-
- -

◆ JSON_HEDLEY_GCC_HAS_DECLSPEC_ATTRIBUTE

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#define JSON_HEDLEY_GCC_HAS_DECLSPEC_ATTRIBUTE( attribute,
 major,
 minor,
 patch 
)   JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch)
-
- -
-
- -

◆ JSON_HEDLEY_GCC_HAS_EXTENSION

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#define JSON_HEDLEY_GCC_HAS_EXTENSION( extension,
 major,
 minor,
 patch 
)   JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch)
-
- -
-
- -

◆ JSON_HEDLEY_GCC_HAS_FEATURE

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#define JSON_HEDLEY_GCC_HAS_FEATURE( feature,
 major,
 minor,
 patch 
)   JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch)
-
- -
-
- -

◆ JSON_HEDLEY_GCC_HAS_WARNING

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#define JSON_HEDLEY_GCC_HAS_WARNING( warning,
 major,
 minor,
 patch 
)   JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch)
-
- -
-
- -

◆ JSON_HEDLEY_GCC_NOT_CLANG_VERSION_CHECK

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
#define JSON_HEDLEY_GCC_NOT_CLANG_VERSION_CHECK( major,
 minor,
 patch 
)   JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch)
-
- -
-
- -

◆ JSON_HEDLEY_GCC_VERSION_CHECK

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
#define JSON_HEDLEY_GCC_VERSION_CHECK( major,
 minor,
 patch 
)   (0)
-
- -
-
- -

◆ JSON_HEDLEY_GNUC_HAS_ATTRIBUTE

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#define JSON_HEDLEY_GNUC_HAS_ATTRIBUTE( attribute,
 major,
 minor,
 patch 
)   JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch)
-
- -
-
- -

◆ JSON_HEDLEY_GNUC_HAS_BUILTIN

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#define JSON_HEDLEY_GNUC_HAS_BUILTIN( builtin,
 major,
 minor,
 patch 
)   JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch)
-
- -
-
- -

◆ JSON_HEDLEY_GNUC_HAS_CPP_ATTRIBUTE

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#define JSON_HEDLEY_GNUC_HAS_CPP_ATTRIBUTE( attribute,
 major,
 minor,
 patch 
)   JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch)
-
- -
-
- -

◆ JSON_HEDLEY_GNUC_HAS_DECLSPEC_ATTRIBUTE

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#define JSON_HEDLEY_GNUC_HAS_DECLSPEC_ATTRIBUTE( attribute,
 major,
 minor,
 patch 
)   JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch)
-
- -
-
- -

◆ JSON_HEDLEY_GNUC_HAS_EXTENSION

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#define JSON_HEDLEY_GNUC_HAS_EXTENSION( extension,
 major,
 minor,
 patch 
)   JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch)
-
- -
-
- -

◆ JSON_HEDLEY_GNUC_HAS_FEATURE

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#define JSON_HEDLEY_GNUC_HAS_FEATURE( feature,
 major,
 minor,
 patch 
)   JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch)
-
- -
-
- -

◆ JSON_HEDLEY_GNUC_HAS_WARNING

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#define JSON_HEDLEY_GNUC_HAS_WARNING( warning,
 major,
 minor,
 patch 
)   JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch)
-
- -
-
- -

◆ JSON_HEDLEY_GNUC_VERSION_CHECK

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
#define JSON_HEDLEY_GNUC_VERSION_CHECK( major,
 minor,
 patch 
)   (0)
-
- -
-
- -

◆ JSON_HEDLEY_HAS_ATTRIBUTE

- -
-
- - - - - - - - -
#define JSON_HEDLEY_HAS_ATTRIBUTE( attribute)   (0)
-
- -
-
- -

◆ JSON_HEDLEY_HAS_BUILTIN

- -
-
- - - - - - - - -
#define JSON_HEDLEY_HAS_BUILTIN( builtin)   (0)
-
- -
-
- -

◆ JSON_HEDLEY_HAS_CPP_ATTRIBUTE

- -
-
- - - - - - - - -
#define JSON_HEDLEY_HAS_CPP_ATTRIBUTE( attribute)   (0)
-
- -
-
- -

◆ JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS

- -
-
- - - - - - - - - - - - - - - - - - -
#define JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS( ns,
 attribute 
)   (0)
-
- -
-
- -

◆ JSON_HEDLEY_HAS_DECLSPEC_ATTRIBUTE

- -
-
- - - - - - - - -
#define JSON_HEDLEY_HAS_DECLSPEC_ATTRIBUTE( attribute)   (0)
-
- -
-
- -

◆ JSON_HEDLEY_HAS_EXTENSION

- -
-
- - - - - - - - -
#define JSON_HEDLEY_HAS_EXTENSION( extension)   (0)
-
- -
-
- -

◆ JSON_HEDLEY_HAS_FEATURE

- -
-
- - - - - - - - -
#define JSON_HEDLEY_HAS_FEATURE( feature)   (0)
-
- -
-
- -

◆ JSON_HEDLEY_HAS_WARNING

- -
-
- - - - - - - - -
#define JSON_HEDLEY_HAS_WARNING( warning)   (0)
-
- -
-
- -

◆ JSON_HEDLEY_IAR_VERSION_CHECK

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
#define JSON_HEDLEY_IAR_VERSION_CHECK( major,
 minor,
 patch 
)   (0)
-
- -
-
- -

◆ JSON_HEDLEY_IBM_VERSION_CHECK

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
#define JSON_HEDLEY_IBM_VERSION_CHECK( major,
 minor,
 patch 
)   (0)
-
- -
-
- -

◆ JSON_HEDLEY_IMPORT

- -
-
- - - - -
#define JSON_HEDLEY_IMPORT   extern
-
- -
-
- -

◆ JSON_HEDLEY_INLINE

- -
-
- - - - -
#define JSON_HEDLEY_INLINE
-
- -
-
- -

◆ JSON_HEDLEY_INTEL_VERSION_CHECK

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
#define JSON_HEDLEY_INTEL_VERSION_CHECK( major,
 minor,
 patch 
)   (0)
-
- -
-
- -

◆ JSON_HEDLEY_IS_CONSTANT

- -
-
- - - - - - - - -
#define JSON_HEDLEY_IS_CONSTANT( expr)   (0)
-
- -
-
- -

◆ JSON_HEDLEY_LIKELY

- -
-
- - - - - - - - -
#define JSON_HEDLEY_LIKELY( expr)   (!!(expr))
-
- -
-
- -

◆ JSON_HEDLEY_MALLOC

- -
-
- - - - -
#define JSON_HEDLEY_MALLOC
-
- -
-
- -

◆ JSON_HEDLEY_MESSAGE

- -
-
- - - - - - - - -
#define JSON_HEDLEY_MESSAGE( msg)
-
- -
-
- -

◆ JSON_HEDLEY_MSVC_VERSION_CHECK

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
#define JSON_HEDLEY_MSVC_VERSION_CHECK( major,
 minor,
 patch 
)   (0)
-
- -
-
- -

◆ JSON_HEDLEY_NEVER_INLINE

- -
-
- - - - -
#define JSON_HEDLEY_NEVER_INLINE
-
- -
-
- -

◆ JSON_HEDLEY_NO_ESCAPE

- -
-
- - - - -
#define JSON_HEDLEY_NO_ESCAPE
-
- -
-
- -

◆ JSON_HEDLEY_NO_RETURN

- -
-
- - - - -
#define JSON_HEDLEY_NO_RETURN
-
- -
-
- -

◆ JSON_HEDLEY_NO_THROW

- -
-
- - - - -
#define JSON_HEDLEY_NO_THROW
-
- -
-
- -

◆ JSON_HEDLEY_NON_NULL

- -
-
- - - - - - - - -
#define JSON_HEDLEY_NON_NULL( ...)
-
- -
-
- -

◆ JSON_HEDLEY_NULL

- -
-
- - - - -
#define JSON_HEDLEY_NULL   ((void*) 0)
-
- -
-
- -

◆ JSON_HEDLEY_PELLES_VERSION_CHECK

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
#define JSON_HEDLEY_PELLES_VERSION_CHECK( major,
 minor,
 patch 
)   (0)
-
- -
-
- -

◆ JSON_HEDLEY_PGI_VERSION_CHECK

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
#define JSON_HEDLEY_PGI_VERSION_CHECK( major,
 minor,
 patch 
)   (0)
-
- -
-
- -

◆ JSON_HEDLEY_PRAGMA

- -
-
- - - - - - - - -
#define JSON_HEDLEY_PRAGMA( value)
-
- -
-
- -

◆ JSON_HEDLEY_PREDICT

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
#define JSON_HEDLEY_PREDICT( expr,
 expected,
 probability 
)   (((void) (expected)), !!(expr))
-
- -
-
- -

◆ JSON_HEDLEY_PREDICT_FALSE

- -
-
- - - - - - - - - - - - - - - - - - -
#define JSON_HEDLEY_PREDICT_FALSE( expr,
 probability 
)   (!!(expr))
-
- -
-
- -

◆ JSON_HEDLEY_PREDICT_TRUE

- -
-
- - - - - - - - - - - - - - - - - - -
#define JSON_HEDLEY_PREDICT_TRUE( expr,
 probability 
)   (!!(expr))
-
- -
-
- -

◆ JSON_HEDLEY_PRINTF_FORMAT

- -
-
- - - - - - - - - - - - - - - - - - -
#define JSON_HEDLEY_PRINTF_FORMAT( string_idx,
 first_to_check 
)
-
- -
-
- -

◆ JSON_HEDLEY_PRIVATE

- -
-
- - - - -
#define JSON_HEDLEY_PRIVATE
-
- -
-
- -

◆ JSON_HEDLEY_PUBLIC

- -
-
- - - - -
#define JSON_HEDLEY_PUBLIC
-
- -
-
- -

◆ JSON_HEDLEY_PURE

- -
-
- - - - -
#define JSON_HEDLEY_PURE
-
- -
-
- -

◆ JSON_HEDLEY_REINTERPRET_CAST

- -
-
- - - - - - - - - - - - - - - - - - -
#define JSON_HEDLEY_REINTERPRET_CAST( T,
 expr 
)   (*((T*) &(expr)))
-
- -
-
- -

◆ JSON_HEDLEY_REQUIRE

- -
-
- - - - - - - - -
#define JSON_HEDLEY_REQUIRE( expr)
-
- -
-
- -

◆ JSON_HEDLEY_REQUIRE_CONSTEXPR

- -
-
- - - - - - - - -
#define JSON_HEDLEY_REQUIRE_CONSTEXPR( expr)   (expr)
-
- -
-
- -

◆ JSON_HEDLEY_REQUIRE_MSG

- -
-
- - - - - - - - - - - - - - - - - - -
#define JSON_HEDLEY_REQUIRE_MSG( expr,
 msg 
)
-
- -
-
- -

◆ JSON_HEDLEY_RESTRICT

- -
-
- - - - -
#define JSON_HEDLEY_RESTRICT
-
- -
-
- -

◆ JSON_HEDLEY_RETURNS_NON_NULL

- -
-
- - - - -
#define JSON_HEDLEY_RETURNS_NON_NULL
-
- -
-
- -

◆ JSON_HEDLEY_SENTINEL

- -
-
- - - - - - - - -
#define JSON_HEDLEY_SENTINEL( position)
-
- -
-
- -

◆ JSON_HEDLEY_STATIC_ASSERT

- -
-
- - - - - - - - - - - - - - - - - - -
#define JSON_HEDLEY_STATIC_ASSERT( expr,
 message 
)
-
- -
-
- -

◆ JSON_HEDLEY_STATIC_CAST

- -
-
- - - - - - - - - - - - - - - - - - -
#define JSON_HEDLEY_STATIC_CAST( T,
 expr 
)   ((T) (expr))
-
- -
-
- -

◆ JSON_HEDLEY_STRINGIFY

- -
-
- - - - - - - - -
#define JSON_HEDLEY_STRINGIFY( x)   JSON_HEDLEY_STRINGIFY_EX(x)
-
- -
-
- -

◆ JSON_HEDLEY_STRINGIFY_EX

- -
-
- - - - - - - - -
#define JSON_HEDLEY_STRINGIFY_EX( x)   #x
-
- -
-
- -

◆ JSON_HEDLEY_SUNPRO_VERSION_CHECK

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
#define JSON_HEDLEY_SUNPRO_VERSION_CHECK( major,
 minor,
 patch 
)   (0)
-
- -
-
- -

◆ JSON_HEDLEY_TI_VERSION_CHECK

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
#define JSON_HEDLEY_TI_VERSION_CHECK( major,
 minor,
 patch 
)   (0)
-
- -
-
- -

◆ JSON_HEDLEY_TINYC_VERSION_CHECK

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
#define JSON_HEDLEY_TINYC_VERSION_CHECK( major,
 minor,
 patch 
)   (0)
-
- -
-
- -

◆ JSON_HEDLEY_UNAVAILABLE

- -
-
- - - - - - - - -
#define JSON_HEDLEY_UNAVAILABLE( available_since)
-
- -
-
- -

◆ JSON_HEDLEY_UNLIKELY

- -
-
- - - - - - - - -
#define JSON_HEDLEY_UNLIKELY( expr)   (!!(expr))
-
- -
-
- -

◆ JSON_HEDLEY_UNPREDICTABLE

- -
-
- - - - - - - - -
#define JSON_HEDLEY_UNPREDICTABLE( expr)   JSON_HEDLEY_PREDICT(expr, 1, 0.5)
-
- -
-
- -

◆ JSON_HEDLEY_UNREACHABLE

- -
-
- - - - - - - -
#define JSON_HEDLEY_UNREACHABLE()
-
- -
-
- -

◆ JSON_HEDLEY_UNREACHABLE_RETURN

- -
-
- - - - - - - - -
#define JSON_HEDLEY_UNREACHABLE_RETURN( value)   return value
-
- -
-
- -

◆ JSON_HEDLEY_VERSION

- -
-
- - - - -
#define JSON_HEDLEY_VERSION   11
-
- -
-
- -

◆ JSON_HEDLEY_VERSION_DECODE_MAJOR

- -
-
- - - - - - - - -
#define JSON_HEDLEY_VERSION_DECODE_MAJOR( version)   ((version) / 1000000)
-
- -
-
- -

◆ JSON_HEDLEY_VERSION_DECODE_MINOR

- -
-
- - - - - - - - -
#define JSON_HEDLEY_VERSION_DECODE_MINOR( version)   (((version) % 1000000) / 1000)
-
- -
-
- -

◆ JSON_HEDLEY_VERSION_DECODE_REVISION

- -
-
- - - - - - - - -
#define JSON_HEDLEY_VERSION_DECODE_REVISION( version)   ((version) % 1000)
-
- -
-
- -

◆ JSON_HEDLEY_VERSION_ENCODE

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
#define JSON_HEDLEY_VERSION_ENCODE( major,
 minor,
 revision 
)   (((major) * 1000000) + ((minor) * 1000) + (revision))
-
- -
-
- -

◆ JSON_HEDLEY_WARN_UNUSED_RESULT

- -
-
- - - - -
#define JSON_HEDLEY_WARN_UNUSED_RESULT
-
- -
-
- -

◆ JSON_HEDLEY_WARNING

- -
-
- - - - - - - - -
#define JSON_HEDLEY_WARNING( msg)   JSON_HEDLEY_MESSAGE(msg)
-
- -
-
- -

◆ JSON_INTERNAL_CATCH

- -
-
- - - - - - - - -
#define JSON_INTERNAL_CATCH( exception)   if(false)
-
- -
-
- -

◆ JSON_THROW

- -
-
- - - - - - - - -
#define JSON_THROW( exception)   std::abort()
-
- -
-
- -

◆ JSON_TRY

- -
-
- - - - -
#define JSON_TRY   if(true)
-
- -
-
- -

◆ NLOHMANN_BASIC_JSON_TPL

- -
-
- - - - -
#define NLOHMANN_BASIC_JSON_TPL
-
-Value:
basic_json<ObjectType, ArrayType, StringType, BooleanType, \
-
NumberIntegerType, NumberUnsignedType, NumberFloatType, \
-
AllocatorType, JSONSerializer>
-
-
-
- -

◆ NLOHMANN_BASIC_JSON_TPL_DECLARATION

- -
-
- - - - -
#define NLOHMANN_BASIC_JSON_TPL_DECLARATION
-
-Value:
template<template<typename, typename, typename...> class ObjectType, \
-
template<typename, typename...> class ArrayType, \
-
class StringType, class BooleanType, class NumberIntegerType, \
-
class NumberUnsignedType, class NumberFloatType, \
-
template<typename> class AllocatorType, \
-
template<typename, typename = void> class JSONSerializer>
-
-
-
- -

◆ NLOHMANN_JSON_SERIALIZE_ENUM

- -
-
- - - - - - - - - - - - - - - - - - -
#define NLOHMANN_JSON_SERIALIZE_ENUM( ENUM_TYPE,
 ... 
)
-
-Value:
template<typename BasicJsonType> \
-
inline void to_json(BasicJsonType& j, const ENUM_TYPE& e) \
-
{ \
-
static_assert(std::is_enum<ENUM_TYPE>::value, #ENUM_TYPE " must be an enum!"); \
-
static const std::pair<ENUM_TYPE, BasicJsonType> m[] = __VA_ARGS__; \
-
auto it = std::find_if(std::begin(m), std::end(m), \
-
[e](const std::pair<ENUM_TYPE, BasicJsonType>& ej_pair) -> bool \
-
{ \
-
return ej_pair.first == e; \
-
}); \
-
j = ((it != std::end(m)) ? it : std::begin(m))->second; \
-
} \
-
template<typename BasicJsonType> \
-
inline void from_json(const BasicJsonType& j, ENUM_TYPE& e) \
-
{ \
-
static_assert(std::is_enum<ENUM_TYPE>::value, #ENUM_TYPE " must be an enum!"); \
-
static const std::pair<ENUM_TYPE, BasicJsonType> m[] = __VA_ARGS__; \
-
auto it = std::find_if(std::begin(m), std::end(m), \
-
[&j](const std::pair<ENUM_TYPE, BasicJsonType>& ej_pair) -> bool \
-
{ \
-
return ej_pair.second == j; \
-
}); \
-
e = ((it != std::end(m)) ? it : std::begin(m))->first; \
-
}
-
-

macro to briefly define a mapping between an enum and JSON

-
Since
version 3.4.0
- -
-
- -

◆ NLOHMANN_JSON_VERSION_MAJOR

- -
-
- - - - -
#define NLOHMANN_JSON_VERSION_MAJOR   3
-
- -
-
- -

◆ NLOHMANN_JSON_VERSION_MINOR

- -
-
- - - - -
#define NLOHMANN_JSON_VERSION_MINOR   7
-
- -
-
- -

◆ NLOHMANN_JSON_VERSION_PATCH

- -
-
- - - - -
#define NLOHMANN_JSON_VERSION_PATCH   3
-
- -
-
-

Function Documentation

- -

◆ operator""_json()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
nlohmann::json operator""_json (const char * s,
std::size_t n 
)
-
-inline
-
- -

user-defined string literal for JSON values

-

This operator implements a user-defined string literal for JSON objects. It can be used by adding "_json" to a string literal and returns a JSON object if no parse error occurred.

-
Parameters
- - - -
[in]sa string representation of a JSON object
[in]nthe length of string s
-
-
-
Returns
a JSON object
-
Since
version 1.0.0
- -
-
- -

◆ operator""_json_pointer()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
nlohmann::json::json_pointer operator""_json_pointer (const char * s,
std::size_t n 
)
-
-inline
-
- -

user-defined string literal for JSON pointer

-

This operator implements a user-defined string literal for JSON Pointers. It can be used by adding "_json_pointer" to a string literal and returns a JSON pointer object if no parse error occurred.

-
Parameters
- - - -
[in]sa string representation of a JSON Pointer
[in]nthe length of string s
-
-
-
Returns
a JSON pointer object
-
Since
version 2.0.0
- -
-
-
-
void from_json(const BasicJsonType &j, std::unordered_map< Key, Value, Hash, KeyEqual, Allocator > &m)
Definition: json.hpp:3224
-
void to_json(BasicJsonType &j, const T &b)
Definition: json.hpp:3758
- - - - diff --git a/help/html/json_8hpp__dep__incl.map b/help/html/json_8hpp__dep__incl.map deleted file mode 100644 index b8e1523..0000000 --- a/help/html/json_8hpp__dep__incl.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/help/html/json_8hpp__dep__incl.md5 b/help/html/json_8hpp__dep__incl.md5 deleted file mode 100644 index b30b633..0000000 --- a/help/html/json_8hpp__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -9806e5653b15d920835b2f475cb04416 \ No newline at end of file diff --git a/help/html/json_8hpp__dep__incl.png b/help/html/json_8hpp__dep__incl.png deleted file mode 100644 index e701058..0000000 Binary files a/help/html/json_8hpp__dep__incl.png and /dev/null differ diff --git a/help/html/json_8hpp__incl.map b/help/html/json_8hpp__incl.map deleted file mode 100644 index c2f88fe..0000000 --- a/help/html/json_8hpp__incl.map +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/help/html/json_8hpp__incl.md5 b/help/html/json_8hpp__incl.md5 deleted file mode 100644 index 032a710..0000000 --- a/help/html/json_8hpp__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -0e5bef3d12b8e30ecb8040bafcf0e347 \ No newline at end of file diff --git a/help/html/json_8hpp__incl.png b/help/html/json_8hpp__incl.png deleted file mode 100644 index 51d75f9..0000000 Binary files a/help/html/json_8hpp__incl.png and /dev/null differ diff --git a/help/html/json_8hpp_source.html b/help/html/json_8hpp_source.html deleted file mode 100644 index b84fb10..0000000 --- a/help/html/json_8hpp_source.html +++ /dev/null @@ -1,17066 +0,0 @@ - - - - - - - -CocoaTweet: build/_deps/json-src/include/nlohmann/json.hpp Source File - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
json.hpp
-
-
-Go to the documentation of this file.
1 /*
-
2  __ _____ _____ _____
-
3  __| | __| | | | JSON for Modern C++
-
4 | | |__ | | | | | | version 3.7.3
-
5 |_____|_____|_____|_|___| https://github.com/nlohmann/json
-
6 
-
7 Licensed under the MIT License <http://opensource.org/licenses/MIT>.
-
8 SPDX-License-Identifier: MIT
-
9 Copyright (c) 2013-2019 Niels Lohmann <http://nlohmann.me>.
-
10 
-
11 Permission is hereby granted, free of charge, to any person obtaining a copy
-
12 of this software and associated documentation files (the "Software"), to deal
-
13 in the Software without restriction, including without limitation the rights
-
14 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-
15 copies of the Software, and to permit persons to whom the Software is
-
16 furnished to do so, subject to the following conditions:
-
17 
-
18 The above copyright notice and this permission notice shall be included in all
-
19 copies or substantial portions of the Software.
-
20 
-
21 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-
22 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-
23 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-
24 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-
25 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-
26 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-
27 SOFTWARE.
-
28 */
-
29 
-
30 #ifndef INCLUDE_NLOHMANN_JSON_HPP_
-
31 #define INCLUDE_NLOHMANN_JSON_HPP_
-
32 
-
33 #define NLOHMANN_JSON_VERSION_MAJOR 3
-
34 #define NLOHMANN_JSON_VERSION_MINOR 7
-
35 #define NLOHMANN_JSON_VERSION_PATCH 3
-
36 
-
37 #include <algorithm> // all_of, find, for_each
-
38 #include <cassert> // assert
-
39 #include <ciso646> // and, not, or
-
40 #include <cstddef> // nullptr_t, ptrdiff_t, size_t
-
41 #include <functional> // hash, less
-
42 #include <initializer_list> // initializer_list
-
43 #include <iosfwd> // istream, ostream
-
44 #include <iterator> // random_access_iterator_tag
-
45 #include <memory> // unique_ptr
-
46 #include <numeric> // accumulate
-
47 #include <string> // string, stoi, to_string
-
48 #include <utility> // declval, forward, move, pair, swap
-
49 #include <vector> // vector
-
50 
-
51 // #include <nlohmann/adl_serializer.hpp>
-
52 
-
53 
-
54 #include <utility>
-
55 
-
56 // #include <nlohmann/detail/conversions/from_json.hpp>
-
57 
-
58 
-
59 #include <algorithm> // transform
-
60 #include <array> // array
-
61 #include <ciso646> // and, not
-
62 #include <forward_list> // forward_list
-
63 #include <iterator> // inserter, front_inserter, end
-
64 #include <map> // map
-
65 #include <string> // string
-
66 #include <tuple> // tuple, make_tuple
-
67 #include <type_traits> // is_arithmetic, is_same, is_enum, underlying_type, is_convertible
-
68 #include <unordered_map> // unordered_map
-
69 #include <utility> // pair, declval
-
70 #include <valarray> // valarray
-
71 
-
72 // #include <nlohmann/detail/exceptions.hpp>
-
73 
-
74 
-
75 #include <exception> // exception
-
76 #include <stdexcept> // runtime_error
-
77 #include <string> // to_string
-
78 
-
79 // #include <nlohmann/detail/input/position_t.hpp>
-
80 
-
81 
-
82 #include <cstddef> // size_t
-
83 
-
84 namespace nlohmann
-
85 {
-
86 namespace detail
-
87 {
-
89 struct position_t
-
90 {
-
92  std::size_t chars_read_total = 0;
-
94  std::size_t chars_read_current_line = 0;
-
96  std::size_t lines_read = 0;
-
97 
-
99  constexpr operator size_t() const
-
100  {
-
101  return chars_read_total;
-
102  }
-
103 };
-
104 
-
105 } // namespace detail
-
106 } // namespace nlohmann
-
107 
-
108 // #include <nlohmann/detail/macro_scope.hpp>
-
109 
-
110 
-
111 #include <utility> // pair
-
112 // #include <nlohmann/thirdparty/hedley/hedley.hpp>
-
113 /* Hedley - https://nemequ.github.io/hedley
-
114  * Created by Evan Nemerson <evan@nemerson.com>
-
115  *
-
116  * To the extent possible under law, the author(s) have dedicated all
-
117  * copyright and related and neighboring rights to this software to
-
118  * the public domain worldwide. This software is distributed without
-
119  * any warranty.
-
120  *
-
121  * For details, see <http://creativecommons.org/publicdomain/zero/1.0/>.
-
122  * SPDX-License-Identifier: CC0-1.0
-
123  */
-
124 
-
125 #if !defined(JSON_HEDLEY_VERSION) || (JSON_HEDLEY_VERSION < 11)
-
126 #if defined(JSON_HEDLEY_VERSION)
-
127  #undef JSON_HEDLEY_VERSION
-
128 #endif
-
129 #define JSON_HEDLEY_VERSION 11
-
130 
-
131 #if defined(JSON_HEDLEY_STRINGIFY_EX)
-
132  #undef JSON_HEDLEY_STRINGIFY_EX
-
133 #endif
-
134 #define JSON_HEDLEY_STRINGIFY_EX(x) #x
-
135 
-
136 #if defined(JSON_HEDLEY_STRINGIFY)
-
137  #undef JSON_HEDLEY_STRINGIFY
-
138 #endif
-
139 #define JSON_HEDLEY_STRINGIFY(x) JSON_HEDLEY_STRINGIFY_EX(x)
-
140 
-
141 #if defined(JSON_HEDLEY_CONCAT_EX)
-
142  #undef JSON_HEDLEY_CONCAT_EX
-
143 #endif
-
144 #define JSON_HEDLEY_CONCAT_EX(a,b) a##b
-
145 
-
146 #if defined(JSON_HEDLEY_CONCAT)
-
147  #undef JSON_HEDLEY_CONCAT
-
148 #endif
-
149 #define JSON_HEDLEY_CONCAT(a,b) JSON_HEDLEY_CONCAT_EX(a,b)
-
150 
-
151 #if defined(JSON_HEDLEY_VERSION_ENCODE)
-
152  #undef JSON_HEDLEY_VERSION_ENCODE
-
153 #endif
-
154 #define JSON_HEDLEY_VERSION_ENCODE(major,minor,revision) (((major) * 1000000) + ((minor) * 1000) + (revision))
-
155 
-
156 #if defined(JSON_HEDLEY_VERSION_DECODE_MAJOR)
-
157  #undef JSON_HEDLEY_VERSION_DECODE_MAJOR
-
158 #endif
-
159 #define JSON_HEDLEY_VERSION_DECODE_MAJOR(version) ((version) / 1000000)
-
160 
-
161 #if defined(JSON_HEDLEY_VERSION_DECODE_MINOR)
-
162  #undef JSON_HEDLEY_VERSION_DECODE_MINOR
-
163 #endif
-
164 #define JSON_HEDLEY_VERSION_DECODE_MINOR(version) (((version) % 1000000) / 1000)
-
165 
-
166 #if defined(JSON_HEDLEY_VERSION_DECODE_REVISION)
-
167  #undef JSON_HEDLEY_VERSION_DECODE_REVISION
-
168 #endif
-
169 #define JSON_HEDLEY_VERSION_DECODE_REVISION(version) ((version) % 1000)
-
170 
-
171 #if defined(JSON_HEDLEY_GNUC_VERSION)
-
172  #undef JSON_HEDLEY_GNUC_VERSION
-
173 #endif
-
174 #if defined(__GNUC__) && defined(__GNUC_PATCHLEVEL__)
-
175  #define JSON_HEDLEY_GNUC_VERSION JSON_HEDLEY_VERSION_ENCODE(__GNUC__, __GNUC_MINOR__, __GNUC_PATCHLEVEL__)
-
176 #elif defined(__GNUC__)
-
177  #define JSON_HEDLEY_GNUC_VERSION JSON_HEDLEY_VERSION_ENCODE(__GNUC__, __GNUC_MINOR__, 0)
-
178 #endif
-
179 
-
180 #if defined(JSON_HEDLEY_GNUC_VERSION_CHECK)
-
181  #undef JSON_HEDLEY_GNUC_VERSION_CHECK
-
182 #endif
-
183 #if defined(JSON_HEDLEY_GNUC_VERSION)
-
184  #define JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_GNUC_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch))
-
185 #else
-
186  #define JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch) (0)
-
187 #endif
-
188 
-
189 #if defined(JSON_HEDLEY_MSVC_VERSION)
-
190  #undef JSON_HEDLEY_MSVC_VERSION
-
191 #endif
-
192 #if defined(_MSC_FULL_VER) && (_MSC_FULL_VER >= 140000000)
-
193  #define JSON_HEDLEY_MSVC_VERSION JSON_HEDLEY_VERSION_ENCODE(_MSC_FULL_VER / 10000000, (_MSC_FULL_VER % 10000000) / 100000, (_MSC_FULL_VER % 100000) / 100)
-
194 #elif defined(_MSC_FULL_VER)
-
195  #define JSON_HEDLEY_MSVC_VERSION JSON_HEDLEY_VERSION_ENCODE(_MSC_FULL_VER / 1000000, (_MSC_FULL_VER % 1000000) / 10000, (_MSC_FULL_VER % 10000) / 10)
-
196 #elif defined(_MSC_VER)
-
197  #define JSON_HEDLEY_MSVC_VERSION JSON_HEDLEY_VERSION_ENCODE(_MSC_VER / 100, _MSC_VER % 100, 0)
-
198 #endif
-
199 
-
200 #if defined(JSON_HEDLEY_MSVC_VERSION_CHECK)
-
201  #undef JSON_HEDLEY_MSVC_VERSION_CHECK
-
202 #endif
-
203 #if !defined(_MSC_VER)
-
204  #define JSON_HEDLEY_MSVC_VERSION_CHECK(major,minor,patch) (0)
-
205 #elif defined(_MSC_VER) && (_MSC_VER >= 1400)
-
206  #define JSON_HEDLEY_MSVC_VERSION_CHECK(major,minor,patch) (_MSC_FULL_VER >= ((major * 10000000) + (minor * 100000) + (patch)))
-
207 #elif defined(_MSC_VER) && (_MSC_VER >= 1200)
-
208  #define JSON_HEDLEY_MSVC_VERSION_CHECK(major,minor,patch) (_MSC_FULL_VER >= ((major * 1000000) + (minor * 10000) + (patch)))
-
209 #else
-
210  #define JSON_HEDLEY_MSVC_VERSION_CHECK(major,minor,patch) (_MSC_VER >= ((major * 100) + (minor)))
-
211 #endif
-
212 
-
213 #if defined(JSON_HEDLEY_INTEL_VERSION)
-
214  #undef JSON_HEDLEY_INTEL_VERSION
-
215 #endif
-
216 #if defined(__INTEL_COMPILER) && defined(__INTEL_COMPILER_UPDATE)
-
217  #define JSON_HEDLEY_INTEL_VERSION JSON_HEDLEY_VERSION_ENCODE(__INTEL_COMPILER / 100, __INTEL_COMPILER % 100, __INTEL_COMPILER_UPDATE)
-
218 #elif defined(__INTEL_COMPILER)
-
219  #define JSON_HEDLEY_INTEL_VERSION JSON_HEDLEY_VERSION_ENCODE(__INTEL_COMPILER / 100, __INTEL_COMPILER % 100, 0)
-
220 #endif
-
221 
-
222 #if defined(JSON_HEDLEY_INTEL_VERSION_CHECK)
-
223  #undef JSON_HEDLEY_INTEL_VERSION_CHECK
-
224 #endif
-
225 #if defined(JSON_HEDLEY_INTEL_VERSION)
-
226  #define JSON_HEDLEY_INTEL_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_INTEL_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch))
-
227 #else
-
228  #define JSON_HEDLEY_INTEL_VERSION_CHECK(major,minor,patch) (0)
-
229 #endif
-
230 
-
231 #if defined(JSON_HEDLEY_PGI_VERSION)
-
232  #undef JSON_HEDLEY_PGI_VERSION
-
233 #endif
-
234 #if defined(__PGI) && defined(__PGIC__) && defined(__PGIC_MINOR__) && defined(__PGIC_PATCHLEVEL__)
-
235  #define JSON_HEDLEY_PGI_VERSION JSON_HEDLEY_VERSION_ENCODE(__PGIC__, __PGIC_MINOR__, __PGIC_PATCHLEVEL__)
-
236 #endif
-
237 
-
238 #if defined(JSON_HEDLEY_PGI_VERSION_CHECK)
-
239  #undef JSON_HEDLEY_PGI_VERSION_CHECK
-
240 #endif
-
241 #if defined(JSON_HEDLEY_PGI_VERSION)
-
242  #define JSON_HEDLEY_PGI_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_PGI_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch))
-
243 #else
-
244  #define JSON_HEDLEY_PGI_VERSION_CHECK(major,minor,patch) (0)
-
245 #endif
-
246 
-
247 #if defined(JSON_HEDLEY_SUNPRO_VERSION)
-
248  #undef JSON_HEDLEY_SUNPRO_VERSION
-
249 #endif
-
250 #if defined(__SUNPRO_C) && (__SUNPRO_C > 0x1000)
-
251  #define JSON_HEDLEY_SUNPRO_VERSION JSON_HEDLEY_VERSION_ENCODE((((__SUNPRO_C >> 16) & 0xf) * 10) + ((__SUNPRO_C >> 12) & 0xf), (((__SUNPRO_C >> 8) & 0xf) * 10) + ((__SUNPRO_C >> 4) & 0xf), (__SUNPRO_C & 0xf) * 10)
-
252 #elif defined(__SUNPRO_C)
-
253  #define JSON_HEDLEY_SUNPRO_VERSION JSON_HEDLEY_VERSION_ENCODE((__SUNPRO_C >> 8) & 0xf, (__SUNPRO_C >> 4) & 0xf, (__SUNPRO_C) & 0xf)
-
254 #elif defined(__SUNPRO_CC) && (__SUNPRO_CC > 0x1000)
-
255  #define JSON_HEDLEY_SUNPRO_VERSION JSON_HEDLEY_VERSION_ENCODE((((__SUNPRO_CC >> 16) & 0xf) * 10) + ((__SUNPRO_CC >> 12) & 0xf), (((__SUNPRO_CC >> 8) & 0xf) * 10) + ((__SUNPRO_CC >> 4) & 0xf), (__SUNPRO_CC & 0xf) * 10)
-
256 #elif defined(__SUNPRO_CC)
-
257  #define JSON_HEDLEY_SUNPRO_VERSION JSON_HEDLEY_VERSION_ENCODE((__SUNPRO_CC >> 8) & 0xf, (__SUNPRO_CC >> 4) & 0xf, (__SUNPRO_CC) & 0xf)
-
258 #endif
-
259 
-
260 #if defined(JSON_HEDLEY_SUNPRO_VERSION_CHECK)
-
261  #undef JSON_HEDLEY_SUNPRO_VERSION_CHECK
-
262 #endif
-
263 #if defined(JSON_HEDLEY_SUNPRO_VERSION)
-
264  #define JSON_HEDLEY_SUNPRO_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_SUNPRO_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch))
-
265 #else
-
266  #define JSON_HEDLEY_SUNPRO_VERSION_CHECK(major,minor,patch) (0)
-
267 #endif
-
268 
-
269 #if defined(JSON_HEDLEY_EMSCRIPTEN_VERSION)
-
270  #undef JSON_HEDLEY_EMSCRIPTEN_VERSION
-
271 #endif
-
272 #if defined(__EMSCRIPTEN__)
-
273  #define JSON_HEDLEY_EMSCRIPTEN_VERSION JSON_HEDLEY_VERSION_ENCODE(__EMSCRIPTEN_major__, __EMSCRIPTEN_minor__, __EMSCRIPTEN_tiny__)
-
274 #endif
-
275 
-
276 #if defined(JSON_HEDLEY_EMSCRIPTEN_VERSION_CHECK)
-
277  #undef JSON_HEDLEY_EMSCRIPTEN_VERSION_CHECK
-
278 #endif
-
279 #if defined(JSON_HEDLEY_EMSCRIPTEN_VERSION)
-
280  #define JSON_HEDLEY_EMSCRIPTEN_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_EMSCRIPTEN_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch))
-
281 #else
-
282  #define JSON_HEDLEY_EMSCRIPTEN_VERSION_CHECK(major,minor,patch) (0)
-
283 #endif
-
284 
-
285 #if defined(JSON_HEDLEY_ARM_VERSION)
-
286  #undef JSON_HEDLEY_ARM_VERSION
-
287 #endif
-
288 #if defined(__CC_ARM) && defined(__ARMCOMPILER_VERSION)
-
289  #define JSON_HEDLEY_ARM_VERSION JSON_HEDLEY_VERSION_ENCODE(__ARMCOMPILER_VERSION / 1000000, (__ARMCOMPILER_VERSION % 1000000) / 10000, (__ARMCOMPILER_VERSION % 10000) / 100)
-
290 #elif defined(__CC_ARM) && defined(__ARMCC_VERSION)
-
291  #define JSON_HEDLEY_ARM_VERSION JSON_HEDLEY_VERSION_ENCODE(__ARMCC_VERSION / 1000000, (__ARMCC_VERSION % 1000000) / 10000, (__ARMCC_VERSION % 10000) / 100)
-
292 #endif
-
293 
-
294 #if defined(JSON_HEDLEY_ARM_VERSION_CHECK)
-
295  #undef JSON_HEDLEY_ARM_VERSION_CHECK
-
296 #endif
-
297 #if defined(JSON_HEDLEY_ARM_VERSION)
-
298  #define JSON_HEDLEY_ARM_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_ARM_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch))
-
299 #else
-
300  #define JSON_HEDLEY_ARM_VERSION_CHECK(major,minor,patch) (0)
-
301 #endif
-
302 
-
303 #if defined(JSON_HEDLEY_IBM_VERSION)
-
304  #undef JSON_HEDLEY_IBM_VERSION
-
305 #endif
-
306 #if defined(__ibmxl__)
-
307  #define JSON_HEDLEY_IBM_VERSION JSON_HEDLEY_VERSION_ENCODE(__ibmxl_version__, __ibmxl_release__, __ibmxl_modification__)
-
308 #elif defined(__xlC__) && defined(__xlC_ver__)
-
309  #define JSON_HEDLEY_IBM_VERSION JSON_HEDLEY_VERSION_ENCODE(__xlC__ >> 8, __xlC__ & 0xff, (__xlC_ver__ >> 8) & 0xff)
-
310 #elif defined(__xlC__)
-
311  #define JSON_HEDLEY_IBM_VERSION JSON_HEDLEY_VERSION_ENCODE(__xlC__ >> 8, __xlC__ & 0xff, 0)
-
312 #endif
-
313 
-
314 #if defined(JSON_HEDLEY_IBM_VERSION_CHECK)
-
315  #undef JSON_HEDLEY_IBM_VERSION_CHECK
-
316 #endif
-
317 #if defined(JSON_HEDLEY_IBM_VERSION)
-
318  #define JSON_HEDLEY_IBM_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_IBM_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch))
-
319 #else
-
320  #define JSON_HEDLEY_IBM_VERSION_CHECK(major,minor,patch) (0)
-
321 #endif
-
322 
-
323 #if defined(JSON_HEDLEY_TI_VERSION)
-
324  #undef JSON_HEDLEY_TI_VERSION
-
325 #endif
-
326 #if defined(__TI_COMPILER_VERSION__)
-
327  #define JSON_HEDLEY_TI_VERSION JSON_HEDLEY_VERSION_ENCODE(__TI_COMPILER_VERSION__ / 1000000, (__TI_COMPILER_VERSION__ % 1000000) / 1000, (__TI_COMPILER_VERSION__ % 1000))
-
328 #endif
-
329 
-
330 #if defined(JSON_HEDLEY_TI_VERSION_CHECK)
-
331  #undef JSON_HEDLEY_TI_VERSION_CHECK
-
332 #endif
-
333 #if defined(JSON_HEDLEY_TI_VERSION)
-
334  #define JSON_HEDLEY_TI_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_TI_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch))
-
335 #else
-
336  #define JSON_HEDLEY_TI_VERSION_CHECK(major,minor,patch) (0)
-
337 #endif
-
338 
-
339 #if defined(JSON_HEDLEY_CRAY_VERSION)
-
340  #undef JSON_HEDLEY_CRAY_VERSION
-
341 #endif
-
342 #if defined(_CRAYC)
-
343  #if defined(_RELEASE_PATCHLEVEL)
-
344  #define JSON_HEDLEY_CRAY_VERSION JSON_HEDLEY_VERSION_ENCODE(_RELEASE_MAJOR, _RELEASE_MINOR, _RELEASE_PATCHLEVEL)
-
345  #else
-
346  #define JSON_HEDLEY_CRAY_VERSION JSON_HEDLEY_VERSION_ENCODE(_RELEASE_MAJOR, _RELEASE_MINOR, 0)
-
347  #endif
-
348 #endif
-
349 
-
350 #if defined(JSON_HEDLEY_CRAY_VERSION_CHECK)
-
351  #undef JSON_HEDLEY_CRAY_VERSION_CHECK
-
352 #endif
-
353 #if defined(JSON_HEDLEY_CRAY_VERSION)
-
354  #define JSON_HEDLEY_CRAY_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_CRAY_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch))
-
355 #else
-
356  #define JSON_HEDLEY_CRAY_VERSION_CHECK(major,minor,patch) (0)
-
357 #endif
-
358 
-
359 #if defined(JSON_HEDLEY_IAR_VERSION)
-
360  #undef JSON_HEDLEY_IAR_VERSION
-
361 #endif
-
362 #if defined(__IAR_SYSTEMS_ICC__)
-
363  #if __VER__ > 1000
-
364  #define JSON_HEDLEY_IAR_VERSION JSON_HEDLEY_VERSION_ENCODE((__VER__ / 1000000), ((__VER__ / 1000) % 1000), (__VER__ % 1000))
-
365  #else
-
366  #define JSON_HEDLEY_IAR_VERSION JSON_HEDLEY_VERSION_ENCODE(VER / 100, __VER__ % 100, 0)
-
367  #endif
-
368 #endif
-
369 
-
370 #if defined(JSON_HEDLEY_IAR_VERSION_CHECK)
-
371  #undef JSON_HEDLEY_IAR_VERSION_CHECK
-
372 #endif
-
373 #if defined(JSON_HEDLEY_IAR_VERSION)
-
374  #define JSON_HEDLEY_IAR_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_IAR_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch))
-
375 #else
-
376  #define JSON_HEDLEY_IAR_VERSION_CHECK(major,minor,patch) (0)
-
377 #endif
-
378 
-
379 #if defined(JSON_HEDLEY_TINYC_VERSION)
-
380  #undef JSON_HEDLEY_TINYC_VERSION
-
381 #endif
-
382 #if defined(__TINYC__)
-
383  #define JSON_HEDLEY_TINYC_VERSION JSON_HEDLEY_VERSION_ENCODE(__TINYC__ / 1000, (__TINYC__ / 100) % 10, __TINYC__ % 100)
-
384 #endif
-
385 
-
386 #if defined(JSON_HEDLEY_TINYC_VERSION_CHECK)
-
387  #undef JSON_HEDLEY_TINYC_VERSION_CHECK
-
388 #endif
-
389 #if defined(JSON_HEDLEY_TINYC_VERSION)
-
390  #define JSON_HEDLEY_TINYC_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_TINYC_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch))
-
391 #else
-
392  #define JSON_HEDLEY_TINYC_VERSION_CHECK(major,minor,patch) (0)
-
393 #endif
-
394 
-
395 #if defined(JSON_HEDLEY_DMC_VERSION)
-
396  #undef JSON_HEDLEY_DMC_VERSION
-
397 #endif
-
398 #if defined(__DMC__)
-
399  #define JSON_HEDLEY_DMC_VERSION JSON_HEDLEY_VERSION_ENCODE(__DMC__ >> 8, (__DMC__ >> 4) & 0xf, __DMC__ & 0xf)
-
400 #endif
-
401 
-
402 #if defined(JSON_HEDLEY_DMC_VERSION_CHECK)
-
403  #undef JSON_HEDLEY_DMC_VERSION_CHECK
-
404 #endif
-
405 #if defined(JSON_HEDLEY_DMC_VERSION)
-
406  #define JSON_HEDLEY_DMC_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_DMC_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch))
-
407 #else
-
408  #define JSON_HEDLEY_DMC_VERSION_CHECK(major,minor,patch) (0)
-
409 #endif
-
410 
-
411 #if defined(JSON_HEDLEY_COMPCERT_VERSION)
-
412  #undef JSON_HEDLEY_COMPCERT_VERSION
-
413 #endif
-
414 #if defined(__COMPCERT_VERSION__)
-
415  #define JSON_HEDLEY_COMPCERT_VERSION JSON_HEDLEY_VERSION_ENCODE(__COMPCERT_VERSION__ / 10000, (__COMPCERT_VERSION__ / 100) % 100, __COMPCERT_VERSION__ % 100)
-
416 #endif
-
417 
-
418 #if defined(JSON_HEDLEY_COMPCERT_VERSION_CHECK)
-
419  #undef JSON_HEDLEY_COMPCERT_VERSION_CHECK
-
420 #endif
-
421 #if defined(JSON_HEDLEY_COMPCERT_VERSION)
-
422  #define JSON_HEDLEY_COMPCERT_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_COMPCERT_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch))
-
423 #else
-
424  #define JSON_HEDLEY_COMPCERT_VERSION_CHECK(major,minor,patch) (0)
-
425 #endif
-
426 
-
427 #if defined(JSON_HEDLEY_PELLES_VERSION)
-
428  #undef JSON_HEDLEY_PELLES_VERSION
-
429 #endif
-
430 #if defined(__POCC__)
-
431  #define JSON_HEDLEY_PELLES_VERSION JSON_HEDLEY_VERSION_ENCODE(__POCC__ / 100, __POCC__ % 100, 0)
-
432 #endif
-
433 
-
434 #if defined(JSON_HEDLEY_PELLES_VERSION_CHECK)
-
435  #undef JSON_HEDLEY_PELLES_VERSION_CHECK
-
436 #endif
-
437 #if defined(JSON_HEDLEY_PELLES_VERSION)
-
438  #define JSON_HEDLEY_PELLES_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_PELLES_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch))
-
439 #else
-
440  #define JSON_HEDLEY_PELLES_VERSION_CHECK(major,minor,patch) (0)
-
441 #endif
-
442 
-
443 #if defined(JSON_HEDLEY_GCC_VERSION)
-
444  #undef JSON_HEDLEY_GCC_VERSION
-
445 #endif
-
446 #if \
-
447  defined(JSON_HEDLEY_GNUC_VERSION) && \
-
448  !defined(__clang__) && \
-
449  !defined(JSON_HEDLEY_INTEL_VERSION) && \
-
450  !defined(JSON_HEDLEY_PGI_VERSION) && \
-
451  !defined(JSON_HEDLEY_ARM_VERSION) && \
-
452  !defined(JSON_HEDLEY_TI_VERSION) && \
-
453  !defined(__COMPCERT__)
-
454  #define JSON_HEDLEY_GCC_VERSION JSON_HEDLEY_GNUC_VERSION
-
455 #endif
-
456 
-
457 #if defined(JSON_HEDLEY_GCC_VERSION_CHECK)
-
458  #undef JSON_HEDLEY_GCC_VERSION_CHECK
-
459 #endif
-
460 #if defined(JSON_HEDLEY_GCC_VERSION)
-
461  #define JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_GCC_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch))
-
462 #else
-
463  #define JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) (0)
-
464 #endif
-
465 
-
466 #if defined(JSON_HEDLEY_HAS_ATTRIBUTE)
-
467  #undef JSON_HEDLEY_HAS_ATTRIBUTE
-
468 #endif
-
469 #if defined(__has_attribute)
-
470  #define JSON_HEDLEY_HAS_ATTRIBUTE(attribute) __has_attribute(attribute)
-
471 #else
-
472  #define JSON_HEDLEY_HAS_ATTRIBUTE(attribute) (0)
-
473 #endif
-
474 
-
475 #if defined(JSON_HEDLEY_GNUC_HAS_ATTRIBUTE)
-
476  #undef JSON_HEDLEY_GNUC_HAS_ATTRIBUTE
-
477 #endif
-
478 #if defined(__has_attribute)
-
479  #define JSON_HEDLEY_GNUC_HAS_ATTRIBUTE(attribute,major,minor,patch) __has_attribute(attribute)
-
480 #else
-
481  #define JSON_HEDLEY_GNUC_HAS_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch)
-
482 #endif
-
483 
-
484 #if defined(JSON_HEDLEY_GCC_HAS_ATTRIBUTE)
-
485  #undef JSON_HEDLEY_GCC_HAS_ATTRIBUTE
-
486 #endif
-
487 #if defined(__has_attribute)
-
488  #define JSON_HEDLEY_GCC_HAS_ATTRIBUTE(attribute,major,minor,patch) __has_attribute(attribute)
-
489 #else
-
490  #define JSON_HEDLEY_GCC_HAS_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch)
-
491 #endif
-
492 
-
493 #if defined(JSON_HEDLEY_HAS_CPP_ATTRIBUTE)
-
494  #undef JSON_HEDLEY_HAS_CPP_ATTRIBUTE
-
495 #endif
-
496 #if \
-
497  defined(__has_cpp_attribute) && \
-
498  defined(__cplusplus) && \
-
499  (!defined(JSON_HEDLEY_SUNPRO_VERSION) || JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,15,0))
-
500  #define JSON_HEDLEY_HAS_CPP_ATTRIBUTE(attribute) __has_cpp_attribute(attribute)
-
501 #else
-
502  #define JSON_HEDLEY_HAS_CPP_ATTRIBUTE(attribute) (0)
-
503 #endif
-
504 
-
505 #if defined(JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS)
-
506  #undef JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS
-
507 #endif
-
508 #if !defined(__cplusplus) || !defined(__has_cpp_attribute)
-
509  #define JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS(ns,attribute) (0)
-
510 #elif \
-
511  !defined(JSON_HEDLEY_PGI_VERSION) && \
-
512  (!defined(JSON_HEDLEY_SUNPRO_VERSION) || JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,15,0)) && \
-
513  (!defined(JSON_HEDLEY_MSVC_VERSION) || JSON_HEDLEY_MSVC_VERSION_CHECK(19,20,0))
-
514  #define JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS(ns,attribute) JSON_HEDLEY_HAS_CPP_ATTRIBUTE(ns::attribute)
-
515 #else
-
516  #define JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS(ns,attribute) (0)
-
517 #endif
-
518 
-
519 #if defined(JSON_HEDLEY_GNUC_HAS_CPP_ATTRIBUTE)
-
520  #undef JSON_HEDLEY_GNUC_HAS_CPP_ATTRIBUTE
-
521 #endif
-
522 #if defined(__has_cpp_attribute) && defined(__cplusplus)
-
523  #define JSON_HEDLEY_GNUC_HAS_CPP_ATTRIBUTE(attribute,major,minor,patch) __has_cpp_attribute(attribute)
-
524 #else
-
525  #define JSON_HEDLEY_GNUC_HAS_CPP_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch)
-
526 #endif
-
527 
-
528 #if defined(JSON_HEDLEY_GCC_HAS_CPP_ATTRIBUTE)
-
529  #undef JSON_HEDLEY_GCC_HAS_CPP_ATTRIBUTE
-
530 #endif
-
531 #if defined(__has_cpp_attribute) && defined(__cplusplus)
-
532  #define JSON_HEDLEY_GCC_HAS_CPP_ATTRIBUTE(attribute,major,minor,patch) __has_cpp_attribute(attribute)
-
533 #else
-
534  #define JSON_HEDLEY_GCC_HAS_CPP_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch)
-
535 #endif
-
536 
-
537 #if defined(JSON_HEDLEY_HAS_BUILTIN)
-
538  #undef JSON_HEDLEY_HAS_BUILTIN
-
539 #endif
-
540 #if defined(__has_builtin)
-
541  #define JSON_HEDLEY_HAS_BUILTIN(builtin) __has_builtin(builtin)
-
542 #else
-
543  #define JSON_HEDLEY_HAS_BUILTIN(builtin) (0)
-
544 #endif
-
545 
-
546 #if defined(JSON_HEDLEY_GNUC_HAS_BUILTIN)
-
547  #undef JSON_HEDLEY_GNUC_HAS_BUILTIN
-
548 #endif
-
549 #if defined(__has_builtin)
-
550  #define JSON_HEDLEY_GNUC_HAS_BUILTIN(builtin,major,minor,patch) __has_builtin(builtin)
-
551 #else
-
552  #define JSON_HEDLEY_GNUC_HAS_BUILTIN(builtin,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch)
-
553 #endif
-
554 
-
555 #if defined(JSON_HEDLEY_GCC_HAS_BUILTIN)
-
556  #undef JSON_HEDLEY_GCC_HAS_BUILTIN
-
557 #endif
-
558 #if defined(__has_builtin)
-
559  #define JSON_HEDLEY_GCC_HAS_BUILTIN(builtin,major,minor,patch) __has_builtin(builtin)
-
560 #else
-
561  #define JSON_HEDLEY_GCC_HAS_BUILTIN(builtin,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch)
-
562 #endif
-
563 
-
564 #if defined(JSON_HEDLEY_HAS_FEATURE)
-
565  #undef JSON_HEDLEY_HAS_FEATURE
-
566 #endif
-
567 #if defined(__has_feature)
-
568  #define JSON_HEDLEY_HAS_FEATURE(feature) __has_feature(feature)
-
569 #else
-
570  #define JSON_HEDLEY_HAS_FEATURE(feature) (0)
-
571 #endif
-
572 
-
573 #if defined(JSON_HEDLEY_GNUC_HAS_FEATURE)
-
574  #undef JSON_HEDLEY_GNUC_HAS_FEATURE
-
575 #endif
-
576 #if defined(__has_feature)
-
577  #define JSON_HEDLEY_GNUC_HAS_FEATURE(feature,major,minor,patch) __has_feature(feature)
-
578 #else
-
579  #define JSON_HEDLEY_GNUC_HAS_FEATURE(feature,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch)
-
580 #endif
-
581 
-
582 #if defined(JSON_HEDLEY_GCC_HAS_FEATURE)
-
583  #undef JSON_HEDLEY_GCC_HAS_FEATURE
-
584 #endif
-
585 #if defined(__has_feature)
-
586  #define JSON_HEDLEY_GCC_HAS_FEATURE(feature,major,minor,patch) __has_feature(feature)
-
587 #else
-
588  #define JSON_HEDLEY_GCC_HAS_FEATURE(feature,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch)
-
589 #endif
-
590 
-
591 #if defined(JSON_HEDLEY_HAS_EXTENSION)
-
592  #undef JSON_HEDLEY_HAS_EXTENSION
-
593 #endif
-
594 #if defined(__has_extension)
-
595  #define JSON_HEDLEY_HAS_EXTENSION(extension) __has_extension(extension)
-
596 #else
-
597  #define JSON_HEDLEY_HAS_EXTENSION(extension) (0)
-
598 #endif
-
599 
-
600 #if defined(JSON_HEDLEY_GNUC_HAS_EXTENSION)
-
601  #undef JSON_HEDLEY_GNUC_HAS_EXTENSION
-
602 #endif
-
603 #if defined(__has_extension)
-
604  #define JSON_HEDLEY_GNUC_HAS_EXTENSION(extension,major,minor,patch) __has_extension(extension)
-
605 #else
-
606  #define JSON_HEDLEY_GNUC_HAS_EXTENSION(extension,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch)
-
607 #endif
-
608 
-
609 #if defined(JSON_HEDLEY_GCC_HAS_EXTENSION)
-
610  #undef JSON_HEDLEY_GCC_HAS_EXTENSION
-
611 #endif
-
612 #if defined(__has_extension)
-
613  #define JSON_HEDLEY_GCC_HAS_EXTENSION(extension,major,minor,patch) __has_extension(extension)
-
614 #else
-
615  #define JSON_HEDLEY_GCC_HAS_EXTENSION(extension,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch)
-
616 #endif
-
617 
-
618 #if defined(JSON_HEDLEY_HAS_DECLSPEC_ATTRIBUTE)
-
619  #undef JSON_HEDLEY_HAS_DECLSPEC_ATTRIBUTE
-
620 #endif
-
621 #if defined(__has_declspec_attribute)
-
622  #define JSON_HEDLEY_HAS_DECLSPEC_ATTRIBUTE(attribute) __has_declspec_attribute(attribute)
-
623 #else
-
624  #define JSON_HEDLEY_HAS_DECLSPEC_ATTRIBUTE(attribute) (0)
-
625 #endif
-
626 
-
627 #if defined(JSON_HEDLEY_GNUC_HAS_DECLSPEC_ATTRIBUTE)
-
628  #undef JSON_HEDLEY_GNUC_HAS_DECLSPEC_ATTRIBUTE
-
629 #endif
-
630 #if defined(__has_declspec_attribute)
-
631  #define JSON_HEDLEY_GNUC_HAS_DECLSPEC_ATTRIBUTE(attribute,major,minor,patch) __has_declspec_attribute(attribute)
-
632 #else
-
633  #define JSON_HEDLEY_GNUC_HAS_DECLSPEC_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch)
-
634 #endif
-
635 
-
636 #if defined(JSON_HEDLEY_GCC_HAS_DECLSPEC_ATTRIBUTE)
-
637  #undef JSON_HEDLEY_GCC_HAS_DECLSPEC_ATTRIBUTE
-
638 #endif
-
639 #if defined(__has_declspec_attribute)
-
640  #define JSON_HEDLEY_GCC_HAS_DECLSPEC_ATTRIBUTE(attribute,major,minor,patch) __has_declspec_attribute(attribute)
-
641 #else
-
642  #define JSON_HEDLEY_GCC_HAS_DECLSPEC_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch)
-
643 #endif
-
644 
-
645 #if defined(JSON_HEDLEY_HAS_WARNING)
-
646  #undef JSON_HEDLEY_HAS_WARNING
-
647 #endif
-
648 #if defined(__has_warning)
-
649  #define JSON_HEDLEY_HAS_WARNING(warning) __has_warning(warning)
-
650 #else
-
651  #define JSON_HEDLEY_HAS_WARNING(warning) (0)
-
652 #endif
-
653 
-
654 #if defined(JSON_HEDLEY_GNUC_HAS_WARNING)
-
655  #undef JSON_HEDLEY_GNUC_HAS_WARNING
-
656 #endif
-
657 #if defined(__has_warning)
-
658  #define JSON_HEDLEY_GNUC_HAS_WARNING(warning,major,minor,patch) __has_warning(warning)
-
659 #else
-
660  #define JSON_HEDLEY_GNUC_HAS_WARNING(warning,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch)
-
661 #endif
-
662 
-
663 #if defined(JSON_HEDLEY_GCC_HAS_WARNING)
-
664  #undef JSON_HEDLEY_GCC_HAS_WARNING
-
665 #endif
-
666 #if defined(__has_warning)
-
667  #define JSON_HEDLEY_GCC_HAS_WARNING(warning,major,minor,patch) __has_warning(warning)
-
668 #else
-
669  #define JSON_HEDLEY_GCC_HAS_WARNING(warning,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch)
-
670 #endif
-
671 
-
672 /* JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_ is for
-
673  HEDLEY INTERNAL USE ONLY. API subject to change without notice. */
-
674 #if defined(JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_)
-
675  #undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_
-
676 #endif
-
677 #if defined(__cplusplus) && JSON_HEDLEY_HAS_WARNING("-Wc++98-compat")
-
678 # define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(xpr) \
-
679  JSON_HEDLEY_DIAGNOSTIC_PUSH \
-
680  _Pragma("clang diagnostic ignored \"-Wc++98-compat\"") \
-
681  xpr \
-
682  JSON_HEDLEY_DIAGNOSTIC_POP
-
683 #else
-
684 # define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(x) x
-
685 #endif
-
686 
-
687 #if \
-
688  (defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || \
-
689  defined(__clang__) || \
-
690  JSON_HEDLEY_GCC_VERSION_CHECK(3,0,0) || \
-
691  JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \
-
692  JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) || \
-
693  JSON_HEDLEY_PGI_VERSION_CHECK(18,4,0) || \
-
694  JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \
-
695  JSON_HEDLEY_TI_VERSION_CHECK(6,0,0) || \
-
696  JSON_HEDLEY_CRAY_VERSION_CHECK(5,0,0) || \
-
697  JSON_HEDLEY_TINYC_VERSION_CHECK(0,9,17) || \
-
698  JSON_HEDLEY_SUNPRO_VERSION_CHECK(8,0,0) || \
-
699  (JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) && defined(__C99_PRAGMA_OPERATOR))
-
700  #define JSON_HEDLEY_PRAGMA(value) _Pragma(#value)
-
701 #elif JSON_HEDLEY_MSVC_VERSION_CHECK(15,0,0)
-
702  #define JSON_HEDLEY_PRAGMA(value) __pragma(value)
-
703 #else
-
704  #define JSON_HEDLEY_PRAGMA(value)
-
705 #endif
-
706 
-
707 #if defined(JSON_HEDLEY_DIAGNOSTIC_PUSH)
-
708  #undef JSON_HEDLEY_DIAGNOSTIC_PUSH
-
709 #endif
-
710 #if defined(JSON_HEDLEY_DIAGNOSTIC_POP)
-
711  #undef JSON_HEDLEY_DIAGNOSTIC_POP
-
712 #endif
-
713 #if defined(__clang__)
-
714  #define JSON_HEDLEY_DIAGNOSTIC_PUSH _Pragma("clang diagnostic push")
-
715  #define JSON_HEDLEY_DIAGNOSTIC_POP _Pragma("clang diagnostic pop")
-
716 #elif JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0)
-
717  #define JSON_HEDLEY_DIAGNOSTIC_PUSH _Pragma("warning(push)")
-
718  #define JSON_HEDLEY_DIAGNOSTIC_POP _Pragma("warning(pop)")
-
719 #elif JSON_HEDLEY_GCC_VERSION_CHECK(4,6,0)
-
720  #define JSON_HEDLEY_DIAGNOSTIC_PUSH _Pragma("GCC diagnostic push")
-
721  #define JSON_HEDLEY_DIAGNOSTIC_POP _Pragma("GCC diagnostic pop")
-
722 #elif JSON_HEDLEY_MSVC_VERSION_CHECK(15,0,0)
-
723  #define JSON_HEDLEY_DIAGNOSTIC_PUSH __pragma(warning(push))
-
724  #define JSON_HEDLEY_DIAGNOSTIC_POP __pragma(warning(pop))
-
725 #elif JSON_HEDLEY_ARM_VERSION_CHECK(5,6,0)
-
726  #define JSON_HEDLEY_DIAGNOSTIC_PUSH _Pragma("push")
-
727  #define JSON_HEDLEY_DIAGNOSTIC_POP _Pragma("pop")
-
728 #elif JSON_HEDLEY_TI_VERSION_CHECK(8,1,0)
-
729  #define JSON_HEDLEY_DIAGNOSTIC_PUSH _Pragma("diag_push")
-
730  #define JSON_HEDLEY_DIAGNOSTIC_POP _Pragma("diag_pop")
-
731 #elif JSON_HEDLEY_PELLES_VERSION_CHECK(2,90,0)
-
732  #define JSON_HEDLEY_DIAGNOSTIC_PUSH _Pragma("warning(push)")
-
733  #define JSON_HEDLEY_DIAGNOSTIC_POP _Pragma("warning(pop)")
-
734 #else
-
735  #define JSON_HEDLEY_DIAGNOSTIC_PUSH
-
736  #define JSON_HEDLEY_DIAGNOSTIC_POP
-
737 #endif
-
738 
-
739 #if defined(JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED)
-
740  #undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED
-
741 #endif
-
742 #if JSON_HEDLEY_HAS_WARNING("-Wdeprecated-declarations")
-
743  #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("clang diagnostic ignored \"-Wdeprecated-declarations\"")
-
744 #elif JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0)
-
745  #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("warning(disable:1478 1786)")
-
746 #elif JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0)
-
747  #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("diag_suppress 1215,1444")
-
748 #elif JSON_HEDLEY_GCC_VERSION_CHECK(4,3,0)
-
749  #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("GCC diagnostic ignored \"-Wdeprecated-declarations\"")
-
750 #elif JSON_HEDLEY_MSVC_VERSION_CHECK(15,0,0)
-
751  #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED __pragma(warning(disable:4996))
-
752 #elif JSON_HEDLEY_TI_VERSION_CHECK(8,0,0)
-
753  #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("diag_suppress 1291,1718")
-
754 #elif JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,13,0) && !defined(__cplusplus)
-
755  #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("error_messages(off,E_DEPRECATED_ATT,E_DEPRECATED_ATT_MESS)")
-
756 #elif JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,13,0) && defined(__cplusplus)
-
757  #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("error_messages(off,symdeprecated,symdeprecated2)")
-
758 #elif JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0)
-
759  #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("diag_suppress=Pe1444,Pe1215")
-
760 #elif JSON_HEDLEY_PELLES_VERSION_CHECK(2,90,0)
-
761  #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("warn(disable:2241)")
-
762 #else
-
763  #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED
-
764 #endif
-
765 
-
766 #if defined(JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS)
-
767  #undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS
-
768 #endif
-
769 #if JSON_HEDLEY_HAS_WARNING("-Wunknown-pragmas")
-
770  #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("clang diagnostic ignored \"-Wunknown-pragmas\"")
-
771 #elif JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0)
-
772  #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("warning(disable:161)")
-
773 #elif JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0)
-
774  #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("diag_suppress 1675")
-
775 #elif JSON_HEDLEY_GCC_VERSION_CHECK(4,3,0)
-
776  #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("GCC diagnostic ignored \"-Wunknown-pragmas\"")
-
777 #elif JSON_HEDLEY_MSVC_VERSION_CHECK(15,0,0)
-
778  #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS __pragma(warning(disable:4068))
-
779 #elif JSON_HEDLEY_TI_VERSION_CHECK(8,0,0)
-
780  #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("diag_suppress 163")
-
781 #elif JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0)
-
782  #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("diag_suppress=Pe161")
-
783 #else
-
784  #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS
-
785 #endif
-
786 
-
787 #if defined(JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES)
-
788  #undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES
-
789 #endif
-
790 #if JSON_HEDLEY_HAS_WARNING("-Wunknown-attributes")
-
791  #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("clang diagnostic ignored \"-Wunknown-attributes\"")
-
792 #elif JSON_HEDLEY_GCC_VERSION_CHECK(4,6,0)
-
793  #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("GCC diagnostic ignored \"-Wdeprecated-declarations\"")
-
794 #elif JSON_HEDLEY_INTEL_VERSION_CHECK(17,0,0)
-
795  #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("warning(disable:1292)")
-
796 #elif JSON_HEDLEY_MSVC_VERSION_CHECK(19,0,0)
-
797  #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES __pragma(warning(disable:5030))
-
798 #elif JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0)
-
799  #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("diag_suppress 1097")
-
800 #elif JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,14,0) && defined(__cplusplus)
-
801  #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("error_messages(off,attrskipunsup)")
-
802 #elif JSON_HEDLEY_TI_VERSION_CHECK(8,0,0)
-
803  #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("diag_suppress 1173")
-
804 #else
-
805  #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES
-
806 #endif
-
807 
-
808 #if defined(JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL)
-
809  #undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL
-
810 #endif
-
811 #if JSON_HEDLEY_HAS_WARNING("-Wcast-qual")
-
812  #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL _Pragma("clang diagnostic ignored \"-Wcast-qual\"")
-
813 #elif JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0)
-
814  #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL _Pragma("warning(disable:2203 2331)")
-
815 #elif JSON_HEDLEY_GCC_VERSION_CHECK(3,0,0)
-
816  #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL _Pragma("GCC diagnostic ignored \"-Wcast-qual\"")
-
817 #else
-
818  #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL
-
819 #endif
-
820 
-
821 #if defined(JSON_HEDLEY_DEPRECATED)
-
822  #undef JSON_HEDLEY_DEPRECATED
-
823 #endif
-
824 #if defined(JSON_HEDLEY_DEPRECATED_FOR)
-
825  #undef JSON_HEDLEY_DEPRECATED_FOR
-
826 #endif
-
827 #if defined(__cplusplus) && (__cplusplus >= 201402L)
-
828  #define JSON_HEDLEY_DEPRECATED(since) JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[deprecated("Since " #since)]])
-
829  #define JSON_HEDLEY_DEPRECATED_FOR(since, replacement) JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[deprecated("Since " #since "; use " #replacement)]])
-
830 #elif \
-
831  JSON_HEDLEY_HAS_EXTENSION(attribute_deprecated_with_message) || \
-
832  JSON_HEDLEY_GCC_VERSION_CHECK(4,5,0) || \
-
833  JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \
-
834  JSON_HEDLEY_ARM_VERSION_CHECK(5,6,0) || \
-
835  JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,13,0) || \
-
836  JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0) || \
-
837  JSON_HEDLEY_TI_VERSION_CHECK(8,3,0)
-
838  #define JSON_HEDLEY_DEPRECATED(since) __attribute__((__deprecated__("Since " #since)))
-
839  #define JSON_HEDLEY_DEPRECATED_FOR(since, replacement) __attribute__((__deprecated__("Since " #since "; use " #replacement)))
-
840 #elif \
-
841  JSON_HEDLEY_HAS_ATTRIBUTE(deprecated) || \
-
842  JSON_HEDLEY_GCC_VERSION_CHECK(3,1,0) || \
-
843  JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \
-
844  JSON_HEDLEY_TI_VERSION_CHECK(8,0,0) || \
-
845  (JSON_HEDLEY_TI_VERSION_CHECK(7,3,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__))
-
846  #define JSON_HEDLEY_DEPRECATED(since) __attribute__((__deprecated__))
-
847  #define JSON_HEDLEY_DEPRECATED_FOR(since, replacement) __attribute__((__deprecated__))
-
848 #elif JSON_HEDLEY_MSVC_VERSION_CHECK(14,0,0)
-
849  #define JSON_HEDLEY_DEPRECATED(since) __declspec(deprecated("Since " # since))
-
850  #define JSON_HEDLEY_DEPRECATED_FOR(since, replacement) __declspec(deprecated("Since " #since "; use " #replacement))
-
851 #elif \
-
852  JSON_HEDLEY_MSVC_VERSION_CHECK(13,10,0) || \
-
853  JSON_HEDLEY_PELLES_VERSION_CHECK(6,50,0)
-
854  #define JSON_HEDLEY_DEPRECATED(since) __declspec(deprecated)
-
855  #define JSON_HEDLEY_DEPRECATED_FOR(since, replacement) __declspec(deprecated)
-
856 #elif JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0)
-
857  #define JSON_HEDLEY_DEPRECATED(since) _Pragma("deprecated")
-
858  #define JSON_HEDLEY_DEPRECATED_FOR(since, replacement) _Pragma("deprecated")
-
859 #else
-
860  #define JSON_HEDLEY_DEPRECATED(since)
-
861  #define JSON_HEDLEY_DEPRECATED_FOR(since, replacement)
-
862 #endif
-
863 
-
864 #if defined(JSON_HEDLEY_UNAVAILABLE)
-
865  #undef JSON_HEDLEY_UNAVAILABLE
-
866 #endif
-
867 #if \
-
868  JSON_HEDLEY_HAS_ATTRIBUTE(warning) || \
-
869  JSON_HEDLEY_GCC_VERSION_CHECK(4,3,0) || \
-
870  JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0)
-
871  #define JSON_HEDLEY_UNAVAILABLE(available_since) __attribute__((__warning__("Not available until " #available_since)))
-
872 #else
-
873  #define JSON_HEDLEY_UNAVAILABLE(available_since)
-
874 #endif
-
875 
-
876 #if defined(JSON_HEDLEY_WARN_UNUSED_RESULT)
-
877  #undef JSON_HEDLEY_WARN_UNUSED_RESULT
-
878 #endif
-
879 #if defined(__cplusplus) && (__cplusplus >= 201703L)
-
880  #define JSON_HEDLEY_WARN_UNUSED_RESULT JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[nodiscard]])
-
881 #elif \
-
882  JSON_HEDLEY_HAS_ATTRIBUTE(warn_unused_result) || \
-
883  JSON_HEDLEY_GCC_VERSION_CHECK(3,4,0) || \
-
884  JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \
-
885  JSON_HEDLEY_TI_VERSION_CHECK(8,0,0) || \
-
886  (JSON_HEDLEY_TI_VERSION_CHECK(7,3,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \
-
887  (JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,15,0) && defined(__cplusplus)) || \
-
888  JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0)
-
889  #define JSON_HEDLEY_WARN_UNUSED_RESULT __attribute__((__warn_unused_result__))
-
890 #elif defined(_Check_return_) /* SAL */
-
891  #define JSON_HEDLEY_WARN_UNUSED_RESULT _Check_return_
-
892 #else
-
893  #define JSON_HEDLEY_WARN_UNUSED_RESULT
-
894 #endif
-
895 
-
896 #if defined(JSON_HEDLEY_SENTINEL)
-
897  #undef JSON_HEDLEY_SENTINEL
-
898 #endif
-
899 #if \
-
900  JSON_HEDLEY_HAS_ATTRIBUTE(sentinel) || \
-
901  JSON_HEDLEY_GCC_VERSION_CHECK(4,0,0) || \
-
902  JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \
-
903  JSON_HEDLEY_ARM_VERSION_CHECK(5,4,0)
-
904  #define JSON_HEDLEY_SENTINEL(position) __attribute__((__sentinel__(position)))
-
905 #else
-
906  #define JSON_HEDLEY_SENTINEL(position)
-
907 #endif
-
908 
-
909 #if defined(JSON_HEDLEY_NO_RETURN)
-
910  #undef JSON_HEDLEY_NO_RETURN
-
911 #endif
-
912 #if JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0)
-
913  #define JSON_HEDLEY_NO_RETURN __noreturn
-
914 #elif JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0)
-
915  #define JSON_HEDLEY_NO_RETURN __attribute__((__noreturn__))
-
916 #elif defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L
-
917  #define JSON_HEDLEY_NO_RETURN _Noreturn
-
918 #elif defined(__cplusplus) && (__cplusplus >= 201103L)
-
919  #define JSON_HEDLEY_NO_RETURN JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[noreturn]])
-
920 #elif \
-
921  JSON_HEDLEY_HAS_ATTRIBUTE(noreturn) || \
-
922  JSON_HEDLEY_GCC_VERSION_CHECK(3,2,0) || \
-
923  JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \
-
924  JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \
-
925  JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \
-
926  JSON_HEDLEY_TI_VERSION_CHECK(18,0,0) || \
-
927  (JSON_HEDLEY_TI_VERSION_CHECK(17,3,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__))
-
928  #define JSON_HEDLEY_NO_RETURN __attribute__((__noreturn__))
-
929 #elif JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,10,0)
-
930  #define JSON_HEDLEY_NO_RETURN _Pragma("does_not_return")
-
931 #elif JSON_HEDLEY_MSVC_VERSION_CHECK(13,10,0)
-
932  #define JSON_HEDLEY_NO_RETURN __declspec(noreturn)
-
933 #elif JSON_HEDLEY_TI_VERSION_CHECK(6,0,0) && defined(__cplusplus)
-
934  #define JSON_HEDLEY_NO_RETURN _Pragma("FUNC_NEVER_RETURNS;")
-
935 #elif JSON_HEDLEY_COMPCERT_VERSION_CHECK(3,2,0)
-
936  #define JSON_HEDLEY_NO_RETURN __attribute((noreturn))
-
937 #elif JSON_HEDLEY_PELLES_VERSION_CHECK(9,0,0)
-
938  #define JSON_HEDLEY_NO_RETURN __declspec(noreturn)
-
939 #else
-
940  #define JSON_HEDLEY_NO_RETURN
-
941 #endif
-
942 
-
943 #if defined(JSON_HEDLEY_NO_ESCAPE)
-
944  #undef JSON_HEDLEY_NO_ESCAPE
-
945 #endif
-
946 #if JSON_HEDLEY_HAS_ATTRIBUTE(noescape)
-
947  #define JSON_HEDLEY_NO_ESCAPE __attribute__((__noescape__))
-
948 #else
-
949  #define JSON_HEDLEY_NO_ESCAPE
-
950 #endif
-
951 
-
952 #if defined(JSON_HEDLEY_UNREACHABLE)
-
953  #undef JSON_HEDLEY_UNREACHABLE
-
954 #endif
-
955 #if defined(JSON_HEDLEY_UNREACHABLE_RETURN)
-
956  #undef JSON_HEDLEY_UNREACHABLE_RETURN
-
957 #endif
-
958 #if \
-
959  (JSON_HEDLEY_HAS_BUILTIN(__builtin_unreachable) && (!defined(JSON_HEDLEY_ARM_VERSION))) || \
-
960  JSON_HEDLEY_GCC_VERSION_CHECK(4,5,0) || \
-
961  JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \
-
962  JSON_HEDLEY_IBM_VERSION_CHECK(13,1,5)
-
963  #define JSON_HEDLEY_UNREACHABLE() __builtin_unreachable()
-
964 #elif JSON_HEDLEY_MSVC_VERSION_CHECK(13,10,0)
-
965  #define JSON_HEDLEY_UNREACHABLE() __assume(0)
-
966 #elif JSON_HEDLEY_TI_VERSION_CHECK(6,0,0)
-
967  #if defined(__cplusplus)
-
968  #define JSON_HEDLEY_UNREACHABLE() std::_nassert(0)
-
969  #else
-
970  #define JSON_HEDLEY_UNREACHABLE() _nassert(0)
-
971  #endif
-
972  #define JSON_HEDLEY_UNREACHABLE_RETURN(value) return value
-
973 #elif defined(EXIT_FAILURE)
-
974  #define JSON_HEDLEY_UNREACHABLE() abort()
-
975 #else
-
976  #define JSON_HEDLEY_UNREACHABLE()
-
977  #define JSON_HEDLEY_UNREACHABLE_RETURN(value) return value
-
978 #endif
-
979 #if !defined(JSON_HEDLEY_UNREACHABLE_RETURN)
-
980  #define JSON_HEDLEY_UNREACHABLE_RETURN(value) JSON_HEDLEY_UNREACHABLE()
-
981 #endif
-
982 
-
983 #if defined(JSON_HEDLEY_ASSUME)
-
984  #undef JSON_HEDLEY_ASSUME
-
985 #endif
-
986 #if \
-
987  JSON_HEDLEY_MSVC_VERSION_CHECK(13,10,0) || \
-
988  JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0)
-
989  #define JSON_HEDLEY_ASSUME(expr) __assume(expr)
-
990 #elif JSON_HEDLEY_HAS_BUILTIN(__builtin_assume)
-
991  #define JSON_HEDLEY_ASSUME(expr) __builtin_assume(expr)
-
992 #elif JSON_HEDLEY_TI_VERSION_CHECK(6,0,0)
-
993  #if defined(__cplusplus)
-
994  #define JSON_HEDLEY_ASSUME(expr) std::_nassert(expr)
-
995  #else
-
996  #define JSON_HEDLEY_ASSUME(expr) _nassert(expr)
-
997  #endif
-
998 #elif \
-
999  (JSON_HEDLEY_HAS_BUILTIN(__builtin_unreachable) && !defined(JSON_HEDLEY_ARM_VERSION)) || \
-
1000  JSON_HEDLEY_GCC_VERSION_CHECK(4,5,0) || \
-
1001  JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \
-
1002  JSON_HEDLEY_IBM_VERSION_CHECK(13,1,5)
-
1003  #define JSON_HEDLEY_ASSUME(expr) ((void) ((expr) ? 1 : (__builtin_unreachable(), 1)))
-
1004 #else
-
1005  #define JSON_HEDLEY_ASSUME(expr) ((void) (expr))
-
1006 #endif
-
1007 
- -
1009 #if JSON_HEDLEY_HAS_WARNING("-Wpedantic")
-
1010  #pragma clang diagnostic ignored "-Wpedantic"
-
1011 #endif
-
1012 #if JSON_HEDLEY_HAS_WARNING("-Wc++98-compat-pedantic") && defined(__cplusplus)
-
1013  #pragma clang diagnostic ignored "-Wc++98-compat-pedantic"
-
1014 #endif
-
1015 #if JSON_HEDLEY_GCC_HAS_WARNING("-Wvariadic-macros",4,0,0)
-
1016  #if defined(__clang__)
-
1017  #pragma clang diagnostic ignored "-Wvariadic-macros"
-
1018  #elif defined(JSON_HEDLEY_GCC_VERSION)
-
1019  #pragma GCC diagnostic ignored "-Wvariadic-macros"
-
1020  #endif
-
1021 #endif
-
1022 #if defined(JSON_HEDLEY_NON_NULL)
-
1023  #undef JSON_HEDLEY_NON_NULL
-
1024 #endif
-
1025 #if \
-
1026  JSON_HEDLEY_HAS_ATTRIBUTE(nonnull) || \
-
1027  JSON_HEDLEY_GCC_VERSION_CHECK(3,3,0) || \
-
1028  JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \
-
1029  JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0)
-
1030  #define JSON_HEDLEY_NON_NULL(...) __attribute__((__nonnull__(__VA_ARGS__)))
-
1031 #else
-
1032  #define JSON_HEDLEY_NON_NULL(...)
-
1033 #endif
- -
1035 
-
1036 #if defined(JSON_HEDLEY_PRINTF_FORMAT)
-
1037  #undef JSON_HEDLEY_PRINTF_FORMAT
-
1038 #endif
-
1039 #if defined(__MINGW32__) && JSON_HEDLEY_GCC_HAS_ATTRIBUTE(format,4,4,0) && !defined(__USE_MINGW_ANSI_STDIO)
-
1040  #define JSON_HEDLEY_PRINTF_FORMAT(string_idx,first_to_check) __attribute__((__format__(ms_printf, string_idx, first_to_check)))
-
1041 #elif defined(__MINGW32__) && JSON_HEDLEY_GCC_HAS_ATTRIBUTE(format,4,4,0) && defined(__USE_MINGW_ANSI_STDIO)
-
1042  #define JSON_HEDLEY_PRINTF_FORMAT(string_idx,first_to_check) __attribute__((__format__(gnu_printf, string_idx, first_to_check)))
-
1043 #elif \
-
1044  JSON_HEDLEY_HAS_ATTRIBUTE(format) || \
-
1045  JSON_HEDLEY_GCC_VERSION_CHECK(3,1,0) || \
-
1046  JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \
-
1047  JSON_HEDLEY_ARM_VERSION_CHECK(5,6,0) || \
-
1048  JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \
-
1049  JSON_HEDLEY_TI_VERSION_CHECK(8,0,0) || \
-
1050  (JSON_HEDLEY_TI_VERSION_CHECK(7,3,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__))
-
1051  #define JSON_HEDLEY_PRINTF_FORMAT(string_idx,first_to_check) __attribute__((__format__(__printf__, string_idx, first_to_check)))
-
1052 #elif JSON_HEDLEY_PELLES_VERSION_CHECK(6,0,0)
-
1053  #define JSON_HEDLEY_PRINTF_FORMAT(string_idx,first_to_check) __declspec(vaformat(printf,string_idx,first_to_check))
-
1054 #else
-
1055  #define JSON_HEDLEY_PRINTF_FORMAT(string_idx,first_to_check)
-
1056 #endif
-
1057 
-
1058 #if defined(JSON_HEDLEY_CONSTEXPR)
-
1059  #undef JSON_HEDLEY_CONSTEXPR
-
1060 #endif
-
1061 #if defined(__cplusplus)
-
1062  #if __cplusplus >= 201103L
-
1063  #define JSON_HEDLEY_CONSTEXPR JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(constexpr)
-
1064  #endif
-
1065 #endif
-
1066 #if !defined(JSON_HEDLEY_CONSTEXPR)
-
1067  #define JSON_HEDLEY_CONSTEXPR
-
1068 #endif
-
1069 
-
1070 #if defined(JSON_HEDLEY_PREDICT)
-
1071  #undef JSON_HEDLEY_PREDICT
-
1072 #endif
-
1073 #if defined(JSON_HEDLEY_LIKELY)
-
1074  #undef JSON_HEDLEY_LIKELY
-
1075 #endif
-
1076 #if defined(JSON_HEDLEY_UNLIKELY)
-
1077  #undef JSON_HEDLEY_UNLIKELY
-
1078 #endif
-
1079 #if defined(JSON_HEDLEY_UNPREDICTABLE)
-
1080  #undef JSON_HEDLEY_UNPREDICTABLE
-
1081 #endif
-
1082 #if JSON_HEDLEY_HAS_BUILTIN(__builtin_unpredictable)
-
1083  #define JSON_HEDLEY_UNPREDICTABLE(expr) __builtin_unpredictable(!!(expr))
-
1084 #endif
-
1085 #if \
-
1086  JSON_HEDLEY_HAS_BUILTIN(__builtin_expect_with_probability) || \
-
1087  JSON_HEDLEY_GCC_VERSION_CHECK(9,0,0)
-
1088 # define JSON_HEDLEY_PREDICT(expr, value, probability) __builtin_expect_with_probability(expr, value, probability)
-
1089 # define JSON_HEDLEY_PREDICT_TRUE(expr, probability) __builtin_expect_with_probability(!!(expr), 1, probability)
-
1090 # define JSON_HEDLEY_PREDICT_FALSE(expr, probability) __builtin_expect_with_probability(!!(expr), 0, probability)
-
1091 # define JSON_HEDLEY_LIKELY(expr) __builtin_expect(!!(expr), 1)
-
1092 # define JSON_HEDLEY_UNLIKELY(expr) __builtin_expect(!!(expr), 0)
-
1093 #if !defined(JSON_HEDLEY_BUILTIN_UNPREDICTABLE)
-
1094  #define JSON_HEDLEY_BUILTIN_UNPREDICTABLE(expr) __builtin_expect_with_probability(!!(expr), 1, 0.5)
-
1095 #endif
-
1096 #elif \
-
1097  JSON_HEDLEY_HAS_BUILTIN(__builtin_expect) || \
-
1098  JSON_HEDLEY_GCC_VERSION_CHECK(3,0,0) || \
-
1099  JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \
-
1100  (JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,15,0) && defined(__cplusplus)) || \
-
1101  JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \
-
1102  JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \
-
1103  JSON_HEDLEY_TI_VERSION_CHECK(6,1,0) || \
-
1104  JSON_HEDLEY_TINYC_VERSION_CHECK(0,9,27)
-
1105 # define JSON_HEDLEY_PREDICT(expr, expected, probability) \
-
1106  (((probability) >= 0.9) ? __builtin_expect(!!(expr), (expected)) : (((void) (expected)), !!(expr)))
-
1107 # define JSON_HEDLEY_PREDICT_TRUE(expr, probability) \
-
1108  (__extension__ ({ \
-
1109  JSON_HEDLEY_CONSTEXPR double hedley_probability_ = (probability); \
-
1110  ((hedley_probability_ >= 0.9) ? __builtin_expect(!!(expr), 1) : ((hedley_probability_ <= 0.1) ? __builtin_expect(!!(expr), 0) : !!(expr))); \
-
1111  }))
-
1112 # define JSON_HEDLEY_PREDICT_FALSE(expr, probability) \
-
1113  (__extension__ ({ \
-
1114  JSON_HEDLEY_CONSTEXPR double hedley_probability_ = (probability); \
-
1115  ((hedley_probability_ >= 0.9) ? __builtin_expect(!!(expr), 0) : ((hedley_probability_ <= 0.1) ? __builtin_expect(!!(expr), 1) : !!(expr))); \
-
1116  }))
-
1117 # define JSON_HEDLEY_LIKELY(expr) __builtin_expect(!!(expr), 1)
-
1118 # define JSON_HEDLEY_UNLIKELY(expr) __builtin_expect(!!(expr), 0)
-
1119 #else
-
1120 # define JSON_HEDLEY_PREDICT(expr, expected, probability) (((void) (expected)), !!(expr))
-
1121 # define JSON_HEDLEY_PREDICT_TRUE(expr, probability) (!!(expr))
-
1122 # define JSON_HEDLEY_PREDICT_FALSE(expr, probability) (!!(expr))
-
1123 # define JSON_HEDLEY_LIKELY(expr) (!!(expr))
-
1124 # define JSON_HEDLEY_UNLIKELY(expr) (!!(expr))
-
1125 #endif
-
1126 #if !defined(JSON_HEDLEY_UNPREDICTABLE)
-
1127  #define JSON_HEDLEY_UNPREDICTABLE(expr) JSON_HEDLEY_PREDICT(expr, 1, 0.5)
-
1128 #endif
-
1129 
-
1130 #if defined(JSON_HEDLEY_MALLOC)
-
1131  #undef JSON_HEDLEY_MALLOC
-
1132 #endif
-
1133 #if \
-
1134  JSON_HEDLEY_HAS_ATTRIBUTE(malloc) || \
-
1135  JSON_HEDLEY_GCC_VERSION_CHECK(3,1,0) || \
-
1136  JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \
-
1137  JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \
-
1138  JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \
-
1139  JSON_HEDLEY_IBM_VERSION_CHECK(12,1,0) || \
-
1140  JSON_HEDLEY_TI_VERSION_CHECK(8,0,0) || \
-
1141  (JSON_HEDLEY_TI_VERSION_CHECK(7,3,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__))
-
1142  #define JSON_HEDLEY_MALLOC __attribute__((__malloc__))
-
1143 #elif JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,10,0)
-
1144  #define JSON_HEDLEY_MALLOC _Pragma("returns_new_memory")
-
1145 #elif JSON_HEDLEY_MSVC_VERSION_CHECK(14, 0, 0)
-
1146  #define JSON_HEDLEY_MALLOC __declspec(restrict)
-
1147 #else
-
1148  #define JSON_HEDLEY_MALLOC
-
1149 #endif
-
1150 
-
1151 #if defined(JSON_HEDLEY_PURE)
-
1152  #undef JSON_HEDLEY_PURE
-
1153 #endif
-
1154 #if \
-
1155  JSON_HEDLEY_HAS_ATTRIBUTE(pure) || \
-
1156  JSON_HEDLEY_GCC_VERSION_CHECK(2,96,0) || \
-
1157  JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \
-
1158  JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \
-
1159  JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \
-
1160  JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \
-
1161  JSON_HEDLEY_TI_VERSION_CHECK(8,0,0) || \
-
1162  (JSON_HEDLEY_TI_VERSION_CHECK(7,3,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \
-
1163  JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0)
-
1164  #define JSON_HEDLEY_PURE __attribute__((__pure__))
-
1165 #elif JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,10,0)
-
1166  #define JSON_HEDLEY_PURE _Pragma("does_not_write_global_data")
-
1167 #elif JSON_HEDLEY_TI_VERSION_CHECK(6,0,0) && defined(__cplusplus)
-
1168  #define JSON_HEDLEY_PURE _Pragma("FUNC_IS_PURE;")
-
1169 #else
-
1170  #define JSON_HEDLEY_PURE
-
1171 #endif
-
1172 
-
1173 #if defined(JSON_HEDLEY_CONST)
-
1174  #undef JSON_HEDLEY_CONST
-
1175 #endif
-
1176 #if \
-
1177  JSON_HEDLEY_HAS_ATTRIBUTE(const) || \
-
1178  JSON_HEDLEY_GCC_VERSION_CHECK(2,5,0) || \
-
1179  JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \
-
1180  JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \
-
1181  JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \
-
1182  JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \
-
1183  JSON_HEDLEY_TI_VERSION_CHECK(8,0,0) || \
-
1184  (JSON_HEDLEY_TI_VERSION_CHECK(7,3,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \
-
1185  JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0)
-
1186  #define JSON_HEDLEY_CONST __attribute__((__const__))
-
1187 #elif \
-
1188  JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,10,0)
-
1189  #define JSON_HEDLEY_CONST _Pragma("no_side_effect")
-
1190 #else
-
1191  #define JSON_HEDLEY_CONST JSON_HEDLEY_PURE
-
1192 #endif
-
1193 
-
1194 #if defined(JSON_HEDLEY_RESTRICT)
-
1195  #undef JSON_HEDLEY_RESTRICT
-
1196 #endif
-
1197 #if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) && !defined(__cplusplus)
-
1198  #define JSON_HEDLEY_RESTRICT restrict
-
1199 #elif \
-
1200  JSON_HEDLEY_GCC_VERSION_CHECK(3,1,0) || \
-
1201  JSON_HEDLEY_MSVC_VERSION_CHECK(14,0,0) || \
-
1202  JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \
-
1203  JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \
-
1204  JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \
-
1205  JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0) || \
-
1206  JSON_HEDLEY_TI_VERSION_CHECK(8,0,0) || \
-
1207  (JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,14,0) && defined(__cplusplus)) || \
-
1208  JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) || \
-
1209  defined(__clang__)
-
1210  #define JSON_HEDLEY_RESTRICT __restrict
-
1211 #elif JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,3,0) && !defined(__cplusplus)
-
1212  #define JSON_HEDLEY_RESTRICT _Restrict
-
1213 #else
-
1214  #define JSON_HEDLEY_RESTRICT
-
1215 #endif
-
1216 
-
1217 #if defined(JSON_HEDLEY_INLINE)
-
1218  #undef JSON_HEDLEY_INLINE
-
1219 #endif
-
1220 #if \
-
1221  (defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || \
-
1222  (defined(__cplusplus) && (__cplusplus >= 199711L))
-
1223  #define JSON_HEDLEY_INLINE inline
-
1224 #elif \
-
1225  defined(JSON_HEDLEY_GCC_VERSION) || \
-
1226  JSON_HEDLEY_ARM_VERSION_CHECK(6,2,0)
-
1227  #define JSON_HEDLEY_INLINE __inline__
-
1228 #elif \
-
1229  JSON_HEDLEY_MSVC_VERSION_CHECK(12,0,0) || \
-
1230  JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \
-
1231  JSON_HEDLEY_TI_VERSION_CHECK(8,0,0)
-
1232  #define JSON_HEDLEY_INLINE __inline
-
1233 #else
-
1234  #define JSON_HEDLEY_INLINE
-
1235 #endif
-
1236 
-
1237 #if defined(JSON_HEDLEY_ALWAYS_INLINE)
-
1238  #undef JSON_HEDLEY_ALWAYS_INLINE
-
1239 #endif
-
1240 #if \
-
1241  JSON_HEDLEY_HAS_ATTRIBUTE(always_inline) || \
-
1242  JSON_HEDLEY_GCC_VERSION_CHECK(4,0,0) || \
-
1243  JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \
-
1244  JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \
-
1245  JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \
-
1246  JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \
-
1247  JSON_HEDLEY_TI_VERSION_CHECK(8,0,0) || \
-
1248  (JSON_HEDLEY_TI_VERSION_CHECK(7,3,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__))
-
1249  #define JSON_HEDLEY_ALWAYS_INLINE __attribute__((__always_inline__)) JSON_HEDLEY_INLINE
-
1250 #elif JSON_HEDLEY_MSVC_VERSION_CHECK(12,0,0)
-
1251  #define JSON_HEDLEY_ALWAYS_INLINE __forceinline
-
1252 #elif JSON_HEDLEY_TI_VERSION_CHECK(7,0,0) && defined(__cplusplus)
-
1253  #define JSON_HEDLEY_ALWAYS_INLINE _Pragma("FUNC_ALWAYS_INLINE;")
-
1254 #elif JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0)
-
1255  #define JSON_HEDLEY_ALWAYS_INLINE _Pragma("inline=forced")
-
1256 #else
-
1257  #define JSON_HEDLEY_ALWAYS_INLINE JSON_HEDLEY_INLINE
-
1258 #endif
-
1259 
-
1260 #if defined(JSON_HEDLEY_NEVER_INLINE)
-
1261  #undef JSON_HEDLEY_NEVER_INLINE
-
1262 #endif
-
1263 #if \
-
1264  JSON_HEDLEY_HAS_ATTRIBUTE(noinline) || \
-
1265  JSON_HEDLEY_GCC_VERSION_CHECK(4,0,0) || \
-
1266  JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \
-
1267  JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \
-
1268  JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \
-
1269  JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \
-
1270  JSON_HEDLEY_TI_VERSION_CHECK(8,0,0) || \
-
1271  (JSON_HEDLEY_TI_VERSION_CHECK(7,3,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__))
-
1272  #define JSON_HEDLEY_NEVER_INLINE __attribute__((__noinline__))
-
1273 #elif JSON_HEDLEY_MSVC_VERSION_CHECK(13,10,0)
-
1274  #define JSON_HEDLEY_NEVER_INLINE __declspec(noinline)
-
1275 #elif JSON_HEDLEY_PGI_VERSION_CHECK(10,2,0)
-
1276  #define JSON_HEDLEY_NEVER_INLINE _Pragma("noinline")
-
1277 #elif JSON_HEDLEY_TI_VERSION_CHECK(6,0,0) && defined(__cplusplus)
-
1278  #define JSON_HEDLEY_NEVER_INLINE _Pragma("FUNC_CANNOT_INLINE;")
-
1279 #elif JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0)
-
1280  #define JSON_HEDLEY_NEVER_INLINE _Pragma("inline=never")
-
1281 #elif JSON_HEDLEY_COMPCERT_VERSION_CHECK(3,2,0)
-
1282  #define JSON_HEDLEY_NEVER_INLINE __attribute((noinline))
-
1283 #elif JSON_HEDLEY_PELLES_VERSION_CHECK(9,0,0)
-
1284  #define JSON_HEDLEY_NEVER_INLINE __declspec(noinline)
-
1285 #else
-
1286  #define JSON_HEDLEY_NEVER_INLINE
-
1287 #endif
-
1288 
-
1289 #if defined(JSON_HEDLEY_PRIVATE)
-
1290  #undef JSON_HEDLEY_PRIVATE
-
1291 #endif
-
1292 #if defined(JSON_HEDLEY_PUBLIC)
-
1293  #undef JSON_HEDLEY_PUBLIC
-
1294 #endif
-
1295 #if defined(JSON_HEDLEY_IMPORT)
-
1296  #undef JSON_HEDLEY_IMPORT
-
1297 #endif
-
1298 #if defined(_WIN32) || defined(__CYGWIN__)
-
1299  #define JSON_HEDLEY_PRIVATE
-
1300  #define JSON_HEDLEY_PUBLIC __declspec(dllexport)
-
1301  #define JSON_HEDLEY_IMPORT __declspec(dllimport)
-
1302 #else
-
1303  #if \
-
1304  JSON_HEDLEY_HAS_ATTRIBUTE(visibility) || \
-
1305  JSON_HEDLEY_GCC_VERSION_CHECK(3,3,0) || \
-
1306  JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \
-
1307  JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \
-
1308  JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \
-
1309  JSON_HEDLEY_IBM_VERSION_CHECK(13,1,0) || \
-
1310  JSON_HEDLEY_TI_VERSION_CHECK(8,0,0) || \
-
1311  (JSON_HEDLEY_TI_VERSION_CHECK(7,3,0) && defined(__TI_EABI__) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__))
-
1312  #define JSON_HEDLEY_PRIVATE __attribute__((__visibility__("hidden")))
-
1313  #define JSON_HEDLEY_PUBLIC __attribute__((__visibility__("default")))
-
1314  #else
-
1315  #define JSON_HEDLEY_PRIVATE
-
1316  #define JSON_HEDLEY_PUBLIC
-
1317  #endif
-
1318  #define JSON_HEDLEY_IMPORT extern
-
1319 #endif
-
1320 
-
1321 #if defined(JSON_HEDLEY_NO_THROW)
-
1322  #undef JSON_HEDLEY_NO_THROW
-
1323 #endif
-
1324 #if \
-
1325  JSON_HEDLEY_HAS_ATTRIBUTE(nothrow) || \
-
1326  JSON_HEDLEY_GCC_VERSION_CHECK(3,3,0) || \
-
1327  JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0)
-
1328  #define JSON_HEDLEY_NO_THROW __attribute__((__nothrow__))
-
1329 #elif \
-
1330  JSON_HEDLEY_MSVC_VERSION_CHECK(13,1,0) || \
-
1331  JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0)
-
1332  #define JSON_HEDLEY_NO_THROW __declspec(nothrow)
-
1333 #else
-
1334  #define JSON_HEDLEY_NO_THROW
-
1335 #endif
-
1336 
-
1337 #if defined(JSON_HEDLEY_FALL_THROUGH)
-
1338  #undef JSON_HEDLEY_FALL_THROUGH
-
1339 #endif
-
1340 #if JSON_HEDLEY_GNUC_HAS_ATTRIBUTE(fallthrough,7,0,0) && !defined(JSON_HEDLEY_PGI_VERSION)
-
1341  #define JSON_HEDLEY_FALL_THROUGH __attribute__((__fallthrough__))
-
1342 #elif JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS(clang,fallthrough)
-
1343  #define JSON_HEDLEY_FALL_THROUGH JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[clang::fallthrough]])
-
1344 #elif JSON_HEDLEY_HAS_CPP_ATTRIBUTE(fallthrough)
-
1345  #define JSON_HEDLEY_FALL_THROUGH JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[fallthrough]])
-
1346 #elif defined(__fallthrough) /* SAL */
-
1347  #define JSON_HEDLEY_FALL_THROUGH __fallthrough
-
1348 #else
-
1349  #define JSON_HEDLEY_FALL_THROUGH
-
1350 #endif
-
1351 
-
1352 #if defined(JSON_HEDLEY_RETURNS_NON_NULL)
-
1353  #undef JSON_HEDLEY_RETURNS_NON_NULL
-
1354 #endif
-
1355 #if \
-
1356  JSON_HEDLEY_HAS_ATTRIBUTE(returns_nonnull) || \
-
1357  JSON_HEDLEY_GCC_VERSION_CHECK(4,9,0)
-
1358  #define JSON_HEDLEY_RETURNS_NON_NULL __attribute__((__returns_nonnull__))
-
1359 #elif defined(_Ret_notnull_) /* SAL */
-
1360  #define JSON_HEDLEY_RETURNS_NON_NULL _Ret_notnull_
-
1361 #else
-
1362  #define JSON_HEDLEY_RETURNS_NON_NULL
-
1363 #endif
-
1364 
-
1365 #if defined(JSON_HEDLEY_ARRAY_PARAM)
-
1366  #undef JSON_HEDLEY_ARRAY_PARAM
-
1367 #endif
-
1368 #if \
-
1369  defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) && \
-
1370  !defined(__STDC_NO_VLA__) && \
-
1371  !defined(__cplusplus) && \
-
1372  !defined(JSON_HEDLEY_PGI_VERSION) && \
-
1373  !defined(JSON_HEDLEY_TINYC_VERSION)
-
1374  #define JSON_HEDLEY_ARRAY_PARAM(name) (name)
-
1375 #else
-
1376  #define JSON_HEDLEY_ARRAY_PARAM(name)
-
1377 #endif
-
1378 
-
1379 #if defined(JSON_HEDLEY_IS_CONSTANT)
-
1380  #undef JSON_HEDLEY_IS_CONSTANT
-
1381 #endif
-
1382 #if defined(JSON_HEDLEY_REQUIRE_CONSTEXPR)
-
1383  #undef JSON_HEDLEY_REQUIRE_CONSTEXPR
-
1384 #endif
-
1385 /* JSON_HEDLEY_IS_CONSTEXPR_ is for
-
1386  HEDLEY INTERNAL USE ONLY. API subject to change without notice. */
-
1387 #if defined(JSON_HEDLEY_IS_CONSTEXPR_)
-
1388  #undef JSON_HEDLEY_IS_CONSTEXPR_
-
1389 #endif
-
1390 #if \
-
1391  JSON_HEDLEY_HAS_BUILTIN(__builtin_constant_p) || \
-
1392  JSON_HEDLEY_GCC_VERSION_CHECK(3,4,0) || \
-
1393  JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \
-
1394  JSON_HEDLEY_TINYC_VERSION_CHECK(0,9,19) || \
-
1395  JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \
-
1396  JSON_HEDLEY_IBM_VERSION_CHECK(13,1,0) || \
-
1397  JSON_HEDLEY_TI_VERSION_CHECK(6,1,0) || \
-
1398  (JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,10,0) && !defined(__cplusplus)) || \
-
1399  JSON_HEDLEY_CRAY_VERSION_CHECK(8,1,0)
-
1400  #define JSON_HEDLEY_IS_CONSTANT(expr) __builtin_constant_p(expr)
-
1401 #endif
-
1402 #if !defined(__cplusplus)
-
1403 # if \
-
1404  JSON_HEDLEY_HAS_BUILTIN(__builtin_types_compatible_p) || \
-
1405  JSON_HEDLEY_GCC_VERSION_CHECK(3,4,0) || \
-
1406  JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \
-
1407  JSON_HEDLEY_IBM_VERSION_CHECK(13,1,0) || \
-
1408  JSON_HEDLEY_CRAY_VERSION_CHECK(8,1,0) || \
-
1409  JSON_HEDLEY_ARM_VERSION_CHECK(5,4,0) || \
-
1410  JSON_HEDLEY_TINYC_VERSION_CHECK(0,9,24)
-
1411 #if defined(__INTPTR_TYPE__)
-
1412  #define JSON_HEDLEY_IS_CONSTEXPR_(expr) __builtin_types_compatible_p(__typeof__((1 ? (void*) ((__INTPTR_TYPE__) ((expr) * 0)) : (int*) 0)), int*)
-
1413 #else
-
1414  #include <stdint.h>
-
1415  #define JSON_HEDLEY_IS_CONSTEXPR_(expr) __builtin_types_compatible_p(__typeof__((1 ? (void*) ((intptr_t) ((expr) * 0)) : (int*) 0)), int*)
-
1416 #endif
-
1417 # elif \
-
1418  (defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 201112L) && !defined(JSON_HEDLEY_SUNPRO_VERSION) && !defined(JSON_HEDLEY_PGI_VERSION)) || \
-
1419  JSON_HEDLEY_HAS_EXTENSION(c_generic_selections) || \
-
1420  JSON_HEDLEY_GCC_VERSION_CHECK(4,9,0) || \
-
1421  JSON_HEDLEY_INTEL_VERSION_CHECK(17,0,0) || \
-
1422  JSON_HEDLEY_IBM_VERSION_CHECK(12,1,0) || \
-
1423  JSON_HEDLEY_ARM_VERSION_CHECK(5,3,0)
-
1424 #if defined(__INTPTR_TYPE__)
-
1425  #define JSON_HEDLEY_IS_CONSTEXPR_(expr) _Generic((1 ? (void*) ((__INTPTR_TYPE__) ((expr) * 0)) : (int*) 0), int*: 1, void*: 0)
-
1426 #else
-
1427  #include <stdint.h>
-
1428  #define JSON_HEDLEY_IS_CONSTEXPR_(expr) _Generic((1 ? (void*) ((intptr_t) * 0) : (int*) 0), int*: 1, void*: 0)
-
1429 #endif
-
1430 # elif \
-
1431  defined(JSON_HEDLEY_GCC_VERSION) || \
-
1432  defined(JSON_HEDLEY_INTEL_VERSION) || \
-
1433  defined(JSON_HEDLEY_TINYC_VERSION) || \
-
1434  defined(JSON_HEDLEY_TI_VERSION) || \
-
1435  defined(__clang__)
-
1436 # define JSON_HEDLEY_IS_CONSTEXPR_(expr) ( \
-
1437  sizeof(void) != \
-
1438  sizeof(*( \
-
1439  1 ? \
-
1440  ((void*) ((expr) * 0L) ) : \
-
1441 ((struct { char v[sizeof(void) * 2]; } *) 1) \
-
1442  ) \
-
1443  ) \
-
1444  )
-
1445 # endif
-
1446 #endif
-
1447 #if defined(JSON_HEDLEY_IS_CONSTEXPR_)
-
1448  #if !defined(JSON_HEDLEY_IS_CONSTANT)
-
1449  #define JSON_HEDLEY_IS_CONSTANT(expr) JSON_HEDLEY_IS_CONSTEXPR_(expr)
-
1450  #endif
-
1451  #define JSON_HEDLEY_REQUIRE_CONSTEXPR(expr) (JSON_HEDLEY_IS_CONSTEXPR_(expr) ? (expr) : (-1))
-
1452 #else
-
1453  #if !defined(JSON_HEDLEY_IS_CONSTANT)
-
1454  #define JSON_HEDLEY_IS_CONSTANT(expr) (0)
-
1455  #endif
-
1456  #define JSON_HEDLEY_REQUIRE_CONSTEXPR(expr) (expr)
-
1457 #endif
-
1458 
-
1459 #if defined(JSON_HEDLEY_BEGIN_C_DECLS)
-
1460  #undef JSON_HEDLEY_BEGIN_C_DECLS
-
1461 #endif
-
1462 #if defined(JSON_HEDLEY_END_C_DECLS)
-
1463  #undef JSON_HEDLEY_END_C_DECLS
-
1464 #endif
-
1465 #if defined(JSON_HEDLEY_C_DECL)
-
1466  #undef JSON_HEDLEY_C_DECL
-
1467 #endif
-
1468 #if defined(__cplusplus)
-
1469  #define JSON_HEDLEY_BEGIN_C_DECLS extern "C" {
-
1470  #define JSON_HEDLEY_END_C_DECLS }
-
1471  #define JSON_HEDLEY_C_DECL extern "C"
-
1472 #else
-
1473  #define JSON_HEDLEY_BEGIN_C_DECLS
-
1474  #define JSON_HEDLEY_END_C_DECLS
-
1475  #define JSON_HEDLEY_C_DECL
-
1476 #endif
-
1477 
-
1478 #if defined(JSON_HEDLEY_STATIC_ASSERT)
-
1479  #undef JSON_HEDLEY_STATIC_ASSERT
-
1480 #endif
-
1481 #if \
-
1482  !defined(__cplusplus) && ( \
-
1483  (defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 201112L)) || \
-
1484  JSON_HEDLEY_HAS_FEATURE(c_static_assert) || \
-
1485  JSON_HEDLEY_GCC_VERSION_CHECK(6,0,0) || \
-
1486  JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \
-
1487  defined(_Static_assert) \
-
1488  )
-
1489 # define JSON_HEDLEY_STATIC_ASSERT(expr, message) _Static_assert(expr, message)
-
1490 #elif \
-
1491  (defined(__cplusplus) && (__cplusplus >= 201103L)) || \
-
1492  JSON_HEDLEY_MSVC_VERSION_CHECK(16,0,0) || \
-
1493  (defined(__cplusplus) && JSON_HEDLEY_TI_VERSION_CHECK(8,3,0))
-
1494 # define JSON_HEDLEY_STATIC_ASSERT(expr, message) JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(static_assert(expr, message))
-
1495 #else
-
1496 # define JSON_HEDLEY_STATIC_ASSERT(expr, message)
-
1497 #endif
-
1498 
-
1499 #if defined(JSON_HEDLEY_CONST_CAST)
-
1500  #undef JSON_HEDLEY_CONST_CAST
-
1501 #endif
-
1502 #if defined(__cplusplus)
-
1503 # define JSON_HEDLEY_CONST_CAST(T, expr) (const_cast<T>(expr))
-
1504 #elif \
-
1505  JSON_HEDLEY_HAS_WARNING("-Wcast-qual") || \
-
1506  JSON_HEDLEY_GCC_VERSION_CHECK(4,6,0) || \
-
1507  JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0)
-
1508 # define JSON_HEDLEY_CONST_CAST(T, expr) (__extension__ ({ \
-
1509  JSON_HEDLEY_DIAGNOSTIC_PUSH \
-
1510  JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL \
-
1511  ((T) (expr)); \
-
1512  JSON_HEDLEY_DIAGNOSTIC_POP \
-
1513  }))
-
1514 #else
-
1515 # define JSON_HEDLEY_CONST_CAST(T, expr) ((T) (expr))
-
1516 #endif
-
1517 
-
1518 #if defined(JSON_HEDLEY_REINTERPRET_CAST)
-
1519  #undef JSON_HEDLEY_REINTERPRET_CAST
-
1520 #endif
-
1521 #if defined(__cplusplus)
-
1522  #define JSON_HEDLEY_REINTERPRET_CAST(T, expr) (reinterpret_cast<T>(expr))
-
1523 #else
-
1524  #define JSON_HEDLEY_REINTERPRET_CAST(T, expr) (*((T*) &(expr)))
-
1525 #endif
-
1526 
-
1527 #if defined(JSON_HEDLEY_STATIC_CAST)
-
1528  #undef JSON_HEDLEY_STATIC_CAST
-
1529 #endif
-
1530 #if defined(__cplusplus)
-
1531  #define JSON_HEDLEY_STATIC_CAST(T, expr) (static_cast<T>(expr))
-
1532 #else
-
1533  #define JSON_HEDLEY_STATIC_CAST(T, expr) ((T) (expr))
-
1534 #endif
-
1535 
-
1536 #if defined(JSON_HEDLEY_CPP_CAST)
-
1537  #undef JSON_HEDLEY_CPP_CAST
-
1538 #endif
-
1539 #if defined(__cplusplus)
-
1540  #define JSON_HEDLEY_CPP_CAST(T, expr) static_cast<T>(expr)
-
1541 #else
-
1542  #define JSON_HEDLEY_CPP_CAST(T, expr) (expr)
-
1543 #endif
-
1544 
-
1545 #if defined(JSON_HEDLEY_NULL)
-
1546  #undef JSON_HEDLEY_NULL
-
1547 #endif
-
1548 #if defined(__cplusplus)
-
1549  #if __cplusplus >= 201103L
-
1550  #define JSON_HEDLEY_NULL JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(nullptr)
-
1551  #elif defined(NULL)
-
1552  #define JSON_HEDLEY_NULL NULL
-
1553  #else
-
1554  #define JSON_HEDLEY_NULL JSON_HEDLEY_STATIC_CAST(void*, 0)
-
1555  #endif
-
1556 #elif defined(NULL)
-
1557  #define JSON_HEDLEY_NULL NULL
-
1558 #else
-
1559  #define JSON_HEDLEY_NULL ((void*) 0)
-
1560 #endif
-
1561 
-
1562 #if defined(JSON_HEDLEY_MESSAGE)
-
1563  #undef JSON_HEDLEY_MESSAGE
-
1564 #endif
-
1565 #if JSON_HEDLEY_HAS_WARNING("-Wunknown-pragmas")
-
1566 # define JSON_HEDLEY_MESSAGE(msg) \
-
1567  JSON_HEDLEY_DIAGNOSTIC_PUSH \
-
1568  JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS \
-
1569  JSON_HEDLEY_PRAGMA(message msg) \
-
1570  JSON_HEDLEY_DIAGNOSTIC_POP
-
1571 #elif \
-
1572  JSON_HEDLEY_GCC_VERSION_CHECK(4,4,0) || \
-
1573  JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0)
-
1574 # define JSON_HEDLEY_MESSAGE(msg) JSON_HEDLEY_PRAGMA(message msg)
-
1575 #elif JSON_HEDLEY_CRAY_VERSION_CHECK(5,0,0)
-
1576 # define JSON_HEDLEY_MESSAGE(msg) JSON_HEDLEY_PRAGMA(_CRI message msg)
-
1577 #elif JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0)
-
1578 # define JSON_HEDLEY_MESSAGE(msg) JSON_HEDLEY_PRAGMA(message(msg))
-
1579 #elif JSON_HEDLEY_PELLES_VERSION_CHECK(2,0,0)
-
1580 # define JSON_HEDLEY_MESSAGE(msg) JSON_HEDLEY_PRAGMA(message(msg))
-
1581 #else
-
1582 # define JSON_HEDLEY_MESSAGE(msg)
-
1583 #endif
-
1584 
-
1585 #if defined(JSON_HEDLEY_WARNING)
-
1586  #undef JSON_HEDLEY_WARNING
-
1587 #endif
-
1588 #if JSON_HEDLEY_HAS_WARNING("-Wunknown-pragmas")
-
1589 # define JSON_HEDLEY_WARNING(msg) \
-
1590  JSON_HEDLEY_DIAGNOSTIC_PUSH \
-
1591  JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS \
-
1592  JSON_HEDLEY_PRAGMA(clang warning msg) \
-
1593  JSON_HEDLEY_DIAGNOSTIC_POP
-
1594 #elif \
-
1595  JSON_HEDLEY_GCC_VERSION_CHECK(4,8,0) || \
-
1596  JSON_HEDLEY_PGI_VERSION_CHECK(18,4,0)
-
1597 # define JSON_HEDLEY_WARNING(msg) JSON_HEDLEY_PRAGMA(GCC warning msg)
-
1598 #elif JSON_HEDLEY_MSVC_VERSION_CHECK(15,0,0)
-
1599 # define JSON_HEDLEY_WARNING(msg) JSON_HEDLEY_PRAGMA(message(msg))
-
1600 #else
-
1601 # define JSON_HEDLEY_WARNING(msg) JSON_HEDLEY_MESSAGE(msg)
-
1602 #endif
-
1603 
-
1604 #if defined(JSON_HEDLEY_REQUIRE)
-
1605  #undef JSON_HEDLEY_REQUIRE
-
1606 #endif
-
1607 #if defined(JSON_HEDLEY_REQUIRE_MSG)
-
1608  #undef JSON_HEDLEY_REQUIRE_MSG
-
1609 #endif
-
1610 #if JSON_HEDLEY_HAS_ATTRIBUTE(diagnose_if)
-
1611 # if JSON_HEDLEY_HAS_WARNING("-Wgcc-compat")
-
1612 # define JSON_HEDLEY_REQUIRE(expr) \
-
1613  JSON_HEDLEY_DIAGNOSTIC_PUSH \
-
1614  _Pragma("clang diagnostic ignored \"-Wgcc-compat\"") \
-
1615  __attribute__((diagnose_if(!(expr), #expr, "error"))) \
-
1616  JSON_HEDLEY_DIAGNOSTIC_POP
-
1617 # define JSON_HEDLEY_REQUIRE_MSG(expr,msg) \
-
1618  JSON_HEDLEY_DIAGNOSTIC_PUSH \
-
1619  _Pragma("clang diagnostic ignored \"-Wgcc-compat\"") \
-
1620  __attribute__((diagnose_if(!(expr), msg, "error"))) \
-
1621  JSON_HEDLEY_DIAGNOSTIC_POP
-
1622 # else
-
1623 # define JSON_HEDLEY_REQUIRE(expr) __attribute__((diagnose_if(!(expr), #expr, "error")))
-
1624 # define JSON_HEDLEY_REQUIRE_MSG(expr,msg) __attribute__((diagnose_if(!(expr), msg, "error")))
-
1625 # endif
-
1626 #else
-
1627 # define JSON_HEDLEY_REQUIRE(expr)
-
1628 # define JSON_HEDLEY_REQUIRE_MSG(expr,msg)
-
1629 #endif
-
1630 
-
1631 #if defined(JSON_HEDLEY_FLAGS)
-
1632  #undef JSON_HEDLEY_FLAGS
-
1633 #endif
-
1634 #if JSON_HEDLEY_HAS_ATTRIBUTE(flag_enum)
-
1635  #define JSON_HEDLEY_FLAGS __attribute__((__flag_enum__))
-
1636 #endif
-
1637 
-
1638 #if defined(JSON_HEDLEY_FLAGS_CAST)
-
1639  #undef JSON_HEDLEY_FLAGS_CAST
-
1640 #endif
-
1641 #if JSON_HEDLEY_INTEL_VERSION_CHECK(19,0,0)
-
1642 # define JSON_HEDLEY_FLAGS_CAST(T, expr) (__extension__ ({ \
-
1643  JSON_HEDLEY_DIAGNOSTIC_PUSH \
-
1644  _Pragma("warning(disable:188)") \
-
1645  ((T) (expr)); \
-
1646  JSON_HEDLEY_DIAGNOSTIC_POP \
-
1647  }))
-
1648 #else
-
1649 # define JSON_HEDLEY_FLAGS_CAST(T, expr) JSON_HEDLEY_STATIC_CAST(T, expr)
-
1650 #endif
-
1651 
-
1652 #if defined(JSON_HEDLEY_EMPTY_BASES)
-
1653  #undef JSON_HEDLEY_EMPTY_BASES
-
1654 #endif
-
1655 #if JSON_HEDLEY_MSVC_VERSION_CHECK(19,0,23918) && !JSON_HEDLEY_MSVC_VERSION_CHECK(20,0,0)
-
1656  #define JSON_HEDLEY_EMPTY_BASES __declspec(empty_bases)
-
1657 #else
-
1658  #define JSON_HEDLEY_EMPTY_BASES
-
1659 #endif
-
1660 
-
1661 /* Remaining macros are deprecated. */
-
1662 
-
1663 #if defined(JSON_HEDLEY_GCC_NOT_CLANG_VERSION_CHECK)
-
1664  #undef JSON_HEDLEY_GCC_NOT_CLANG_VERSION_CHECK
-
1665 #endif
-
1666 #if defined(__clang__)
-
1667  #define JSON_HEDLEY_GCC_NOT_CLANG_VERSION_CHECK(major,minor,patch) (0)
-
1668 #else
-
1669  #define JSON_HEDLEY_GCC_NOT_CLANG_VERSION_CHECK(major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch)
-
1670 #endif
-
1671 
-
1672 #if defined(JSON_HEDLEY_CLANG_HAS_ATTRIBUTE)
-
1673  #undef JSON_HEDLEY_CLANG_HAS_ATTRIBUTE
-
1674 #endif
-
1675 #define JSON_HEDLEY_CLANG_HAS_ATTRIBUTE(attribute) JSON_HEDLEY_HAS_ATTRIBUTE(attribute)
-
1676 
-
1677 #if defined(JSON_HEDLEY_CLANG_HAS_CPP_ATTRIBUTE)
-
1678  #undef JSON_HEDLEY_CLANG_HAS_CPP_ATTRIBUTE
-
1679 #endif
-
1680 #define JSON_HEDLEY_CLANG_HAS_CPP_ATTRIBUTE(attribute) JSON_HEDLEY_HAS_CPP_ATTRIBUTE(attribute)
-
1681 
-
1682 #if defined(JSON_HEDLEY_CLANG_HAS_BUILTIN)
-
1683  #undef JSON_HEDLEY_CLANG_HAS_BUILTIN
-
1684 #endif
-
1685 #define JSON_HEDLEY_CLANG_HAS_BUILTIN(builtin) JSON_HEDLEY_HAS_BUILTIN(builtin)
-
1686 
-
1687 #if defined(JSON_HEDLEY_CLANG_HAS_FEATURE)
-
1688  #undef JSON_HEDLEY_CLANG_HAS_FEATURE
-
1689 #endif
-
1690 #define JSON_HEDLEY_CLANG_HAS_FEATURE(feature) JSON_HEDLEY_HAS_FEATURE(feature)
-
1691 
-
1692 #if defined(JSON_HEDLEY_CLANG_HAS_EXTENSION)
-
1693  #undef JSON_HEDLEY_CLANG_HAS_EXTENSION
-
1694 #endif
-
1695 #define JSON_HEDLEY_CLANG_HAS_EXTENSION(extension) JSON_HEDLEY_HAS_EXTENSION(extension)
-
1696 
-
1697 #if defined(JSON_HEDLEY_CLANG_HAS_DECLSPEC_DECLSPEC_ATTRIBUTE)
-
1698  #undef JSON_HEDLEY_CLANG_HAS_DECLSPEC_DECLSPEC_ATTRIBUTE
-
1699 #endif
-
1700 #define JSON_HEDLEY_CLANG_HAS_DECLSPEC_ATTRIBUTE(attribute) JSON_HEDLEY_HAS_DECLSPEC_ATTRIBUTE(attribute)
-
1701 
-
1702 #if defined(JSON_HEDLEY_CLANG_HAS_WARNING)
-
1703  #undef JSON_HEDLEY_CLANG_HAS_WARNING
-
1704 #endif
-
1705 #define JSON_HEDLEY_CLANG_HAS_WARNING(warning) JSON_HEDLEY_HAS_WARNING(warning)
-
1706 
-
1707 #endif /* !defined(JSON_HEDLEY_VERSION) || (JSON_HEDLEY_VERSION < X) */
-
1708 
-
1709 
-
1710 // This file contains all internal macro definitions
-
1711 // You MUST include macro_unscope.hpp at the end of json.hpp to undef all of them
-
1712 
-
1713 // exclude unsupported compilers
-
1714 #if !defined(JSON_SKIP_UNSUPPORTED_COMPILER_CHECK)
-
1715  #if defined(__clang__)
-
1716  #if (__clang_major__ * 10000 + __clang_minor__ * 100 + __clang_patchlevel__) < 30400
-
1717  #error "unsupported Clang version - see https://github.com/nlohmann/json#supported-compilers"
-
1718  #endif
-
1719  #elif defined(__GNUC__) && !(defined(__ICC) || defined(__INTEL_COMPILER))
-
1720  #if (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) < 40800
-
1721  #error "unsupported GCC version - see https://github.com/nlohmann/json#supported-compilers"
-
1722  #endif
-
1723  #endif
-
1724 #endif
-
1725 
-
1726 // C++ language standard detection
-
1727 #if (defined(__cplusplus) && __cplusplus >= 201703L) || (defined(_HAS_CXX17) && _HAS_CXX17 == 1) // fix for issue #464
-
1728  #define JSON_HAS_CPP_17
-
1729  #define JSON_HAS_CPP_14
-
1730 #elif (defined(__cplusplus) && __cplusplus >= 201402L) || (defined(_HAS_CXX14) && _HAS_CXX14 == 1)
-
1731  #define JSON_HAS_CPP_14
-
1732 #endif
-
1733 
-
1734 // disable float-equal warnings on GCC/clang
-
1735 #if defined(__clang__) || defined(__GNUC__) || defined(__GNUG__)
-
1736  #pragma GCC diagnostic push
-
1737  #pragma GCC diagnostic ignored "-Wfloat-equal"
-
1738 #endif
-
1739 
-
1740 // disable documentation warnings on clang
-
1741 #if defined(__clang__)
-
1742  #pragma GCC diagnostic push
-
1743  #pragma GCC diagnostic ignored "-Wdocumentation"
-
1744 #endif
-
1745 
-
1746 // allow to disable exceptions
-
1747 #if (defined(__cpp_exceptions) || defined(__EXCEPTIONS) || defined(_CPPUNWIND)) && !defined(JSON_NOEXCEPTION)
-
1748  #define JSON_THROW(exception) throw exception
-
1749  #define JSON_TRY try
-
1750  #define JSON_CATCH(exception) catch(exception)
-
1751  #define JSON_INTERNAL_CATCH(exception) catch(exception)
-
1752 #else
-
1753  #include <cstdlib>
-
1754  #define JSON_THROW(exception) std::abort()
-
1755  #define JSON_TRY if(true)
-
1756  #define JSON_CATCH(exception) if(false)
-
1757  #define JSON_INTERNAL_CATCH(exception) if(false)
-
1758 #endif
-
1759 
-
1760 // override exception macros
-
1761 #if defined(JSON_THROW_USER)
-
1762  #undef JSON_THROW
-
1763  #define JSON_THROW JSON_THROW_USER
-
1764 #endif
-
1765 #if defined(JSON_TRY_USER)
-
1766  #undef JSON_TRY
-
1767  #define JSON_TRY JSON_TRY_USER
-
1768 #endif
-
1769 #if defined(JSON_CATCH_USER)
-
1770  #undef JSON_CATCH
-
1771  #define JSON_CATCH JSON_CATCH_USER
-
1772  #undef JSON_INTERNAL_CATCH
-
1773  #define JSON_INTERNAL_CATCH JSON_CATCH_USER
-
1774 #endif
-
1775 #if defined(JSON_INTERNAL_CATCH_USER)
-
1776  #undef JSON_INTERNAL_CATCH
-
1777  #define JSON_INTERNAL_CATCH JSON_INTERNAL_CATCH_USER
-
1778 #endif
-
1779 
-
1785 #define NLOHMANN_JSON_SERIALIZE_ENUM(ENUM_TYPE, ...) \
-
1786  template<typename BasicJsonType> \
-
1787  inline void to_json(BasicJsonType& j, const ENUM_TYPE& e) \
-
1788  { \
-
1789  static_assert(std::is_enum<ENUM_TYPE>::value, #ENUM_TYPE " must be an enum!"); \
-
1790  static const std::pair<ENUM_TYPE, BasicJsonType> m[] = __VA_ARGS__; \
-
1791  auto it = std::find_if(std::begin(m), std::end(m), \
-
1792  [e](const std::pair<ENUM_TYPE, BasicJsonType>& ej_pair) -> bool \
-
1793  { \
-
1794  return ej_pair.first == e; \
-
1795  }); \
-
1796  j = ((it != std::end(m)) ? it : std::begin(m))->second; \
-
1797  } \
-
1798  template<typename BasicJsonType> \
-
1799  inline void from_json(const BasicJsonType& j, ENUM_TYPE& e) \
-
1800  { \
-
1801  static_assert(std::is_enum<ENUM_TYPE>::value, #ENUM_TYPE " must be an enum!"); \
-
1802  static const std::pair<ENUM_TYPE, BasicJsonType> m[] = __VA_ARGS__; \
-
1803  auto it = std::find_if(std::begin(m), std::end(m), \
-
1804  [&j](const std::pair<ENUM_TYPE, BasicJsonType>& ej_pair) -> bool \
-
1805  { \
-
1806  return ej_pair.second == j; \
-
1807  }); \
-
1808  e = ((it != std::end(m)) ? it : std::begin(m))->first; \
-
1809  }
-
1810 
-
1811 // Ugly macros to avoid uglier copy-paste when specializing basic_json. They
-
1812 // may be removed in the future once the class is split.
-
1813 
-
1814 #define NLOHMANN_BASIC_JSON_TPL_DECLARATION \
-
1815  template<template<typename, typename, typename...> class ObjectType, \
-
1816  template<typename, typename...> class ArrayType, \
-
1817  class StringType, class BooleanType, class NumberIntegerType, \
-
1818  class NumberUnsignedType, class NumberFloatType, \
-
1819  template<typename> class AllocatorType, \
-
1820  template<typename, typename = void> class JSONSerializer>
-
1821 
-
1822 #define NLOHMANN_BASIC_JSON_TPL \
-
1823  basic_json<ObjectType, ArrayType, StringType, BooleanType, \
-
1824  NumberIntegerType, NumberUnsignedType, NumberFloatType, \
-
1825  AllocatorType, JSONSerializer>
-
1826 
-
1827 
-
1828 namespace nlohmann
-
1829 {
-
1830 namespace detail
-
1831 {
-
1833 // exceptions //
-
1835 
-
1864 class exception : public std::exception
-
1865 {
-
1866  public:
- -
1869  const char* what() const noexcept override
-
1870  {
-
1871  return m.what();
-
1872  }
-
1873 
-
1875  const int id;
-
1876 
-
1877  protected:
- -
1879  exception(int id_, const char* what_arg) : id(id_), m(what_arg) {}
-
1880 
-
1881  static std::string name(const std::string& ename, int id_)
-
1882  {
-
1883  return "[json.exception." + ename + "." + std::to_string(id_) + "] ";
-
1884  }
-
1885 
-
1886  private:
-
1888  std::runtime_error m;
-
1889 };
-
1890 
-
1935 class parse_error : public exception
-
1936 {
-
1937  public:
-
1947  static parse_error create(int id_, const position_t& pos, const std::string& what_arg)
-
1948  {
-
1949  std::string w = exception::name("parse_error", id_) + "parse error" +
-
1950  position_string(pos) + ": " + what_arg;
-
1951  return parse_error(id_, pos.chars_read_total, w.c_str());
-
1952  }
-
1953 
-
1954  static parse_error create(int id_, std::size_t byte_, const std::string& what_arg)
-
1955  {
-
1956  std::string w = exception::name("parse_error", id_) + "parse error" +
-
1957  (byte_ != 0 ? (" at byte " + std::to_string(byte_)) : "") +
-
1958  ": " + what_arg;
-
1959  return parse_error(id_, byte_, w.c_str());
-
1960  }
-
1961 
-
1971  const std::size_t byte;
-
1972 
-
1973  private:
-
1974  parse_error(int id_, std::size_t byte_, const char* what_arg)
-
1975  : exception(id_, what_arg), byte(byte_) {}
-
1976 
-
1977  static std::string position_string(const position_t& pos)
-
1978  {
-
1979  return " at line " + std::to_string(pos.lines_read + 1) +
-
1980  ", column " + std::to_string(pos.chars_read_current_line);
-
1981  }
-
1982 };
-
1983 
- -
2022 {
-
2023  public:
-
2024  static invalid_iterator create(int id_, const std::string& what_arg)
-
2025  {
-
2026  std::string w = exception::name("invalid_iterator", id_) + what_arg;
-
2027  return invalid_iterator(id_, w.c_str());
-
2028  }
-
2029 
-
2030  private:
- -
2032  invalid_iterator(int id_, const char* what_arg)
-
2033  : exception(id_, what_arg) {}
-
2034 };
-
2035 
-
2075 class type_error : public exception
-
2076 {
-
2077  public:
-
2078  static type_error create(int id_, const std::string& what_arg)
-
2079  {
-
2080  std::string w = exception::name("type_error", id_) + what_arg;
-
2081  return type_error(id_, w.c_str());
-
2082  }
-
2083 
-
2084  private:
- -
2086  type_error(int id_, const char* what_arg) : exception(id_, what_arg) {}
-
2087 };
-
2088 
-
2122 class out_of_range : public exception
-
2123 {
-
2124  public:
-
2125  static out_of_range create(int id_, const std::string& what_arg)
-
2126  {
-
2127  std::string w = exception::name("out_of_range", id_) + what_arg;
-
2128  return out_of_range(id_, w.c_str());
-
2129  }
-
2130 
-
2131  private:
- -
2133  out_of_range(int id_, const char* what_arg) : exception(id_, what_arg) {}
-
2134 };
-
2135 
-
2160 class other_error : public exception
-
2161 {
-
2162  public:
-
2163  static other_error create(int id_, const std::string& what_arg)
-
2164  {
-
2165  std::string w = exception::name("other_error", id_) + what_arg;
-
2166  return other_error(id_, w.c_str());
-
2167  }
-
2168 
-
2169  private:
- -
2171  other_error(int id_, const char* what_arg) : exception(id_, what_arg) {}
-
2172 };
-
2173 } // namespace detail
-
2174 } // namespace nlohmann
-
2175 
-
2176 // #include <nlohmann/detail/macro_scope.hpp>
-
2177 
-
2178 // #include <nlohmann/detail/meta/cpp_future.hpp>
-
2179 
-
2180 
-
2181 #include <ciso646> // not
-
2182 #include <cstddef> // size_t
-
2183 #include <type_traits> // conditional, enable_if, false_type, integral_constant, is_constructible, is_integral, is_same, remove_cv, remove_reference, true_type
-
2184 
-
2185 namespace nlohmann
-
2186 {
-
2187 namespace detail
-
2188 {
-
2189 // alias templates to reduce boilerplate
-
2190 template<bool B, typename T = void>
-
2191 using enable_if_t = typename std::enable_if<B, T>::type;
-
2192 
-
2193 template<typename T>
-
2194 using uncvref_t = typename std::remove_cv<typename std::remove_reference<T>::type>::type;
-
2195 
-
2196 // implementation of C++14 index_sequence and affiliates
-
2197 // source: https://stackoverflow.com/a/32223343
-
2198 template<std::size_t... Ints>
- -
2200 {
- -
2202  using value_type = std::size_t;
-
2203  static constexpr std::size_t size() noexcept
-
2204  {
-
2205  return sizeof...(Ints);
-
2206  }
-
2207 };
-
2208 
-
2209 template<class Sequence1, class Sequence2>
- -
2211 
-
2212 template<std::size_t... I1, std::size_t... I2>
- -
2214  : index_sequence < I1..., (sizeof...(I1) + I2)... > {};
-
2215 
-
2216 template<std::size_t N>
- -
2218  : merge_and_renumber < typename make_index_sequence < N / 2 >::type,
-
2219  typename make_index_sequence < N - N / 2 >::type > {};
-
2220 
-
2221 template<> struct make_index_sequence<0> : index_sequence<> {};
-
2222 template<> struct make_index_sequence<1> : index_sequence<0> {};
-
2223 
-
2224 template<typename... Ts>
- -
2226 
-
2227 // dispatch utility (taken from ranges-v3)
-
2228 template<unsigned N> struct priority_tag : priority_tag < N - 1 > {};
-
2229 template<> struct priority_tag<0> {};
-
2230 
-
2231 // taken from ranges-v3
-
2232 template<typename T>
- -
2234 {
-
2235  static constexpr T value{};
-
2236 };
-
2237 
-
2238 template<typename T>
-
2239 constexpr T static_const<T>::value;
-
2240 } // namespace detail
-
2241 } // namespace nlohmann
-
2242 
-
2243 // #include <nlohmann/detail/meta/type_traits.hpp>
-
2244 
-
2245 
-
2246 #include <ciso646> // not
-
2247 #include <limits> // numeric_limits
-
2248 #include <type_traits> // false_type, is_constructible, is_integral, is_same, true_type
-
2249 #include <utility> // declval
-
2250 
-
2251 // #include <nlohmann/detail/iterators/iterator_traits.hpp>
-
2252 
-
2253 
-
2254 #include <iterator> // random_access_iterator_tag
-
2255 
-
2256 // #include <nlohmann/detail/meta/void_t.hpp>
-
2257 
-
2258 
-
2259 namespace nlohmann
-
2260 {
-
2261 namespace detail
-
2262 {
-
2263 template <typename ...Ts> struct make_void
-
2264 {
-
2265  using type = void;
-
2266 };
-
2267 template <typename ...Ts> using void_t = typename make_void<Ts...>::type;
-
2268 } // namespace detail
-
2269 } // namespace nlohmann
-
2270 
-
2271 // #include <nlohmann/detail/meta/cpp_future.hpp>
-
2272 
-
2273 
-
2274 namespace nlohmann
-
2275 {
-
2276 namespace detail
-
2277 {
-
2278 template <typename It, typename = void>
-
2279 struct iterator_types {};
-
2280 
-
2281 template <typename It>
- -
2283  It,
-
2284  void_t<typename It::difference_type, typename It::value_type, typename It::pointer,
-
2285  typename It::reference, typename It::iterator_category >>
-
2286 {
-
2287  using difference_type = typename It::difference_type;
-
2288  using value_type = typename It::value_type;
-
2289  using pointer = typename It::pointer;
-
2290  using reference = typename It::reference;
-
2291  using iterator_category = typename It::iterator_category;
-
2292 };
-
2293 
-
2294 // This is required as some compilers implement std::iterator_traits in a way that
-
2295 // doesn't work with SFINAE. See https://github.com/nlohmann/json/issues/1341.
-
2296 template <typename T, typename = void>
- -
2298 {
-
2299 };
-
2300 
-
2301 template <typename T>
-
2302 struct iterator_traits < T, enable_if_t < !std::is_pointer<T>::value >>
-
2303  : iterator_types<T>
-
2304 {
-
2305 };
-
2306 
-
2307 template <typename T>
- -
2309 {
-
2310  using iterator_category = std::random_access_iterator_tag;
-
2311  using value_type = T;
-
2312  using difference_type = ptrdiff_t;
-
2313  using pointer = T*;
-
2314  using reference = T&;
-
2315 };
-
2316 } // namespace detail
-
2317 } // namespace nlohmann
-
2318 
-
2319 // #include <nlohmann/detail/macro_scope.hpp>
-
2320 
-
2321 // #include <nlohmann/detail/meta/cpp_future.hpp>
-
2322 
-
2323 // #include <nlohmann/detail/meta/detected.hpp>
-
2324 
-
2325 
-
2326 #include <type_traits>
-
2327 
-
2328 // #include <nlohmann/detail/meta/void_t.hpp>
-
2329 
-
2330 
-
2331 // http://en.cppreference.com/w/cpp/experimental/is_detected
-
2332 namespace nlohmann
-
2333 {
-
2334 namespace detail
-
2335 {
-
2336 struct nonesuch
-
2337 {
-
2338  nonesuch() = delete;
-
2339  ~nonesuch() = delete;
-
2340  nonesuch(nonesuch const&) = delete;
-
2341  nonesuch(nonesuch const&&) = delete;
-
2342  void operator=(nonesuch const&) = delete;
-
2343  void operator=(nonesuch&&) = delete;
-
2344 };
-
2345 
-
2346 template <class Default,
-
2347  class AlwaysVoid,
-
2348  template <class...> class Op,
-
2349  class... Args>
-
2350 struct detector
-
2351 {
-
2352  using value_t = std::false_type;
-
2353  using type = Default;
-
2354 };
-
2355 
-
2356 template <class Default, template <class...> class Op, class... Args>
-
2357 struct detector<Default, void_t<Op<Args...>>, Op, Args...>
-
2358 {
-
2359  using value_t = std::true_type;
-
2360  using type = Op<Args...>;
-
2361 };
-
2362 
-
2363 template <template <class...> class Op, class... Args>
-
2364 using is_detected = typename detector<nonesuch, void, Op, Args...>::value_t;
-
2365 
-
2366 template <template <class...> class Op, class... Args>
-
2367 using detected_t = typename detector<nonesuch, void, Op, Args...>::type;
-
2368 
-
2369 template <class Default, template <class...> class Op, class... Args>
-
2370 using detected_or = detector<Default, void, Op, Args...>;
-
2371 
-
2372 template <class Default, template <class...> class Op, class... Args>
-
2373 using detected_or_t = typename detected_or<Default, Op, Args...>::type;
-
2374 
-
2375 template <class Expected, template <class...> class Op, class... Args>
-
2376 using is_detected_exact = std::is_same<Expected, detected_t<Op, Args...>>;
-
2377 
-
2378 template <class To, template <class...> class Op, class... Args>
- -
2380  std::is_convertible<detected_t<Op, Args...>, To>;
-
2381 } // namespace detail
-
2382 } // namespace nlohmann
-
2383 
-
2384 // #include <nlohmann/json_fwd.hpp>
-
2385 #ifndef INCLUDE_NLOHMANN_JSON_FWD_HPP_
-
2386 #define INCLUDE_NLOHMANN_JSON_FWD_HPP_
-
2387 
-
2388 #include <cstdint> // int64_t, uint64_t
-
2389 #include <map> // map
-
2390 #include <memory> // allocator
-
2391 #include <string> // string
-
2392 #include <vector> // vector
-
2393 
-
2399 namespace nlohmann
-
2400 {
-
2408 template<typename T = void, typename SFINAE = void>
- -
2410 
-
2411 template<template<typename U, typename V, typename... Args> class ObjectType =
-
2412  std::map,
-
2413  template<typename U, typename... Args> class ArrayType = std::vector,
-
2414  class StringType = std::string, class BooleanType = bool,
-
2415  class NumberIntegerType = std::int64_t,
-
2416  class NumberUnsignedType = std::uint64_t,
-
2417  class NumberFloatType = double,
-
2418  template<typename U> class AllocatorType = std::allocator,
-
2419  template<typename T, typename SFINAE = void> class JSONSerializer =
- - -
2422 
-
2434 template<typename BasicJsonType>
- -
2436 
- -
2446 } // namespace nlohmann
-
2447 
-
2448 #endif // INCLUDE_NLOHMANN_JSON_FWD_HPP_
-
2449 
-
2450 
-
2451 namespace nlohmann
-
2452 {
-
2461 namespace detail
-
2462 {
-
2464 // helpers //
-
2466 
-
2467 // Note to maintainers:
-
2468 //
-
2469 // Every trait in this file expects a non CV-qualified type.
-
2470 // The only exceptions are in the 'aliases for detected' section
-
2471 // (i.e. those of the form: decltype(T::member_function(std::declval<T>())))
-
2472 //
-
2473 // In this case, T has to be properly CV-qualified to constraint the function arguments
-
2474 // (e.g. to_json(BasicJsonType&, const T&))
-
2475 
-
2476 template<typename> struct is_basic_json : std::false_type {};
-
2477 
- -
2479 struct is_basic_json<NLOHMANN_BASIC_JSON_TPL> : std::true_type {};
-
2480 
-
2482 // aliases for detected //
-
2484 
-
2485 template <typename T>
-
2486 using mapped_type_t = typename T::mapped_type;
-
2487 
-
2488 template <typename T>
-
2489 using key_type_t = typename T::key_type;
-
2490 
-
2491 template <typename T>
-
2492 using value_type_t = typename T::value_type;
-
2493 
-
2494 template <typename T>
-
2495 using difference_type_t = typename T::difference_type;
-
2496 
-
2497 template <typename T>
-
2498 using pointer_t = typename T::pointer;
-
2499 
-
2500 template <typename T>
-
2501 using reference_t = typename T::reference;
-
2502 
-
2503 template <typename T>
-
2504 using iterator_category_t = typename T::iterator_category;
-
2505 
-
2506 template <typename T>
-
2507 using iterator_t = typename T::iterator;
-
2508 
-
2509 template <typename T, typename... Args>
-
2510 using to_json_function = decltype(T::to_json(std::declval<Args>()...));
-
2511 
-
2512 template <typename T, typename... Args>
-
2513 using from_json_function = decltype(T::from_json(std::declval<Args>()...));
-
2514 
-
2515 template <typename T, typename U>
-
2516 using get_template_function = decltype(std::declval<T>().template get<U>());
-
2517 
-
2518 // trait checking if JSONSerializer<T>::from_json(json const&, udt&) exists
-
2519 template <typename BasicJsonType, typename T, typename = void>
-
2520 struct has_from_json : std::false_type {};
-
2521 
-
2522 template <typename BasicJsonType, typename T>
-
2523 struct has_from_json<BasicJsonType, T,
-
2524  enable_if_t<not is_basic_json<T>::value>>
-
2525 {
-
2526  using serializer = typename BasicJsonType::template json_serializer<T, void>;
-
2527 
-
2528  static constexpr bool value =
- -
2530  const BasicJsonType&, T&>::value;
-
2531 };
-
2532 
-
2533 // This trait checks if JSONSerializer<T>::from_json(json const&) exists
-
2534 // this overload is used for non-default-constructible user-defined-types
-
2535 template <typename BasicJsonType, typename T, typename = void>
-
2536 struct has_non_default_from_json : std::false_type {};
-
2537 
-
2538 template<typename BasicJsonType, typename T>
-
2539 struct has_non_default_from_json<BasicJsonType, T, enable_if_t<not is_basic_json<T>::value>>
-
2540 {
-
2541  using serializer = typename BasicJsonType::template json_serializer<T, void>;
-
2542 
-
2543  static constexpr bool value =
- -
2545  const BasicJsonType&>::value;
-
2546 };
-
2547 
-
2548 // This trait checks if BasicJsonType::json_serializer<T>::to_json exists
-
2549 // Do not evaluate the trait when T is a basic_json type, to avoid template instantiation infinite recursion.
-
2550 template <typename BasicJsonType, typename T, typename = void>
-
2551 struct has_to_json : std::false_type {};
-
2552 
-
2553 template <typename BasicJsonType, typename T>
-
2554 struct has_to_json<BasicJsonType, T, enable_if_t<not is_basic_json<T>::value>>
-
2555 {
-
2556  using serializer = typename BasicJsonType::template json_serializer<T, void>;
-
2557 
-
2558  static constexpr bool value =
- -
2560  T>::value;
-
2561 };
-
2562 
-
2563 
-
2565 // is_ functions //
-
2567 
-
2568 template <typename T, typename = void>
-
2569 struct is_iterator_traits : std::false_type {};
-
2570 
-
2571 template <typename T>
- -
2573 {
-
2574  private:
-
2575  using traits = iterator_traits<T>;
-
2576 
-
2577  public:
-
2578  static constexpr auto value =
- - - - - -
2584 };
-
2585 
-
2586 // source: https://stackoverflow.com/a/37193089/4116453
-
2587 
-
2588 template <typename T, typename = void>
-
2589 struct is_complete_type : std::false_type {};
-
2590 
-
2591 template <typename T>
-
2592 struct is_complete_type<T, decltype(void(sizeof(T)))> : std::true_type {};
-
2593 
-
2594 template <typename BasicJsonType, typename CompatibleObjectType,
-
2595  typename = void>
-
2596 struct is_compatible_object_type_impl : std::false_type {};
-
2597 
-
2598 template <typename BasicJsonType, typename CompatibleObjectType>
- -
2600  BasicJsonType, CompatibleObjectType,
-
2601  enable_if_t<is_detected<mapped_type_t, CompatibleObjectType>::value and
-
2602  is_detected<key_type_t, CompatibleObjectType>::value >>
-
2603 {
-
2604 
-
2605  using object_t = typename BasicJsonType::object_t;
-
2606 
-
2607  // macOS's is_constructible does not play well with nonesuch...
-
2608  static constexpr bool value =
-
2609  std::is_constructible<typename object_t::key_type,
-
2610  typename CompatibleObjectType::key_type>::value and
-
2611  std::is_constructible<typename object_t::mapped_type,
-
2612  typename CompatibleObjectType::mapped_type>::value;
-
2613 };
-
2614 
-
2615 template <typename BasicJsonType, typename CompatibleObjectType>
- -
2617  : is_compatible_object_type_impl<BasicJsonType, CompatibleObjectType> {};
-
2618 
-
2619 template <typename BasicJsonType, typename ConstructibleObjectType,
-
2620  typename = void>
-
2621 struct is_constructible_object_type_impl : std::false_type {};
-
2622 
-
2623 template <typename BasicJsonType, typename ConstructibleObjectType>
- -
2625  BasicJsonType, ConstructibleObjectType,
-
2626  enable_if_t<is_detected<mapped_type_t, ConstructibleObjectType>::value and
-
2627  is_detected<key_type_t, ConstructibleObjectType>::value >>
-
2628 {
-
2629  using object_t = typename BasicJsonType::object_t;
-
2630 
-
2631  static constexpr bool value =
-
2632  (std::is_default_constructible<ConstructibleObjectType>::value and
-
2633  (std::is_move_assignable<ConstructibleObjectType>::value or
-
2634  std::is_copy_assignable<ConstructibleObjectType>::value) and
-
2635  (std::is_constructible<typename ConstructibleObjectType::key_type,
-
2636  typename object_t::key_type>::value and
-
2637  std::is_same <
-
2638  typename object_t::mapped_type,
-
2639  typename ConstructibleObjectType::mapped_type >::value)) or
-
2640  (has_from_json<BasicJsonType,
-
2641  typename ConstructibleObjectType::mapped_type>::value or
- -
2643  BasicJsonType,
-
2644  typename ConstructibleObjectType::mapped_type >::value);
-
2645 };
-
2646 
-
2647 template <typename BasicJsonType, typename ConstructibleObjectType>
- -
2649  : is_constructible_object_type_impl<BasicJsonType,
-
2650  ConstructibleObjectType> {};
-
2651 
-
2652 template <typename BasicJsonType, typename CompatibleStringType,
-
2653  typename = void>
-
2654 struct is_compatible_string_type_impl : std::false_type {};
-
2655 
-
2656 template <typename BasicJsonType, typename CompatibleStringType>
- -
2658  BasicJsonType, CompatibleStringType,
-
2659  enable_if_t<is_detected_exact<typename BasicJsonType::string_t::value_type,
-
2660  value_type_t, CompatibleStringType>::value >>
-
2661 {
-
2662  static constexpr auto value =
-
2663  std::is_constructible<typename BasicJsonType::string_t, CompatibleStringType>::value;
-
2664 };
-
2665 
-
2666 template <typename BasicJsonType, typename ConstructibleStringType>
- -
2668  : is_compatible_string_type_impl<BasicJsonType, ConstructibleStringType> {};
-
2669 
-
2670 template <typename BasicJsonType, typename ConstructibleStringType,
-
2671  typename = void>
-
2672 struct is_constructible_string_type_impl : std::false_type {};
-
2673 
-
2674 template <typename BasicJsonType, typename ConstructibleStringType>
- -
2676  BasicJsonType, ConstructibleStringType,
-
2677  enable_if_t<is_detected_exact<typename BasicJsonType::string_t::value_type,
-
2678  value_type_t, ConstructibleStringType>::value >>
-
2679 {
-
2680  static constexpr auto value =
-
2681  std::is_constructible<ConstructibleStringType,
-
2682  typename BasicJsonType::string_t>::value;
-
2683 };
-
2684 
-
2685 template <typename BasicJsonType, typename ConstructibleStringType>
- -
2687  : is_constructible_string_type_impl<BasicJsonType, ConstructibleStringType> {};
-
2688 
-
2689 template <typename BasicJsonType, typename CompatibleArrayType, typename = void>
-
2690 struct is_compatible_array_type_impl : std::false_type {};
-
2691 
-
2692 template <typename BasicJsonType, typename CompatibleArrayType>
- -
2694  BasicJsonType, CompatibleArrayType,
-
2695  enable_if_t<is_detected<value_type_t, CompatibleArrayType>::value and
-
2696  is_detected<iterator_t, CompatibleArrayType>::value and
-
2697 // This is needed because json_reverse_iterator has a ::iterator type...
-
2698 // Therefore it is detected as a CompatibleArrayType.
-
2699 // The real fix would be to have an Iterable concept.
-
2700  not is_iterator_traits<
-
2701  iterator_traits<CompatibleArrayType>>::value >>
-
2702 {
-
2703  static constexpr bool value =
-
2704  std::is_constructible<BasicJsonType,
-
2705  typename CompatibleArrayType::value_type>::value;
-
2706 };
-
2707 
-
2708 template <typename BasicJsonType, typename CompatibleArrayType>
- -
2710  : is_compatible_array_type_impl<BasicJsonType, CompatibleArrayType> {};
-
2711 
-
2712 template <typename BasicJsonType, typename ConstructibleArrayType, typename = void>
-
2713 struct is_constructible_array_type_impl : std::false_type {};
-
2714 
-
2715 template <typename BasicJsonType, typename ConstructibleArrayType>
- -
2717  BasicJsonType, ConstructibleArrayType,
-
2718  enable_if_t<std::is_same<ConstructibleArrayType,
-
2719  typename BasicJsonType::value_type>::value >>
-
2720  : std::true_type {};
-
2721 
-
2722 template <typename BasicJsonType, typename ConstructibleArrayType>
- -
2724  BasicJsonType, ConstructibleArrayType,
-
2725  enable_if_t<not std::is_same<ConstructibleArrayType,
-
2726  typename BasicJsonType::value_type>::value and
-
2727  std::is_default_constructible<ConstructibleArrayType>::value and
-
2728 (std::is_move_assignable<ConstructibleArrayType>::value or
-
2729  std::is_copy_assignable<ConstructibleArrayType>::value) and
-
2730 is_detected<value_type_t, ConstructibleArrayType>::value and
-
2731 is_detected<iterator_t, ConstructibleArrayType>::value and
- -
2733 detected_t<value_type_t, ConstructibleArrayType>>::value >>
-
2734 {
-
2735  static constexpr bool value =
-
2736  // This is needed because json_reverse_iterator has a ::iterator type,
-
2737  // furthermore, std::back_insert_iterator (and other iterators) have a
-
2738  // base class `iterator`... Therefore it is detected as a
-
2739  // ConstructibleArrayType. The real fix would be to have an Iterable
-
2740  // concept.
- -
2742 
-
2743  (std::is_same<typename ConstructibleArrayType::value_type,
-
2744  typename BasicJsonType::array_t::value_type>::value or
-
2745  has_from_json<BasicJsonType,
-
2746  typename ConstructibleArrayType::value_type>::value or
- -
2748  BasicJsonType, typename ConstructibleArrayType::value_type >::value);
-
2749 };
-
2750 
-
2751 template <typename BasicJsonType, typename ConstructibleArrayType>
- -
2753  : is_constructible_array_type_impl<BasicJsonType, ConstructibleArrayType> {};
-
2754 
-
2755 template <typename RealIntegerType, typename CompatibleNumberIntegerType,
-
2756  typename = void>
-
2757 struct is_compatible_integer_type_impl : std::false_type {};
-
2758 
-
2759 template <typename RealIntegerType, typename CompatibleNumberIntegerType>
- -
2761  RealIntegerType, CompatibleNumberIntegerType,
-
2762  enable_if_t<std::is_integral<RealIntegerType>::value and
-
2763  std::is_integral<CompatibleNumberIntegerType>::value and
-
2764  not std::is_same<bool, CompatibleNumberIntegerType>::value >>
-
2765 {
-
2766  // is there an assert somewhere on overflows?
-
2767  using RealLimits = std::numeric_limits<RealIntegerType>;
-
2768  using CompatibleLimits = std::numeric_limits<CompatibleNumberIntegerType>;
-
2769 
-
2770  static constexpr auto value =
-
2771  std::is_constructible<RealIntegerType,
-
2772  CompatibleNumberIntegerType>::value and
-
2773  CompatibleLimits::is_integer and
-
2774  RealLimits::is_signed == CompatibleLimits::is_signed;
-
2775 };
-
2776 
-
2777 template <typename RealIntegerType, typename CompatibleNumberIntegerType>
- -
2779  : is_compatible_integer_type_impl<RealIntegerType,
-
2780  CompatibleNumberIntegerType> {};
-
2781 
-
2782 template <typename BasicJsonType, typename CompatibleType, typename = void>
-
2783 struct is_compatible_type_impl: std::false_type {};
-
2784 
-
2785 template <typename BasicJsonType, typename CompatibleType>
- -
2787  BasicJsonType, CompatibleType,
-
2788  enable_if_t<is_complete_type<CompatibleType>::value >>
-
2789 {
-
2790  static constexpr bool value =
- -
2792 };
-
2793 
-
2794 template <typename BasicJsonType, typename CompatibleType>
- -
2796  : is_compatible_type_impl<BasicJsonType, CompatibleType> {};
-
2797 
-
2798 // https://en.cppreference.com/w/cpp/types/conjunction
-
2799 template<class...> struct conjunction : std::true_type { };
-
2800 template<class B1> struct conjunction<B1> : B1 { };
-
2801 template<class B1, class... Bn>
-
2802 struct conjunction<B1, Bn...>
-
2803 : std::conditional<bool(B1::value), conjunction<Bn...>, B1>::type {};
-
2804 
-
2805 template <typename T1, typename T2>
-
2806 struct is_constructible_tuple : std::false_type {};
-
2807 
-
2808 template <typename T1, typename... Args>
-
2809 struct is_constructible_tuple<T1, std::tuple<Args...>> : conjunction<std::is_constructible<T1, Args>...> {};
-
2810 } // namespace detail
-
2811 } // namespace nlohmann
-
2812 
-
2813 // #include <nlohmann/detail/value_t.hpp>
-
2814 
-
2815 
-
2816 #include <array> // array
-
2817 #include <ciso646> // and
-
2818 #include <cstddef> // size_t
-
2819 #include <cstdint> // uint8_t
-
2820 #include <string> // string
-
2821 
-
2822 namespace nlohmann
-
2823 {
-
2824 namespace detail
-
2825 {
-
2827 // JSON type enumeration //
-
2829 
-
2854 enum class value_t : std::uint8_t
-
2855 {
-
2856  null,
-
2857  object,
-
2858  array,
-
2859  string,
-
2860  boolean,
-
2861  number_integer,
-
2862  number_unsigned,
-
2863  number_float,
-
2864  discarded
-
2865 };
-
2866 
-
2877 inline bool operator<(const value_t lhs, const value_t rhs) noexcept
-
2878 {
-
2879  static constexpr std::array<std::uint8_t, 8> order = {{
-
2880  0 /* null */, 3 /* object */, 4 /* array */, 5 /* string */,
-
2881  1 /* boolean */, 2 /* integer */, 2 /* unsigned */, 2 /* float */
-
2882  }
-
2883  };
-
2884 
-
2885  const auto l_index = static_cast<std::size_t>(lhs);
-
2886  const auto r_index = static_cast<std::size_t>(rhs);
-
2887  return l_index < order.size() and r_index < order.size() and order[l_index] < order[r_index];
-
2888 }
-
2889 } // namespace detail
-
2890 } // namespace nlohmann
-
2891 
-
2892 
-
2893 namespace nlohmann
-
2894 {
-
2895 namespace detail
-
2896 {
-
2897 template<typename BasicJsonType>
-
2898 void from_json(const BasicJsonType& j, typename std::nullptr_t& n)
-
2899 {
-
2900  if (JSON_HEDLEY_UNLIKELY(not j.is_null()))
-
2901  {
-
2902  JSON_THROW(type_error::create(302, "type must be null, but is " + std::string(j.type_name())));
-
2903  }
-
2904  n = nullptr;
-
2905 }
-
2906 
-
2907 // overloads for basic_json template parameters
-
2908 template<typename BasicJsonType, typename ArithmeticType,
-
2909  enable_if_t<std::is_arithmetic<ArithmeticType>::value and
-
2910  not std::is_same<ArithmeticType, typename BasicJsonType::boolean_t>::value,
-
2911  int> = 0>
-
2912 void get_arithmetic_value(const BasicJsonType& j, ArithmeticType& val)
-
2913 {
-
2914  switch (static_cast<value_t>(j))
-
2915  {
- -
2917  {
-
2918  val = static_cast<ArithmeticType>(*j.template get_ptr<const typename BasicJsonType::number_unsigned_t*>());
-
2919  break;
-
2920  }
- -
2922  {
-
2923  val = static_cast<ArithmeticType>(*j.template get_ptr<const typename BasicJsonType::number_integer_t*>());
-
2924  break;
-
2925  }
-
2926  case value_t::number_float:
-
2927  {
-
2928  val = static_cast<ArithmeticType>(*j.template get_ptr<const typename BasicJsonType::number_float_t*>());
-
2929  break;
-
2930  }
-
2931 
-
2932  default:
-
2933  JSON_THROW(type_error::create(302, "type must be number, but is " + std::string(j.type_name())));
-
2934  }
-
2935 }
-
2936 
-
2937 template<typename BasicJsonType>
-
2938 void from_json(const BasicJsonType& j, typename BasicJsonType::boolean_t& b)
-
2939 {
-
2940  if (JSON_HEDLEY_UNLIKELY(not j.is_boolean()))
-
2941  {
-
2942  JSON_THROW(type_error::create(302, "type must be boolean, but is " + std::string(j.type_name())));
-
2943  }
-
2944  b = *j.template get_ptr<const typename BasicJsonType::boolean_t*>();
-
2945 }
-
2946 
-
2947 template<typename BasicJsonType>
-
2948 void from_json(const BasicJsonType& j, typename BasicJsonType::string_t& s)
-
2949 {
-
2950  if (JSON_HEDLEY_UNLIKELY(not j.is_string()))
-
2951  {
-
2952  JSON_THROW(type_error::create(302, "type must be string, but is " + std::string(j.type_name())));
-
2953  }
-
2954  s = *j.template get_ptr<const typename BasicJsonType::string_t*>();
-
2955 }
-
2956 
-
2957 template <
-
2958  typename BasicJsonType, typename ConstructibleStringType,
-
2959  enable_if_t <
-
2960  is_constructible_string_type<BasicJsonType, ConstructibleStringType>::value and
-
2961  not std::is_same<typename BasicJsonType::string_t,
-
2962  ConstructibleStringType>::value,
-
2963  int > = 0 >
-
2964 void from_json(const BasicJsonType& j, ConstructibleStringType& s)
-
2965 {
-
2966  if (JSON_HEDLEY_UNLIKELY(not j.is_string()))
-
2967  {
-
2968  JSON_THROW(type_error::create(302, "type must be string, but is " + std::string(j.type_name())));
-
2969  }
-
2970 
-
2971  s = *j.template get_ptr<const typename BasicJsonType::string_t*>();
-
2972 }
-
2973 
-
2974 template<typename BasicJsonType>
-
2975 void from_json(const BasicJsonType& j, typename BasicJsonType::number_float_t& val)
-
2976 {
-
2977  get_arithmetic_value(j, val);
-
2978 }
-
2979 
-
2980 template<typename BasicJsonType>
-
2981 void from_json(const BasicJsonType& j, typename BasicJsonType::number_unsigned_t& val)
-
2982 {
-
2983  get_arithmetic_value(j, val);
-
2984 }
-
2985 
-
2986 template<typename BasicJsonType>
-
2987 void from_json(const BasicJsonType& j, typename BasicJsonType::number_integer_t& val)
-
2988 {
-
2989  get_arithmetic_value(j, val);
-
2990 }
-
2991 
-
2992 template<typename BasicJsonType, typename EnumType,
-
2993  enable_if_t<std::is_enum<EnumType>::value, int> = 0>
-
2994 void from_json(const BasicJsonType& j, EnumType& e)
-
2995 {
-
2996  typename std::underlying_type<EnumType>::type val;
-
2997  get_arithmetic_value(j, val);
-
2998  e = static_cast<EnumType>(val);
-
2999 }
-
3000 
-
3001 // forward_list doesn't have an insert method
-
3002 template<typename BasicJsonType, typename T, typename Allocator,
-
3003  enable_if_t<std::is_convertible<BasicJsonType, T>::value, int> = 0>
-
3004 void from_json(const BasicJsonType& j, std::forward_list<T, Allocator>& l)
-
3005 {
-
3006  if (JSON_HEDLEY_UNLIKELY(not j.is_array()))
-
3007  {
-
3008  JSON_THROW(type_error::create(302, "type must be array, but is " + std::string(j.type_name())));
-
3009  }
-
3010  l.clear();
-
3011  std::transform(j.rbegin(), j.rend(),
-
3012  std::front_inserter(l), [](const BasicJsonType & i)
-
3013  {
-
3014  return i.template get<T>();
-
3015  });
-
3016 }
-
3017 
-
3018 // valarray doesn't have an insert method
-
3019 template<typename BasicJsonType, typename T,
-
3020  enable_if_t<std::is_convertible<BasicJsonType, T>::value, int> = 0>
-
3021 void from_json(const BasicJsonType& j, std::valarray<T>& l)
-
3022 {
-
3023  if (JSON_HEDLEY_UNLIKELY(not j.is_array()))
-
3024  {
-
3025  JSON_THROW(type_error::create(302, "type must be array, but is " + std::string(j.type_name())));
-
3026  }
-
3027  l.resize(j.size());
-
3028  std::copy(j.begin(), j.end(), std::begin(l));
-
3029 }
-
3030 
-
3031 template <typename BasicJsonType, typename T, std::size_t N>
-
3032 auto from_json(const BasicJsonType& j, T (&arr)[N])
-
3033 -> decltype(j.template get<T>(), void())
-
3034 {
-
3035  for (std::size_t i = 0; i < N; ++i)
-
3036  {
-
3037  arr[i] = j.at(i).template get<T>();
-
3038  }
-
3039 }
-
3040 
-
3041 template<typename BasicJsonType>
-
3042 void from_json_array_impl(const BasicJsonType& j, typename BasicJsonType::array_t& arr, priority_tag<3> /*unused*/)
-
3043 {
-
3044  arr = *j.template get_ptr<const typename BasicJsonType::array_t*>();
-
3045 }
-
3046 
-
3047 template <typename BasicJsonType, typename T, std::size_t N>
-
3048 auto from_json_array_impl(const BasicJsonType& j, std::array<T, N>& arr,
-
3049  priority_tag<2> /*unused*/)
-
3050 -> decltype(j.template get<T>(), void())
-
3051 {
-
3052  for (std::size_t i = 0; i < N; ++i)
-
3053  {
-
3054  arr[i] = j.at(i).template get<T>();
-
3055  }
-
3056 }
-
3057 
-
3058 template<typename BasicJsonType, typename ConstructibleArrayType>
-
3059 auto from_json_array_impl(const BasicJsonType& j, ConstructibleArrayType& arr, priority_tag<1> /*unused*/)
-
3060 -> decltype(
-
3061  arr.reserve(std::declval<typename ConstructibleArrayType::size_type>()),
-
3062  j.template get<typename ConstructibleArrayType::value_type>(),
-
3063  void())
-
3064 {
-
3065  using std::end;
-
3066 
-
3067  ConstructibleArrayType ret;
-
3068  ret.reserve(j.size());
-
3069  std::transform(j.begin(), j.end(),
-
3070  std::inserter(ret, end(ret)), [](const BasicJsonType & i)
-
3071  {
-
3072  // get<BasicJsonType>() returns *this, this won't call a from_json
-
3073  // method when value_type is BasicJsonType
-
3074  return i.template get<typename ConstructibleArrayType::value_type>();
-
3075  });
-
3076  arr = std::move(ret);
-
3077 }
-
3078 
-
3079 template <typename BasicJsonType, typename ConstructibleArrayType>
-
3080 void from_json_array_impl(const BasicJsonType& j, ConstructibleArrayType& arr,
-
3081  priority_tag<0> /*unused*/)
-
3082 {
-
3083  using std::end;
-
3084 
-
3085  ConstructibleArrayType ret;
-
3086  std::transform(
-
3087  j.begin(), j.end(), std::inserter(ret, end(ret)),
-
3088  [](const BasicJsonType & i)
-
3089  {
-
3090  // get<BasicJsonType>() returns *this, this won't call a from_json
-
3091  // method when value_type is BasicJsonType
-
3092  return i.template get<typename ConstructibleArrayType::value_type>();
-
3093  });
-
3094  arr = std::move(ret);
-
3095 }
-
3096 
-
3097 template <typename BasicJsonType, typename ConstructibleArrayType,
-
3098  enable_if_t <
-
3099  is_constructible_array_type<BasicJsonType, ConstructibleArrayType>::value and
-
3100  not is_constructible_object_type<BasicJsonType, ConstructibleArrayType>::value and
-
3101  not is_constructible_string_type<BasicJsonType, ConstructibleArrayType>::value and
-
3102  not is_basic_json<ConstructibleArrayType>::value,
-
3103  int > = 0 >
-
3104 
-
3105 auto from_json(const BasicJsonType& j, ConstructibleArrayType& arr)
-
3106 -> decltype(from_json_array_impl(j, arr, priority_tag<3> {}),
-
3107 j.template get<typename ConstructibleArrayType::value_type>(),
-
3108 void())
-
3109 {
-
3110  if (JSON_HEDLEY_UNLIKELY(not j.is_array()))
-
3111  {
-
3112  JSON_THROW(type_error::create(302, "type must be array, but is " +
-
3113  std::string(j.type_name())));
-
3114  }
-
3115 
- -
3117 }
-
3118 
-
3119 template<typename BasicJsonType, typename ConstructibleObjectType,
-
3120  enable_if_t<is_constructible_object_type<BasicJsonType, ConstructibleObjectType>::value, int> = 0>
-
3121 void from_json(const BasicJsonType& j, ConstructibleObjectType& obj)
-
3122 {
-
3123  if (JSON_HEDLEY_UNLIKELY(not j.is_object()))
-
3124  {
-
3125  JSON_THROW(type_error::create(302, "type must be object, but is " + std::string(j.type_name())));
-
3126  }
-
3127 
-
3128  ConstructibleObjectType ret;
-
3129  auto inner_object = j.template get_ptr<const typename BasicJsonType::object_t*>();
-
3130  using value_type = typename ConstructibleObjectType::value_type;
-
3131  std::transform(
-
3132  inner_object->begin(), inner_object->end(),
-
3133  std::inserter(ret, ret.begin()),
-
3134  [](typename BasicJsonType::object_t::value_type const & p)
-
3135  {
-
3136  return value_type(p.first, p.second.template get<typename ConstructibleObjectType::mapped_type>());
-
3137  });
-
3138  obj = std::move(ret);
-
3139 }
-
3140 
-
3141 // overload for arithmetic types, not chosen for basic_json template arguments
-
3142 // (BooleanType, etc..); note: Is it really necessary to provide explicit
-
3143 // overloads for boolean_t etc. in case of a custom BooleanType which is not
-
3144 // an arithmetic type?
-
3145 template<typename BasicJsonType, typename ArithmeticType,
-
3146  enable_if_t <
-
3147  std::is_arithmetic<ArithmeticType>::value and
-
3148  not std::is_same<ArithmeticType, typename BasicJsonType::number_unsigned_t>::value and
-
3149  not std::is_same<ArithmeticType, typename BasicJsonType::number_integer_t>::value and
-
3150  not std::is_same<ArithmeticType, typename BasicJsonType::number_float_t>::value and
-
3151  not std::is_same<ArithmeticType, typename BasicJsonType::boolean_t>::value,
-
3152  int> = 0>
-
3153 void from_json(const BasicJsonType& j, ArithmeticType& val)
-
3154 {
-
3155  switch (static_cast<value_t>(j))
-
3156  {
- -
3158  {
-
3159  val = static_cast<ArithmeticType>(*j.template get_ptr<const typename BasicJsonType::number_unsigned_t*>());
-
3160  break;
-
3161  }
- -
3163  {
-
3164  val = static_cast<ArithmeticType>(*j.template get_ptr<const typename BasicJsonType::number_integer_t*>());
-
3165  break;
-
3166  }
-
3167  case value_t::number_float:
-
3168  {
-
3169  val = static_cast<ArithmeticType>(*j.template get_ptr<const typename BasicJsonType::number_float_t*>());
-
3170  break;
-
3171  }
-
3172  case value_t::boolean:
-
3173  {
-
3174  val = static_cast<ArithmeticType>(*j.template get_ptr<const typename BasicJsonType::boolean_t*>());
-
3175  break;
-
3176  }
-
3177 
-
3178  default:
-
3179  JSON_THROW(type_error::create(302, "type must be number, but is " + std::string(j.type_name())));
-
3180  }
-
3181 }
-
3182 
-
3183 template<typename BasicJsonType, typename A1, typename A2>
-
3184 void from_json(const BasicJsonType& j, std::pair<A1, A2>& p)
-
3185 {
-
3186  p = {j.at(0).template get<A1>(), j.at(1).template get<A2>()};
-
3187 }
-
3188 
-
3189 template<typename BasicJsonType, typename Tuple, std::size_t... Idx>
-
3190 void from_json_tuple_impl(const BasicJsonType& j, Tuple& t, index_sequence<Idx...> /*unused*/)
-
3191 {
-
3192  t = std::make_tuple(j.at(Idx).template get<typename std::tuple_element<Idx, Tuple>::type>()...);
-
3193 }
-
3194 
-
3195 template<typename BasicJsonType, typename... Args>
-
3196 void from_json(const BasicJsonType& j, std::tuple<Args...>& t)
-
3197 {
- -
3199 }
-
3200 
-
3201 template <typename BasicJsonType, typename Key, typename Value, typename Compare, typename Allocator,
-
3202  typename = enable_if_t<not std::is_constructible<
-
3203  typename BasicJsonType::string_t, Key>::value>>
-
3204 void from_json(const BasicJsonType& j, std::map<Key, Value, Compare, Allocator>& m)
-
3205 {
-
3206  if (JSON_HEDLEY_UNLIKELY(not j.is_array()))
-
3207  {
-
3208  JSON_THROW(type_error::create(302, "type must be array, but is " + std::string(j.type_name())));
-
3209  }
-
3210  m.clear();
-
3211  for (const auto& p : j)
-
3212  {
-
3213  if (JSON_HEDLEY_UNLIKELY(not p.is_array()))
-
3214  {
-
3215  JSON_THROW(type_error::create(302, "type must be array, but is " + std::string(p.type_name())));
-
3216  }
-
3217  m.emplace(p.at(0).template get<Key>(), p.at(1).template get<Value>());
-
3218  }
-
3219 }
-
3220 
-
3221 template <typename BasicJsonType, typename Key, typename Value, typename Hash, typename KeyEqual, typename Allocator,
-
3222  typename = enable_if_t<not std::is_constructible<
-
3223  typename BasicJsonType::string_t, Key>::value>>
-
3224 void from_json(const BasicJsonType& j, std::unordered_map<Key, Value, Hash, KeyEqual, Allocator>& m)
-
3225 {
-
3226  if (JSON_HEDLEY_UNLIKELY(not j.is_array()))
-
3227  {
-
3228  JSON_THROW(type_error::create(302, "type must be array, but is " + std::string(j.type_name())));
-
3229  }
-
3230  m.clear();
-
3231  for (const auto& p : j)
-
3232  {
-
3233  if (JSON_HEDLEY_UNLIKELY(not p.is_array()))
-
3234  {
-
3235  JSON_THROW(type_error::create(302, "type must be array, but is " + std::string(p.type_name())));
-
3236  }
-
3237  m.emplace(p.at(0).template get<Key>(), p.at(1).template get<Value>());
-
3238  }
-
3239 }
-
3240 
- -
3242 {
-
3243  template<typename BasicJsonType, typename T>
-
3244  auto operator()(const BasicJsonType& j, T& val) const
-
3245  noexcept(noexcept(from_json(j, val)))
-
3246  -> decltype(from_json(j, val), void())
-
3247  {
-
3248  return from_json(j, val);
-
3249  }
-
3250 };
-
3251 } // namespace detail
-
3252 
-
3256 namespace
-
3257 {
- -
3259 } // namespace
-
3260 } // namespace nlohmann
-
3261 
-
3262 // #include <nlohmann/detail/conversions/to_json.hpp>
-
3263 
-
3264 
-
3265 #include <algorithm> // copy
-
3266 #include <ciso646> // or, and, not
-
3267 #include <iterator> // begin, end
-
3268 #include <string> // string
-
3269 #include <tuple> // tuple, get
-
3270 #include <type_traits> // is_same, is_constructible, is_floating_point, is_enum, underlying_type
-
3271 #include <utility> // move, forward, declval, pair
-
3272 #include <valarray> // valarray
-
3273 #include <vector> // vector
-
3274 
-
3275 // #include <nlohmann/detail/iterators/iteration_proxy.hpp>
-
3276 
-
3277 
-
3278 #include <cstddef> // size_t
-
3279 #include <iterator> // input_iterator_tag
-
3280 #include <string> // string, to_string
-
3281 #include <tuple> // tuple_size, get, tuple_element
-
3282 
-
3283 // #include <nlohmann/detail/meta/type_traits.hpp>
-
3284 
-
3285 // #include <nlohmann/detail/value_t.hpp>
-
3286 
-
3287 
-
3288 namespace nlohmann
-
3289 {
-
3290 namespace detail
-
3291 {
-
3292 template<typename string_type>
-
3293 void int_to_string( string_type& target, std::size_t value )
-
3294 {
-
3295  target = std::to_string(value);
-
3296 }
-
3297 template <typename IteratorType> class iteration_proxy_value
-
3298 {
-
3299  public:
-
3300  using difference_type = std::ptrdiff_t;
- -
3302  using pointer = value_type * ;
-
3303  using reference = value_type & ;
-
3304  using iterator_category = std::input_iterator_tag;
-
3305  using string_type = typename std::remove_cv< typename std::remove_reference<decltype( std::declval<IteratorType>().key() ) >::type >::type;
-
3306 
-
3307  private:
-
3309  IteratorType anchor;
-
3311  std::size_t array_index = 0;
-
3313  mutable std::size_t array_index_last = 0;
-
3315  mutable string_type array_index_str = "0";
-
3317  const string_type empty_str = "";
-
3318 
-
3319  public:
-
3320  explicit iteration_proxy_value(IteratorType it) noexcept : anchor(it) {}
-
3321 
- -
3324  {
-
3325  return *this;
-
3326  }
-
3327 
- -
3330  {
-
3331  ++anchor;
-
3332  ++array_index;
-
3333 
-
3334  return *this;
-
3335  }
-
3336 
-
3338  bool operator==(const iteration_proxy_value& o) const
-
3339  {
-
3340  return anchor == o.anchor;
-
3341  }
-
3342 
-
3344  bool operator!=(const iteration_proxy_value& o) const
-
3345  {
-
3346  return anchor != o.anchor;
-
3347  }
-
3348 
-
3350  const string_type& key() const
-
3351  {
-
3352  assert(anchor.m_object != nullptr);
-
3353 
-
3354  switch (anchor.m_object->type())
-
3355  {
-
3356  // use integer array index as key
-
3357  case value_t::array:
-
3358  {
-
3359  if (array_index != array_index_last)
-
3360  {
-
3361  int_to_string( array_index_str, array_index );
-
3362  array_index_last = array_index;
-
3363  }
-
3364  return array_index_str;
-
3365  }
-
3366 
-
3367  // use key from the object
-
3368  case value_t::object:
-
3369  return anchor.key();
-
3370 
-
3371  // use an empty key for all primitive types
-
3372  default:
-
3373  return empty_str;
-
3374  }
-
3375  }
-
3376 
-
3378  typename IteratorType::reference value() const
-
3379  {
-
3380  return anchor.value();
-
3381  }
-
3382 };
-
3383 
-
3385 template<typename IteratorType> class iteration_proxy
-
3386 {
-
3387  private:
-
3389  typename IteratorType::reference container;
-
3390 
-
3391  public:
-
3393  explicit iteration_proxy(typename IteratorType::reference cont) noexcept
-
3394  : container(cont) {}
-
3395 
- -
3398  {
-
3399  return iteration_proxy_value<IteratorType>(container.begin());
-
3400  }
-
3401 
- -
3404  {
-
3405  return iteration_proxy_value<IteratorType>(container.end());
-
3406  }
-
3407 };
-
3408 // Structured Bindings Support
-
3409 // For further reference see https://blog.tartanllama.xyz/structured-bindings/
-
3410 // And see https://github.com/nlohmann/json/pull/1391
-
3411 template <std::size_t N, typename IteratorType, enable_if_t<N == 0, int> = 0>
- -
3413 {
-
3414  return i.key();
-
3415 }
-
3416 // Structured Bindings Support
-
3417 // For further reference see https://blog.tartanllama.xyz/structured-bindings/
-
3418 // And see https://github.com/nlohmann/json/pull/1391
-
3419 template <std::size_t N, typename IteratorType, enable_if_t<N == 1, int> = 0>
-
3420 auto get(const nlohmann::detail::iteration_proxy_value<IteratorType>& i) -> decltype(i.value())
-
3421 {
-
3422  return i.value();
-
3423 }
-
3424 } // namespace detail
-
3425 } // namespace nlohmann
-
3426 
-
3427 // The Addition to the STD Namespace is required to add
-
3428 // Structured Bindings Support to the iteration_proxy_value class
-
3429 // For further reference see https://blog.tartanllama.xyz/structured-bindings/
-
3430 // And see https://github.com/nlohmann/json/pull/1391
-
3431 namespace std
-
3432 {
-
3433 #if defined(__clang__)
-
3434  // Fix: https://github.com/nlohmann/json/issues/1401
-
3435  #pragma clang diagnostic push
-
3436  #pragma clang diagnostic ignored "-Wmismatched-tags"
-
3437 #endif
-
3438 template <typename IteratorType>
-
3439 class tuple_size<::nlohmann::detail::iteration_proxy_value<IteratorType>>
-
3440  : public std::integral_constant<std::size_t, 2> {};
-
3441 
-
3442 template <std::size_t N, typename IteratorType>
-
3443 class tuple_element<N, ::nlohmann::detail::iteration_proxy_value<IteratorType >>
-
3444 {
-
3445  public:
-
3446  using type = decltype(
-
3447  get<N>(std::declval <
- -
3449 };
-
3450 #if defined(__clang__)
-
3451  #pragma clang diagnostic pop
-
3452 #endif
-
3453 } // namespace std
-
3454 
-
3455 // #include <nlohmann/detail/meta/cpp_future.hpp>
-
3456 
-
3457 // #include <nlohmann/detail/meta/type_traits.hpp>
-
3458 
-
3459 // #include <nlohmann/detail/value_t.hpp>
-
3460 
-
3461 
-
3462 namespace nlohmann
-
3463 {
-
3464 namespace detail
-
3465 {
-
3467 // constructors //
-
3469 
-
3470 template<value_t> struct external_constructor;
-
3471 
-
3472 template<>
- -
3474 {
-
3475  template<typename BasicJsonType>
-
3476  static void construct(BasicJsonType& j, typename BasicJsonType::boolean_t b) noexcept
-
3477  {
-
3478  j.m_type = value_t::boolean;
-
3479  j.m_value = b;
-
3480  j.assert_invariant();
-
3481  }
-
3482 };
-
3483 
-
3484 template<>
- -
3486 {
-
3487  template<typename BasicJsonType>
-
3488  static void construct(BasicJsonType& j, const typename BasicJsonType::string_t& s)
-
3489  {
-
3490  j.m_type = value_t::string;
-
3491  j.m_value = s;
-
3492  j.assert_invariant();
-
3493  }
-
3494 
-
3495  template<typename BasicJsonType>
-
3496  static void construct(BasicJsonType& j, typename BasicJsonType::string_t&& s)
-
3497  {
-
3498  j.m_type = value_t::string;
-
3499  j.m_value = std::move(s);
-
3500  j.assert_invariant();
-
3501  }
-
3502 
-
3503  template<typename BasicJsonType, typename CompatibleStringType,
- -
3505  int> = 0>
-
3506  static void construct(BasicJsonType& j, const CompatibleStringType& str)
-
3507  {
-
3508  j.m_type = value_t::string;
-
3509  j.m_value.string = j.template create<typename BasicJsonType::string_t>(str);
-
3510  j.assert_invariant();
-
3511  }
-
3512 };
-
3513 
-
3514 template<>
- -
3516 {
-
3517  template<typename BasicJsonType>
-
3518  static void construct(BasicJsonType& j, typename BasicJsonType::number_float_t val) noexcept
-
3519  {
-
3520  j.m_type = value_t::number_float;
-
3521  j.m_value = val;
-
3522  j.assert_invariant();
-
3523  }
-
3524 };
-
3525 
-
3526 template<>
- -
3528 {
-
3529  template<typename BasicJsonType>
-
3530  static void construct(BasicJsonType& j, typename BasicJsonType::number_unsigned_t val) noexcept
-
3531  {
-
3532  j.m_type = value_t::number_unsigned;
-
3533  j.m_value = val;
-
3534  j.assert_invariant();
-
3535  }
-
3536 };
-
3537 
-
3538 template<>
- -
3540 {
-
3541  template<typename BasicJsonType>
-
3542  static void construct(BasicJsonType& j, typename BasicJsonType::number_integer_t val) noexcept
-
3543  {
-
3544  j.m_type = value_t::number_integer;
-
3545  j.m_value = val;
-
3546  j.assert_invariant();
-
3547  }
-
3548 };
-
3549 
-
3550 template<>
- -
3552 {
-
3553  template<typename BasicJsonType>
-
3554  static void construct(BasicJsonType& j, const typename BasicJsonType::array_t& arr)
-
3555  {
-
3556  j.m_type = value_t::array;
-
3557  j.m_value = arr;
-
3558  j.assert_invariant();
-
3559  }
-
3560 
-
3561  template<typename BasicJsonType>
-
3562  static void construct(BasicJsonType& j, typename BasicJsonType::array_t&& arr)
-
3563  {
-
3564  j.m_type = value_t::array;
-
3565  j.m_value = std::move(arr);
-
3566  j.assert_invariant();
-
3567  }
-
3568 
-
3569  template<typename BasicJsonType, typename CompatibleArrayType,
- -
3571  int> = 0>
-
3572  static void construct(BasicJsonType& j, const CompatibleArrayType& arr)
-
3573  {
-
3574  using std::begin;
-
3575  using std::end;
-
3576  j.m_type = value_t::array;
-
3577  j.m_value.array = j.template create<typename BasicJsonType::array_t>(begin(arr), end(arr));
-
3578  j.assert_invariant();
-
3579  }
-
3580 
-
3581  template<typename BasicJsonType>
-
3582  static void construct(BasicJsonType& j, const std::vector<bool>& arr)
-
3583  {
-
3584  j.m_type = value_t::array;
-
3585  j.m_value = value_t::array;
-
3586  j.m_value.array->reserve(arr.size());
-
3587  for (const bool x : arr)
-
3588  {
-
3589  j.m_value.array->push_back(x);
-
3590  }
-
3591  j.assert_invariant();
-
3592  }
-
3593 
-
3594  template<typename BasicJsonType, typename T,
- -
3596  static void construct(BasicJsonType& j, const std::valarray<T>& arr)
-
3597  {
-
3598  j.m_type = value_t::array;
-
3599  j.m_value = value_t::array;
-
3600  j.m_value.array->resize(arr.size());
-
3601  if (arr.size() > 0)
-
3602  {
-
3603  std::copy(std::begin(arr), std::end(arr), j.m_value.array->begin());
-
3604  }
-
3605  j.assert_invariant();
-
3606  }
-
3607 };
-
3608 
-
3609 template<>
- -
3611 {
-
3612  template<typename BasicJsonType>
-
3613  static void construct(BasicJsonType& j, const typename BasicJsonType::object_t& obj)
-
3614  {
-
3615  j.m_type = value_t::object;
-
3616  j.m_value = obj;
-
3617  j.assert_invariant();
-
3618  }
-
3619 
-
3620  template<typename BasicJsonType>
-
3621  static void construct(BasicJsonType& j, typename BasicJsonType::object_t&& obj)
-
3622  {
-
3623  j.m_type = value_t::object;
-
3624  j.m_value = std::move(obj);
-
3625  j.assert_invariant();
-
3626  }
-
3627 
-
3628  template<typename BasicJsonType, typename CompatibleObjectType,
- -
3630  static void construct(BasicJsonType& j, const CompatibleObjectType& obj)
-
3631  {
-
3632  using std::begin;
-
3633  using std::end;
-
3634 
-
3635  j.m_type = value_t::object;
-
3636  j.m_value.object = j.template create<typename BasicJsonType::object_t>(begin(obj), end(obj));
-
3637  j.assert_invariant();
-
3638  }
-
3639 };
-
3640 
-
3642 // to_json //
-
3644 
-
3645 template<typename BasicJsonType, typename T,
-
3646  enable_if_t<std::is_same<T, typename BasicJsonType::boolean_t>::value, int> = 0>
-
3647 void to_json(BasicJsonType& j, T b) noexcept
-
3648 {
- -
3650 }
-
3651 
-
3652 template<typename BasicJsonType, typename CompatibleString,
-
3653  enable_if_t<std::is_constructible<typename BasicJsonType::string_t, CompatibleString>::value, int> = 0>
-
3654 void to_json(BasicJsonType& j, const CompatibleString& s)
-
3655 {
- -
3657 }
-
3658 
-
3659 template<typename BasicJsonType>
-
3660 void to_json(BasicJsonType& j, typename BasicJsonType::string_t&& s)
-
3661 {
- -
3663 }
-
3664 
-
3665 template<typename BasicJsonType, typename FloatType,
-
3666  enable_if_t<std::is_floating_point<FloatType>::value, int> = 0>
-
3667 void to_json(BasicJsonType& j, FloatType val) noexcept
-
3668 {
-
3669  external_constructor<value_t::number_float>::construct(j, static_cast<typename BasicJsonType::number_float_t>(val));
-
3670 }
-
3671 
-
3672 template<typename BasicJsonType, typename CompatibleNumberUnsignedType,
-
3673  enable_if_t<is_compatible_integer_type<typename BasicJsonType::number_unsigned_t, CompatibleNumberUnsignedType>::value, int> = 0>
-
3674 void to_json(BasicJsonType& j, CompatibleNumberUnsignedType val) noexcept
-
3675 {
-
3676  external_constructor<value_t::number_unsigned>::construct(j, static_cast<typename BasicJsonType::number_unsigned_t>(val));
-
3677 }
-
3678 
-
3679 template<typename BasicJsonType, typename CompatibleNumberIntegerType,
-
3680  enable_if_t<is_compatible_integer_type<typename BasicJsonType::number_integer_t, CompatibleNumberIntegerType>::value, int> = 0>
-
3681 void to_json(BasicJsonType& j, CompatibleNumberIntegerType val) noexcept
-
3682 {
-
3683  external_constructor<value_t::number_integer>::construct(j, static_cast<typename BasicJsonType::number_integer_t>(val));
-
3684 }
-
3685 
-
3686 template<typename BasicJsonType, typename EnumType,
-
3687  enable_if_t<std::is_enum<EnumType>::value, int> = 0>
-
3688 void to_json(BasicJsonType& j, EnumType e) noexcept
-
3689 {
-
3690  using underlying_type = typename std::underlying_type<EnumType>::type;
-
3691  external_constructor<value_t::number_integer>::construct(j, static_cast<underlying_type>(e));
-
3692 }
-
3693 
-
3694 template<typename BasicJsonType>
-
3695 void to_json(BasicJsonType& j, const std::vector<bool>& e)
-
3696 {
- -
3698 }
-
3699 
-
3700 template <typename BasicJsonType, typename CompatibleArrayType,
-
3701  enable_if_t<is_compatible_array_type<BasicJsonType,
-
3702  CompatibleArrayType>::value and
-
3703  not is_compatible_object_type<
-
3704  BasicJsonType, CompatibleArrayType>::value and
-
3705  not is_compatible_string_type<BasicJsonType, CompatibleArrayType>::value and
-
3706  not is_basic_json<CompatibleArrayType>::value,
-
3707  int> = 0>
-
3708 void to_json(BasicJsonType& j, const CompatibleArrayType& arr)
-
3709 {
- -
3711 }
-
3712 
-
3713 template<typename BasicJsonType, typename T,
-
3714  enable_if_t<std::is_convertible<T, BasicJsonType>::value, int> = 0>
-
3715 void to_json(BasicJsonType& j, const std::valarray<T>& arr)
-
3716 {
- -
3718 }
-
3719 
-
3720 template<typename BasicJsonType>
-
3721 void to_json(BasicJsonType& j, typename BasicJsonType::array_t&& arr)
-
3722 {
- -
3724 }
-
3725 
-
3726 template<typename BasicJsonType, typename CompatibleObjectType,
-
3727  enable_if_t<is_compatible_object_type<BasicJsonType, CompatibleObjectType>::value and not is_basic_json<CompatibleObjectType>::value, int> = 0>
-
3728 void to_json(BasicJsonType& j, const CompatibleObjectType& obj)
-
3729 {
- -
3731 }
-
3732 
-
3733 template<typename BasicJsonType>
-
3734 void to_json(BasicJsonType& j, typename BasicJsonType::object_t&& obj)
-
3735 {
- -
3737 }
-
3738 
-
3739 template <
-
3740  typename BasicJsonType, typename T, std::size_t N,
-
3741  enable_if_t<not std::is_constructible<typename BasicJsonType::string_t,
-
3742  const T(&)[N]>::value,
-
3743  int> = 0 >
-
3744 void to_json(BasicJsonType& j, const T(&arr)[N])
-
3745 {
- -
3747 }
-
3748 
-
3749 template < typename BasicJsonType, typename T1, typename T2, enable_if_t < std::is_constructible<BasicJsonType, T1>::value&& std::is_constructible<BasicJsonType, T2>::value, int > = 0 >
-
3750 void to_json(BasicJsonType& j, const std::pair<T1, T2>& p)
-
3751 {
-
3752  j = { p.first, p.second };
-
3753 }
-
3754 
-
3755 // for https://github.com/nlohmann/json/pull/1134
-
3756 template < typename BasicJsonType, typename T,
-
3757  enable_if_t<std::is_same<T, iteration_proxy_value<typename BasicJsonType::iterator>>::value, int> = 0>
-
3758 void to_json(BasicJsonType& j, const T& b)
-
3759 {
-
3760  j = { {b.key(), b.value()} };
-
3761 }
-
3762 
-
3763 template<typename BasicJsonType, typename Tuple, std::size_t... Idx>
-
3764 void to_json_tuple_impl(BasicJsonType& j, const Tuple& t, index_sequence<Idx...> /*unused*/)
-
3765 {
-
3766  j = { std::get<Idx>(t)... };
-
3767 }
-
3768 
-
3769 template<typename BasicJsonType, typename T, enable_if_t<is_constructible_tuple<BasicJsonType, T>::value, int > = 0>
-
3770 void to_json(BasicJsonType& j, const T& t)
-
3771 {
-
3772  to_json_tuple_impl(j, t, make_index_sequence<std::tuple_size<T>::value> {});
-
3773 }
-
3774 
- -
3776 {
-
3777  template<typename BasicJsonType, typename T>
-
3778  auto operator()(BasicJsonType& j, T&& val) const noexcept(noexcept(to_json(j, std::forward<T>(val))))
-
3779  -> decltype(to_json(j, std::forward<T>(val)), void())
-
3780  {
-
3781  return to_json(j, std::forward<T>(val));
-
3782  }
-
3783 };
-
3784 } // namespace detail
-
3785 
-
3787 namespace
-
3788 {
- -
3790 } // namespace
-
3791 } // namespace nlohmann
-
3792 
-
3793 
-
3794 namespace nlohmann
-
3795 {
-
3796 
-
3797 template<typename, typename>
-
3798 struct adl_serializer
-
3799 {
-
3809  template<typename BasicJsonType, typename ValueType>
-
3810  static auto from_json(BasicJsonType&& j, ValueType& val) noexcept(
-
3811  noexcept(::nlohmann::from_json(std::forward<BasicJsonType>(j), val)))
-
3812  -> decltype(::nlohmann::from_json(std::forward<BasicJsonType>(j), val), void())
-
3813  {
-
3814  ::nlohmann::from_json(std::forward<BasicJsonType>(j), val);
-
3815  }
-
3816 
-
3826  template <typename BasicJsonType, typename ValueType>
-
3827  static auto to_json(BasicJsonType& j, ValueType&& val) noexcept(
-
3828  noexcept(::nlohmann::to_json(j, std::forward<ValueType>(val))))
-
3829  -> decltype(::nlohmann::to_json(j, std::forward<ValueType>(val)), void())
-
3830  {
-
3831  ::nlohmann::to_json(j, std::forward<ValueType>(val));
-
3832  }
-
3833 };
-
3834 
-
3835 } // namespace nlohmann
-
3836 
-
3837 // #include <nlohmann/detail/conversions/from_json.hpp>
-
3838 
-
3839 // #include <nlohmann/detail/conversions/to_json.hpp>
-
3840 
-
3841 // #include <nlohmann/detail/exceptions.hpp>
-
3842 
-
3843 // #include <nlohmann/detail/input/binary_reader.hpp>
-
3844 
-
3845 
-
3846 #include <algorithm> // generate_n
-
3847 #include <array> // array
-
3848 #include <cassert> // assert
-
3849 #include <cmath> // ldexp
-
3850 #include <cstddef> // size_t
-
3851 #include <cstdint> // uint8_t, uint16_t, uint32_t, uint64_t
-
3852 #include <cstdio> // snprintf
-
3853 #include <cstring> // memcpy
-
3854 #include <iterator> // back_inserter
-
3855 #include <limits> // numeric_limits
-
3856 #include <string> // char_traits, string
-
3857 #include <utility> // make_pair, move
-
3858 
-
3859 // #include <nlohmann/detail/exceptions.hpp>
-
3860 
-
3861 // #include <nlohmann/detail/input/input_adapters.hpp>
-
3862 
-
3863 
-
3864 #include <array> // array
-
3865 #include <cassert> // assert
-
3866 #include <cstddef> // size_t
-
3867 #include <cstdio> //FILE *
-
3868 #include <cstring> // strlen
-
3869 #include <istream> // istream
-
3870 #include <iterator> // begin, end, iterator_traits, random_access_iterator_tag, distance, next
-
3871 #include <memory> // shared_ptr, make_shared, addressof
-
3872 #include <numeric> // accumulate
-
3873 #include <string> // string, char_traits
-
3874 #include <type_traits> // enable_if, is_base_of, is_pointer, is_integral, remove_pointer
-
3875 #include <utility> // pair, declval
-
3876 
-
3877 // #include <nlohmann/detail/iterators/iterator_traits.hpp>
-
3878 
-
3879 // #include <nlohmann/detail/macro_scope.hpp>
-
3880 
-
3881 
-
3882 namespace nlohmann
-
3883 {
-
3884 namespace detail
-
3885 {
- -
3888 
-
3890 // input adapters //
-
3892 
- -
3905 {
-
3907  virtual std::char_traits<char>::int_type get_character() = 0;
-
3908  virtual ~input_adapter_protocol() = default;
-
3909 };
-
3910 
-
3912 using input_adapter_t = std::shared_ptr<input_adapter_protocol>;
-
3913 
- -
3919 {
-
3920  public:
- -
3922  explicit file_input_adapter(std::FILE* f) noexcept
-
3923  : m_file(f)
-
3924  {}
-
3925 
-
3926  // make class move-only
-
3927  file_input_adapter(const file_input_adapter&) = delete;
- - - -
3931  ~file_input_adapter() override = default;
-
3932 
-
3933  std::char_traits<char>::int_type get_character() noexcept override
-
3934  {
-
3935  return std::fgetc(m_file);
-
3936  }
-
3937 
-
3938  private:
-
3940  std::FILE* m_file;
-
3941 };
-
3942 
-
3943 
- -
3954 {
-
3955  public:
- -
3957  {
-
3958  // clear stream flags; we use underlying streambuf I/O, do not
-
3959  // maintain ifstream flags, except eof
-
3960  is.clear(is.rdstate() & std::ios::eofbit);
-
3961  }
-
3962 
-
3963  explicit input_stream_adapter(std::istream& i)
-
3964  : is(i), sb(*i.rdbuf())
-
3965  {}
-
3966 
-
3967  // delete because of pointer members
-
3968  input_stream_adapter(const input_stream_adapter&) = delete;
- - - -
3972 
-
3973  // std::istream/std::streambuf use std::char_traits<char>::to_int_type, to
-
3974  // ensure that std::char_traits<char>::eof() and the character 0xFF do not
-
3975  // end up as the same value, eg. 0xFFFFFFFF.
-
3976  std::char_traits<char>::int_type get_character() override
-
3977  {
-
3978  auto res = sb.sbumpc();
-
3979  // set eof manually, as we don't use the istream interface.
-
3980  if (res == EOF)
-
3981  {
-
3982  is.clear(is.rdstate() | std::ios::eofbit);
-
3983  }
-
3984  return res;
-
3985  }
-
3986 
-
3987  private:
-
3989  std::istream& is;
-
3990  std::streambuf& sb;
-
3991 };
-
3992 
- -
3995 {
-
3996  public:
-
3997  input_buffer_adapter(const char* b, const std::size_t l) noexcept
-
3998  : cursor(b), limit(b == nullptr ? nullptr : (b + l))
-
3999  {}
-
4000 
-
4001  // delete because of pointer members
-
4002  input_buffer_adapter(const input_buffer_adapter&) = delete;
- - - -
4006  ~input_buffer_adapter() override = default;
-
4007 
-
4008  std::char_traits<char>::int_type get_character() noexcept override
-
4009  {
-
4010  if (JSON_HEDLEY_LIKELY(cursor < limit))
-
4011  {
-
4012  assert(cursor != nullptr and limit != nullptr);
-
4013  return std::char_traits<char>::to_int_type(*(cursor++));
-
4014  }
-
4015 
-
4016  return std::char_traits<char>::eof();
-
4017  }
-
4018 
-
4019  private:
-
4021  const char* cursor;
-
4023  const char* const limit;
-
4024 };
-
4025 
-
4026 template<typename WideStringType, size_t T>
- -
4028 {
-
4029  // UTF-32
-
4030  static void fill_buffer(const WideStringType& str,
-
4031  size_t& current_wchar,
-
4032  std::array<std::char_traits<char>::int_type, 4>& utf8_bytes,
-
4033  size_t& utf8_bytes_index,
-
4034  size_t& utf8_bytes_filled)
-
4035  {
-
4036  utf8_bytes_index = 0;
-
4037 
-
4038  if (current_wchar == str.size())
-
4039  {
-
4040  utf8_bytes[0] = std::char_traits<char>::eof();
-
4041  utf8_bytes_filled = 1;
-
4042  }
-
4043  else
-
4044  {
-
4045  // get the current character
-
4046  const auto wc = static_cast<unsigned int>(str[current_wchar++]);
-
4047 
-
4048  // UTF-32 to UTF-8 encoding
-
4049  if (wc < 0x80)
-
4050  {
-
4051  utf8_bytes[0] = static_cast<std::char_traits<char>::int_type>(wc);
-
4052  utf8_bytes_filled = 1;
-
4053  }
-
4054  else if (wc <= 0x7FF)
-
4055  {
-
4056  utf8_bytes[0] = static_cast<std::char_traits<char>::int_type>(0xC0u | ((wc >> 6u) & 0x1Fu));
-
4057  utf8_bytes[1] = static_cast<std::char_traits<char>::int_type>(0x80u | (wc & 0x3Fu));
-
4058  utf8_bytes_filled = 2;
-
4059  }
-
4060  else if (wc <= 0xFFFF)
-
4061  {
-
4062  utf8_bytes[0] = static_cast<std::char_traits<char>::int_type>(0xE0u | ((wc >> 12u) & 0x0Fu));
-
4063  utf8_bytes[1] = static_cast<std::char_traits<char>::int_type>(0x80u | ((wc >> 6u) & 0x3Fu));
-
4064  utf8_bytes[2] = static_cast<std::char_traits<char>::int_type>(0x80u | (wc & 0x3Fu));
-
4065  utf8_bytes_filled = 3;
-
4066  }
-
4067  else if (wc <= 0x10FFFF)
-
4068  {
-
4069  utf8_bytes[0] = static_cast<std::char_traits<char>::int_type>(0xF0u | ((wc >> 18u) & 0x07u));
-
4070  utf8_bytes[1] = static_cast<std::char_traits<char>::int_type>(0x80u | ((wc >> 12u) & 0x3Fu));
-
4071  utf8_bytes[2] = static_cast<std::char_traits<char>::int_type>(0x80u | ((wc >> 6u) & 0x3Fu));
-
4072  utf8_bytes[3] = static_cast<std::char_traits<char>::int_type>(0x80u | (wc & 0x3Fu));
-
4073  utf8_bytes_filled = 4;
-
4074  }
-
4075  else
-
4076  {
-
4077  // unknown character
-
4078  utf8_bytes[0] = static_cast<std::char_traits<char>::int_type>(wc);
-
4079  utf8_bytes_filled = 1;
-
4080  }
-
4081  }
-
4082  }
-
4083 };
-
4084 
-
4085 template<typename WideStringType>
-
4086 struct wide_string_input_helper<WideStringType, 2>
-
4087 {
-
4088  // UTF-16
-
4089  static void fill_buffer(const WideStringType& str,
-
4090  size_t& current_wchar,
-
4091  std::array<std::char_traits<char>::int_type, 4>& utf8_bytes,
-
4092  size_t& utf8_bytes_index,
-
4093  size_t& utf8_bytes_filled)
-
4094  {
-
4095  utf8_bytes_index = 0;
-
4096 
-
4097  if (current_wchar == str.size())
-
4098  {
-
4099  utf8_bytes[0] = std::char_traits<char>::eof();
-
4100  utf8_bytes_filled = 1;
-
4101  }
-
4102  else
-
4103  {
-
4104  // get the current character
-
4105  const auto wc = static_cast<unsigned int>(str[current_wchar++]);
-
4106 
-
4107  // UTF-16 to UTF-8 encoding
-
4108  if (wc < 0x80)
-
4109  {
-
4110  utf8_bytes[0] = static_cast<std::char_traits<char>::int_type>(wc);
-
4111  utf8_bytes_filled = 1;
-
4112  }
-
4113  else if (wc <= 0x7FF)
-
4114  {
-
4115  utf8_bytes[0] = static_cast<std::char_traits<char>::int_type>(0xC0u | ((wc >> 6u)));
-
4116  utf8_bytes[1] = static_cast<std::char_traits<char>::int_type>(0x80u | (wc & 0x3Fu));
-
4117  utf8_bytes_filled = 2;
-
4118  }
-
4119  else if (0xD800 > wc or wc >= 0xE000)
-
4120  {
-
4121  utf8_bytes[0] = static_cast<std::char_traits<char>::int_type>(0xE0u | ((wc >> 12u)));
-
4122  utf8_bytes[1] = static_cast<std::char_traits<char>::int_type>(0x80u | ((wc >> 6u) & 0x3Fu));
-
4123  utf8_bytes[2] = static_cast<std::char_traits<char>::int_type>(0x80u | (wc & 0x3Fu));
-
4124  utf8_bytes_filled = 3;
-
4125  }
-
4126  else
-
4127  {
-
4128  if (current_wchar < str.size())
-
4129  {
-
4130  const auto wc2 = static_cast<unsigned int>(str[current_wchar++]);
-
4131  const auto charcode = 0x10000u + (((wc & 0x3FFu) << 10u) | (wc2 & 0x3FFu));
-
4132  utf8_bytes[0] = static_cast<std::char_traits<char>::int_type>(0xF0u | (charcode >> 18u));
-
4133  utf8_bytes[1] = static_cast<std::char_traits<char>::int_type>(0x80u | ((charcode >> 12u) & 0x3Fu));
-
4134  utf8_bytes[2] = static_cast<std::char_traits<char>::int_type>(0x80u | ((charcode >> 6u) & 0x3Fu));
-
4135  utf8_bytes[3] = static_cast<std::char_traits<char>::int_type>(0x80u | (charcode & 0x3Fu));
-
4136  utf8_bytes_filled = 4;
-
4137  }
-
4138  else
-
4139  {
-
4140  // unknown character
-
4141  ++current_wchar;
-
4142  utf8_bytes[0] = static_cast<std::char_traits<char>::int_type>(wc);
-
4143  utf8_bytes_filled = 1;
-
4144  }
-
4145  }
-
4146  }
-
4147  }
-
4148 };
-
4149 
-
4150 template<typename WideStringType>
- -
4152 {
-
4153  public:
-
4154  explicit wide_string_input_adapter(const WideStringType& w) noexcept
-
4155  : str(w)
-
4156  {}
-
4157 
-
4158  std::char_traits<char>::int_type get_character() noexcept override
-
4159  {
-
4160  // check if buffer needs to be filled
-
4161  if (utf8_bytes_index == utf8_bytes_filled)
-
4162  {
-
4163  fill_buffer<sizeof(typename WideStringType::value_type)>();
-
4164 
-
4165  assert(utf8_bytes_filled > 0);
-
4166  assert(utf8_bytes_index == 0);
-
4167  }
-
4168 
-
4169  // use buffer
-
4170  assert(utf8_bytes_filled > 0);
-
4171  assert(utf8_bytes_index < utf8_bytes_filled);
-
4172  return utf8_bytes[utf8_bytes_index++];
-
4173  }
-
4174 
-
4175  private:
-
4176  template<size_t T>
-
4177  void fill_buffer()
-
4178  {
-
4179  wide_string_input_helper<WideStringType, T>::fill_buffer(str, current_wchar, utf8_bytes, utf8_bytes_index, utf8_bytes_filled);
-
4180  }
-
4181 
-
4183  const WideStringType& str;
-
4184 
-
4186  std::size_t current_wchar = 0;
-
4187 
-
4189  std::array<std::char_traits<char>::int_type, 4> utf8_bytes = {{0, 0, 0, 0}};
-
4190 
-
4192  std::size_t utf8_bytes_index = 0;
-
4194  std::size_t utf8_bytes_filled = 0;
-
4195 };
-
4196 
- -
4198 {
-
4199  public:
-
4200  // native support
- -
4202  input_adapter(std::FILE* file)
-
4203  : ia(std::make_shared<file_input_adapter>(file)) {}
-
4205  input_adapter(std::istream& i)
-
4206  : ia(std::make_shared<input_stream_adapter>(i)) {}
-
4207 
-
4209  input_adapter(std::istream&& i)
-
4210  : ia(std::make_shared<input_stream_adapter>(i)) {}
-
4211 
-
4212  input_adapter(const std::wstring& ws)
-
4213  : ia(std::make_shared<wide_string_input_adapter<std::wstring>>(ws)) {}
-
4214 
-
4215  input_adapter(const std::u16string& ws)
-
4216  : ia(std::make_shared<wide_string_input_adapter<std::u16string>>(ws)) {}
-
4217 
-
4218  input_adapter(const std::u32string& ws)
-
4219  : ia(std::make_shared<wide_string_input_adapter<std::u32string>>(ws)) {}
-
4220 
-
4222  template<typename CharT,
-
4223  typename std::enable_if<
-
4224  std::is_pointer<CharT>::value and
-
4225  std::is_integral<typename std::remove_pointer<CharT>::type>::value and
-
4226  sizeof(typename std::remove_pointer<CharT>::type) == 1,
-
4227  int>::type = 0>
-
4228  input_adapter(CharT b, std::size_t l)
-
4229  : ia(std::make_shared<input_buffer_adapter>(reinterpret_cast<const char*>(b), l)) {}
-
4230 
-
4231  // derived support
-
4232 
-
4234  template<typename CharT,
-
4235  typename std::enable_if<
-
4236  std::is_pointer<CharT>::value and
-
4237  std::is_integral<typename std::remove_pointer<CharT>::type>::value and
-
4238  sizeof(typename std::remove_pointer<CharT>::type) == 1,
-
4239  int>::type = 0>
-
4240  input_adapter(CharT b)
-
4241  : input_adapter(reinterpret_cast<const char*>(b),
-
4242  std::strlen(reinterpret_cast<const char*>(b))) {}
-
4243 
-
4245  template<class IteratorType,
-
4246  typename std::enable_if<
-
4247  std::is_same<typename iterator_traits<IteratorType>::iterator_category, std::random_access_iterator_tag>::value,
-
4248  int>::type = 0>
-
4249  input_adapter(IteratorType first, IteratorType last)
-
4250  {
-
4251 #ifndef NDEBUG
-
4252  // assertion to check that the iterator range is indeed contiguous,
-
4253  // see http://stackoverflow.com/a/35008842/266378 for more discussion
-
4254  const auto is_contiguous = std::accumulate(
-
4255  first, last, std::pair<bool, int>(true, 0),
-
4256  [&first](std::pair<bool, int> res, decltype(*first) val)
-
4257  {
-
4258  res.first &= (val == *(std::next(std::addressof(*first), res.second++)));
-
4259  return res;
-
4260  }).first;
-
4261  assert(is_contiguous);
-
4262 #endif
-
4263 
-
4264  // assertion to check that each element is 1 byte long
-
4265  static_assert(
-
4266  sizeof(typename iterator_traits<IteratorType>::value_type) == 1,
-
4267  "each element in the iterator range must have the size of 1 byte");
-
4268 
-
4269  const auto len = static_cast<size_t>(std::distance(first, last));
-
4270  if (JSON_HEDLEY_LIKELY(len > 0))
-
4271  {
-
4272  // there is at least one element: use the address of first
-
4273  ia = std::make_shared<input_buffer_adapter>(reinterpret_cast<const char*>(&(*first)), len);
-
4274  }
-
4275  else
-
4276  {
-
4277  // the address of first cannot be used: use nullptr
-
4278  ia = std::make_shared<input_buffer_adapter>(nullptr, len);
-
4279  }
-
4280  }
-
4281 
-
4283  template<class T, std::size_t N>
-
4284  input_adapter(T (&array)[N])
-
4285  : input_adapter(std::begin(array), std::end(array)) {}
-
4286 
-
4288  template<class ContiguousContainer, typename
-
4289  std::enable_if<not std::is_pointer<ContiguousContainer>::value and
-
4290  std::is_base_of<std::random_access_iterator_tag, typename iterator_traits<decltype(std::begin(std::declval<ContiguousContainer const>()))>::iterator_category>::value,
-
4291  int>::type = 0>
-
4292  input_adapter(const ContiguousContainer& c)
-
4293  : input_adapter(std::begin(c), std::end(c)) {}
-
4294 
-
4295  operator input_adapter_t()
-
4296  {
-
4297  return ia;
-
4298  }
-
4299 
-
4300  private:
-
4302  input_adapter_t ia = nullptr;
-
4303 };
-
4304 } // namespace detail
-
4305 } // namespace nlohmann
-
4306 
-
4307 // #include <nlohmann/detail/input/json_sax.hpp>
-
4308 
-
4309 
-
4310 #include <cassert> // assert
-
4311 #include <cstddef>
-
4312 #include <string> // string
-
4313 #include <utility> // move
-
4314 #include <vector> // vector
-
4315 
-
4316 // #include <nlohmann/detail/exceptions.hpp>
-
4317 
-
4318 // #include <nlohmann/detail/macro_scope.hpp>
-
4319 
-
4320 
-
4321 namespace nlohmann
-
4322 {
-
4323 
-
4332 template<typename BasicJsonType>
-
4333 struct json_sax
-
4334 {
-
4336  using number_integer_t = typename BasicJsonType::number_integer_t;
-
4338  using number_unsigned_t = typename BasicJsonType::number_unsigned_t;
-
4340  using number_float_t = typename BasicJsonType::number_float_t;
-
4342  using string_t = typename BasicJsonType::string_t;
-
4343 
-
4348  virtual bool null() = 0;
-
4349 
-
4355  virtual bool boolean(bool val) = 0;
-
4356 
-
4362  virtual bool number_integer(number_integer_t val) = 0;
-
4363 
-
4369  virtual bool number_unsigned(number_unsigned_t val) = 0;
-
4370 
-
4377  virtual bool number_float(number_float_t val, const string_t& s) = 0;
-
4378 
-
4385  virtual bool string(string_t& val) = 0;
-
4386 
-
4393  virtual bool start_object(std::size_t elements) = 0;
-
4394 
-
4401  virtual bool key(string_t& val) = 0;
-
4402 
-
4407  virtual bool end_object() = 0;
-
4408 
-
4415  virtual bool start_array(std::size_t elements) = 0;
-
4416 
-
4421  virtual bool end_array() = 0;
-
4422 
-
4430  virtual bool parse_error(std::size_t position,
-
4431  const std::string& last_token,
-
4432  const detail::exception& ex) = 0;
-
4433 
-
4434  virtual ~json_sax() = default;
-
4435 };
-
4436 
-
4437 
-
4438 namespace detail
-
4439 {
-
4453 template<typename BasicJsonType>
- -
4455 {
-
4456  public:
-
4457  using number_integer_t = typename BasicJsonType::number_integer_t;
-
4458  using number_unsigned_t = typename BasicJsonType::number_unsigned_t;
-
4459  using number_float_t = typename BasicJsonType::number_float_t;
-
4460  using string_t = typename BasicJsonType::string_t;
-
4461 
-
4467  explicit json_sax_dom_parser(BasicJsonType& r, const bool allow_exceptions_ = true)
-
4468  : root(r), allow_exceptions(allow_exceptions_)
-
4469  {}
-
4470 
-
4471  // make class move-only
-
4472  json_sax_dom_parser(const json_sax_dom_parser&) = delete;
- - - -
4476  ~json_sax_dom_parser() = default;
-
4477 
-
4478  bool null()
-
4479  {
-
4480  handle_value(nullptr);
-
4481  return true;
-
4482  }
-
4483 
-
4484  bool boolean(bool val)
-
4485  {
-
4486  handle_value(val);
-
4487  return true;
-
4488  }
-
4489 
- -
4491  {
-
4492  handle_value(val);
-
4493  return true;
-
4494  }
-
4495 
- -
4497  {
-
4498  handle_value(val);
-
4499  return true;
-
4500  }
-
4501 
-
4502  bool number_float(number_float_t val, const string_t& /*unused*/)
-
4503  {
-
4504  handle_value(val);
-
4505  return true;
-
4506  }
-
4507 
-
4508  bool string(string_t& val)
-
4509  {
-
4510  handle_value(val);
-
4511  return true;
-
4512  }
-
4513 
-
4514  bool start_object(std::size_t len)
-
4515  {
-
4516  ref_stack.push_back(handle_value(BasicJsonType::value_t::object));
-
4517 
-
4518  if (JSON_HEDLEY_UNLIKELY(len != std::size_t(-1) and len > ref_stack.back()->max_size()))
-
4519  {
- -
4521  "excessive object size: " + std::to_string(len)));
-
4522  }
-
4523 
-
4524  return true;
-
4525  }
-
4526 
-
4527  bool key(string_t& val)
-
4528  {
-
4529  // add null at given key and store the reference for later
-
4530  object_element = &(ref_stack.back()->m_value.object->operator[](val));
-
4531  return true;
-
4532  }
-
4533 
-
4534  bool end_object()
-
4535  {
-
4536  ref_stack.pop_back();
-
4537  return true;
-
4538  }
-
4539 
-
4540  bool start_array(std::size_t len)
-
4541  {
-
4542  ref_stack.push_back(handle_value(BasicJsonType::value_t::array));
-
4543 
-
4544  if (JSON_HEDLEY_UNLIKELY(len != std::size_t(-1) and len > ref_stack.back()->max_size()))
-
4545  {
- -
4547  "excessive array size: " + std::to_string(len)));
-
4548  }
-
4549 
-
4550  return true;
-
4551  }
-
4552 
-
4553  bool end_array()
-
4554  {
-
4555  ref_stack.pop_back();
-
4556  return true;
-
4557  }
-
4558 
-
4559  bool parse_error(std::size_t /*unused*/, const std::string& /*unused*/,
-
4560  const detail::exception& ex)
-
4561  {
-
4562  errored = true;
-
4563  if (allow_exceptions)
-
4564  {
-
4565  // determine the proper exception type from the id
-
4566  switch ((ex.id / 100) % 100)
-
4567  {
-
4568  case 1:
-
4569  JSON_THROW(*static_cast<const detail::parse_error*>(&ex));
-
4570  case 4:
-
4571  JSON_THROW(*static_cast<const detail::out_of_range*>(&ex));
-
4572  // LCOV_EXCL_START
-
4573  case 2:
-
4574  JSON_THROW(*static_cast<const detail::invalid_iterator*>(&ex));
-
4575  case 3:
-
4576  JSON_THROW(*static_cast<const detail::type_error*>(&ex));
-
4577  case 5:
-
4578  JSON_THROW(*static_cast<const detail::other_error*>(&ex));
-
4579  default:
-
4580  assert(false);
-
4581  // LCOV_EXCL_STOP
-
4582  }
-
4583  }
-
4584  return false;
-
4585  }
-
4586 
-
4587  constexpr bool is_errored() const
-
4588  {
-
4589  return errored;
-
4590  }
-
4591 
-
4592  private:
-
4599  template<typename Value>
- -
4601  BasicJsonType* handle_value(Value&& v)
-
4602  {
-
4603  if (ref_stack.empty())
-
4604  {
-
4605  root = BasicJsonType(std::forward<Value>(v));
-
4606  return &root;
-
4607  }
-
4608 
-
4609  assert(ref_stack.back()->is_array() or ref_stack.back()->is_object());
-
4610 
-
4611  if (ref_stack.back()->is_array())
-
4612  {
-
4613  ref_stack.back()->m_value.array->emplace_back(std::forward<Value>(v));
-
4614  return &(ref_stack.back()->m_value.array->back());
-
4615  }
-
4616 
-
4617  assert(ref_stack.back()->is_object());
-
4618  assert(object_element);
-
4619  *object_element = BasicJsonType(std::forward<Value>(v));
-
4620  return object_element;
-
4621  }
-
4622 
-
4624  BasicJsonType& root;
-
4626  std::vector<BasicJsonType*> ref_stack {};
-
4628  BasicJsonType* object_element = nullptr;
-
4630  bool errored = false;
-
4632  const bool allow_exceptions = true;
-
4633 };
-
4634 
-
4635 template<typename BasicJsonType>
- -
4637 {
-
4638  public:
-
4639  using number_integer_t = typename BasicJsonType::number_integer_t;
-
4640  using number_unsigned_t = typename BasicJsonType::number_unsigned_t;
-
4641  using number_float_t = typename BasicJsonType::number_float_t;
-
4642  using string_t = typename BasicJsonType::string_t;
-
4643  using parser_callback_t = typename BasicJsonType::parser_callback_t;
-
4644  using parse_event_t = typename BasicJsonType::parse_event_t;
-
4645 
- -
4647  const parser_callback_t cb,
-
4648  const bool allow_exceptions_ = true)
-
4649  : root(r), callback(cb), allow_exceptions(allow_exceptions_)
-
4650  {
-
4651  keep_stack.push_back(true);
-
4652  }
-
4653 
-
4654  // make class move-only
- - - - -
4659  ~json_sax_dom_callback_parser() = default;
-
4660 
-
4661  bool null()
-
4662  {
-
4663  handle_value(nullptr);
-
4664  return true;
-
4665  }
-
4666 
-
4667  bool boolean(bool val)
-
4668  {
-
4669  handle_value(val);
-
4670  return true;
-
4671  }
-
4672 
- -
4674  {
-
4675  handle_value(val);
-
4676  return true;
-
4677  }
-
4678 
- -
4680  {
-
4681  handle_value(val);
-
4682  return true;
-
4683  }
-
4684 
-
4685  bool number_float(number_float_t val, const string_t& /*unused*/)
-
4686  {
-
4687  handle_value(val);
-
4688  return true;
-
4689  }
-
4690 
-
4691  bool string(string_t& val)
-
4692  {
-
4693  handle_value(val);
-
4694  return true;
-
4695  }
-
4696 
-
4697  bool start_object(std::size_t len)
-
4698  {
-
4699  // check callback for object start
-
4700  const bool keep = callback(static_cast<int>(ref_stack.size()), parse_event_t::object_start, discarded);
-
4701  keep_stack.push_back(keep);
-
4702 
-
4703  auto val = handle_value(BasicJsonType::value_t::object, true);
-
4704  ref_stack.push_back(val.second);
-
4705 
-
4706  // check object limit
-
4707  if (ref_stack.back() and JSON_HEDLEY_UNLIKELY(len != std::size_t(-1) and len > ref_stack.back()->max_size()))
-
4708  {
-
4709  JSON_THROW(out_of_range::create(408, "excessive object size: " + std::to_string(len)));
-
4710  }
-
4711 
-
4712  return true;
-
4713  }
-
4714 
-
4715  bool key(string_t& val)
-
4716  {
-
4717  BasicJsonType k = BasicJsonType(val);
-
4718 
-
4719  // check callback for key
-
4720  const bool keep = callback(static_cast<int>(ref_stack.size()), parse_event_t::key, k);
-
4721  key_keep_stack.push_back(keep);
-
4722 
-
4723  // add discarded value at given key and store the reference for later
-
4724  if (keep and ref_stack.back())
-
4725  {
-
4726  object_element = &(ref_stack.back()->m_value.object->operator[](val) = discarded);
-
4727  }
-
4728 
-
4729  return true;
-
4730  }
-
4731 
-
4732  bool end_object()
-
4733  {
-
4734  if (ref_stack.back() and not callback(static_cast<int>(ref_stack.size()) - 1, parse_event_t::object_end, *ref_stack.back()))
-
4735  {
-
4736  // discard object
-
4737  *ref_stack.back() = discarded;
-
4738  }
-
4739 
-
4740  assert(not ref_stack.empty());
-
4741  assert(not keep_stack.empty());
-
4742  ref_stack.pop_back();
-
4743  keep_stack.pop_back();
-
4744 
-
4745  if (not ref_stack.empty() and ref_stack.back() and ref_stack.back()->is_object())
-
4746  {
-
4747  // remove discarded value
-
4748  for (auto it = ref_stack.back()->begin(); it != ref_stack.back()->end(); ++it)
-
4749  {
-
4750  if (it->is_discarded())
-
4751  {
-
4752  ref_stack.back()->erase(it);
-
4753  break;
-
4754  }
-
4755  }
-
4756  }
-
4757 
-
4758  return true;
-
4759  }
-
4760 
-
4761  bool start_array(std::size_t len)
-
4762  {
-
4763  const bool keep = callback(static_cast<int>(ref_stack.size()), parse_event_t::array_start, discarded);
-
4764  keep_stack.push_back(keep);
-
4765 
-
4766  auto val = handle_value(BasicJsonType::value_t::array, true);
-
4767  ref_stack.push_back(val.second);
-
4768 
-
4769  // check array limit
-
4770  if (ref_stack.back() and JSON_HEDLEY_UNLIKELY(len != std::size_t(-1) and len > ref_stack.back()->max_size()))
-
4771  {
-
4772  JSON_THROW(out_of_range::create(408, "excessive array size: " + std::to_string(len)));
-
4773  }
-
4774 
-
4775  return true;
-
4776  }
-
4777 
-
4778  bool end_array()
-
4779  {
-
4780  bool keep = true;
-
4781 
-
4782  if (ref_stack.back())
-
4783  {
-
4784  keep = callback(static_cast<int>(ref_stack.size()) - 1, parse_event_t::array_end, *ref_stack.back());
-
4785  if (not keep)
-
4786  {
-
4787  // discard array
-
4788  *ref_stack.back() = discarded;
-
4789  }
-
4790  }
-
4791 
-
4792  assert(not ref_stack.empty());
-
4793  assert(not keep_stack.empty());
-
4794  ref_stack.pop_back();
-
4795  keep_stack.pop_back();
-
4796 
-
4797  // remove discarded value
-
4798  if (not keep and not ref_stack.empty() and ref_stack.back()->is_array())
-
4799  {
-
4800  ref_stack.back()->m_value.array->pop_back();
-
4801  }
-
4802 
-
4803  return true;
-
4804  }
-
4805 
-
4806  bool parse_error(std::size_t /*unused*/, const std::string& /*unused*/,
-
4807  const detail::exception& ex)
-
4808  {
-
4809  errored = true;
-
4810  if (allow_exceptions)
-
4811  {
-
4812  // determine the proper exception type from the id
-
4813  switch ((ex.id / 100) % 100)
-
4814  {
-
4815  case 1:
-
4816  JSON_THROW(*static_cast<const detail::parse_error*>(&ex));
-
4817  case 4:
-
4818  JSON_THROW(*static_cast<const detail::out_of_range*>(&ex));
-
4819  // LCOV_EXCL_START
-
4820  case 2:
-
4821  JSON_THROW(*static_cast<const detail::invalid_iterator*>(&ex));
-
4822  case 3:
-
4823  JSON_THROW(*static_cast<const detail::type_error*>(&ex));
-
4824  case 5:
-
4825  JSON_THROW(*static_cast<const detail::other_error*>(&ex));
-
4826  default:
-
4827  assert(false);
-
4828  // LCOV_EXCL_STOP
-
4829  }
-
4830  }
-
4831  return false;
-
4832  }
-
4833 
-
4834  constexpr bool is_errored() const
-
4835  {
-
4836  return errored;
-
4837  }
-
4838 
-
4839  private:
-
4855  template<typename Value>
-
4856  std::pair<bool, BasicJsonType*> handle_value(Value&& v, const bool skip_callback = false)
-
4857  {
-
4858  assert(not keep_stack.empty());
-
4859 
-
4860  // do not handle this value if we know it would be added to a discarded
-
4861  // container
-
4862  if (not keep_stack.back())
-
4863  {
-
4864  return {false, nullptr};
-
4865  }
-
4866 
-
4867  // create value
-
4868  auto value = BasicJsonType(std::forward<Value>(v));
-
4869 
-
4870  // check callback
-
4871  const bool keep = skip_callback or callback(static_cast<int>(ref_stack.size()), parse_event_t::value, value);
-
4872 
-
4873  // do not handle this value if we just learnt it shall be discarded
-
4874  if (not keep)
-
4875  {
-
4876  return {false, nullptr};
-
4877  }
-
4878 
-
4879  if (ref_stack.empty())
-
4880  {
-
4881  root = std::move(value);
-
4882  return {true, &root};
-
4883  }
-
4884 
-
4885  // skip this value if we already decided to skip the parent
-
4886  // (https://github.com/nlohmann/json/issues/971#issuecomment-413678360)
-
4887  if (not ref_stack.back())
-
4888  {
-
4889  return {false, nullptr};
-
4890  }
-
4891 
-
4892  // we now only expect arrays and objects
-
4893  assert(ref_stack.back()->is_array() or ref_stack.back()->is_object());
-
4894 
-
4895  // array
-
4896  if (ref_stack.back()->is_array())
-
4897  {
-
4898  ref_stack.back()->m_value.array->push_back(std::move(value));
-
4899  return {true, &(ref_stack.back()->m_value.array->back())};
-
4900  }
-
4901 
-
4902  // object
-
4903  assert(ref_stack.back()->is_object());
-
4904  // check if we should store an element for the current key
-
4905  assert(not key_keep_stack.empty());
-
4906  const bool store_element = key_keep_stack.back();
-
4907  key_keep_stack.pop_back();
-
4908 
-
4909  if (not store_element)
-
4910  {
-
4911  return {false, nullptr};
-
4912  }
-
4913 
-
4914  assert(object_element);
-
4915  *object_element = std::move(value);
-
4916  return {true, object_element};
-
4917  }
-
4918 
-
4920  BasicJsonType& root;
-
4922  std::vector<BasicJsonType*> ref_stack {};
-
4924  std::vector<bool> keep_stack {};
-
4926  std::vector<bool> key_keep_stack {};
-
4928  BasicJsonType* object_element = nullptr;
-
4930  bool errored = false;
-
4932  const parser_callback_t callback = nullptr;
-
4934  const bool allow_exceptions = true;
-
4936  BasicJsonType discarded = BasicJsonType::value_t::discarded;
-
4937 };
-
4938 
-
4939 template<typename BasicJsonType>
- -
4941 {
-
4942  public:
-
4943  using number_integer_t = typename BasicJsonType::number_integer_t;
-
4944  using number_unsigned_t = typename BasicJsonType::number_unsigned_t;
-
4945  using number_float_t = typename BasicJsonType::number_float_t;
-
4946  using string_t = typename BasicJsonType::string_t;
-
4947 
-
4948  bool null()
-
4949  {
-
4950  return true;
-
4951  }
-
4952 
-
4953  bool boolean(bool /*unused*/)
-
4954  {
-
4955  return true;
-
4956  }
-
4957 
- -
4959  {
-
4960  return true;
-
4961  }
-
4962 
- -
4964  {
-
4965  return true;
-
4966  }
-
4967 
-
4968  bool number_float(number_float_t /*unused*/, const string_t& /*unused*/)
-
4969  {
-
4970  return true;
-
4971  }
-
4972 
-
4973  bool string(string_t& /*unused*/)
-
4974  {
-
4975  return true;
-
4976  }
-
4977 
-
4978  bool start_object(std::size_t /*unused*/ = std::size_t(-1))
-
4979  {
-
4980  return true;
-
4981  }
-
4982 
-
4983  bool key(string_t& /*unused*/)
-
4984  {
-
4985  return true;
-
4986  }
-
4987 
-
4988  bool end_object()
-
4989  {
-
4990  return true;
-
4991  }
-
4992 
-
4993  bool start_array(std::size_t /*unused*/ = std::size_t(-1))
-
4994  {
-
4995  return true;
-
4996  }
-
4997 
-
4998  bool end_array()
-
4999  {
-
5000  return true;
-
5001  }
-
5002 
-
5003  bool parse_error(std::size_t /*unused*/, const std::string& /*unused*/, const detail::exception& /*unused*/)
-
5004  {
-
5005  return false;
-
5006  }
-
5007 };
-
5008 } // namespace detail
-
5009 
-
5010 } // namespace nlohmann
-
5011 
-
5012 // #include <nlohmann/detail/macro_scope.hpp>
-
5013 
-
5014 // #include <nlohmann/detail/meta/is_sax.hpp>
-
5015 
-
5016 
-
5017 #include <cstdint> // size_t
-
5018 #include <utility> // declval
-
5019 #include <string> // string
-
5020 
-
5021 // #include <nlohmann/detail/meta/detected.hpp>
-
5022 
-
5023 // #include <nlohmann/detail/meta/type_traits.hpp>
-
5024 
-
5025 
-
5026 namespace nlohmann
-
5027 {
-
5028 namespace detail
-
5029 {
-
5030 template <typename T>
-
5031 using null_function_t = decltype(std::declval<T&>().null());
-
5032 
-
5033 template <typename T>
-
5034 using boolean_function_t =
-
5035  decltype(std::declval<T&>().boolean(std::declval<bool>()));
-
5036 
-
5037 template <typename T, typename Integer>
- -
5039  decltype(std::declval<T&>().number_integer(std::declval<Integer>()));
-
5040 
-
5041 template <typename T, typename Unsigned>
- -
5043  decltype(std::declval<T&>().number_unsigned(std::declval<Unsigned>()));
-
5044 
-
5045 template <typename T, typename Float, typename String>
-
5046 using number_float_function_t = decltype(std::declval<T&>().number_float(
-
5047  std::declval<Float>(), std::declval<const String&>()));
-
5048 
-
5049 template <typename T, typename String>
-
5050 using string_function_t =
-
5051  decltype(std::declval<T&>().string(std::declval<String&>()));
-
5052 
-
5053 template <typename T>
- -
5055  decltype(std::declval<T&>().start_object(std::declval<std::size_t>()));
-
5056 
-
5057 template <typename T, typename String>
-
5058 using key_function_t =
-
5059  decltype(std::declval<T&>().key(std::declval<String&>()));
-
5060 
-
5061 template <typename T>
-
5062 using end_object_function_t = decltype(std::declval<T&>().end_object());
-
5063 
-
5064 template <typename T>
-
5065 using start_array_function_t =
-
5066  decltype(std::declval<T&>().start_array(std::declval<std::size_t>()));
-
5067 
-
5068 template <typename T>
-
5069 using end_array_function_t = decltype(std::declval<T&>().end_array());
-
5070 
-
5071 template <typename T, typename Exception>
-
5072 using parse_error_function_t = decltype(std::declval<T&>().parse_error(
-
5073  std::declval<std::size_t>(), std::declval<const std::string&>(),
-
5074  std::declval<const Exception&>()));
-
5075 
-
5076 template <typename SAX, typename BasicJsonType>
-
5077 struct is_sax
-
5078 {
-
5079  private:
- -
5081  "BasicJsonType must be of type basic_json<...>");
-
5082 
-
5083  using number_integer_t = typename BasicJsonType::number_integer_t;
-
5084  using number_unsigned_t = typename BasicJsonType::number_unsigned_t;
-
5085  using number_float_t = typename BasicJsonType::number_float_t;
-
5086  using string_t = typename BasicJsonType::string_t;
-
5087  using exception_t = typename BasicJsonType::exception;
-
5088 
-
5089  public:
-
5090  static constexpr bool value =
- - - -
5094  number_integer_t>::value &&
- -
5096  number_unsigned_t>::value &&
-
5097  is_detected_exact<bool, number_float_function_t, SAX, number_float_t,
-
5098  string_t>::value &&
- - - - - - - -
5106 };
-
5107 
-
5108 template <typename SAX, typename BasicJsonType>
- -
5110 {
-
5111  private:
- -
5113  "BasicJsonType must be of type basic_json<...>");
-
5114 
-
5115  using number_integer_t = typename BasicJsonType::number_integer_t;
-
5116  using number_unsigned_t = typename BasicJsonType::number_unsigned_t;
-
5117  using number_float_t = typename BasicJsonType::number_float_t;
-
5118  using string_t = typename BasicJsonType::string_t;
-
5119  using exception_t = typename BasicJsonType::exception;
-
5120 
-
5121  public:
- -
5123  "Missing/invalid function: bool null()");
- -
5125  "Missing/invalid function: bool boolean(bool)");
- -
5127  "Missing/invalid function: bool boolean(bool)");
-
5128  static_assert(
- -
5130  number_integer_t>::value,
-
5131  "Missing/invalid function: bool number_integer(number_integer_t)");
-
5132  static_assert(
- -
5134  number_unsigned_t>::value,
-
5135  "Missing/invalid function: bool number_unsigned(number_unsigned_t)");
-
5136  static_assert(is_detected_exact<bool, number_float_function_t, SAX,
-
5137  number_float_t, string_t>::value,
-
5138  "Missing/invalid function: bool number_float(number_float_t, const string_t&)");
-
5139  static_assert(
- -
5141  "Missing/invalid function: bool string(string_t&)");
- -
5143  "Missing/invalid function: bool start_object(std::size_t)");
- -
5145  "Missing/invalid function: bool key(string_t&)");
- -
5147  "Missing/invalid function: bool end_object()");
- -
5149  "Missing/invalid function: bool start_array(std::size_t)");
- -
5151  "Missing/invalid function: bool end_array()");
-
5152  static_assert(
- -
5154  "Missing/invalid function: bool parse_error(std::size_t, const "
-
5155  "std::string&, const exception&)");
-
5156 };
-
5157 } // namespace detail
-
5158 } // namespace nlohmann
-
5159 
-
5160 // #include <nlohmann/detail/value_t.hpp>
-
5161 
-
5162 
-
5163 namespace nlohmann
-
5164 {
-
5165 namespace detail
-
5166 {
-
5168 // binary reader //
-
5170 
-
5174 template<typename BasicJsonType, typename SAX = json_sax_dom_parser<BasicJsonType>>
- -
5176 {
-
5177  using number_integer_t = typename BasicJsonType::number_integer_t;
-
5178  using number_unsigned_t = typename BasicJsonType::number_unsigned_t;
-
5179  using number_float_t = typename BasicJsonType::number_float_t;
-
5180  using string_t = typename BasicJsonType::string_t;
-
5181  using json_sax_t = SAX;
-
5182 
-
5183  public:
-
5189  explicit binary_reader(input_adapter_t adapter) : ia(std::move(adapter))
-
5190  {
- -
5192  assert(ia);
-
5193  }
-
5194 
-
5195  // make class move-only
-
5196  binary_reader(const binary_reader&) = delete;
-
5197  binary_reader(binary_reader&&) = default;
-
5198  binary_reader& operator=(const binary_reader&) = delete;
-
5199  binary_reader& operator=(binary_reader&&) = default;
-
5200  ~binary_reader() = default;
-
5201 
- -
5210  bool sax_parse(const input_format_t format,
-
5211  json_sax_t* sax_,
-
5212  const bool strict = true)
-
5213  {
-
5214  sax = sax_;
-
5215  bool result = false;
-
5216 
-
5217  switch (format)
-
5218  {
-
5219  case input_format_t::bson:
-
5220  result = parse_bson_internal();
-
5221  break;
-
5222 
-
5223  case input_format_t::cbor:
-
5224  result = parse_cbor_internal();
-
5225  break;
-
5226 
- -
5228  result = parse_msgpack_internal();
-
5229  break;
-
5230 
- -
5232  result = parse_ubjson_internal();
-
5233  break;
-
5234 
-
5235  default: // LCOV_EXCL_LINE
-
5236  assert(false); // LCOV_EXCL_LINE
-
5237  }
-
5238 
-
5239  // strict mode: next byte must be EOF
-
5240  if (result and strict)
-
5241  {
-
5242  if (format == input_format_t::ubjson)
-
5243  {
-
5244  get_ignore_noop();
-
5245  }
-
5246  else
-
5247  {
-
5248  get();
-
5249  }
-
5250 
-
5251  if (JSON_HEDLEY_UNLIKELY(current != std::char_traits<char>::eof()))
-
5252  {
-
5253  return sax->parse_error(chars_read, get_token_string(),
-
5254  parse_error::create(110, chars_read, exception_message(format, "expected end of input; last byte: 0x" + get_token_string(), "value")));
-
5255  }
-
5256  }
-
5257 
-
5258  return result;
-
5259  }
-
5260 
-
5268  static constexpr bool little_endianess(int num = 1) noexcept
-
5269  {
-
5270  return *reinterpret_cast<char*>(&num) == 1;
-
5271  }
-
5272 
-
5273  private:
-
5275  // BSON //
-
5277 
-
5282  bool parse_bson_internal()
-
5283  {
-
5284  std::int32_t document_size;
-
5285  get_number<std::int32_t, true>(input_format_t::bson, document_size);
-
5286 
-
5287  if (JSON_HEDLEY_UNLIKELY(not sax->start_object(std::size_t(-1))))
-
5288  {
-
5289  return false;
-
5290  }
-
5291 
-
5292  if (JSON_HEDLEY_UNLIKELY(not parse_bson_element_list(/*is_array*/false)))
-
5293  {
-
5294  return false;
-
5295  }
-
5296 
-
5297  return sax->end_object();
-
5298  }
-
5299 
-
5307  bool get_bson_cstr(string_t& result)
-
5308  {
-
5309  auto out = std::back_inserter(result);
-
5310  while (true)
-
5311  {
-
5312  get();
-
5313  if (JSON_HEDLEY_UNLIKELY(not unexpect_eof(input_format_t::bson, "cstring")))
-
5314  {
-
5315  return false;
-
5316  }
-
5317  if (current == 0x00)
-
5318  {
-
5319  return true;
-
5320  }
-
5321  *out++ = static_cast<char>(current);
-
5322  }
-
5323 
-
5324  return true;
-
5325  }
-
5326 
-
5338  template<typename NumberType>
-
5339  bool get_bson_string(const NumberType len, string_t& result)
-
5340  {
-
5341  if (JSON_HEDLEY_UNLIKELY(len < 1))
-
5342  {
-
5343  auto last_token = get_token_string();
-
5344  return sax->parse_error(chars_read, last_token, parse_error::create(112, chars_read, exception_message(input_format_t::bson, "string length must be at least 1, is " + std::to_string(len), "string")));
-
5345  }
-
5346 
-
5347  return get_string(input_format_t::bson, len - static_cast<NumberType>(1), result) and get() != std::char_traits<char>::eof();
-
5348  }
-
5349 
-
5360  bool parse_bson_element_internal(const int element_type,
-
5361  const std::size_t element_type_parse_position)
-
5362  {
-
5363  switch (element_type)
-
5364  {
-
5365  case 0x01: // double
-
5366  {
-
5367  double number;
-
5368  return get_number<double, true>(input_format_t::bson, number) and sax->number_float(static_cast<number_float_t>(number), "");
-
5369  }
-
5370 
-
5371  case 0x02: // string
-
5372  {
-
5373  std::int32_t len;
-
5374  string_t value;
-
5375  return get_number<std::int32_t, true>(input_format_t::bson, len) and get_bson_string(len, value) and sax->string(value);
-
5376  }
-
5377 
-
5378  case 0x03: // object
-
5379  {
-
5380  return parse_bson_internal();
-
5381  }
-
5382 
-
5383  case 0x04: // array
-
5384  {
-
5385  return parse_bson_array();
-
5386  }
-
5387 
-
5388  case 0x08: // boolean
-
5389  {
-
5390  return sax->boolean(get() != 0);
-
5391  }
-
5392 
-
5393  case 0x0A: // null
-
5394  {
-
5395  return sax->null();
-
5396  }
-
5397 
-
5398  case 0x10: // int32
-
5399  {
-
5400  std::int32_t value;
-
5401  return get_number<std::int32_t, true>(input_format_t::bson, value) and sax->number_integer(value);
-
5402  }
-
5403 
-
5404  case 0x12: // int64
-
5405  {
-
5406  std::int64_t value;
-
5407  return get_number<std::int64_t, true>(input_format_t::bson, value) and sax->number_integer(value);
-
5408  }
-
5409 
-
5410  default: // anything else not supported (yet)
-
5411  {
-
5412  std::array<char, 3> cr{{}};
-
5413  (std::snprintf)(cr.data(), cr.size(), "%.2hhX", static_cast<unsigned char>(element_type));
-
5414  return sax->parse_error(element_type_parse_position, std::string(cr.data()), parse_error::create(114, element_type_parse_position, "Unsupported BSON record type 0x" + std::string(cr.data())));
-
5415  }
-
5416  }
-
5417  }
-
5418 
-
5431  bool parse_bson_element_list(const bool is_array)
-
5432  {
-
5433  string_t key;
-
5434  while (int element_type = get())
-
5435  {
-
5436  if (JSON_HEDLEY_UNLIKELY(not unexpect_eof(input_format_t::bson, "element list")))
-
5437  {
-
5438  return false;
-
5439  }
-
5440 
-
5441  const std::size_t element_type_parse_position = chars_read;
-
5442  if (JSON_HEDLEY_UNLIKELY(not get_bson_cstr(key)))
-
5443  {
-
5444  return false;
-
5445  }
-
5446 
-
5447  if (not is_array and not sax->key(key))
-
5448  {
-
5449  return false;
-
5450  }
-
5451 
-
5452  if (JSON_HEDLEY_UNLIKELY(not parse_bson_element_internal(element_type, element_type_parse_position)))
-
5453  {
-
5454  return false;
-
5455  }
-
5456 
-
5457  // get_bson_cstr only appends
-
5458  key.clear();
-
5459  }
-
5460 
-
5461  return true;
-
5462  }
-
5463 
-
5468  bool parse_bson_array()
-
5469  {
-
5470  std::int32_t document_size;
-
5471  get_number<std::int32_t, true>(input_format_t::bson, document_size);
-
5472 
-
5473  if (JSON_HEDLEY_UNLIKELY(not sax->start_array(std::size_t(-1))))
-
5474  {
-
5475  return false;
-
5476  }
-
5477 
-
5478  if (JSON_HEDLEY_UNLIKELY(not parse_bson_element_list(/*is_array*/true)))
-
5479  {
-
5480  return false;
-
5481  }
-
5482 
-
5483  return sax->end_array();
-
5484  }
-
5485 
-
5487  // CBOR //
-
5489 
-
5497  bool parse_cbor_internal(const bool get_char = true)
-
5498  {
-
5499  switch (get_char ? get() : current)
-
5500  {
-
5501  // EOF
-
5502  case std::char_traits<char>::eof():
-
5503  return unexpect_eof(input_format_t::cbor, "value");
-
5504 
-
5505  // Integer 0x00..0x17 (0..23)
-
5506  case 0x00:
-
5507  case 0x01:
-
5508  case 0x02:
-
5509  case 0x03:
-
5510  case 0x04:
-
5511  case 0x05:
-
5512  case 0x06:
-
5513  case 0x07:
-
5514  case 0x08:
-
5515  case 0x09:
-
5516  case 0x0A:
-
5517  case 0x0B:
-
5518  case 0x0C:
-
5519  case 0x0D:
-
5520  case 0x0E:
-
5521  case 0x0F:
-
5522  case 0x10:
-
5523  case 0x11:
-
5524  case 0x12:
-
5525  case 0x13:
-
5526  case 0x14:
-
5527  case 0x15:
-
5528  case 0x16:
-
5529  case 0x17:
-
5530  return sax->number_unsigned(static_cast<number_unsigned_t>(current));
-
5531 
-
5532  case 0x18: // Unsigned integer (one-byte uint8_t follows)
-
5533  {
-
5534  std::uint8_t number;
-
5535  return get_number(input_format_t::cbor, number) and sax->number_unsigned(number);
-
5536  }
-
5537 
-
5538  case 0x19: // Unsigned integer (two-byte uint16_t follows)
-
5539  {
-
5540  std::uint16_t number;
-
5541  return get_number(input_format_t::cbor, number) and sax->number_unsigned(number);
-
5542  }
-
5543 
-
5544  case 0x1A: // Unsigned integer (four-byte uint32_t follows)
-
5545  {
-
5546  std::uint32_t number;
-
5547  return get_number(input_format_t::cbor, number) and sax->number_unsigned(number);
-
5548  }
-
5549 
-
5550  case 0x1B: // Unsigned integer (eight-byte uint64_t follows)
-
5551  {
-
5552  std::uint64_t number;
-
5553  return get_number(input_format_t::cbor, number) and sax->number_unsigned(number);
-
5554  }
-
5555 
-
5556  // Negative integer -1-0x00..-1-0x17 (-1..-24)
-
5557  case 0x20:
-
5558  case 0x21:
-
5559  case 0x22:
-
5560  case 0x23:
-
5561  case 0x24:
-
5562  case 0x25:
-
5563  case 0x26:
-
5564  case 0x27:
-
5565  case 0x28:
-
5566  case 0x29:
-
5567  case 0x2A:
-
5568  case 0x2B:
-
5569  case 0x2C:
-
5570  case 0x2D:
-
5571  case 0x2E:
-
5572  case 0x2F:
-
5573  case 0x30:
-
5574  case 0x31:
-
5575  case 0x32:
-
5576  case 0x33:
-
5577  case 0x34:
-
5578  case 0x35:
-
5579  case 0x36:
-
5580  case 0x37:
-
5581  return sax->number_integer(static_cast<std::int8_t>(0x20 - 1 - current));
-
5582 
-
5583  case 0x38: // Negative integer (one-byte uint8_t follows)
-
5584  {
-
5585  std::uint8_t number;
-
5586  return get_number(input_format_t::cbor, number) and sax->number_integer(static_cast<number_integer_t>(-1) - number);
-
5587  }
-
5588 
-
5589  case 0x39: // Negative integer -1-n (two-byte uint16_t follows)
-
5590  {
-
5591  std::uint16_t number;
-
5592  return get_number(input_format_t::cbor, number) and sax->number_integer(static_cast<number_integer_t>(-1) - number);
-
5593  }
-
5594 
-
5595  case 0x3A: // Negative integer -1-n (four-byte uint32_t follows)
-
5596  {
-
5597  std::uint32_t number;
-
5598  return get_number(input_format_t::cbor, number) and sax->number_integer(static_cast<number_integer_t>(-1) - number);
-
5599  }
-
5600 
-
5601  case 0x3B: // Negative integer -1-n (eight-byte uint64_t follows)
-
5602  {
-
5603  std::uint64_t number;
-
5604  return get_number(input_format_t::cbor, number) and sax->number_integer(static_cast<number_integer_t>(-1)
-
5605  - static_cast<number_integer_t>(number));
-
5606  }
-
5607 
-
5608  // UTF-8 string (0x00..0x17 bytes follow)
-
5609  case 0x60:
-
5610  case 0x61:
-
5611  case 0x62:
-
5612  case 0x63:
-
5613  case 0x64:
-
5614  case 0x65:
-
5615  case 0x66:
-
5616  case 0x67:
-
5617  case 0x68:
-
5618  case 0x69:
-
5619  case 0x6A:
-
5620  case 0x6B:
-
5621  case 0x6C:
-
5622  case 0x6D:
-
5623  case 0x6E:
-
5624  case 0x6F:
-
5625  case 0x70:
-
5626  case 0x71:
-
5627  case 0x72:
-
5628  case 0x73:
-
5629  case 0x74:
-
5630  case 0x75:
-
5631  case 0x76:
-
5632  case 0x77:
-
5633  case 0x78: // UTF-8 string (one-byte uint8_t for n follows)
-
5634  case 0x79: // UTF-8 string (two-byte uint16_t for n follow)
-
5635  case 0x7A: // UTF-8 string (four-byte uint32_t for n follow)
-
5636  case 0x7B: // UTF-8 string (eight-byte uint64_t for n follow)
-
5637  case 0x7F: // UTF-8 string (indefinite length)
-
5638  {
-
5639  string_t s;
-
5640  return get_cbor_string(s) and sax->string(s);
-
5641  }
-
5642 
-
5643  // array (0x00..0x17 data items follow)
-
5644  case 0x80:
-
5645  case 0x81:
-
5646  case 0x82:
-
5647  case 0x83:
-
5648  case 0x84:
-
5649  case 0x85:
-
5650  case 0x86:
-
5651  case 0x87:
-
5652  case 0x88:
-
5653  case 0x89:
-
5654  case 0x8A:
-
5655  case 0x8B:
-
5656  case 0x8C:
-
5657  case 0x8D:
-
5658  case 0x8E:
-
5659  case 0x8F:
-
5660  case 0x90:
-
5661  case 0x91:
-
5662  case 0x92:
-
5663  case 0x93:
-
5664  case 0x94:
-
5665  case 0x95:
-
5666  case 0x96:
-
5667  case 0x97:
-
5668  return get_cbor_array(static_cast<std::size_t>(static_cast<unsigned int>(current) & 0x1Fu));
-
5669 
-
5670  case 0x98: // array (one-byte uint8_t for n follows)
-
5671  {
-
5672  std::uint8_t len;
-
5673  return get_number(input_format_t::cbor, len) and get_cbor_array(static_cast<std::size_t>(len));
-
5674  }
-
5675 
-
5676  case 0x99: // array (two-byte uint16_t for n follow)
-
5677  {
-
5678  std::uint16_t len;
-
5679  return get_number(input_format_t::cbor, len) and get_cbor_array(static_cast<std::size_t>(len));
-
5680  }
-
5681 
-
5682  case 0x9A: // array (four-byte uint32_t for n follow)
-
5683  {
-
5684  std::uint32_t len;
-
5685  return get_number(input_format_t::cbor, len) and get_cbor_array(static_cast<std::size_t>(len));
-
5686  }
-
5687 
-
5688  case 0x9B: // array (eight-byte uint64_t for n follow)
-
5689  {
-
5690  std::uint64_t len;
-
5691  return get_number(input_format_t::cbor, len) and get_cbor_array(static_cast<std::size_t>(len));
-
5692  }
-
5693 
-
5694  case 0x9F: // array (indefinite length)
-
5695  return get_cbor_array(std::size_t(-1));
-
5696 
-
5697  // map (0x00..0x17 pairs of data items follow)
-
5698  case 0xA0:
-
5699  case 0xA1:
-
5700  case 0xA2:
-
5701  case 0xA3:
-
5702  case 0xA4:
-
5703  case 0xA5:
-
5704  case 0xA6:
-
5705  case 0xA7:
-
5706  case 0xA8:
-
5707  case 0xA9:
-
5708  case 0xAA:
-
5709  case 0xAB:
-
5710  case 0xAC:
-
5711  case 0xAD:
-
5712  case 0xAE:
-
5713  case 0xAF:
-
5714  case 0xB0:
-
5715  case 0xB1:
-
5716  case 0xB2:
-
5717  case 0xB3:
-
5718  case 0xB4:
-
5719  case 0xB5:
-
5720  case 0xB6:
-
5721  case 0xB7:
-
5722  return get_cbor_object(static_cast<std::size_t>(static_cast<unsigned int>(current) & 0x1Fu));
-
5723 
-
5724  case 0xB8: // map (one-byte uint8_t for n follows)
-
5725  {
-
5726  std::uint8_t len;
-
5727  return get_number(input_format_t::cbor, len) and get_cbor_object(static_cast<std::size_t>(len));
-
5728  }
-
5729 
-
5730  case 0xB9: // map (two-byte uint16_t for n follow)
-
5731  {
-
5732  std::uint16_t len;
-
5733  return get_number(input_format_t::cbor, len) and get_cbor_object(static_cast<std::size_t>(len));
-
5734  }
-
5735 
-
5736  case 0xBA: // map (four-byte uint32_t for n follow)
-
5737  {
-
5738  std::uint32_t len;
-
5739  return get_number(input_format_t::cbor, len) and get_cbor_object(static_cast<std::size_t>(len));
-
5740  }
-
5741 
-
5742  case 0xBB: // map (eight-byte uint64_t for n follow)
-
5743  {
-
5744  std::uint64_t len;
-
5745  return get_number(input_format_t::cbor, len) and get_cbor_object(static_cast<std::size_t>(len));
-
5746  }
-
5747 
-
5748  case 0xBF: // map (indefinite length)
-
5749  return get_cbor_object(std::size_t(-1));
-
5750 
-
5751  case 0xF4: // false
-
5752  return sax->boolean(false);
-
5753 
-
5754  case 0xF5: // true
-
5755  return sax->boolean(true);
-
5756 
-
5757  case 0xF6: // null
-
5758  return sax->null();
-
5759 
-
5760  case 0xF9: // Half-Precision Float (two-byte IEEE 754)
-
5761  {
-
5762  const int byte1_raw = get();
-
5763  if (JSON_HEDLEY_UNLIKELY(not unexpect_eof(input_format_t::cbor, "number")))
-
5764  {
-
5765  return false;
-
5766  }
-
5767  const int byte2_raw = get();
-
5768  if (JSON_HEDLEY_UNLIKELY(not unexpect_eof(input_format_t::cbor, "number")))
-
5769  {
-
5770  return false;
-
5771  }
-
5772 
-
5773  const auto byte1 = static_cast<unsigned char>(byte1_raw);
-
5774  const auto byte2 = static_cast<unsigned char>(byte2_raw);
-
5775 
-
5776  // code from RFC 7049, Appendix D, Figure 3:
-
5777  // As half-precision floating-point numbers were only added
-
5778  // to IEEE 754 in 2008, today's programming platforms often
-
5779  // still only have limited support for them. It is very
-
5780  // easy to include at least decoding support for them even
-
5781  // without such support. An example of a small decoder for
-
5782  // half-precision floating-point numbers in the C language
-
5783  // is shown in Fig. 3.
-
5784  const auto half = static_cast<unsigned int>((byte1 << 8u) + byte2);
-
5785  const double val = [&half]
-
5786  {
-
5787  const int exp = (half >> 10u) & 0x1Fu;
-
5788  const unsigned int mant = half & 0x3FFu;
-
5789  assert(0 <= exp and exp <= 32);
-
5790  assert(mant <= 1024);
-
5791  switch (exp)
-
5792  {
-
5793  case 0:
-
5794  return std::ldexp(mant, -24);
-
5795  case 31:
-
5796  return (mant == 0)
-
5797  ? std::numeric_limits<double>::infinity()
-
5798  : std::numeric_limits<double>::quiet_NaN();
-
5799  default:
-
5800  return std::ldexp(mant + 1024, exp - 25);
-
5801  }
-
5802  }();
-
5803  return sax->number_float((half & 0x8000u) != 0
-
5804  ? static_cast<number_float_t>(-val)
-
5805  : static_cast<number_float_t>(val), "");
-
5806  }
-
5807 
-
5808  case 0xFA: // Single-Precision Float (four-byte IEEE 754)
-
5809  {
-
5810  float number;
-
5811  return get_number(input_format_t::cbor, number) and sax->number_float(static_cast<number_float_t>(number), "");
-
5812  }
-
5813 
-
5814  case 0xFB: // Double-Precision Float (eight-byte IEEE 754)
-
5815  {
-
5816  double number;
-
5817  return get_number(input_format_t::cbor, number) and sax->number_float(static_cast<number_float_t>(number), "");
-
5818  }
-
5819 
-
5820  default: // anything else (0xFF is handled inside the other types)
-
5821  {
-
5822  auto last_token = get_token_string();
-
5823  return sax->parse_error(chars_read, last_token, parse_error::create(112, chars_read, exception_message(input_format_t::cbor, "invalid byte: 0x" + last_token, "value")));
-
5824  }
-
5825  }
-
5826  }
-
5827 
-
5839  bool get_cbor_string(string_t& result)
-
5840  {
-
5841  if (JSON_HEDLEY_UNLIKELY(not unexpect_eof(input_format_t::cbor, "string")))
-
5842  {
-
5843  return false;
-
5844  }
-
5845 
-
5846  switch (current)
-
5847  {
-
5848  // UTF-8 string (0x00..0x17 bytes follow)
-
5849  case 0x60:
-
5850  case 0x61:
-
5851  case 0x62:
-
5852  case 0x63:
-
5853  case 0x64:
-
5854  case 0x65:
-
5855  case 0x66:
-
5856  case 0x67:
-
5857  case 0x68:
-
5858  case 0x69:
-
5859  case 0x6A:
-
5860  case 0x6B:
-
5861  case 0x6C:
-
5862  case 0x6D:
-
5863  case 0x6E:
-
5864  case 0x6F:
-
5865  case 0x70:
-
5866  case 0x71:
-
5867  case 0x72:
-
5868  case 0x73:
-
5869  case 0x74:
-
5870  case 0x75:
-
5871  case 0x76:
-
5872  case 0x77:
-
5873  {
-
5874  return get_string(input_format_t::cbor, static_cast<unsigned int>(current) & 0x1Fu, result);
-
5875  }
-
5876 
-
5877  case 0x78: // UTF-8 string (one-byte uint8_t for n follows)
-
5878  {
-
5879  std::uint8_t len;
-
5880  return get_number(input_format_t::cbor, len) and get_string(input_format_t::cbor, len, result);
-
5881  }
-
5882 
-
5883  case 0x79: // UTF-8 string (two-byte uint16_t for n follow)
-
5884  {
-
5885  std::uint16_t len;
-
5886  return get_number(input_format_t::cbor, len) and get_string(input_format_t::cbor, len, result);
-
5887  }
-
5888 
-
5889  case 0x7A: // UTF-8 string (four-byte uint32_t for n follow)
-
5890  {
-
5891  std::uint32_t len;
-
5892  return get_number(input_format_t::cbor, len) and get_string(input_format_t::cbor, len, result);
-
5893  }
-
5894 
-
5895  case 0x7B: // UTF-8 string (eight-byte uint64_t for n follow)
-
5896  {
-
5897  std::uint64_t len;
-
5898  return get_number(input_format_t::cbor, len) and get_string(input_format_t::cbor, len, result);
-
5899  }
-
5900 
-
5901  case 0x7F: // UTF-8 string (indefinite length)
-
5902  {
-
5903  while (get() != 0xFF)
-
5904  {
-
5905  string_t chunk;
-
5906  if (not get_cbor_string(chunk))
-
5907  {
-
5908  return false;
-
5909  }
-
5910  result.append(chunk);
-
5911  }
-
5912  return true;
-
5913  }
-
5914 
-
5915  default:
-
5916  {
-
5917  auto last_token = get_token_string();
-
5918  return sax->parse_error(chars_read, last_token, parse_error::create(113, chars_read, exception_message(input_format_t::cbor, "expected length specification (0x60-0x7B) or indefinite string type (0x7F); last byte: 0x" + last_token, "string")));
-
5919  }
-
5920  }
-
5921  }
-
5922 
-
5928  bool get_cbor_array(const std::size_t len)
-
5929  {
-
5930  if (JSON_HEDLEY_UNLIKELY(not sax->start_array(len)))
-
5931  {
-
5932  return false;
-
5933  }
-
5934 
-
5935  if (len != std::size_t(-1))
-
5936  {
-
5937  for (std::size_t i = 0; i < len; ++i)
-
5938  {
-
5939  if (JSON_HEDLEY_UNLIKELY(not parse_cbor_internal()))
-
5940  {
-
5941  return false;
-
5942  }
-
5943  }
-
5944  }
-
5945  else
-
5946  {
-
5947  while (get() != 0xFF)
-
5948  {
-
5949  if (JSON_HEDLEY_UNLIKELY(not parse_cbor_internal(false)))
-
5950  {
-
5951  return false;
-
5952  }
-
5953  }
-
5954  }
-
5955 
-
5956  return sax->end_array();
-
5957  }
-
5958 
-
5964  bool get_cbor_object(const std::size_t len)
-
5965  {
-
5966  if (JSON_HEDLEY_UNLIKELY(not sax->start_object(len)))
-
5967  {
-
5968  return false;
-
5969  }
-
5970 
-
5971  string_t key;
-
5972  if (len != std::size_t(-1))
-
5973  {
-
5974  for (std::size_t i = 0; i < len; ++i)
-
5975  {
-
5976  get();
-
5977  if (JSON_HEDLEY_UNLIKELY(not get_cbor_string(key) or not sax->key(key)))
-
5978  {
-
5979  return false;
-
5980  }
-
5981 
-
5982  if (JSON_HEDLEY_UNLIKELY(not parse_cbor_internal()))
-
5983  {
-
5984  return false;
-
5985  }
-
5986  key.clear();
-
5987  }
-
5988  }
-
5989  else
-
5990  {
-
5991  while (get() != 0xFF)
-
5992  {
-
5993  if (JSON_HEDLEY_UNLIKELY(not get_cbor_string(key) or not sax->key(key)))
-
5994  {
-
5995  return false;
-
5996  }
-
5997 
-
5998  if (JSON_HEDLEY_UNLIKELY(not parse_cbor_internal()))
-
5999  {
-
6000  return false;
-
6001  }
-
6002  key.clear();
-
6003  }
-
6004  }
-
6005 
-
6006  return sax->end_object();
-
6007  }
-
6008 
-
6010  // MsgPack //
-
6012 
-
6016  bool parse_msgpack_internal()
-
6017  {
-
6018  switch (get())
-
6019  {
-
6020  // EOF
-
6021  case std::char_traits<char>::eof():
-
6022  return unexpect_eof(input_format_t::msgpack, "value");
-
6023 
-
6024  // positive fixint
-
6025  case 0x00:
-
6026  case 0x01:
-
6027  case 0x02:
-
6028  case 0x03:
-
6029  case 0x04:
-
6030  case 0x05:
-
6031  case 0x06:
-
6032  case 0x07:
-
6033  case 0x08:
-
6034  case 0x09:
-
6035  case 0x0A:
-
6036  case 0x0B:
-
6037  case 0x0C:
-
6038  case 0x0D:
-
6039  case 0x0E:
-
6040  case 0x0F:
-
6041  case 0x10:
-
6042  case 0x11:
-
6043  case 0x12:
-
6044  case 0x13:
-
6045  case 0x14:
-
6046  case 0x15:
-
6047  case 0x16:
-
6048  case 0x17:
-
6049  case 0x18:
-
6050  case 0x19:
-
6051  case 0x1A:
-
6052  case 0x1B:
-
6053  case 0x1C:
-
6054  case 0x1D:
-
6055  case 0x1E:
-
6056  case 0x1F:
-
6057  case 0x20:
-
6058  case 0x21:
-
6059  case 0x22:
-
6060  case 0x23:
-
6061  case 0x24:
-
6062  case 0x25:
-
6063  case 0x26:
-
6064  case 0x27:
-
6065  case 0x28:
-
6066  case 0x29:
-
6067  case 0x2A:
-
6068  case 0x2B:
-
6069  case 0x2C:
-
6070  case 0x2D:
-
6071  case 0x2E:
-
6072  case 0x2F:
-
6073  case 0x30:
-
6074  case 0x31:
-
6075  case 0x32:
-
6076  case 0x33:
-
6077  case 0x34:
-
6078  case 0x35:
-
6079  case 0x36:
-
6080  case 0x37:
-
6081  case 0x38:
-
6082  case 0x39:
-
6083  case 0x3A:
-
6084  case 0x3B:
-
6085  case 0x3C:
-
6086  case 0x3D:
-
6087  case 0x3E:
-
6088  case 0x3F:
-
6089  case 0x40:
-
6090  case 0x41:
-
6091  case 0x42:
-
6092  case 0x43:
-
6093  case 0x44:
-
6094  case 0x45:
-
6095  case 0x46:
-
6096  case 0x47:
-
6097  case 0x48:
-
6098  case 0x49:
-
6099  case 0x4A:
-
6100  case 0x4B:
-
6101  case 0x4C:
-
6102  case 0x4D:
-
6103  case 0x4E:
-
6104  case 0x4F:
-
6105  case 0x50:
-
6106  case 0x51:
-
6107  case 0x52:
-
6108  case 0x53:
-
6109  case 0x54:
-
6110  case 0x55:
-
6111  case 0x56:
-
6112  case 0x57:
-
6113  case 0x58:
-
6114  case 0x59:
-
6115  case 0x5A:
-
6116  case 0x5B:
-
6117  case 0x5C:
-
6118  case 0x5D:
-
6119  case 0x5E:
-
6120  case 0x5F:
-
6121  case 0x60:
-
6122  case 0x61:
-
6123  case 0x62:
-
6124  case 0x63:
-
6125  case 0x64:
-
6126  case 0x65:
-
6127  case 0x66:
-
6128  case 0x67:
-
6129  case 0x68:
-
6130  case 0x69:
-
6131  case 0x6A:
-
6132  case 0x6B:
-
6133  case 0x6C:
-
6134  case 0x6D:
-
6135  case 0x6E:
-
6136  case 0x6F:
-
6137  case 0x70:
-
6138  case 0x71:
-
6139  case 0x72:
-
6140  case 0x73:
-
6141  case 0x74:
-
6142  case 0x75:
-
6143  case 0x76:
-
6144  case 0x77:
-
6145  case 0x78:
-
6146  case 0x79:
-
6147  case 0x7A:
-
6148  case 0x7B:
-
6149  case 0x7C:
-
6150  case 0x7D:
-
6151  case 0x7E:
-
6152  case 0x7F:
-
6153  return sax->number_unsigned(static_cast<number_unsigned_t>(current));
-
6154 
-
6155  // fixmap
-
6156  case 0x80:
-
6157  case 0x81:
-
6158  case 0x82:
-
6159  case 0x83:
-
6160  case 0x84:
-
6161  case 0x85:
-
6162  case 0x86:
-
6163  case 0x87:
-
6164  case 0x88:
-
6165  case 0x89:
-
6166  case 0x8A:
-
6167  case 0x8B:
-
6168  case 0x8C:
-
6169  case 0x8D:
-
6170  case 0x8E:
-
6171  case 0x8F:
-
6172  return get_msgpack_object(static_cast<std::size_t>(static_cast<unsigned int>(current) & 0x0Fu));
-
6173 
-
6174  // fixarray
-
6175  case 0x90:
-
6176  case 0x91:
-
6177  case 0x92:
-
6178  case 0x93:
-
6179  case 0x94:
-
6180  case 0x95:
-
6181  case 0x96:
-
6182  case 0x97:
-
6183  case 0x98:
-
6184  case 0x99:
-
6185  case 0x9A:
-
6186  case 0x9B:
-
6187  case 0x9C:
-
6188  case 0x9D:
-
6189  case 0x9E:
-
6190  case 0x9F:
-
6191  return get_msgpack_array(static_cast<std::size_t>(static_cast<unsigned int>(current) & 0x0Fu));
-
6192 
-
6193  // fixstr
-
6194  case 0xA0:
-
6195  case 0xA1:
-
6196  case 0xA2:
-
6197  case 0xA3:
-
6198  case 0xA4:
-
6199  case 0xA5:
-
6200  case 0xA6:
-
6201  case 0xA7:
-
6202  case 0xA8:
-
6203  case 0xA9:
-
6204  case 0xAA:
-
6205  case 0xAB:
-
6206  case 0xAC:
-
6207  case 0xAD:
-
6208  case 0xAE:
-
6209  case 0xAF:
-
6210  case 0xB0:
-
6211  case 0xB1:
-
6212  case 0xB2:
-
6213  case 0xB3:
-
6214  case 0xB4:
-
6215  case 0xB5:
-
6216  case 0xB6:
-
6217  case 0xB7:
-
6218  case 0xB8:
-
6219  case 0xB9:
-
6220  case 0xBA:
-
6221  case 0xBB:
-
6222  case 0xBC:
-
6223  case 0xBD:
-
6224  case 0xBE:
-
6225  case 0xBF:
-
6226  case 0xD9: // str 8
-
6227  case 0xDA: // str 16
-
6228  case 0xDB: // str 32
-
6229  {
-
6230  string_t s;
-
6231  return get_msgpack_string(s) and sax->string(s);
-
6232  }
-
6233 
-
6234  case 0xC0: // nil
-
6235  return sax->null();
-
6236 
-
6237  case 0xC2: // false
-
6238  return sax->boolean(false);
-
6239 
-
6240  case 0xC3: // true
-
6241  return sax->boolean(true);
-
6242 
-
6243  case 0xCA: // float 32
-
6244  {
-
6245  float number;
-
6246  return get_number(input_format_t::msgpack, number) and sax->number_float(static_cast<number_float_t>(number), "");
-
6247  }
-
6248 
-
6249  case 0xCB: // float 64
-
6250  {
-
6251  double number;
-
6252  return get_number(input_format_t::msgpack, number) and sax->number_float(static_cast<number_float_t>(number), "");
-
6253  }
-
6254 
-
6255  case 0xCC: // uint 8
-
6256  {
-
6257  std::uint8_t number;
-
6258  return get_number(input_format_t::msgpack, number) and sax->number_unsigned(number);
-
6259  }
-
6260 
-
6261  case 0xCD: // uint 16
-
6262  {
-
6263  std::uint16_t number;
-
6264  return get_number(input_format_t::msgpack, number) and sax->number_unsigned(number);
-
6265  }
-
6266 
-
6267  case 0xCE: // uint 32
-
6268  {
-
6269  std::uint32_t number;
-
6270  return get_number(input_format_t::msgpack, number) and sax->number_unsigned(number);
-
6271  }
-
6272 
-
6273  case 0xCF: // uint 64
-
6274  {
-
6275  std::uint64_t number;
-
6276  return get_number(input_format_t::msgpack, number) and sax->number_unsigned(number);
-
6277  }
-
6278 
-
6279  case 0xD0: // int 8
-
6280  {
-
6281  std::int8_t number;
-
6282  return get_number(input_format_t::msgpack, number) and sax->number_integer(number);
-
6283  }
-
6284 
-
6285  case 0xD1: // int 16
-
6286  {
-
6287  std::int16_t number;
-
6288  return get_number(input_format_t::msgpack, number) and sax->number_integer(number);
-
6289  }
-
6290 
-
6291  case 0xD2: // int 32
-
6292  {
-
6293  std::int32_t number;
-
6294  return get_number(input_format_t::msgpack, number) and sax->number_integer(number);
-
6295  }
-
6296 
-
6297  case 0xD3: // int 64
-
6298  {
-
6299  std::int64_t number;
-
6300  return get_number(input_format_t::msgpack, number) and sax->number_integer(number);
-
6301  }
-
6302 
-
6303  case 0xDC: // array 16
-
6304  {
-
6305  std::uint16_t len;
-
6306  return get_number(input_format_t::msgpack, len) and get_msgpack_array(static_cast<std::size_t>(len));
-
6307  }
-
6308 
-
6309  case 0xDD: // array 32
-
6310  {
-
6311  std::uint32_t len;
-
6312  return get_number(input_format_t::msgpack, len) and get_msgpack_array(static_cast<std::size_t>(len));
-
6313  }
-
6314 
-
6315  case 0xDE: // map 16
-
6316  {
-
6317  std::uint16_t len;
-
6318  return get_number(input_format_t::msgpack, len) and get_msgpack_object(static_cast<std::size_t>(len));
-
6319  }
-
6320 
-
6321  case 0xDF: // map 32
-
6322  {
-
6323  std::uint32_t len;
-
6324  return get_number(input_format_t::msgpack, len) and get_msgpack_object(static_cast<std::size_t>(len));
-
6325  }
-
6326 
-
6327  // negative fixint
-
6328  case 0xE0:
-
6329  case 0xE1:
-
6330  case 0xE2:
-
6331  case 0xE3:
-
6332  case 0xE4:
-
6333  case 0xE5:
-
6334  case 0xE6:
-
6335  case 0xE7:
-
6336  case 0xE8:
-
6337  case 0xE9:
-
6338  case 0xEA:
-
6339  case 0xEB:
-
6340  case 0xEC:
-
6341  case 0xED:
-
6342  case 0xEE:
-
6343  case 0xEF:
-
6344  case 0xF0:
-
6345  case 0xF1:
-
6346  case 0xF2:
-
6347  case 0xF3:
-
6348  case 0xF4:
-
6349  case 0xF5:
-
6350  case 0xF6:
-
6351  case 0xF7:
-
6352  case 0xF8:
-
6353  case 0xF9:
-
6354  case 0xFA:
-
6355  case 0xFB:
-
6356  case 0xFC:
-
6357  case 0xFD:
-
6358  case 0xFE:
-
6359  case 0xFF:
-
6360  return sax->number_integer(static_cast<std::int8_t>(current));
-
6361 
-
6362  default: // anything else
-
6363  {
-
6364  auto last_token = get_token_string();
-
6365  return sax->parse_error(chars_read, last_token, parse_error::create(112, chars_read, exception_message(input_format_t::msgpack, "invalid byte: 0x" + last_token, "value")));
-
6366  }
-
6367  }
-
6368  }
-
6369 
-
6380  bool get_msgpack_string(string_t& result)
-
6381  {
-
6382  if (JSON_HEDLEY_UNLIKELY(not unexpect_eof(input_format_t::msgpack, "string")))
-
6383  {
-
6384  return false;
-
6385  }
-
6386 
-
6387  switch (current)
-
6388  {
-
6389  // fixstr
-
6390  case 0xA0:
-
6391  case 0xA1:
-
6392  case 0xA2:
-
6393  case 0xA3:
-
6394  case 0xA4:
-
6395  case 0xA5:
-
6396  case 0xA6:
-
6397  case 0xA7:
-
6398  case 0xA8:
-
6399  case 0xA9:
-
6400  case 0xAA:
-
6401  case 0xAB:
-
6402  case 0xAC:
-
6403  case 0xAD:
-
6404  case 0xAE:
-
6405  case 0xAF:
-
6406  case 0xB0:
-
6407  case 0xB1:
-
6408  case 0xB2:
-
6409  case 0xB3:
-
6410  case 0xB4:
-
6411  case 0xB5:
-
6412  case 0xB6:
-
6413  case 0xB7:
-
6414  case 0xB8:
-
6415  case 0xB9:
-
6416  case 0xBA:
-
6417  case 0xBB:
-
6418  case 0xBC:
-
6419  case 0xBD:
-
6420  case 0xBE:
-
6421  case 0xBF:
-
6422  {
-
6423  return get_string(input_format_t::msgpack, static_cast<unsigned int>(current) & 0x1Fu, result);
-
6424  }
-
6425 
-
6426  case 0xD9: // str 8
-
6427  {
-
6428  std::uint8_t len;
-
6429  return get_number(input_format_t::msgpack, len) and get_string(input_format_t::msgpack, len, result);
-
6430  }
-
6431 
-
6432  case 0xDA: // str 16
-
6433  {
-
6434  std::uint16_t len;
-
6435  return get_number(input_format_t::msgpack, len) and get_string(input_format_t::msgpack, len, result);
-
6436  }
-
6437 
-
6438  case 0xDB: // str 32
-
6439  {
-
6440  std::uint32_t len;
-
6441  return get_number(input_format_t::msgpack, len) and get_string(input_format_t::msgpack, len, result);
-
6442  }
-
6443 
-
6444  default:
-
6445  {
-
6446  auto last_token = get_token_string();
-
6447  return sax->parse_error(chars_read, last_token, parse_error::create(113, chars_read, exception_message(input_format_t::msgpack, "expected length specification (0xA0-0xBF, 0xD9-0xDB); last byte: 0x" + last_token, "string")));
-
6448  }
-
6449  }
-
6450  }
-
6451 
-
6456  bool get_msgpack_array(const std::size_t len)
-
6457  {
-
6458  if (JSON_HEDLEY_UNLIKELY(not sax->start_array(len)))
-
6459  {
-
6460  return false;
-
6461  }
-
6462 
-
6463  for (std::size_t i = 0; i < len; ++i)
-
6464  {
-
6465  if (JSON_HEDLEY_UNLIKELY(not parse_msgpack_internal()))
-
6466  {
-
6467  return false;
-
6468  }
-
6469  }
-
6470 
-
6471  return sax->end_array();
-
6472  }
-
6473 
-
6478  bool get_msgpack_object(const std::size_t len)
-
6479  {
-
6480  if (JSON_HEDLEY_UNLIKELY(not sax->start_object(len)))
-
6481  {
-
6482  return false;
-
6483  }
-
6484 
-
6485  string_t key;
-
6486  for (std::size_t i = 0; i < len; ++i)
-
6487  {
-
6488  get();
-
6489  if (JSON_HEDLEY_UNLIKELY(not get_msgpack_string(key) or not sax->key(key)))
-
6490  {
-
6491  return false;
-
6492  }
-
6493 
-
6494  if (JSON_HEDLEY_UNLIKELY(not parse_msgpack_internal()))
-
6495  {
-
6496  return false;
-
6497  }
-
6498  key.clear();
-
6499  }
-
6500 
-
6501  return sax->end_object();
-
6502  }
-
6503 
-
6505  // UBJSON //
-
6507 
-
6515  bool parse_ubjson_internal(const bool get_char = true)
-
6516  {
-
6517  return get_ubjson_value(get_char ? get_ignore_noop() : current);
-
6518  }
-
6519 
-
6534  bool get_ubjson_string(string_t& result, const bool get_char = true)
-
6535  {
-
6536  if (get_char)
-
6537  {
-
6538  get(); // TODO(niels): may we ignore N here?
-
6539  }
-
6540 
-
6541  if (JSON_HEDLEY_UNLIKELY(not unexpect_eof(input_format_t::ubjson, "value")))
-
6542  {
-
6543  return false;
-
6544  }
-
6545 
-
6546  switch (current)
-
6547  {
-
6548  case 'U':
-
6549  {
-
6550  std::uint8_t len;
-
6551  return get_number(input_format_t::ubjson, len) and get_string(input_format_t::ubjson, len, result);
-
6552  }
-
6553 
-
6554  case 'i':
-
6555  {
-
6556  std::int8_t len;
-
6557  return get_number(input_format_t::ubjson, len) and get_string(input_format_t::ubjson, len, result);
-
6558  }
-
6559 
-
6560  case 'I':
-
6561  {
-
6562  std::int16_t len;
-
6563  return get_number(input_format_t::ubjson, len) and get_string(input_format_t::ubjson, len, result);
-
6564  }
-
6565 
-
6566  case 'l':
-
6567  {
-
6568  std::int32_t len;
-
6569  return get_number(input_format_t::ubjson, len) and get_string(input_format_t::ubjson, len, result);
-
6570  }
-
6571 
-
6572  case 'L':
-
6573  {
-
6574  std::int64_t len;
-
6575  return get_number(input_format_t::ubjson, len) and get_string(input_format_t::ubjson, len, result);
-
6576  }
-
6577 
-
6578  default:
-
6579  auto last_token = get_token_string();
-
6580  return sax->parse_error(chars_read, last_token, parse_error::create(113, chars_read, exception_message(input_format_t::ubjson, "expected length type specification (U, i, I, l, L); last byte: 0x" + last_token, "string")));
-
6581  }
-
6582  }
-
6583 
-
6588  bool get_ubjson_size_value(std::size_t& result)
-
6589  {
-
6590  switch (get_ignore_noop())
-
6591  {
-
6592  case 'U':
-
6593  {
-
6594  std::uint8_t number;
-
6595  if (JSON_HEDLEY_UNLIKELY(not get_number(input_format_t::ubjson, number)))
-
6596  {
-
6597  return false;
-
6598  }
-
6599  result = static_cast<std::size_t>(number);
-
6600  return true;
-
6601  }
-
6602 
-
6603  case 'i':
-
6604  {
-
6605  std::int8_t number;
-
6606  if (JSON_HEDLEY_UNLIKELY(not get_number(input_format_t::ubjson, number)))
-
6607  {
-
6608  return false;
-
6609  }
-
6610  result = static_cast<std::size_t>(number);
-
6611  return true;
-
6612  }
-
6613 
-
6614  case 'I':
-
6615  {
-
6616  std::int16_t number;
-
6617  if (JSON_HEDLEY_UNLIKELY(not get_number(input_format_t::ubjson, number)))
-
6618  {
-
6619  return false;
-
6620  }
-
6621  result = static_cast<std::size_t>(number);
-
6622  return true;
-
6623  }
-
6624 
-
6625  case 'l':
-
6626  {
-
6627  std::int32_t number;
-
6628  if (JSON_HEDLEY_UNLIKELY(not get_number(input_format_t::ubjson, number)))
-
6629  {
-
6630  return false;
-
6631  }
-
6632  result = static_cast<std::size_t>(number);
-
6633  return true;
-
6634  }
-
6635 
-
6636  case 'L':
-
6637  {
-
6638  std::int64_t number;
-
6639  if (JSON_HEDLEY_UNLIKELY(not get_number(input_format_t::ubjson, number)))
-
6640  {
-
6641  return false;
-
6642  }
-
6643  result = static_cast<std::size_t>(number);
-
6644  return true;
-
6645  }
-
6646 
-
6647  default:
-
6648  {
-
6649  auto last_token = get_token_string();
-
6650  return sax->parse_error(chars_read, last_token, parse_error::create(113, chars_read, exception_message(input_format_t::ubjson, "expected length type specification (U, i, I, l, L) after '#'; last byte: 0x" + last_token, "size")));
-
6651  }
-
6652  }
-
6653  }
-
6654 
-
6665  bool get_ubjson_size_type(std::pair<std::size_t, int>& result)
-
6666  {
-
6667  result.first = string_t::npos; // size
-
6668  result.second = 0; // type
-
6669 
-
6670  get_ignore_noop();
-
6671 
-
6672  if (current == '$')
-
6673  {
-
6674  result.second = get(); // must not ignore 'N', because 'N' maybe the type
-
6675  if (JSON_HEDLEY_UNLIKELY(not unexpect_eof(input_format_t::ubjson, "type")))
-
6676  {
-
6677  return false;
-
6678  }
-
6679 
-
6680  get_ignore_noop();
-
6681  if (JSON_HEDLEY_UNLIKELY(current != '#'))
-
6682  {
-
6683  if (JSON_HEDLEY_UNLIKELY(not unexpect_eof(input_format_t::ubjson, "value")))
-
6684  {
-
6685  return false;
-
6686  }
-
6687  auto last_token = get_token_string();
-
6688  return sax->parse_error(chars_read, last_token, parse_error::create(112, chars_read, exception_message(input_format_t::ubjson, "expected '#' after type information; last byte: 0x" + last_token, "size")));
-
6689  }
-
6690 
-
6691  return get_ubjson_size_value(result.first);
-
6692  }
-
6693 
-
6694  if (current == '#')
-
6695  {
-
6696  return get_ubjson_size_value(result.first);
-
6697  }
-
6698 
-
6699  return true;
-
6700  }
-
6701 
-
6706  bool get_ubjson_value(const int prefix)
-
6707  {
-
6708  switch (prefix)
-
6709  {
-
6710  case std::char_traits<char>::eof(): // EOF
-
6711  return unexpect_eof(input_format_t::ubjson, "value");
-
6712 
-
6713  case 'T': // true
-
6714  return sax->boolean(true);
-
6715  case 'F': // false
-
6716  return sax->boolean(false);
-
6717 
-
6718  case 'Z': // null
-
6719  return sax->null();
-
6720 
-
6721  case 'U':
-
6722  {
-
6723  std::uint8_t number;
-
6724  return get_number(input_format_t::ubjson, number) and sax->number_unsigned(number);
-
6725  }
-
6726 
-
6727  case 'i':
-
6728  {
-
6729  std::int8_t number;
-
6730  return get_number(input_format_t::ubjson, number) and sax->number_integer(number);
-
6731  }
-
6732 
-
6733  case 'I':
-
6734  {
-
6735  std::int16_t number;
-
6736  return get_number(input_format_t::ubjson, number) and sax->number_integer(number);
-
6737  }
-
6738 
-
6739  case 'l':
-
6740  {
-
6741  std::int32_t number;
-
6742  return get_number(input_format_t::ubjson, number) and sax->number_integer(number);
-
6743  }
-
6744 
-
6745  case 'L':
-
6746  {
-
6747  std::int64_t number;
-
6748  return get_number(input_format_t::ubjson, number) and sax->number_integer(number);
-
6749  }
-
6750 
-
6751  case 'd':
-
6752  {
-
6753  float number;
-
6754  return get_number(input_format_t::ubjson, number) and sax->number_float(static_cast<number_float_t>(number), "");
-
6755  }
-
6756 
-
6757  case 'D':
-
6758  {
-
6759  double number;
-
6760  return get_number(input_format_t::ubjson, number) and sax->number_float(static_cast<number_float_t>(number), "");
-
6761  }
-
6762 
-
6763  case 'C': // char
-
6764  {
-
6765  get();
-
6766  if (JSON_HEDLEY_UNLIKELY(not unexpect_eof(input_format_t::ubjson, "char")))
-
6767  {
-
6768  return false;
-
6769  }
-
6770  if (JSON_HEDLEY_UNLIKELY(current > 127))
-
6771  {
-
6772  auto last_token = get_token_string();
-
6773  return sax->parse_error(chars_read, last_token, parse_error::create(113, chars_read, exception_message(input_format_t::ubjson, "byte after 'C' must be in range 0x00..0x7F; last byte: 0x" + last_token, "char")));
-
6774  }
-
6775  string_t s(1, static_cast<char>(current));
-
6776  return sax->string(s);
-
6777  }
-
6778 
-
6779  case 'S': // string
-
6780  {
-
6781  string_t s;
-
6782  return get_ubjson_string(s) and sax->string(s);
-
6783  }
-
6784 
-
6785  case '[': // array
-
6786  return get_ubjson_array();
-
6787 
-
6788  case '{': // object
-
6789  return get_ubjson_object();
-
6790 
-
6791  default: // anything else
-
6792  {
-
6793  auto last_token = get_token_string();
-
6794  return sax->parse_error(chars_read, last_token, parse_error::create(112, chars_read, exception_message(input_format_t::ubjson, "invalid byte: 0x" + last_token, "value")));
-
6795  }
-
6796  }
-
6797  }
-
6798 
-
6802  bool get_ubjson_array()
-
6803  {
-
6804  std::pair<std::size_t, int> size_and_type;
-
6805  if (JSON_HEDLEY_UNLIKELY(not get_ubjson_size_type(size_and_type)))
-
6806  {
-
6807  return false;
-
6808  }
-
6809 
-
6810  if (size_and_type.first != string_t::npos)
-
6811  {
-
6812  if (JSON_HEDLEY_UNLIKELY(not sax->start_array(size_and_type.first)))
-
6813  {
-
6814  return false;
-
6815  }
-
6816 
-
6817  if (size_and_type.second != 0)
-
6818  {
-
6819  if (size_and_type.second != 'N')
-
6820  {
-
6821  for (std::size_t i = 0; i < size_and_type.first; ++i)
-
6822  {
-
6823  if (JSON_HEDLEY_UNLIKELY(not get_ubjson_value(size_and_type.second)))
-
6824  {
-
6825  return false;
-
6826  }
-
6827  }
-
6828  }
-
6829  }
-
6830  else
-
6831  {
-
6832  for (std::size_t i = 0; i < size_and_type.first; ++i)
-
6833  {
-
6834  if (JSON_HEDLEY_UNLIKELY(not parse_ubjson_internal()))
-
6835  {
-
6836  return false;
-
6837  }
-
6838  }
-
6839  }
-
6840  }
-
6841  else
-
6842  {
-
6843  if (JSON_HEDLEY_UNLIKELY(not sax->start_array(std::size_t(-1))))
-
6844  {
-
6845  return false;
-
6846  }
-
6847 
-
6848  while (current != ']')
-
6849  {
-
6850  if (JSON_HEDLEY_UNLIKELY(not parse_ubjson_internal(false)))
-
6851  {
-
6852  return false;
-
6853  }
-
6854  get_ignore_noop();
-
6855  }
-
6856  }
-
6857 
-
6858  return sax->end_array();
-
6859  }
-
6860 
-
6864  bool get_ubjson_object()
-
6865  {
-
6866  std::pair<std::size_t, int> size_and_type;
-
6867  if (JSON_HEDLEY_UNLIKELY(not get_ubjson_size_type(size_and_type)))
-
6868  {
-
6869  return false;
-
6870  }
-
6871 
-
6872  string_t key;
-
6873  if (size_and_type.first != string_t::npos)
-
6874  {
-
6875  if (JSON_HEDLEY_UNLIKELY(not sax->start_object(size_and_type.first)))
-
6876  {
-
6877  return false;
-
6878  }
-
6879 
-
6880  if (size_and_type.second != 0)
-
6881  {
-
6882  for (std::size_t i = 0; i < size_and_type.first; ++i)
-
6883  {
-
6884  if (JSON_HEDLEY_UNLIKELY(not get_ubjson_string(key) or not sax->key(key)))
-
6885  {
-
6886  return false;
-
6887  }
-
6888  if (JSON_HEDLEY_UNLIKELY(not get_ubjson_value(size_and_type.second)))
-
6889  {
-
6890  return false;
-
6891  }
-
6892  key.clear();
-
6893  }
-
6894  }
-
6895  else
-
6896  {
-
6897  for (std::size_t i = 0; i < size_and_type.first; ++i)
-
6898  {
-
6899  if (JSON_HEDLEY_UNLIKELY(not get_ubjson_string(key) or not sax->key(key)))
-
6900  {
-
6901  return false;
-
6902  }
-
6903  if (JSON_HEDLEY_UNLIKELY(not parse_ubjson_internal()))
-
6904  {
-
6905  return false;
-
6906  }
-
6907  key.clear();
-
6908  }
-
6909  }
-
6910  }
-
6911  else
-
6912  {
-
6913  if (JSON_HEDLEY_UNLIKELY(not sax->start_object(std::size_t(-1))))
-
6914  {
-
6915  return false;
-
6916  }
-
6917 
-
6918  while (current != '}')
-
6919  {
-
6920  if (JSON_HEDLEY_UNLIKELY(not get_ubjson_string(key, false) or not sax->key(key)))
-
6921  {
-
6922  return false;
-
6923  }
-
6924  if (JSON_HEDLEY_UNLIKELY(not parse_ubjson_internal()))
-
6925  {
-
6926  return false;
-
6927  }
-
6928  get_ignore_noop();
-
6929  key.clear();
-
6930  }
-
6931  }
-
6932 
-
6933  return sax->end_object();
-
6934  }
-
6935 
-
6937  // Utility functions //
-
6939 
-
6949  int get()
-
6950  {
-
6951  ++chars_read;
-
6952  return current = ia->get_character();
-
6953  }
-
6954 
-
6958  int get_ignore_noop()
-
6959  {
-
6960  do
-
6961  {
-
6962  get();
-
6963  }
-
6964  while (current == 'N');
-
6965 
-
6966  return current;
-
6967  }
-
6968 
-
6969  /*
-
6970  @brief read a number from the input
-
6971 
-
6972  @tparam NumberType the type of the number
-
6973  @param[in] format the current format (for diagnostics)
-
6974  @param[out] result number of type @a NumberType
-
6975 
-
6976  @return whether conversion completed
-
6977 
-
6978  @note This function needs to respect the system's endianess, because
-
6979  bytes in CBOR, MessagePack, and UBJSON are stored in network order
-
6980  (big endian) and therefore need reordering on little endian systems.
-
6981  */
-
6982  template<typename NumberType, bool InputIsLittleEndian = false>
-
6983  bool get_number(const input_format_t format, NumberType& result)
-
6984  {
-
6985  // step 1: read input into array with system's byte order
-
6986  std::array<std::uint8_t, sizeof(NumberType)> vec;
-
6987  for (std::size_t i = 0; i < sizeof(NumberType); ++i)
-
6988  {
-
6989  get();
-
6990  if (JSON_HEDLEY_UNLIKELY(not unexpect_eof(format, "number")))
-
6991  {
-
6992  return false;
-
6993  }
-
6994 
-
6995  // reverse byte order prior to conversion if necessary
-
6996  if (is_little_endian != InputIsLittleEndian)
-
6997  {
-
6998  vec[sizeof(NumberType) - i - 1] = static_cast<std::uint8_t>(current);
-
6999  }
-
7000  else
-
7001  {
-
7002  vec[i] = static_cast<std::uint8_t>(current); // LCOV_EXCL_LINE
-
7003  }
-
7004  }
-
7005 
-
7006  // step 2: convert array into number of type T and return
-
7007  std::memcpy(&result, vec.data(), sizeof(NumberType));
-
7008  return true;
-
7009  }
-
7010 
-
7025  template<typename NumberType>
-
7026  bool get_string(const input_format_t format,
-
7027  const NumberType len,
-
7028  string_t& result)
-
7029  {
-
7030  bool success = true;
-
7031  std::generate_n(std::back_inserter(result), len, [this, &success, &format]()
-
7032  {
-
7033  get();
-
7034  if (JSON_HEDLEY_UNLIKELY(not unexpect_eof(format, "string")))
-
7035  {
-
7036  success = false;
-
7037  }
-
7038  return static_cast<char>(current);
-
7039  });
-
7040  return success;
-
7041  }
-
7042 
- -
7049  bool unexpect_eof(const input_format_t format, const char* context) const
-
7050  {
-
7051  if (JSON_HEDLEY_UNLIKELY(current == std::char_traits<char>::eof()))
-
7052  {
-
7053  return sax->parse_error(chars_read, "<end of file>",
-
7054  parse_error::create(110, chars_read, exception_message(format, "unexpected end of input", context)));
-
7055  }
-
7056  return true;
-
7057  }
-
7058 
-
7062  std::string get_token_string() const
-
7063  {
-
7064  std::array<char, 3> cr{{}};
-
7065  (std::snprintf)(cr.data(), cr.size(), "%.2hhX", static_cast<unsigned char>(current));
-
7066  return std::string{cr.data()};
-
7067  }
-
7068 
-
7075  std::string exception_message(const input_format_t format,
-
7076  const std::string& detail,
-
7077  const std::string& context) const
-
7078  {
-
7079  std::string error_msg = "syntax error while parsing ";
-
7080 
-
7081  switch (format)
-
7082  {
-
7083  case input_format_t::cbor:
-
7084  error_msg += "CBOR";
-
7085  break;
-
7086 
- -
7088  error_msg += "MessagePack";
-
7089  break;
-
7090 
- -
7092  error_msg += "UBJSON";
-
7093  break;
-
7094 
-
7095  case input_format_t::bson:
-
7096  error_msg += "BSON";
-
7097  break;
-
7098 
-
7099  default: // LCOV_EXCL_LINE
-
7100  assert(false); // LCOV_EXCL_LINE
-
7101  }
-
7102 
-
7103  return error_msg + " " + context + ": " + detail;
-
7104  }
-
7105 
-
7106  private:
-
7108  input_adapter_t ia = nullptr;
-
7109 
-
7111  int current = std::char_traits<char>::eof();
-
7112 
-
7114  std::size_t chars_read = 0;
-
7115 
-
7117  const bool is_little_endian = little_endianess();
-
7118 
-
7120  json_sax_t* sax = nullptr;
-
7121 };
-
7122 } // namespace detail
-
7123 } // namespace nlohmann
-
7124 
-
7125 // #include <nlohmann/detail/input/input_adapters.hpp>
-
7126 
-
7127 // #include <nlohmann/detail/input/lexer.hpp>
-
7128 
-
7129 
-
7130 #include <array> // array
-
7131 #include <clocale> // localeconv
-
7132 #include <cstddef> // size_t
-
7133 #include <cstdio> // snprintf
-
7134 #include <cstdlib> // strtof, strtod, strtold, strtoll, strtoull
-
7135 #include <initializer_list> // initializer_list
-
7136 #include <string> // char_traits, string
-
7137 #include <utility> // move
-
7138 #include <vector> // vector
-
7139 
-
7140 // #include <nlohmann/detail/input/input_adapters.hpp>
-
7141 
-
7142 // #include <nlohmann/detail/input/position_t.hpp>
-
7143 
-
7144 // #include <nlohmann/detail/macro_scope.hpp>
-
7145 
-
7146 
-
7147 namespace nlohmann
-
7148 {
-
7149 namespace detail
-
7150 {
-
7152 // lexer //
-
7154 
-
7160 template<typename BasicJsonType>
-
7161 class lexer
-
7162 {
-
7163  using number_integer_t = typename BasicJsonType::number_integer_t;
-
7164  using number_unsigned_t = typename BasicJsonType::number_unsigned_t;
-
7165  using number_float_t = typename BasicJsonType::number_float_t;
-
7166  using string_t = typename BasicJsonType::string_t;
-
7167 
-
7168  public:
-
7170  enum class token_type
-
7171  {
-
7172  uninitialized,
-
7173  literal_true,
-
7174  literal_false,
-
7175  literal_null,
-
7176  value_string,
-
7177  value_unsigned,
-
7178  value_integer,
-
7179  value_float,
-
7180  begin_array,
-
7181  begin_object,
-
7182  end_array,
-
7183  end_object,
-
7184  name_separator,
-
7185  value_separator,
-
7186  parse_error,
-
7187  end_of_input,
- -
7189  };
-
7190 
- - -
7194  static const char* token_type_name(const token_type t) noexcept
-
7195  {
-
7196  switch (t)
-
7197  {
- -
7199  return "<uninitialized>";
- -
7201  return "true literal";
- -
7203  return "false literal";
- -
7205  return "null literal";
- -
7207  return "string literal";
- - - -
7211  return "number literal";
- -
7213  return "'['";
- -
7215  return "'{'";
-
7216  case token_type::end_array:
-
7217  return "']'";
- -
7219  return "'}'";
- -
7221  return "':'";
- -
7223  return "','";
- -
7225  return "<parse error>";
- -
7227  return "end of input";
- -
7229  return "'[', '{', or a literal";
-
7230  // LCOV_EXCL_START
-
7231  default: // catch non-enum values
-
7232  return "unknown token";
-
7233  // LCOV_EXCL_STOP
-
7234  }
-
7235  }
-
7236 
-
7237  explicit lexer(detail::input_adapter_t&& adapter)
-
7238  : ia(std::move(adapter)), decimal_point_char(get_decimal_point()) {}
-
7239 
-
7240  // delete because of pointer members
-
7241  lexer(const lexer&) = delete;
-
7242  lexer(lexer&&) = delete;
-
7243  lexer& operator=(lexer&) = delete;
-
7244  lexer& operator=(lexer&&) = delete;
-
7245  ~lexer() = default;
-
7246 
-
7247  private:
-
7249  // locales
-
7251 
- -
7254  static char get_decimal_point() noexcept
-
7255  {
-
7256  const auto loc = localeconv();
-
7257  assert(loc != nullptr);
-
7258  return (loc->decimal_point == nullptr) ? '.' : *(loc->decimal_point);
-
7259  }
-
7260 
-
7262  // scan functions
-
7264 
-
7280  int get_codepoint()
-
7281  {
-
7282  // this function only makes sense after reading `\u`
-
7283  assert(current == 'u');
-
7284  int codepoint = 0;
-
7285 
-
7286  const auto factors = { 12u, 8u, 4u, 0u };
-
7287  for (const auto factor : factors)
-
7288  {
-
7289  get();
-
7290 
-
7291  if (current >= '0' and current <= '9')
-
7292  {
-
7293  codepoint += static_cast<int>((static_cast<unsigned int>(current) - 0x30u) << factor);
-
7294  }
-
7295  else if (current >= 'A' and current <= 'F')
-
7296  {
-
7297  codepoint += static_cast<int>((static_cast<unsigned int>(current) - 0x37u) << factor);
-
7298  }
-
7299  else if (current >= 'a' and current <= 'f')
-
7300  {
-
7301  codepoint += static_cast<int>((static_cast<unsigned int>(current) - 0x57u) << factor);
-
7302  }
-
7303  else
-
7304  {
-
7305  return -1;
-
7306  }
-
7307  }
-
7308 
-
7309  assert(0x0000 <= codepoint and codepoint <= 0xFFFF);
-
7310  return codepoint;
-
7311  }
-
7312 
-
7328  bool next_byte_in_range(std::initializer_list<int> ranges)
-
7329  {
-
7330  assert(ranges.size() == 2 or ranges.size() == 4 or ranges.size() == 6);
-
7331  add(current);
-
7332 
-
7333  for (auto range = ranges.begin(); range != ranges.end(); ++range)
-
7334  {
-
7335  get();
-
7336  if (JSON_HEDLEY_LIKELY(*range <= current and current <= *(++range)))
-
7337  {
-
7338  add(current);
-
7339  }
-
7340  else
-
7341  {
-
7342  error_message = "invalid string: ill-formed UTF-8 byte";
-
7343  return false;
-
7344  }
-
7345  }
-
7346 
-
7347  return true;
-
7348  }
-
7349 
-
7365  token_type scan_string()
-
7366  {
-
7367  // reset token_buffer (ignore opening quote)
-
7368  reset();
-
7369 
-
7370  // we entered the function by reading an open quote
-
7371  assert(current == '\"');
-
7372 
-
7373  while (true)
-
7374  {
-
7375  // get next character
-
7376  switch (get())
-
7377  {
-
7378  // end of file while parsing string
-
7379  case std::char_traits<char>::eof():
-
7380  {
-
7381  error_message = "invalid string: missing closing quote";
-
7382  return token_type::parse_error;
-
7383  }
-
7384 
-
7385  // closing quote
-
7386  case '\"':
-
7387  {
-
7388  return token_type::value_string;
-
7389  }
-
7390 
-
7391  // escapes
-
7392  case '\\':
-
7393  {
-
7394  switch (get())
-
7395  {
-
7396  // quotation mark
-
7397  case '\"':
-
7398  add('\"');
-
7399  break;
-
7400  // reverse solidus
-
7401  case '\\':
-
7402  add('\\');
-
7403  break;
-
7404  // solidus
-
7405  case '/':
-
7406  add('/');
-
7407  break;
-
7408  // backspace
-
7409  case 'b':
-
7410  add('\b');
-
7411  break;
-
7412  // form feed
-
7413  case 'f':
-
7414  add('\f');
-
7415  break;
-
7416  // line feed
-
7417  case 'n':
-
7418  add('\n');
-
7419  break;
-
7420  // carriage return
-
7421  case 'r':
-
7422  add('\r');
-
7423  break;
-
7424  // tab
-
7425  case 't':
-
7426  add('\t');
-
7427  break;
-
7428 
-
7429  // unicode escapes
-
7430  case 'u':
-
7431  {
-
7432  const int codepoint1 = get_codepoint();
-
7433  int codepoint = codepoint1; // start with codepoint1
-
7434 
-
7435  if (JSON_HEDLEY_UNLIKELY(codepoint1 == -1))
-
7436  {
-
7437  error_message = "invalid string: '\\u' must be followed by 4 hex digits";
-
7438  return token_type::parse_error;
-
7439  }
-
7440 
-
7441  // check if code point is a high surrogate
-
7442  if (0xD800 <= codepoint1 and codepoint1 <= 0xDBFF)
-
7443  {
-
7444  // expect next \uxxxx entry
-
7445  if (JSON_HEDLEY_LIKELY(get() == '\\' and get() == 'u'))
-
7446  {
-
7447  const int codepoint2 = get_codepoint();
-
7448 
-
7449  if (JSON_HEDLEY_UNLIKELY(codepoint2 == -1))
-
7450  {
-
7451  error_message = "invalid string: '\\u' must be followed by 4 hex digits";
-
7452  return token_type::parse_error;
-
7453  }
-
7454 
-
7455  // check if codepoint2 is a low surrogate
-
7456  if (JSON_HEDLEY_LIKELY(0xDC00 <= codepoint2 and codepoint2 <= 0xDFFF))
-
7457  {
-
7458  // overwrite codepoint
-
7459  codepoint = static_cast<int>(
-
7460  // high surrogate occupies the most significant 22 bits
-
7461  (static_cast<unsigned int>(codepoint1) << 10u)
-
7462  // low surrogate occupies the least significant 15 bits
-
7463  + static_cast<unsigned int>(codepoint2)
-
7464  // there is still the 0xD800, 0xDC00 and 0x10000 noise
-
7465  // in the result so we have to subtract with:
-
7466  // (0xD800 << 10) + DC00 - 0x10000 = 0x35FDC00
-
7467  - 0x35FDC00u);
-
7468  }
-
7469  else
-
7470  {
-
7471  error_message = "invalid string: surrogate U+DC00..U+DFFF must be followed by U+DC00..U+DFFF";
-
7472  return token_type::parse_error;
-
7473  }
-
7474  }
-
7475  else
-
7476  {
-
7477  error_message = "invalid string: surrogate U+DC00..U+DFFF must be followed by U+DC00..U+DFFF";
-
7478  return token_type::parse_error;
-
7479  }
-
7480  }
-
7481  else
-
7482  {
-
7483  if (JSON_HEDLEY_UNLIKELY(0xDC00 <= codepoint1 and codepoint1 <= 0xDFFF))
-
7484  {
-
7485  error_message = "invalid string: surrogate U+DC00..U+DFFF must follow U+D800..U+DBFF";
-
7486  return token_type::parse_error;
-
7487  }
-
7488  }
-
7489 
-
7490  // result of the above calculation yields a proper codepoint
-
7491  assert(0x00 <= codepoint and codepoint <= 0x10FFFF);
-
7492 
-
7493  // translate codepoint into bytes
-
7494  if (codepoint < 0x80)
-
7495  {
-
7496  // 1-byte characters: 0xxxxxxx (ASCII)
-
7497  add(codepoint);
-
7498  }
-
7499  else if (codepoint <= 0x7FF)
-
7500  {
-
7501  // 2-byte characters: 110xxxxx 10xxxxxx
-
7502  add(static_cast<int>(0xC0u | (static_cast<unsigned int>(codepoint) >> 6u)));
-
7503  add(static_cast<int>(0x80u | (static_cast<unsigned int>(codepoint) & 0x3Fu)));
-
7504  }
-
7505  else if (codepoint <= 0xFFFF)
-
7506  {
-
7507  // 3-byte characters: 1110xxxx 10xxxxxx 10xxxxxx
-
7508  add(static_cast<int>(0xE0u | (static_cast<unsigned int>(codepoint) >> 12u)));
-
7509  add(static_cast<int>(0x80u | ((static_cast<unsigned int>(codepoint) >> 6u) & 0x3Fu)));
-
7510  add(static_cast<int>(0x80u | (static_cast<unsigned int>(codepoint) & 0x3Fu)));
-
7511  }
-
7512  else
-
7513  {
-
7514  // 4-byte characters: 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
-
7515  add(static_cast<int>(0xF0u | (static_cast<unsigned int>(codepoint) >> 18u)));
-
7516  add(static_cast<int>(0x80u | ((static_cast<unsigned int>(codepoint) >> 12u) & 0x3Fu)));
-
7517  add(static_cast<int>(0x80u | ((static_cast<unsigned int>(codepoint) >> 6u) & 0x3Fu)));
-
7518  add(static_cast<int>(0x80u | (static_cast<unsigned int>(codepoint) & 0x3Fu)));
-
7519  }
-
7520 
-
7521  break;
-
7522  }
-
7523 
-
7524  // other characters after escape
-
7525  default:
-
7526  error_message = "invalid string: forbidden character after backslash";
-
7527  return token_type::parse_error;
-
7528  }
-
7529 
-
7530  break;
-
7531  }
-
7532 
-
7533  // invalid control characters
-
7534  case 0x00:
-
7535  {
-
7536  error_message = "invalid string: control character U+0000 (NUL) must be escaped to \\u0000";
-
7537  return token_type::parse_error;
-
7538  }
-
7539 
-
7540  case 0x01:
-
7541  {
-
7542  error_message = "invalid string: control character U+0001 (SOH) must be escaped to \\u0001";
-
7543  return token_type::parse_error;
-
7544  }
-
7545 
-
7546  case 0x02:
-
7547  {
-
7548  error_message = "invalid string: control character U+0002 (STX) must be escaped to \\u0002";
-
7549  return token_type::parse_error;
-
7550  }
-
7551 
-
7552  case 0x03:
-
7553  {
-
7554  error_message = "invalid string: control character U+0003 (ETX) must be escaped to \\u0003";
-
7555  return token_type::parse_error;
-
7556  }
-
7557 
-
7558  case 0x04:
-
7559  {
-
7560  error_message = "invalid string: control character U+0004 (EOT) must be escaped to \\u0004";
-
7561  return token_type::parse_error;
-
7562  }
-
7563 
-
7564  case 0x05:
-
7565  {
-
7566  error_message = "invalid string: control character U+0005 (ENQ) must be escaped to \\u0005";
-
7567  return token_type::parse_error;
-
7568  }
-
7569 
-
7570  case 0x06:
-
7571  {
-
7572  error_message = "invalid string: control character U+0006 (ACK) must be escaped to \\u0006";
-
7573  return token_type::parse_error;
-
7574  }
-
7575 
-
7576  case 0x07:
-
7577  {
-
7578  error_message = "invalid string: control character U+0007 (BEL) must be escaped to \\u0007";
-
7579  return token_type::parse_error;
-
7580  }
-
7581 
-
7582  case 0x08:
-
7583  {
-
7584  error_message = "invalid string: control character U+0008 (BS) must be escaped to \\u0008 or \\b";
-
7585  return token_type::parse_error;
-
7586  }
-
7587 
-
7588  case 0x09:
-
7589  {
-
7590  error_message = "invalid string: control character U+0009 (HT) must be escaped to \\u0009 or \\t";
-
7591  return token_type::parse_error;
-
7592  }
-
7593 
-
7594  case 0x0A:
-
7595  {
-
7596  error_message = "invalid string: control character U+000A (LF) must be escaped to \\u000A or \\n";
-
7597  return token_type::parse_error;
-
7598  }
-
7599 
-
7600  case 0x0B:
-
7601  {
-
7602  error_message = "invalid string: control character U+000B (VT) must be escaped to \\u000B";
-
7603  return token_type::parse_error;
-
7604  }
-
7605 
-
7606  case 0x0C:
-
7607  {
-
7608  error_message = "invalid string: control character U+000C (FF) must be escaped to \\u000C or \\f";
-
7609  return token_type::parse_error;
-
7610  }
-
7611 
-
7612  case 0x0D:
-
7613  {
-
7614  error_message = "invalid string: control character U+000D (CR) must be escaped to \\u000D or \\r";
-
7615  return token_type::parse_error;
-
7616  }
-
7617 
-
7618  case 0x0E:
-
7619  {
-
7620  error_message = "invalid string: control character U+000E (SO) must be escaped to \\u000E";
-
7621  return token_type::parse_error;
-
7622  }
-
7623 
-
7624  case 0x0F:
-
7625  {
-
7626  error_message = "invalid string: control character U+000F (SI) must be escaped to \\u000F";
-
7627  return token_type::parse_error;
-
7628  }
-
7629 
-
7630  case 0x10:
-
7631  {
-
7632  error_message = "invalid string: control character U+0010 (DLE) must be escaped to \\u0010";
-
7633  return token_type::parse_error;
-
7634  }
-
7635 
-
7636  case 0x11:
-
7637  {
-
7638  error_message = "invalid string: control character U+0011 (DC1) must be escaped to \\u0011";
-
7639  return token_type::parse_error;
-
7640  }
-
7641 
-
7642  case 0x12:
-
7643  {
-
7644  error_message = "invalid string: control character U+0012 (DC2) must be escaped to \\u0012";
-
7645  return token_type::parse_error;
-
7646  }
-
7647 
-
7648  case 0x13:
-
7649  {
-
7650  error_message = "invalid string: control character U+0013 (DC3) must be escaped to \\u0013";
-
7651  return token_type::parse_error;
-
7652  }
-
7653 
-
7654  case 0x14:
-
7655  {
-
7656  error_message = "invalid string: control character U+0014 (DC4) must be escaped to \\u0014";
-
7657  return token_type::parse_error;
-
7658  }
-
7659 
-
7660  case 0x15:
-
7661  {
-
7662  error_message = "invalid string: control character U+0015 (NAK) must be escaped to \\u0015";
-
7663  return token_type::parse_error;
-
7664  }
-
7665 
-
7666  case 0x16:
-
7667  {
-
7668  error_message = "invalid string: control character U+0016 (SYN) must be escaped to \\u0016";
-
7669  return token_type::parse_error;
-
7670  }
-
7671 
-
7672  case 0x17:
-
7673  {
-
7674  error_message = "invalid string: control character U+0017 (ETB) must be escaped to \\u0017";
-
7675  return token_type::parse_error;
-
7676  }
-
7677 
-
7678  case 0x18:
-
7679  {
-
7680  error_message = "invalid string: control character U+0018 (CAN) must be escaped to \\u0018";
-
7681  return token_type::parse_error;
-
7682  }
-
7683 
-
7684  case 0x19:
-
7685  {
-
7686  error_message = "invalid string: control character U+0019 (EM) must be escaped to \\u0019";
-
7687  return token_type::parse_error;
-
7688  }
-
7689 
-
7690  case 0x1A:
-
7691  {
-
7692  error_message = "invalid string: control character U+001A (SUB) must be escaped to \\u001A";
-
7693  return token_type::parse_error;
-
7694  }
-
7695 
-
7696  case 0x1B:
-
7697  {
-
7698  error_message = "invalid string: control character U+001B (ESC) must be escaped to \\u001B";
-
7699  return token_type::parse_error;
-
7700  }
-
7701 
-
7702  case 0x1C:
-
7703  {
-
7704  error_message = "invalid string: control character U+001C (FS) must be escaped to \\u001C";
-
7705  return token_type::parse_error;
-
7706  }
-
7707 
-
7708  case 0x1D:
-
7709  {
-
7710  error_message = "invalid string: control character U+001D (GS) must be escaped to \\u001D";
-
7711  return token_type::parse_error;
-
7712  }
-
7713 
-
7714  case 0x1E:
-
7715  {
-
7716  error_message = "invalid string: control character U+001E (RS) must be escaped to \\u001E";
-
7717  return token_type::parse_error;
-
7718  }
-
7719 
-
7720  case 0x1F:
-
7721  {
-
7722  error_message = "invalid string: control character U+001F (US) must be escaped to \\u001F";
-
7723  return token_type::parse_error;
-
7724  }
-
7725 
-
7726  // U+0020..U+007F (except U+0022 (quote) and U+005C (backspace))
-
7727  case 0x20:
-
7728  case 0x21:
-
7729  case 0x23:
-
7730  case 0x24:
-
7731  case 0x25:
-
7732  case 0x26:
-
7733  case 0x27:
-
7734  case 0x28:
-
7735  case 0x29:
-
7736  case 0x2A:
-
7737  case 0x2B:
-
7738  case 0x2C:
-
7739  case 0x2D:
-
7740  case 0x2E:
-
7741  case 0x2F:
-
7742  case 0x30:
-
7743  case 0x31:
-
7744  case 0x32:
-
7745  case 0x33:
-
7746  case 0x34:
-
7747  case 0x35:
-
7748  case 0x36:
-
7749  case 0x37:
-
7750  case 0x38:
-
7751  case 0x39:
-
7752  case 0x3A:
-
7753  case 0x3B:
-
7754  case 0x3C:
-
7755  case 0x3D:
-
7756  case 0x3E:
-
7757  case 0x3F:
-
7758  case 0x40:
-
7759  case 0x41:
-
7760  case 0x42:
-
7761  case 0x43:
-
7762  case 0x44:
-
7763  case 0x45:
-
7764  case 0x46:
-
7765  case 0x47:
-
7766  case 0x48:
-
7767  case 0x49:
-
7768  case 0x4A:
-
7769  case 0x4B:
-
7770  case 0x4C:
-
7771  case 0x4D:
-
7772  case 0x4E:
-
7773  case 0x4F:
-
7774  case 0x50:
-
7775  case 0x51:
-
7776  case 0x52:
-
7777  case 0x53:
-
7778  case 0x54:
-
7779  case 0x55:
-
7780  case 0x56:
-
7781  case 0x57:
-
7782  case 0x58:
-
7783  case 0x59:
-
7784  case 0x5A:
-
7785  case 0x5B:
-
7786  case 0x5D:
-
7787  case 0x5E:
-
7788  case 0x5F:
-
7789  case 0x60:
-
7790  case 0x61:
-
7791  case 0x62:
-
7792  case 0x63:
-
7793  case 0x64:
-
7794  case 0x65:
-
7795  case 0x66:
-
7796  case 0x67:
-
7797  case 0x68:
-
7798  case 0x69:
-
7799  case 0x6A:
-
7800  case 0x6B:
-
7801  case 0x6C:
-
7802  case 0x6D:
-
7803  case 0x6E:
-
7804  case 0x6F:
-
7805  case 0x70:
-
7806  case 0x71:
-
7807  case 0x72:
-
7808  case 0x73:
-
7809  case 0x74:
-
7810  case 0x75:
-
7811  case 0x76:
-
7812  case 0x77:
-
7813  case 0x78:
-
7814  case 0x79:
-
7815  case 0x7A:
-
7816  case 0x7B:
-
7817  case 0x7C:
-
7818  case 0x7D:
-
7819  case 0x7E:
-
7820  case 0x7F:
-
7821  {
-
7822  add(current);
-
7823  break;
-
7824  }
-
7825 
-
7826  // U+0080..U+07FF: bytes C2..DF 80..BF
-
7827  case 0xC2:
-
7828  case 0xC3:
-
7829  case 0xC4:
-
7830  case 0xC5:
-
7831  case 0xC6:
-
7832  case 0xC7:
-
7833  case 0xC8:
-
7834  case 0xC9:
-
7835  case 0xCA:
-
7836  case 0xCB:
-
7837  case 0xCC:
-
7838  case 0xCD:
-
7839  case 0xCE:
-
7840  case 0xCF:
-
7841  case 0xD0:
-
7842  case 0xD1:
-
7843  case 0xD2:
-
7844  case 0xD3:
-
7845  case 0xD4:
-
7846  case 0xD5:
-
7847  case 0xD6:
-
7848  case 0xD7:
-
7849  case 0xD8:
-
7850  case 0xD9:
-
7851  case 0xDA:
-
7852  case 0xDB:
-
7853  case 0xDC:
-
7854  case 0xDD:
-
7855  case 0xDE:
-
7856  case 0xDF:
-
7857  {
-
7858  if (JSON_HEDLEY_UNLIKELY(not next_byte_in_range({0x80, 0xBF})))
-
7859  {
-
7860  return token_type::parse_error;
-
7861  }
-
7862  break;
-
7863  }
-
7864 
-
7865  // U+0800..U+0FFF: bytes E0 A0..BF 80..BF
-
7866  case 0xE0:
-
7867  {
-
7868  if (JSON_HEDLEY_UNLIKELY(not (next_byte_in_range({0xA0, 0xBF, 0x80, 0xBF}))))
-
7869  {
-
7870  return token_type::parse_error;
-
7871  }
-
7872  break;
-
7873  }
-
7874 
-
7875  // U+1000..U+CFFF: bytes E1..EC 80..BF 80..BF
-
7876  // U+E000..U+FFFF: bytes EE..EF 80..BF 80..BF
-
7877  case 0xE1:
-
7878  case 0xE2:
-
7879  case 0xE3:
-
7880  case 0xE4:
-
7881  case 0xE5:
-
7882  case 0xE6:
-
7883  case 0xE7:
-
7884  case 0xE8:
-
7885  case 0xE9:
-
7886  case 0xEA:
-
7887  case 0xEB:
-
7888  case 0xEC:
-
7889  case 0xEE:
-
7890  case 0xEF:
-
7891  {
-
7892  if (JSON_HEDLEY_UNLIKELY(not (next_byte_in_range({0x80, 0xBF, 0x80, 0xBF}))))
-
7893  {
-
7894  return token_type::parse_error;
-
7895  }
-
7896  break;
-
7897  }
-
7898 
-
7899  // U+D000..U+D7FF: bytes ED 80..9F 80..BF
-
7900  case 0xED:
-
7901  {
-
7902  if (JSON_HEDLEY_UNLIKELY(not (next_byte_in_range({0x80, 0x9F, 0x80, 0xBF}))))
-
7903  {
-
7904  return token_type::parse_error;
-
7905  }
-
7906  break;
-
7907  }
-
7908 
-
7909  // U+10000..U+3FFFF F0 90..BF 80..BF 80..BF
-
7910  case 0xF0:
-
7911  {
-
7912  if (JSON_HEDLEY_UNLIKELY(not (next_byte_in_range({0x90, 0xBF, 0x80, 0xBF, 0x80, 0xBF}))))
-
7913  {
-
7914  return token_type::parse_error;
-
7915  }
-
7916  break;
-
7917  }
-
7918 
-
7919  // U+40000..U+FFFFF F1..F3 80..BF 80..BF 80..BF
-
7920  case 0xF1:
-
7921  case 0xF2:
-
7922  case 0xF3:
-
7923  {
-
7924  if (JSON_HEDLEY_UNLIKELY(not (next_byte_in_range({0x80, 0xBF, 0x80, 0xBF, 0x80, 0xBF}))))
-
7925  {
-
7926  return token_type::parse_error;
-
7927  }
-
7928  break;
-
7929  }
-
7930 
-
7931  // U+100000..U+10FFFF F4 80..8F 80..BF 80..BF
-
7932  case 0xF4:
-
7933  {
-
7934  if (JSON_HEDLEY_UNLIKELY(not (next_byte_in_range({0x80, 0x8F, 0x80, 0xBF, 0x80, 0xBF}))))
-
7935  {
-
7936  return token_type::parse_error;
-
7937  }
-
7938  break;
-
7939  }
-
7940 
-
7941  // remaining bytes (80..C1 and F5..FF) are ill-formed
-
7942  default:
-
7943  {
-
7944  error_message = "invalid string: ill-formed UTF-8 byte";
-
7945  return token_type::parse_error;
-
7946  }
-
7947  }
-
7948  }
-
7949  }
-
7950 
- -
7952  static void strtof(float& f, const char* str, char** endptr) noexcept
-
7953  {
-
7954  f = std::strtof(str, endptr);
-
7955  }
-
7956 
- -
7958  static void strtof(double& f, const char* str, char** endptr) noexcept
-
7959  {
-
7960  f = std::strtod(str, endptr);
-
7961  }
-
7962 
- -
7964  static void strtof(long double& f, const char* str, char** endptr) noexcept
-
7965  {
-
7966  f = std::strtold(str, endptr);
-
7967  }
-
7968 
-
8009  token_type scan_number() // lgtm [cpp/use-of-goto]
-
8010  {
-
8011  // reset token_buffer to store the number's bytes
-
8012  reset();
-
8013 
-
8014  // the type of the parsed number; initially set to unsigned; will be
-
8015  // changed if minus sign, decimal point or exponent is read
-
8016  token_type number_type = token_type::value_unsigned;
-
8017 
-
8018  // state (init): we just found out we need to scan a number
-
8019  switch (current)
-
8020  {
-
8021  case '-':
-
8022  {
-
8023  add(current);
-
8024  goto scan_number_minus;
-
8025  }
-
8026 
-
8027  case '0':
-
8028  {
-
8029  add(current);
-
8030  goto scan_number_zero;
-
8031  }
-
8032 
-
8033  case '1':
-
8034  case '2':
-
8035  case '3':
-
8036  case '4':
-
8037  case '5':
-
8038  case '6':
-
8039  case '7':
-
8040  case '8':
-
8041  case '9':
-
8042  {
-
8043  add(current);
-
8044  goto scan_number_any1;
-
8045  }
-
8046 
-
8047  // all other characters are rejected outside scan_number()
-
8048  default: // LCOV_EXCL_LINE
-
8049  assert(false); // LCOV_EXCL_LINE
-
8050  }
-
8051 
-
8052 scan_number_minus:
-
8053  // state: we just parsed a leading minus sign
-
8054  number_type = token_type::value_integer;
-
8055  switch (get())
-
8056  {
-
8057  case '0':
-
8058  {
-
8059  add(current);
-
8060  goto scan_number_zero;
-
8061  }
-
8062 
-
8063  case '1':
-
8064  case '2':
-
8065  case '3':
-
8066  case '4':
-
8067  case '5':
-
8068  case '6':
-
8069  case '7':
-
8070  case '8':
-
8071  case '9':
-
8072  {
-
8073  add(current);
-
8074  goto scan_number_any1;
-
8075  }
-
8076 
-
8077  default:
-
8078  {
-
8079  error_message = "invalid number; expected digit after '-'";
-
8080  return token_type::parse_error;
-
8081  }
-
8082  }
-
8083 
-
8084 scan_number_zero:
-
8085  // state: we just parse a zero (maybe with a leading minus sign)
-
8086  switch (get())
-
8087  {
-
8088  case '.':
-
8089  {
-
8090  add(decimal_point_char);
-
8091  goto scan_number_decimal1;
-
8092  }
-
8093 
-
8094  case 'e':
-
8095  case 'E':
-
8096  {
-
8097  add(current);
-
8098  goto scan_number_exponent;
-
8099  }
-
8100 
-
8101  default:
-
8102  goto scan_number_done;
-
8103  }
-
8104 
-
8105 scan_number_any1:
-
8106  // state: we just parsed a number 0-9 (maybe with a leading minus sign)
-
8107  switch (get())
-
8108  {
-
8109  case '0':
-
8110  case '1':
-
8111  case '2':
-
8112  case '3':
-
8113  case '4':
-
8114  case '5':
-
8115  case '6':
-
8116  case '7':
-
8117  case '8':
-
8118  case '9':
-
8119  {
-
8120  add(current);
-
8121  goto scan_number_any1;
-
8122  }
-
8123 
-
8124  case '.':
-
8125  {
-
8126  add(decimal_point_char);
-
8127  goto scan_number_decimal1;
-
8128  }
-
8129 
-
8130  case 'e':
-
8131  case 'E':
-
8132  {
-
8133  add(current);
-
8134  goto scan_number_exponent;
-
8135  }
-
8136 
-
8137  default:
-
8138  goto scan_number_done;
-
8139  }
-
8140 
-
8141 scan_number_decimal1:
-
8142  // state: we just parsed a decimal point
-
8143  number_type = token_type::value_float;
-
8144  switch (get())
-
8145  {
-
8146  case '0':
-
8147  case '1':
-
8148  case '2':
-
8149  case '3':
-
8150  case '4':
-
8151  case '5':
-
8152  case '6':
-
8153  case '7':
-
8154  case '8':
-
8155  case '9':
-
8156  {
-
8157  add(current);
-
8158  goto scan_number_decimal2;
-
8159  }
-
8160 
-
8161  default:
-
8162  {
-
8163  error_message = "invalid number; expected digit after '.'";
-
8164  return token_type::parse_error;
-
8165  }
-
8166  }
-
8167 
-
8168 scan_number_decimal2:
-
8169  // we just parsed at least one number after a decimal point
-
8170  switch (get())
-
8171  {
-
8172  case '0':
-
8173  case '1':
-
8174  case '2':
-
8175  case '3':
-
8176  case '4':
-
8177  case '5':
-
8178  case '6':
-
8179  case '7':
-
8180  case '8':
-
8181  case '9':
-
8182  {
-
8183  add(current);
-
8184  goto scan_number_decimal2;
-
8185  }
-
8186 
-
8187  case 'e':
-
8188  case 'E':
-
8189  {
-
8190  add(current);
-
8191  goto scan_number_exponent;
-
8192  }
-
8193 
-
8194  default:
-
8195  goto scan_number_done;
-
8196  }
-
8197 
-
8198 scan_number_exponent:
-
8199  // we just parsed an exponent
-
8200  number_type = token_type::value_float;
-
8201  switch (get())
-
8202  {
-
8203  case '+':
-
8204  case '-':
-
8205  {
-
8206  add(current);
-
8207  goto scan_number_sign;
-
8208  }
-
8209 
-
8210  case '0':
-
8211  case '1':
-
8212  case '2':
-
8213  case '3':
-
8214  case '4':
-
8215  case '5':
-
8216  case '6':
-
8217  case '7':
-
8218  case '8':
-
8219  case '9':
-
8220  {
-
8221  add(current);
-
8222  goto scan_number_any2;
-
8223  }
-
8224 
-
8225  default:
-
8226  {
-
8227  error_message =
-
8228  "invalid number; expected '+', '-', or digit after exponent";
-
8229  return token_type::parse_error;
-
8230  }
-
8231  }
-
8232 
-
8233 scan_number_sign:
-
8234  // we just parsed an exponent sign
-
8235  switch (get())
-
8236  {
-
8237  case '0':
-
8238  case '1':
-
8239  case '2':
-
8240  case '3':
-
8241  case '4':
-
8242  case '5':
-
8243  case '6':
-
8244  case '7':
-
8245  case '8':
-
8246  case '9':
-
8247  {
-
8248  add(current);
-
8249  goto scan_number_any2;
-
8250  }
-
8251 
-
8252  default:
-
8253  {
-
8254  error_message = "invalid number; expected digit after exponent sign";
-
8255  return token_type::parse_error;
-
8256  }
-
8257  }
-
8258 
-
8259 scan_number_any2:
-
8260  // we just parsed a number after the exponent or exponent sign
-
8261  switch (get())
-
8262  {
-
8263  case '0':
-
8264  case '1':
-
8265  case '2':
-
8266  case '3':
-
8267  case '4':
-
8268  case '5':
-
8269  case '6':
-
8270  case '7':
-
8271  case '8':
-
8272  case '9':
-
8273  {
-
8274  add(current);
-
8275  goto scan_number_any2;
-
8276  }
-
8277 
-
8278  default:
-
8279  goto scan_number_done;
-
8280  }
-
8281 
-
8282 scan_number_done:
-
8283  // unget the character after the number (we only read it to know that
-
8284  // we are done scanning a number)
-
8285  unget();
-
8286 
-
8287  char* endptr = nullptr;
-
8288  errno = 0;
-
8289 
-
8290  // try to parse integers first and fall back to floats
-
8291  if (number_type == token_type::value_unsigned)
-
8292  {
-
8293  const auto x = std::strtoull(token_buffer.data(), &endptr, 10);
-
8294 
-
8295  // we checked the number format before
-
8296  assert(endptr == token_buffer.data() + token_buffer.size());
-
8297 
-
8298  if (errno == 0)
-
8299  {
-
8300  value_unsigned = static_cast<number_unsigned_t>(x);
-
8301  if (value_unsigned == x)
-
8302  {
-
8303  return token_type::value_unsigned;
-
8304  }
-
8305  }
-
8306  }
-
8307  else if (number_type == token_type::value_integer)
-
8308  {
-
8309  const auto x = std::strtoll(token_buffer.data(), &endptr, 10);
-
8310 
-
8311  // we checked the number format before
-
8312  assert(endptr == token_buffer.data() + token_buffer.size());
-
8313 
-
8314  if (errno == 0)
-
8315  {
-
8316  value_integer = static_cast<number_integer_t>(x);
-
8317  if (value_integer == x)
-
8318  {
-
8319  return token_type::value_integer;
-
8320  }
-
8321  }
-
8322  }
-
8323 
-
8324  // this code is reached if we parse a floating-point number or if an
-
8325  // integer conversion above failed
-
8326  strtof(value_float, token_buffer.data(), &endptr);
-
8327 
-
8328  // we checked the number format before
-
8329  assert(endptr == token_buffer.data() + token_buffer.size());
-
8330 
-
8331  return token_type::value_float;
-
8332  }
-
8333 
- -
8340  token_type scan_literal(const char* literal_text, const std::size_t length,
-
8341  token_type return_type)
-
8342  {
-
8343  assert(current == literal_text[0]);
-
8344  for (std::size_t i = 1; i < length; ++i)
-
8345  {
-
8346  if (JSON_HEDLEY_UNLIKELY(get() != literal_text[i]))
-
8347  {
-
8348  error_message = "invalid literal";
-
8349  return token_type::parse_error;
-
8350  }
-
8351  }
-
8352  return return_type;
-
8353  }
-
8354 
-
8356  // input management
-
8358 
-
8360  void reset() noexcept
-
8361  {
-
8362  token_buffer.clear();
-
8363  token_string.clear();
-
8364  token_string.push_back(std::char_traits<char>::to_char_type(current));
-
8365  }
-
8366 
-
8367  /*
-
8368  @brief get next character from the input
-
8369 
-
8370  This function provides the interface to the used input adapter. It does
-
8371  not throw in case the input reached EOF, but returns a
-
8372  `std::char_traits<char>::eof()` in that case. Stores the scanned characters
-
8373  for use in error messages.
-
8374 
-
8375  @return character read from the input
-
8376  */
-
8377  std::char_traits<char>::int_type get()
-
8378  {
-
8379  ++position.chars_read_total;
-
8380  ++position.chars_read_current_line;
-
8381 
-
8382  if (next_unget)
-
8383  {
-
8384  // just reset the next_unget variable and work with current
-
8385  next_unget = false;
-
8386  }
-
8387  else
-
8388  {
-
8389  current = ia->get_character();
-
8390  }
-
8391 
-
8392  if (JSON_HEDLEY_LIKELY(current != std::char_traits<char>::eof()))
-
8393  {
-
8394  token_string.push_back(std::char_traits<char>::to_char_type(current));
-
8395  }
-
8396 
-
8397  if (current == '\n')
-
8398  {
-
8399  ++position.lines_read;
-
8400  position.chars_read_current_line = 0;
-
8401  }
-
8402 
-
8403  return current;
-
8404  }
-
8405 
-
8414  void unget()
-
8415  {
-
8416  next_unget = true;
-
8417 
-
8418  --position.chars_read_total;
-
8419 
-
8420  // in case we "unget" a newline, we have to also decrement the lines_read
-
8421  if (position.chars_read_current_line == 0)
-
8422  {
-
8423  if (position.lines_read > 0)
-
8424  {
-
8425  --position.lines_read;
-
8426  }
-
8427  }
-
8428  else
-
8429  {
-
8430  --position.chars_read_current_line;
-
8431  }
-
8432 
-
8433  if (JSON_HEDLEY_LIKELY(current != std::char_traits<char>::eof()))
-
8434  {
-
8435  assert(not token_string.empty());
-
8436  token_string.pop_back();
-
8437  }
-
8438  }
-
8439 
-
8441  void add(int c)
-
8442  {
-
8443  token_buffer.push_back(std::char_traits<char>::to_char_type(c));
-
8444  }
-
8445 
-
8446  public:
-
8448  // value getters
-
8450 
-
8452  constexpr number_integer_t get_number_integer() const noexcept
-
8453  {
-
8454  return value_integer;
-
8455  }
-
8456 
-
8458  constexpr number_unsigned_t get_number_unsigned() const noexcept
-
8459  {
-
8460  return value_unsigned;
-
8461  }
-
8462 
-
8464  constexpr number_float_t get_number_float() const noexcept
-
8465  {
-
8466  return value_float;
-
8467  }
-
8468 
-
8470  string_t& get_string()
-
8471  {
-
8472  return token_buffer;
-
8473  }
-
8474 
-
8476  // diagnostics
-
8478 
-
8480  constexpr position_t get_position() const noexcept
-
8481  {
-
8482  return position;
-
8483  }
-
8484 
-
8488  std::string get_token_string() const
-
8489  {
-
8490  // escape control characters
-
8491  std::string result;
-
8492  for (const auto c : token_string)
-
8493  {
-
8494  if ('\x00' <= c and c <= '\x1F')
-
8495  {
-
8496  // escape control characters
-
8497  std::array<char, 9> cs{{}};
-
8498  (std::snprintf)(cs.data(), cs.size(), "<U+%.4X>", static_cast<unsigned char>(c));
-
8499  result += cs.data();
-
8500  }
-
8501  else
-
8502  {
-
8503  // add character as is
-
8504  result.push_back(c);
-
8505  }
-
8506  }
-
8507 
-
8508  return result;
-
8509  }
-
8510 
- -
8513  constexpr const char* get_error_message() const noexcept
-
8514  {
-
8515  return error_message;
-
8516  }
-
8517 
-
8519  // actual scanner
-
8521 
-
8526  bool skip_bom()
-
8527  {
-
8528  if (get() == 0xEF)
-
8529  {
-
8530  // check if we completely parse the BOM
-
8531  return get() == 0xBB and get() == 0xBF;
-
8532  }
-
8533 
-
8534  // the first character is not the beginning of the BOM; unget it to
-
8535  // process is later
-
8536  unget();
-
8537  return true;
-
8538  }
-
8539 
- -
8541  {
-
8542  // initially, skip the BOM
-
8543  if (position.chars_read_total == 0 and not skip_bom())
-
8544  {
-
8545  error_message = "invalid BOM; must be 0xEF 0xBB 0xBF if given";
-
8546  return token_type::parse_error;
-
8547  }
-
8548 
-
8549  // read next character and ignore whitespace
-
8550  do
-
8551  {
-
8552  get();
-
8553  }
-
8554  while (current == ' ' or current == '\t' or current == '\n' or current == '\r');
-
8555 
-
8556  switch (current)
-
8557  {
-
8558  // structural characters
-
8559  case '[':
-
8560  return token_type::begin_array;
-
8561  case ']':
-
8562  return token_type::end_array;
-
8563  case '{':
-
8564  return token_type::begin_object;
-
8565  case '}':
-
8566  return token_type::end_object;
-
8567  case ':':
-
8568  return token_type::name_separator;
-
8569  case ',':
-
8570  return token_type::value_separator;
-
8571 
-
8572  // literals
-
8573  case 't':
-
8574  return scan_literal("true", 4, token_type::literal_true);
-
8575  case 'f':
-
8576  return scan_literal("false", 5, token_type::literal_false);
-
8577  case 'n':
-
8578  return scan_literal("null", 4, token_type::literal_null);
-
8579 
-
8580  // string
-
8581  case '\"':
-
8582  return scan_string();
-
8583 
-
8584  // number
-
8585  case '-':
-
8586  case '0':
-
8587  case '1':
-
8588  case '2':
-
8589  case '3':
-
8590  case '4':
-
8591  case '5':
-
8592  case '6':
-
8593  case '7':
-
8594  case '8':
-
8595  case '9':
-
8596  return scan_number();
-
8597 
-
8598  // end of input (the null byte is needed when parsing from
-
8599  // string literals)
-
8600  case '\0':
-
8601  case std::char_traits<char>::eof():
-
8602  return token_type::end_of_input;
-
8603 
-
8604  // error
-
8605  default:
-
8606  error_message = "invalid literal";
-
8607  return token_type::parse_error;
-
8608  }
-
8609  }
-
8610 
-
8611  private:
-
8613  detail::input_adapter_t ia = nullptr;
-
8614 
-
8616  std::char_traits<char>::int_type current = std::char_traits<char>::eof();
-
8617 
-
8619  bool next_unget = false;
-
8620 
-
8622  position_t position {};
-
8623 
-
8625  std::vector<char> token_string {};
-
8626 
-
8628  string_t token_buffer {};
-
8629 
-
8631  const char* error_message = "";
-
8632 
-
8633  // number values
-
8634  number_integer_t value_integer = 0;
-
8635  number_unsigned_t value_unsigned = 0;
-
8636  number_float_t value_float = 0;
-
8637 
-
8639  const char decimal_point_char = '.';
-
8640 };
-
8641 } // namespace detail
-
8642 } // namespace nlohmann
-
8643 
-
8644 // #include <nlohmann/detail/input/parser.hpp>
-
8645 
-
8646 
-
8647 #include <cassert> // assert
-
8648 #include <cmath> // isfinite
-
8649 #include <cstdint> // uint8_t
-
8650 #include <functional> // function
-
8651 #include <string> // string
-
8652 #include <utility> // move
-
8653 #include <vector> // vector
-
8654 
-
8655 // #include <nlohmann/detail/exceptions.hpp>
-
8656 
-
8657 // #include <nlohmann/detail/input/input_adapters.hpp>
-
8658 
-
8659 // #include <nlohmann/detail/input/json_sax.hpp>
-
8660 
-
8661 // #include <nlohmann/detail/input/lexer.hpp>
-
8662 
-
8663 // #include <nlohmann/detail/macro_scope.hpp>
-
8664 
-
8665 // #include <nlohmann/detail/meta/is_sax.hpp>
-
8666 
-
8667 // #include <nlohmann/detail/value_t.hpp>
-
8668 
-
8669 
-
8670 namespace nlohmann
-
8671 {
-
8672 namespace detail
-
8673 {
-
8675 // parser //
-
8677 
-
8683 template<typename BasicJsonType>
-
8684 class parser
-
8685 {
-
8686  using number_integer_t = typename BasicJsonType::number_integer_t;
-
8687  using number_unsigned_t = typename BasicJsonType::number_unsigned_t;
-
8688  using number_float_t = typename BasicJsonType::number_float_t;
-
8689  using string_t = typename BasicJsonType::string_t;
-
8690  using lexer_t = lexer<BasicJsonType>;
-
8691  using token_type = typename lexer_t::token_type;
-
8692 
-
8693  public:
-
8694  enum class parse_event_t : uint8_t
-
8695  {
-
8697  object_start,
-
8699  object_end,
-
8701  array_start,
-
8703  array_end,
-
8705  key,
-
8707  value
-
8708  };
-
8709 
-
8710  using parser_callback_t =
-
8711  std::function<bool(int depth, parse_event_t event, BasicJsonType& parsed)>;
-
8712 
-
8714  explicit parser(detail::input_adapter_t&& adapter,
-
8715  const parser_callback_t cb = nullptr,
-
8716  const bool allow_exceptions_ = true)
-
8717  : callback(cb), m_lexer(std::move(adapter)), allow_exceptions(allow_exceptions_)
-
8718  {
-
8719  // read first token
-
8720  get_token();
-
8721  }
-
8722 
-
8733  void parse(const bool strict, BasicJsonType& result)
-
8734  {
-
8735  if (callback)
-
8736  {
-
8737  json_sax_dom_callback_parser<BasicJsonType> sdp(result, callback, allow_exceptions);
-
8738  sax_parse_internal(&sdp);
-
8739  result.assert_invariant();
-
8740 
-
8741  // in strict mode, input must be completely read
-
8742  if (strict and (get_token() != token_type::end_of_input))
-
8743  {
-
8744  sdp.parse_error(m_lexer.get_position(),
-
8745  m_lexer.get_token_string(),
-
8746  parse_error::create(101, m_lexer.get_position(),
-
8747  exception_message(token_type::end_of_input, "value")));
-
8748  }
-
8749 
-
8750  // in case of an error, return discarded value
-
8751  if (sdp.is_errored())
-
8752  {
-
8753  result = value_t::discarded;
-
8754  return;
-
8755  }
-
8756 
-
8757  // set top-level value to null if it was discarded by the callback
-
8758  // function
-
8759  if (result.is_discarded())
-
8760  {
-
8761  result = nullptr;
-
8762  }
-
8763  }
-
8764  else
-
8765  {
-
8766  json_sax_dom_parser<BasicJsonType> sdp(result, allow_exceptions);
-
8767  sax_parse_internal(&sdp);
-
8768  result.assert_invariant();
-
8769 
-
8770  // in strict mode, input must be completely read
-
8771  if (strict and (get_token() != token_type::end_of_input))
-
8772  {
-
8773  sdp.parse_error(m_lexer.get_position(),
-
8774  m_lexer.get_token_string(),
-
8775  parse_error::create(101, m_lexer.get_position(),
-
8776  exception_message(token_type::end_of_input, "value")));
-
8777  }
-
8778 
-
8779  // in case of an error, return discarded value
-
8780  if (sdp.is_errored())
-
8781  {
-
8782  result = value_t::discarded;
-
8783  return;
-
8784  }
-
8785  }
-
8786  }
-
8787 
-
8794  bool accept(const bool strict = true)
-
8795  {
-
8796  json_sax_acceptor<BasicJsonType> sax_acceptor;
-
8797  return sax_parse(&sax_acceptor, strict);
-
8798  }
-
8799 
-
8800  template <typename SAX>
- -
8802  bool sax_parse(SAX* sax, const bool strict = true)
-
8803  {
- -
8805  const bool result = sax_parse_internal(sax);
-
8806 
-
8807  // strict mode: next byte must be EOF
-
8808  if (result and strict and (get_token() != token_type::end_of_input))
-
8809  {
-
8810  return sax->parse_error(m_lexer.get_position(),
-
8811  m_lexer.get_token_string(),
-
8812  parse_error::create(101, m_lexer.get_position(),
-
8813  exception_message(token_type::end_of_input, "value")));
-
8814  }
-
8815 
-
8816  return result;
-
8817  }
-
8818 
-
8819  private:
-
8820  template <typename SAX>
- -
8822  bool sax_parse_internal(SAX* sax)
-
8823  {
-
8824  // stack to remember the hierarchy of structured values we are parsing
-
8825  // true = array; false = object
-
8826  std::vector<bool> states;
-
8827  // value to avoid a goto (see comment where set to true)
-
8828  bool skip_to_state_evaluation = false;
-
8829 
-
8830  while (true)
-
8831  {
-
8832  if (not skip_to_state_evaluation)
-
8833  {
-
8834  // invariant: get_token() was called before each iteration
-
8835  switch (last_token)
-
8836  {
-
8837  case token_type::begin_object:
-
8838  {
-
8839  if (JSON_HEDLEY_UNLIKELY(not sax->start_object(std::size_t(-1))))
-
8840  {
-
8841  return false;
-
8842  }
-
8843 
-
8844  // closing } -> we are done
-
8845  if (get_token() == token_type::end_object)
-
8846  {
-
8847  if (JSON_HEDLEY_UNLIKELY(not sax->end_object()))
-
8848  {
-
8849  return false;
-
8850  }
-
8851  break;
-
8852  }
-
8853 
-
8854  // parse key
-
8855  if (JSON_HEDLEY_UNLIKELY(last_token != token_type::value_string))
-
8856  {
-
8857  return sax->parse_error(m_lexer.get_position(),
-
8858  m_lexer.get_token_string(),
-
8859  parse_error::create(101, m_lexer.get_position(),
-
8860  exception_message(token_type::value_string, "object key")));
-
8861  }
-
8862  if (JSON_HEDLEY_UNLIKELY(not sax->key(m_lexer.get_string())))
-
8863  {
-
8864  return false;
-
8865  }
-
8866 
-
8867  // parse separator (:)
-
8868  if (JSON_HEDLEY_UNLIKELY(get_token() != token_type::name_separator))
-
8869  {
-
8870  return sax->parse_error(m_lexer.get_position(),
-
8871  m_lexer.get_token_string(),
-
8872  parse_error::create(101, m_lexer.get_position(),
-
8873  exception_message(token_type::name_separator, "object separator")));
-
8874  }
-
8875 
-
8876  // remember we are now inside an object
-
8877  states.push_back(false);
-
8878 
-
8879  // parse values
-
8880  get_token();
-
8881  continue;
-
8882  }
-
8883 
-
8884  case token_type::begin_array:
-
8885  {
-
8886  if (JSON_HEDLEY_UNLIKELY(not sax->start_array(std::size_t(-1))))
-
8887  {
-
8888  return false;
-
8889  }
-
8890 
-
8891  // closing ] -> we are done
-
8892  if (get_token() == token_type::end_array)
-
8893  {
-
8894  if (JSON_HEDLEY_UNLIKELY(not sax->end_array()))
-
8895  {
-
8896  return false;
-
8897  }
-
8898  break;
-
8899  }
-
8900 
-
8901  // remember we are now inside an array
-
8902  states.push_back(true);
-
8903 
-
8904  // parse values (no need to call get_token)
-
8905  continue;
-
8906  }
-
8907 
-
8908  case token_type::value_float:
-
8909  {
-
8910  const auto res = m_lexer.get_number_float();
-
8911 
-
8912  if (JSON_HEDLEY_UNLIKELY(not std::isfinite(res)))
-
8913  {
-
8914  return sax->parse_error(m_lexer.get_position(),
-
8915  m_lexer.get_token_string(),
-
8916  out_of_range::create(406, "number overflow parsing '" + m_lexer.get_token_string() + "'"));
-
8917  }
-
8918 
-
8919  if (JSON_HEDLEY_UNLIKELY(not sax->number_float(res, m_lexer.get_string())))
-
8920  {
-
8921  return false;
-
8922  }
-
8923 
-
8924  break;
-
8925  }
-
8926 
-
8927  case token_type::literal_false:
-
8928  {
-
8929  if (JSON_HEDLEY_UNLIKELY(not sax->boolean(false)))
-
8930  {
-
8931  return false;
-
8932  }
-
8933  break;
-
8934  }
-
8935 
-
8936  case token_type::literal_null:
-
8937  {
-
8938  if (JSON_HEDLEY_UNLIKELY(not sax->null()))
-
8939  {
-
8940  return false;
-
8941  }
-
8942  break;
-
8943  }
-
8944 
-
8945  case token_type::literal_true:
-
8946  {
-
8947  if (JSON_HEDLEY_UNLIKELY(not sax->boolean(true)))
-
8948  {
-
8949  return false;
-
8950  }
-
8951  break;
-
8952  }
-
8953 
-
8954  case token_type::value_integer:
-
8955  {
-
8956  if (JSON_HEDLEY_UNLIKELY(not sax->number_integer(m_lexer.get_number_integer())))
-
8957  {
-
8958  return false;
-
8959  }
-
8960  break;
-
8961  }
-
8962 
-
8963  case token_type::value_string:
-
8964  {
-
8965  if (JSON_HEDLEY_UNLIKELY(not sax->string(m_lexer.get_string())))
-
8966  {
-
8967  return false;
-
8968  }
-
8969  break;
-
8970  }
-
8971 
-
8972  case token_type::value_unsigned:
-
8973  {
-
8974  if (JSON_HEDLEY_UNLIKELY(not sax->number_unsigned(m_lexer.get_number_unsigned())))
-
8975  {
-
8976  return false;
-
8977  }
-
8978  break;
-
8979  }
-
8980 
-
8981  case token_type::parse_error:
-
8982  {
-
8983  // using "uninitialized" to avoid "expected" message
-
8984  return sax->parse_error(m_lexer.get_position(),
-
8985  m_lexer.get_token_string(),
-
8986  parse_error::create(101, m_lexer.get_position(),
-
8987  exception_message(token_type::uninitialized, "value")));
-
8988  }
-
8989 
-
8990  default: // the last token was unexpected
-
8991  {
-
8992  return sax->parse_error(m_lexer.get_position(),
-
8993  m_lexer.get_token_string(),
-
8994  parse_error::create(101, m_lexer.get_position(),
-
8995  exception_message(token_type::literal_or_value, "value")));
-
8996  }
-
8997  }
-
8998  }
-
8999  else
-
9000  {
-
9001  skip_to_state_evaluation = false;
-
9002  }
-
9003 
-
9004  // we reached this line after we successfully parsed a value
-
9005  if (states.empty())
-
9006  {
-
9007  // empty stack: we reached the end of the hierarchy: done
-
9008  return true;
-
9009  }
-
9010 
-
9011  if (states.back()) // array
-
9012  {
-
9013  // comma -> next value
-
9014  if (get_token() == token_type::value_separator)
-
9015  {
-
9016  // parse a new value
-
9017  get_token();
-
9018  continue;
-
9019  }
-
9020 
-
9021  // closing ]
-
9022  if (JSON_HEDLEY_LIKELY(last_token == token_type::end_array))
-
9023  {
-
9024  if (JSON_HEDLEY_UNLIKELY(not sax->end_array()))
-
9025  {
-
9026  return false;
-
9027  }
-
9028 
-
9029  // We are done with this array. Before we can parse a
-
9030  // new value, we need to evaluate the new state first.
-
9031  // By setting skip_to_state_evaluation to false, we
-
9032  // are effectively jumping to the beginning of this if.
-
9033  assert(not states.empty());
-
9034  states.pop_back();
-
9035  skip_to_state_evaluation = true;
-
9036  continue;
-
9037  }
-
9038 
-
9039  return sax->parse_error(m_lexer.get_position(),
-
9040  m_lexer.get_token_string(),
-
9041  parse_error::create(101, m_lexer.get_position(),
-
9042  exception_message(token_type::end_array, "array")));
-
9043  }
-
9044  else // object
-
9045  {
-
9046  // comma -> next value
-
9047  if (get_token() == token_type::value_separator)
-
9048  {
-
9049  // parse key
-
9050  if (JSON_HEDLEY_UNLIKELY(get_token() != token_type::value_string))
-
9051  {
-
9052  return sax->parse_error(m_lexer.get_position(),
-
9053  m_lexer.get_token_string(),
-
9054  parse_error::create(101, m_lexer.get_position(),
-
9055  exception_message(token_type::value_string, "object key")));
-
9056  }
-
9057 
-
9058  if (JSON_HEDLEY_UNLIKELY(not sax->key(m_lexer.get_string())))
-
9059  {
-
9060  return false;
-
9061  }
-
9062 
-
9063  // parse separator (:)
-
9064  if (JSON_HEDLEY_UNLIKELY(get_token() != token_type::name_separator))
-
9065  {
-
9066  return sax->parse_error(m_lexer.get_position(),
-
9067  m_lexer.get_token_string(),
-
9068  parse_error::create(101, m_lexer.get_position(),
-
9069  exception_message(token_type::name_separator, "object separator")));
-
9070  }
-
9071 
-
9072  // parse values
-
9073  get_token();
-
9074  continue;
-
9075  }
-
9076 
-
9077  // closing }
-
9078  if (JSON_HEDLEY_LIKELY(last_token == token_type::end_object))
-
9079  {
-
9080  if (JSON_HEDLEY_UNLIKELY(not sax->end_object()))
-
9081  {
-
9082  return false;
-
9083  }
-
9084 
-
9085  // We are done with this object. Before we can parse a
-
9086  // new value, we need to evaluate the new state first.
-
9087  // By setting skip_to_state_evaluation to false, we
-
9088  // are effectively jumping to the beginning of this if.
-
9089  assert(not states.empty());
-
9090  states.pop_back();
-
9091  skip_to_state_evaluation = true;
-
9092  continue;
-
9093  }
-
9094 
-
9095  return sax->parse_error(m_lexer.get_position(),
-
9096  m_lexer.get_token_string(),
-
9097  parse_error::create(101, m_lexer.get_position(),
-
9098  exception_message(token_type::end_object, "object")));
-
9099  }
-
9100  }
-
9101  }
-
9102 
-
9104  token_type get_token()
-
9105  {
-
9106  return last_token = m_lexer.scan();
-
9107  }
-
9108 
-
9109  std::string exception_message(const token_type expected, const std::string& context)
-
9110  {
-
9111  std::string error_msg = "syntax error ";
-
9112 
-
9113  if (not context.empty())
-
9114  {
-
9115  error_msg += "while parsing " + context + " ";
-
9116  }
-
9117 
-
9118  error_msg += "- ";
-
9119 
-
9120  if (last_token == token_type::parse_error)
-
9121  {
-
9122  error_msg += std::string(m_lexer.get_error_message()) + "; last read: '" +
-
9123  m_lexer.get_token_string() + "'";
-
9124  }
-
9125  else
-
9126  {
-
9127  error_msg += "unexpected " + std::string(lexer_t::token_type_name(last_token));
-
9128  }
-
9129 
-
9130  if (expected != token_type::uninitialized)
-
9131  {
-
9132  error_msg += "; expected " + std::string(lexer_t::token_type_name(expected));
-
9133  }
-
9134 
-
9135  return error_msg;
-
9136  }
-
9137 
-
9138  private:
-
9140  const parser_callback_t callback = nullptr;
-
9142  token_type last_token = token_type::uninitialized;
-
9144  lexer_t m_lexer;
-
9146  const bool allow_exceptions = true;
-
9147 };
-
9148 } // namespace detail
-
9149 } // namespace nlohmann
-
9150 
-
9151 // #include <nlohmann/detail/iterators/internal_iterator.hpp>
-
9152 
-
9153 
-
9154 // #include <nlohmann/detail/iterators/primitive_iterator.hpp>
-
9155 
-
9156 
-
9157 #include <cstddef> // ptrdiff_t
-
9158 #include <limits> // numeric_limits
-
9159 
-
9160 namespace nlohmann
-
9161 {
-
9162 namespace detail
-
9163 {
-
9164 /*
-
9165 @brief an iterator for primitive JSON types
-
9166 
-
9167 This class models an iterator for primitive JSON types (boolean, number,
-
9168 string). It's only purpose is to allow the iterator/const_iterator classes
-
9169 to "iterate" over primitive values. Internally, the iterator is modeled by
-
9170 a `difference_type` variable. Value begin_value (`0`) models the begin,
-
9171 end_value (`1`) models past the end.
-
9172 */
- -
9174 {
-
9175  private:
-
9176  using difference_type = std::ptrdiff_t;
-
9177  static constexpr difference_type begin_value = 0;
-
9178  static constexpr difference_type end_value = begin_value + 1;
-
9179 
-
9181  difference_type m_it = (std::numeric_limits<std::ptrdiff_t>::min)();
-
9182 
-
9183  public:
-
9184  constexpr difference_type get_value() const noexcept
-
9185  {
-
9186  return m_it;
-
9187  }
-
9188 
-
9190  void set_begin() noexcept
-
9191  {
-
9192  m_it = begin_value;
-
9193  }
-
9194 
-
9196  void set_end() noexcept
-
9197  {
-
9198  m_it = end_value;
-
9199  }
-
9200 
-
9202  constexpr bool is_begin() const noexcept
-
9203  {
-
9204  return m_it == begin_value;
-
9205  }
-
9206 
-
9208  constexpr bool is_end() const noexcept
-
9209  {
-
9210  return m_it == end_value;
-
9211  }
-
9212 
-
9213  friend constexpr bool operator==(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept
-
9214  {
-
9215  return lhs.m_it == rhs.m_it;
-
9216  }
-
9217 
-
9218  friend constexpr bool operator<(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept
-
9219  {
-
9220  return lhs.m_it < rhs.m_it;
-
9221  }
-
9222 
-
9223  primitive_iterator_t operator+(difference_type n) noexcept
-
9224  {
-
9225  auto result = *this;
-
9226  result += n;
-
9227  return result;
-
9228  }
-
9229 
-
9230  friend constexpr difference_type operator-(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept
-
9231  {
-
9232  return lhs.m_it - rhs.m_it;
-
9233  }
-
9234 
- -
9236  {
-
9237  ++m_it;
-
9238  return *this;
-
9239  }
-
9240 
-
9241  primitive_iterator_t const operator++(int) noexcept
-
9242  {
-
9243  auto result = *this;
-
9244  ++m_it;
-
9245  return result;
-
9246  }
-
9247 
- -
9249  {
-
9250  --m_it;
-
9251  return *this;
-
9252  }
-
9253 
-
9254  primitive_iterator_t const operator--(int) noexcept
-
9255  {
-
9256  auto result = *this;
-
9257  --m_it;
-
9258  return result;
-
9259  }
-
9260 
-
9261  primitive_iterator_t& operator+=(difference_type n) noexcept
-
9262  {
-
9263  m_it += n;
-
9264  return *this;
-
9265  }
-
9266 
-
9267  primitive_iterator_t& operator-=(difference_type n) noexcept
-
9268  {
-
9269  m_it -= n;
-
9270  return *this;
-
9271  }
-
9272 };
-
9273 } // namespace detail
-
9274 } // namespace nlohmann
-
9275 
-
9276 
-
9277 namespace nlohmann
-
9278 {
-
9279 namespace detail
-
9280 {
-
9287 template<typename BasicJsonType> struct internal_iterator
-
9288 {
-
9290  typename BasicJsonType::object_t::iterator object_iterator {};
-
9292  typename BasicJsonType::array_t::iterator array_iterator {};
- -
9295 };
-
9296 } // namespace detail
-
9297 } // namespace nlohmann
-
9298 
-
9299 // #include <nlohmann/detail/iterators/iter_impl.hpp>
-
9300 
-
9301 
-
9302 #include <ciso646> // not
-
9303 #include <iterator> // iterator, random_access_iterator_tag, bidirectional_iterator_tag, advance, next
-
9304 #include <type_traits> // conditional, is_const, remove_const
-
9305 
-
9306 // #include <nlohmann/detail/exceptions.hpp>
-
9307 
-
9308 // #include <nlohmann/detail/iterators/internal_iterator.hpp>
-
9309 
-
9310 // #include <nlohmann/detail/iterators/primitive_iterator.hpp>
-
9311 
-
9312 // #include <nlohmann/detail/macro_scope.hpp>
-
9313 
-
9314 // #include <nlohmann/detail/meta/cpp_future.hpp>
-
9315 
-
9316 // #include <nlohmann/detail/meta/type_traits.hpp>
-
9317 
-
9318 // #include <nlohmann/detail/value_t.hpp>
-
9319 
-
9320 
-
9321 namespace nlohmann
-
9322 {
-
9323 namespace detail
-
9324 {
-
9325 // forward declare, to be able to friend it later on
-
9326 template<typename IteratorType> class iteration_proxy;
-
9327 template<typename IteratorType> class iteration_proxy_value;
-
9328 
-
9345 template<typename BasicJsonType>
- -
9347 {
-
9349  friend iter_impl<typename std::conditional<std::is_const<BasicJsonType>::value, typename std::remove_const<BasicJsonType>::type, const BasicJsonType>::type>;
-
9350  friend BasicJsonType;
- - -
9353 
-
9354  using object_t = typename BasicJsonType::object_t;
-
9355  using array_t = typename BasicJsonType::array_t;
-
9356  // make sure BasicJsonType is basic_json or const basic_json
-
9357  static_assert(is_basic_json<typename std::remove_const<BasicJsonType>::type>::value,
-
9358  "iter_impl only accepts (const) basic_json");
-
9359 
-
9360  public:
-
9361 
-
9367  using iterator_category = std::bidirectional_iterator_tag;
-
9368 
-
9370  using value_type = typename BasicJsonType::value_type;
-
9372  using difference_type = typename BasicJsonType::difference_type;
-
9374  using pointer = typename std::conditional<std::is_const<BasicJsonType>::value,
-
9375  typename BasicJsonType::const_pointer,
-
9376  typename BasicJsonType::pointer>::type;
-
9378  using reference =
-
9379  typename std::conditional<std::is_const<BasicJsonType>::value,
-
9380  typename BasicJsonType::const_reference,
-
9381  typename BasicJsonType::reference>::type;
-
9382 
-
9384  iter_impl() = default;
-
9385 
-
9392  explicit iter_impl(pointer object) noexcept : m_object(object)
-
9393  {
-
9394  assert(m_object != nullptr);
-
9395 
-
9396  switch (m_object->m_type)
-
9397  {
-
9398  case value_t::object:
-
9399  {
-
9400  m_it.object_iterator = typename object_t::iterator();
-
9401  break;
-
9402  }
-
9403 
-
9404  case value_t::array:
-
9405  {
-
9406  m_it.array_iterator = typename array_t::iterator();
-
9407  break;
-
9408  }
-
9409 
-
9410  default:
-
9411  {
- -
9413  break;
-
9414  }
-
9415  }
-
9416  }
-
9417 
- -
9435  : m_object(other.m_object), m_it(other.m_it)
-
9436  {}
-
9437 
- -
9445  {
-
9446  m_object = other.m_object;
-
9447  m_it = other.m_it;
-
9448  return *this;
-
9449  }
-
9450 
-
9456  iter_impl(const iter_impl<typename std::remove_const<BasicJsonType>::type>& other) noexcept
-
9457  : m_object(other.m_object), m_it(other.m_it)
-
9458  {}
-
9459 
-
9466  iter_impl& operator=(const iter_impl<typename std::remove_const<BasicJsonType>::type>& other) noexcept
-
9467  {
-
9468  m_object = other.m_object;
-
9469  m_it = other.m_it;
-
9470  return *this;
-
9471  }
-
9472 
-
9473  private:
-
9478  void set_begin() noexcept
-
9479  {
-
9480  assert(m_object != nullptr);
-
9481 
-
9482  switch (m_object->m_type)
-
9483  {
-
9484  case value_t::object:
-
9485  {
-
9486  m_it.object_iterator = m_object->m_value.object->begin();
-
9487  break;
-
9488  }
-
9489 
-
9490  case value_t::array:
-
9491  {
-
9492  m_it.array_iterator = m_object->m_value.array->begin();
-
9493  break;
-
9494  }
-
9495 
-
9496  case value_t::null:
-
9497  {
-
9498  // set to end so begin()==end() is true: null is empty
-
9499  m_it.primitive_iterator.set_end();
-
9500  break;
-
9501  }
-
9502 
-
9503  default:
-
9504  {
- -
9506  break;
-
9507  }
-
9508  }
-
9509  }
-
9510 
-
9515  void set_end() noexcept
-
9516  {
-
9517  assert(m_object != nullptr);
-
9518 
-
9519  switch (m_object->m_type)
-
9520  {
-
9521  case value_t::object:
-
9522  {
-
9523  m_it.object_iterator = m_object->m_value.object->end();
-
9524  break;
-
9525  }
-
9526 
-
9527  case value_t::array:
-
9528  {
-
9529  m_it.array_iterator = m_object->m_value.array->end();
-
9530  break;
-
9531  }
-
9532 
-
9533  default:
-
9534  {
-
9535  m_it.primitive_iterator.set_end();
-
9536  break;
-
9537  }
-
9538  }
-
9539  }
-
9540 
-
9541  public:
- -
9547  {
-
9548  assert(m_object != nullptr);
-
9549 
-
9550  switch (m_object->m_type)
-
9551  {
-
9552  case value_t::object:
-
9553  {
-
9554  assert(m_it.object_iterator != m_object->m_value.object->end());
-
9555  return m_it.object_iterator->second;
-
9556  }
-
9557 
-
9558  case value_t::array:
-
9559  {
-
9560  assert(m_it.array_iterator != m_object->m_value.array->end());
-
9561  return *m_it.array_iterator;
-
9562  }
-
9563 
-
9564  case value_t::null:
-
9565  JSON_THROW(invalid_iterator::create(214, "cannot get value"));
-
9566 
-
9567  default:
-
9568  {
- -
9570  {
-
9571  return *m_object;
-
9572  }
-
9573 
-
9574  JSON_THROW(invalid_iterator::create(214, "cannot get value"));
-
9575  }
-
9576  }
-
9577  }
-
9578 
- -
9584  {
-
9585  assert(m_object != nullptr);
-
9586 
-
9587  switch (m_object->m_type)
-
9588  {
-
9589  case value_t::object:
-
9590  {
-
9591  assert(m_it.object_iterator != m_object->m_value.object->end());
-
9592  return &(m_it.object_iterator->second);
-
9593  }
-
9594 
-
9595  case value_t::array:
-
9596  {
-
9597  assert(m_it.array_iterator != m_object->m_value.array->end());
-
9598  return &*m_it.array_iterator;
-
9599  }
-
9600 
-
9601  default:
-
9602  {
- -
9604  {
-
9605  return m_object;
-
9606  }
-
9607 
-
9608  JSON_THROW(invalid_iterator::create(214, "cannot get value"));
-
9609  }
-
9610  }
-
9611  }
-
9612 
- -
9618  {
-
9619  auto result = *this;
-
9620  ++(*this);
-
9621  return result;
-
9622  }
-
9623 
- -
9629  {
-
9630  assert(m_object != nullptr);
-
9631 
-
9632  switch (m_object->m_type)
-
9633  {
-
9634  case value_t::object:
-
9635  {
-
9636  std::advance(m_it.object_iterator, 1);
-
9637  break;
-
9638  }
-
9639 
-
9640  case value_t::array:
-
9641  {
-
9642  std::advance(m_it.array_iterator, 1);
-
9643  break;
-
9644  }
-
9645 
-
9646  default:
-
9647  {
-
9648  ++m_it.primitive_iterator;
-
9649  break;
-
9650  }
-
9651  }
-
9652 
-
9653  return *this;
-
9654  }
-
9655 
- -
9661  {
-
9662  auto result = *this;
-
9663  --(*this);
-
9664  return result;
-
9665  }
-
9666 
- -
9672  {
-
9673  assert(m_object != nullptr);
-
9674 
-
9675  switch (m_object->m_type)
-
9676  {
-
9677  case value_t::object:
-
9678  {
-
9679  std::advance(m_it.object_iterator, -1);
-
9680  break;
-
9681  }
-
9682 
-
9683  case value_t::array:
-
9684  {
-
9685  std::advance(m_it.array_iterator, -1);
-
9686  break;
-
9687  }
-
9688 
-
9689  default:
-
9690  {
-
9691  --m_it.primitive_iterator;
-
9692  break;
-
9693  }
-
9694  }
-
9695 
-
9696  return *this;
-
9697  }
-
9698 
-
9703  bool operator==(const iter_impl& other) const
-
9704  {
-
9705  // if objects are not the same, the comparison is undefined
-
9706  if (JSON_HEDLEY_UNLIKELY(m_object != other.m_object))
-
9707  {
-
9708  JSON_THROW(invalid_iterator::create(212, "cannot compare iterators of different containers"));
-
9709  }
-
9710 
-
9711  assert(m_object != nullptr);
-
9712 
-
9713  switch (m_object->m_type)
-
9714  {
-
9715  case value_t::object:
-
9716  return (m_it.object_iterator == other.m_it.object_iterator);
-
9717 
-
9718  case value_t::array:
-
9719  return (m_it.array_iterator == other.m_it.array_iterator);
-
9720 
-
9721  default:
-
9722  return (m_it.primitive_iterator == other.m_it.primitive_iterator);
-
9723  }
-
9724  }
-
9725 
-
9730  bool operator!=(const iter_impl& other) const
-
9731  {
-
9732  return not operator==(other);
-
9733  }
-
9734 
-
9739  bool operator<(const iter_impl& other) const
-
9740  {
-
9741  // if objects are not the same, the comparison is undefined
-
9742  if (JSON_HEDLEY_UNLIKELY(m_object != other.m_object))
-
9743  {
-
9744  JSON_THROW(invalid_iterator::create(212, "cannot compare iterators of different containers"));
-
9745  }
-
9746 
-
9747  assert(m_object != nullptr);
-
9748 
-
9749  switch (m_object->m_type)
-
9750  {
-
9751  case value_t::object:
-
9752  JSON_THROW(invalid_iterator::create(213, "cannot compare order of object iterators"));
-
9753 
-
9754  case value_t::array:
-
9755  return (m_it.array_iterator < other.m_it.array_iterator);
-
9756 
-
9757  default:
-
9758  return (m_it.primitive_iterator < other.m_it.primitive_iterator);
-
9759  }
-
9760  }
-
9761 
-
9766  bool operator<=(const iter_impl& other) const
-
9767  {
-
9768  return not other.operator < (*this);
-
9769  }
-
9770 
-
9775  bool operator>(const iter_impl& other) const
-
9776  {
-
9777  return not operator<=(other);
-
9778  }
-
9779 
-
9784  bool operator>=(const iter_impl& other) const
-
9785  {
-
9786  return not operator<(other);
-
9787  }
-
9788 
- -
9794  {
-
9795  assert(m_object != nullptr);
-
9796 
-
9797  switch (m_object->m_type)
-
9798  {
-
9799  case value_t::object:
-
9800  JSON_THROW(invalid_iterator::create(209, "cannot use offsets with object iterators"));
-
9801 
-
9802  case value_t::array:
-
9803  {
-
9804  std::advance(m_it.array_iterator, i);
-
9805  break;
-
9806  }
-
9807 
-
9808  default:
-
9809  {
-
9810  m_it.primitive_iterator += i;
-
9811  break;
-
9812  }
-
9813  }
-
9814 
-
9815  return *this;
-
9816  }
-
9817 
- -
9823  {
-
9824  return operator+=(-i);
-
9825  }
-
9826 
- -
9832  {
-
9833  auto result = *this;
-
9834  result += i;
-
9835  return result;
-
9836  }
-
9837 
- -
9843  {
-
9844  auto result = it;
-
9845  result += i;
-
9846  return result;
-
9847  }
-
9848 
- -
9854  {
-
9855  auto result = *this;
-
9856  result -= i;
-
9857  return result;
-
9858  }
-
9859 
- -
9865  {
-
9866  assert(m_object != nullptr);
-
9867 
-
9868  switch (m_object->m_type)
-
9869  {
-
9870  case value_t::object:
-
9871  JSON_THROW(invalid_iterator::create(209, "cannot use offsets with object iterators"));
-
9872 
-
9873  case value_t::array:
-
9874  return m_it.array_iterator - other.m_it.array_iterator;
-
9875 
-
9876  default:
-
9877  return m_it.primitive_iterator - other.m_it.primitive_iterator;
-
9878  }
-
9879  }
-
9880 
- -
9886  {
-
9887  assert(m_object != nullptr);
-
9888 
-
9889  switch (m_object->m_type)
-
9890  {
-
9891  case value_t::object:
-
9892  JSON_THROW(invalid_iterator::create(208, "cannot use operator[] for object iterators"));
-
9893 
-
9894  case value_t::array:
-
9895  return *std::next(m_it.array_iterator, n);
-
9896 
-
9897  case value_t::null:
-
9898  JSON_THROW(invalid_iterator::create(214, "cannot get value"));
-
9899 
-
9900  default:
-
9901  {
- -
9903  {
-
9904  return *m_object;
-
9905  }
-
9906 
-
9907  JSON_THROW(invalid_iterator::create(214, "cannot get value"));
-
9908  }
-
9909  }
-
9910  }
-
9911 
-
9916  const typename object_t::key_type& key() const
-
9917  {
-
9918  assert(m_object != nullptr);
-
9919 
-
9920  if (JSON_HEDLEY_LIKELY(m_object->is_object()))
-
9921  {
-
9922  return m_it.object_iterator->first;
-
9923  }
-
9924 
-
9925  JSON_THROW(invalid_iterator::create(207, "cannot use key() for non-object iterators"));
-
9926  }
-
9927 
- -
9933  {
-
9934  return operator*();
-
9935  }
-
9936 
-
9937  private:
-
9939  pointer m_object = nullptr;
- -
9942 };
-
9943 } // namespace detail
-
9944 } // namespace nlohmann
-
9945 
-
9946 // #include <nlohmann/detail/iterators/iteration_proxy.hpp>
-
9947 
-
9948 // #include <nlohmann/detail/iterators/json_reverse_iterator.hpp>
-
9949 
-
9950 
-
9951 #include <cstddef> // ptrdiff_t
-
9952 #include <iterator> // reverse_iterator
-
9953 #include <utility> // declval
-
9954 
-
9955 namespace nlohmann
-
9956 {
-
9957 namespace detail
-
9958 {
-
9960 // reverse_iterator //
-
9962 
-
9981 template<typename Base>
-
9982 class json_reverse_iterator : public std::reverse_iterator<Base>
-
9983 {
-
9984  public:
-
9985  using difference_type = std::ptrdiff_t;
-
9987  using base_iterator = std::reverse_iterator<Base>;
-
9989  using reference = typename Base::reference;
-
9990 
-
9992  explicit json_reverse_iterator(const typename base_iterator::iterator_type& it) noexcept
-
9993  : base_iterator(it) {}
-
9994 
-
9996  explicit json_reverse_iterator(const base_iterator& it) noexcept : base_iterator(it) {}
-
9997 
- -
10000  {
-
10001  return static_cast<json_reverse_iterator>(base_iterator::operator++(1));
-
10002  }
-
10003 
- -
10006  {
-
10007  return static_cast<json_reverse_iterator&>(base_iterator::operator++());
-
10008  }
-
10009 
- -
10012  {
-
10013  return static_cast<json_reverse_iterator>(base_iterator::operator--(1));
-
10014  }
-
10015 
- -
10018  {
-
10019  return static_cast<json_reverse_iterator&>(base_iterator::operator--());
-
10020  }
-
10021 
- -
10024  {
-
10025  return static_cast<json_reverse_iterator&>(base_iterator::operator+=(i));
-
10026  }
-
10027 
- -
10030  {
-
10031  return static_cast<json_reverse_iterator>(base_iterator::operator+(i));
-
10032  }
-
10033 
- -
10036  {
-
10037  return static_cast<json_reverse_iterator>(base_iterator::operator-(i));
-
10038  }
-
10039 
- -
10042  {
-
10043  return base_iterator(*this) - base_iterator(other);
-
10044  }
-
10045 
- -
10048  {
-
10049  return *(this->operator+(n));
-
10050  }
-
10051 
-
10053  auto key() const -> decltype(std::declval<Base>().key())
-
10054  {
-
10055  auto it = --this->base();
-
10056  return it.key();
-
10057  }
-
10058 
- -
10061  {
-
10062  auto it = --this->base();
-
10063  return it.operator * ();
-
10064  }
-
10065 };
-
10066 } // namespace detail
-
10067 } // namespace nlohmann
-
10068 
-
10069 // #include <nlohmann/detail/iterators/primitive_iterator.hpp>
-
10070 
-
10071 // #include <nlohmann/detail/json_pointer.hpp>
-
10072 
-
10073 
-
10074 #include <algorithm> // all_of
-
10075 #include <cassert> // assert
-
10076 #include <cctype> // isdigit
-
10077 #include <numeric> // accumulate
-
10078 #include <string> // string
-
10079 #include <utility> // move
-
10080 #include <vector> // vector
-
10081 
-
10082 // #include <nlohmann/detail/exceptions.hpp>
-
10083 
-
10084 // #include <nlohmann/detail/macro_scope.hpp>
-
10085 
-
10086 // #include <nlohmann/detail/value_t.hpp>
-
10087 
-
10088 
-
10089 namespace nlohmann
-
10090 {
-
10091 template<typename BasicJsonType>
-
10092 class json_pointer
-
10093 {
-
10094  // allow basic_json to access private members
- -
10096  friend class basic_json;
-
10097 
-
10098  public:
-
10120  explicit json_pointer(const std::string& s = "")
-
10121  : reference_tokens(split(s))
-
10122  {}
-
10123 
-
10138  std::string to_string() const
-
10139  {
-
10140  return std::accumulate(reference_tokens.begin(), reference_tokens.end(),
-
10141  std::string{},
-
10142  [](const std::string & a, const std::string & b)
-
10143  {
-
10144  return a + "/" + escape(b);
-
10145  });
-
10146  }
-
10147 
-
10149  operator std::string() const
-
10150  {
-
10151  return to_string();
-
10152  }
-
10153 
- -
10171  {
-
10172  reference_tokens.insert(reference_tokens.end(),
-
10173  ptr.reference_tokens.begin(),
-
10174  ptr.reference_tokens.end());
-
10175  return *this;
-
10176  }
-
10177 
-
10194  json_pointer& operator/=(std::string token)
-
10195  {
-
10196  push_back(std::move(token));
-
10197  return *this;
-
10198  }
-
10199 
-
10216  json_pointer& operator/=(std::size_t array_index)
-
10217  {
-
10218  return *this /= std::to_string(array_index);
-
10219  }
-
10220 
- -
10237  const json_pointer& rhs)
-
10238  {
-
10239  return json_pointer(lhs) /= rhs;
-
10240  }
-
10241 
-
10257  friend json_pointer operator/(const json_pointer& ptr, std::string token)
-
10258  {
-
10259  return json_pointer(ptr) /= std::move(token);
-
10260  }
-
10261 
-
10277  friend json_pointer operator/(const json_pointer& ptr, std::size_t array_index)
-
10278  {
-
10279  return json_pointer(ptr) /= array_index;
-
10280  }
-
10281 
- -
10296  {
-
10297  if (empty())
-
10298  {
-
10299  return *this;
-
10300  }
-
10301 
-
10302  json_pointer res = *this;
-
10303  res.pop_back();
-
10304  return res;
-
10305  }
-
10306 
-
10320  void pop_back()
-
10321  {
-
10322  if (JSON_HEDLEY_UNLIKELY(empty()))
-
10323  {
-
10324  JSON_THROW(detail::out_of_range::create(405, "JSON pointer has no parent"));
-
10325  }
-
10326 
-
10327  reference_tokens.pop_back();
-
10328  }
-
10329 
-
10344  const std::string& back() const
-
10345  {
-
10346  if (JSON_HEDLEY_UNLIKELY(empty()))
-
10347  {
-
10348  JSON_THROW(detail::out_of_range::create(405, "JSON pointer has no parent"));
-
10349  }
-
10350 
-
10351  return reference_tokens.back();
-
10352  }
-
10353 
-
10366  void push_back(const std::string& token)
-
10367  {
-
10368  reference_tokens.push_back(token);
-
10369  }
-
10370 
-
10372  void push_back(std::string&& token)
-
10373  {
-
10374  reference_tokens.push_back(std::move(token));
-
10375  }
-
10376 
-
10391  bool empty() const noexcept
-
10392  {
-
10393  return reference_tokens.empty();
-
10394  }
-
10395 
-
10396  private:
-
10404  static int array_index(const std::string& s)
-
10405  {
-
10406  std::size_t processed_chars = 0;
-
10407  const int res = std::stoi(s, &processed_chars);
-
10408 
-
10409  // check if the string was completely read
-
10410  if (JSON_HEDLEY_UNLIKELY(processed_chars != s.size()))
-
10411  {
-
10412  JSON_THROW(detail::out_of_range::create(404, "unresolved reference token '" + s + "'"));
-
10413  }
-
10414 
-
10415  return res;
-
10416  }
-
10417 
-
10418  json_pointer top() const
-
10419  {
-
10420  if (JSON_HEDLEY_UNLIKELY(empty()))
-
10421  {
-
10422  JSON_THROW(detail::out_of_range::create(405, "JSON pointer has no parent"));
-
10423  }
-
10424 
-
10425  json_pointer result = *this;
-
10426  result.reference_tokens = {reference_tokens[0]};
-
10427  return result;
-
10428  }
-
10429 
-
10438  BasicJsonType& get_and_create(BasicJsonType& j) const
-
10439  {
-
10440  using size_type = typename BasicJsonType::size_type;
-
10441  auto result = &j;
-
10442 
-
10443  // in case no reference tokens exist, return a reference to the JSON value
-
10444  // j which will be overwritten by a primitive value
-
10445  for (const auto& reference_token : reference_tokens)
-
10446  {
-
10447  switch (result->type())
-
10448  {
-
10449  case detail::value_t::null:
-
10450  {
-
10451  if (reference_token == "0")
-
10452  {
-
10453  // start a new array if reference token is 0
-
10454  result = &result->operator[](0);
-
10455  }
-
10456  else
-
10457  {
-
10458  // start a new object otherwise
-
10459  result = &result->operator[](reference_token);
-
10460  }
-
10461  break;
-
10462  }
-
10463 
- -
10465  {
-
10466  // create an entry in the object
-
10467  result = &result->operator[](reference_token);
-
10468  break;
-
10469  }
-
10470 
- -
10472  {
-
10473  // create an entry in the array
-
10474  JSON_TRY
-
10475  {
-
10476  result = &result->operator[](static_cast<size_type>(array_index(reference_token)));
-
10477  }
-
10478  JSON_CATCH(std::invalid_argument&)
-
10479  {
-
10480  JSON_THROW(detail::parse_error::create(109, 0, "array index '" + reference_token + "' is not a number"));
-
10481  }
-
10482  break;
-
10483  }
-
10484 
-
10485  /*
-
10486  The following code is only reached if there exists a reference
-
10487  token _and_ the current value is primitive. In this case, we have
-
10488  an error situation, because primitive values may only occur as
-
10489  single value; that is, with an empty list of reference tokens.
-
10490  */
-
10491  default:
-
10492  JSON_THROW(detail::type_error::create(313, "invalid value to unflatten"));
-
10493  }
-
10494  }
-
10495 
-
10496  return *result;
-
10497  }
-
10498 
-
10518  BasicJsonType& get_unchecked(BasicJsonType* ptr) const
-
10519  {
-
10520  using size_type = typename BasicJsonType::size_type;
-
10521  for (const auto& reference_token : reference_tokens)
-
10522  {
-
10523  // convert null values to arrays or objects before continuing
-
10524  if (ptr->is_null())
-
10525  {
-
10526  // check if reference token is a number
-
10527  const bool nums =
-
10528  std::all_of(reference_token.begin(), reference_token.end(),
-
10529  [](const unsigned char x)
-
10530  {
-
10531  return std::isdigit(x);
-
10532  });
-
10533 
-
10534  // change value to array for numbers or "-" or to object otherwise
-
10535  *ptr = (nums or reference_token == "-")
- - -
10538  }
-
10539 
-
10540  switch (ptr->type())
-
10541  {
- -
10543  {
-
10544  // use unchecked object access
-
10545  ptr = &ptr->operator[](reference_token);
-
10546  break;
-
10547  }
-
10548 
- -
10550  {
-
10551  // error condition (cf. RFC 6901, Sect. 4)
-
10552  if (JSON_HEDLEY_UNLIKELY(reference_token.size() > 1 and reference_token[0] == '0'))
-
10553  {
- -
10555  "array index '" + reference_token +
-
10556  "' must not begin with '0'"));
-
10557  }
-
10558 
-
10559  if (reference_token == "-")
-
10560  {
-
10561  // explicitly treat "-" as index beyond the end
-
10562  ptr = &ptr->operator[](ptr->m_value.array->size());
-
10563  }
-
10564  else
-
10565  {
-
10566  // convert array index to number; unchecked access
-
10567  JSON_TRY
-
10568  {
-
10569  ptr = &ptr->operator[](
-
10570  static_cast<size_type>(array_index(reference_token)));
-
10571  }
-
10572  JSON_CATCH(std::invalid_argument&)
-
10573  {
-
10574  JSON_THROW(detail::parse_error::create(109, 0, "array index '" + reference_token + "' is not a number"));
-
10575  }
-
10576  }
-
10577  break;
-
10578  }
-
10579 
-
10580  default:
-
10581  JSON_THROW(detail::out_of_range::create(404, "unresolved reference token '" + reference_token + "'"));
-
10582  }
-
10583  }
-
10584 
-
10585  return *ptr;
-
10586  }
-
10587 
-
10594  BasicJsonType& get_checked(BasicJsonType* ptr) const
-
10595  {
-
10596  using size_type = typename BasicJsonType::size_type;
-
10597  for (const auto& reference_token : reference_tokens)
-
10598  {
-
10599  switch (ptr->type())
-
10600  {
- -
10602  {
-
10603  // note: at performs range check
-
10604  ptr = &ptr->at(reference_token);
-
10605  break;
-
10606  }
-
10607 
- -
10609  {
-
10610  if (JSON_HEDLEY_UNLIKELY(reference_token == "-"))
-
10611  {
-
10612  // "-" always fails the range check
- -
10614  "array index '-' (" + std::to_string(ptr->m_value.array->size()) +
-
10615  ") is out of range"));
-
10616  }
-
10617 
-
10618  // error condition (cf. RFC 6901, Sect. 4)
-
10619  if (JSON_HEDLEY_UNLIKELY(reference_token.size() > 1 and reference_token[0] == '0'))
-
10620  {
- -
10622  "array index '" + reference_token +
-
10623  "' must not begin with '0'"));
-
10624  }
-
10625 
-
10626  // note: at performs range check
-
10627  JSON_TRY
-
10628  {
-
10629  ptr = &ptr->at(static_cast<size_type>(array_index(reference_token)));
-
10630  }
-
10631  JSON_CATCH(std::invalid_argument&)
-
10632  {
-
10633  JSON_THROW(detail::parse_error::create(109, 0, "array index '" + reference_token + "' is not a number"));
-
10634  }
-
10635  break;
-
10636  }
-
10637 
-
10638  default:
-
10639  JSON_THROW(detail::out_of_range::create(404, "unresolved reference token '" + reference_token + "'"));
-
10640  }
-
10641  }
-
10642 
-
10643  return *ptr;
-
10644  }
-
10645 
-
10659  const BasicJsonType& get_unchecked(const BasicJsonType* ptr) const
-
10660  {
-
10661  using size_type = typename BasicJsonType::size_type;
-
10662  for (const auto& reference_token : reference_tokens)
-
10663  {
-
10664  switch (ptr->type())
-
10665  {
- -
10667  {
-
10668  // use unchecked object access
-
10669  ptr = &ptr->operator[](reference_token);
-
10670  break;
-
10671  }
-
10672 
- -
10674  {
-
10675  if (JSON_HEDLEY_UNLIKELY(reference_token == "-"))
-
10676  {
-
10677  // "-" cannot be used for const access
- -
10679  "array index '-' (" + std::to_string(ptr->m_value.array->size()) +
-
10680  ") is out of range"));
-
10681  }
-
10682 
-
10683  // error condition (cf. RFC 6901, Sect. 4)
-
10684  if (JSON_HEDLEY_UNLIKELY(reference_token.size() > 1 and reference_token[0] == '0'))
-
10685  {
- -
10687  "array index '" + reference_token +
-
10688  "' must not begin with '0'"));
-
10689  }
-
10690 
-
10691  // use unchecked array access
-
10692  JSON_TRY
-
10693  {
-
10694  ptr = &ptr->operator[](
-
10695  static_cast<size_type>(array_index(reference_token)));
-
10696  }
-
10697  JSON_CATCH(std::invalid_argument&)
-
10698  {
-
10699  JSON_THROW(detail::parse_error::create(109, 0, "array index '" + reference_token + "' is not a number"));
-
10700  }
-
10701  break;
-
10702  }
-
10703 
-
10704  default:
-
10705  JSON_THROW(detail::out_of_range::create(404, "unresolved reference token '" + reference_token + "'"));
-
10706  }
-
10707  }
-
10708 
-
10709  return *ptr;
-
10710  }
-
10711 
-
10718  const BasicJsonType& get_checked(const BasicJsonType* ptr) const
-
10719  {
-
10720  using size_type = typename BasicJsonType::size_type;
-
10721  for (const auto& reference_token : reference_tokens)
-
10722  {
-
10723  switch (ptr->type())
-
10724  {
- -
10726  {
-
10727  // note: at performs range check
-
10728  ptr = &ptr->at(reference_token);
-
10729  break;
-
10730  }
-
10731 
- -
10733  {
-
10734  if (JSON_HEDLEY_UNLIKELY(reference_token == "-"))
-
10735  {
-
10736  // "-" always fails the range check
- -
10738  "array index '-' (" + std::to_string(ptr->m_value.array->size()) +
-
10739  ") is out of range"));
-
10740  }
-
10741 
-
10742  // error condition (cf. RFC 6901, Sect. 4)
-
10743  if (JSON_HEDLEY_UNLIKELY(reference_token.size() > 1 and reference_token[0] == '0'))
-
10744  {
- -
10746  "array index '" + reference_token +
-
10747  "' must not begin with '0'"));
-
10748  }
-
10749 
-
10750  // note: at performs range check
-
10751  JSON_TRY
-
10752  {
-
10753  ptr = &ptr->at(static_cast<size_type>(array_index(reference_token)));
-
10754  }
-
10755  JSON_CATCH(std::invalid_argument&)
-
10756  {
-
10757  JSON_THROW(detail::parse_error::create(109, 0, "array index '" + reference_token + "' is not a number"));
-
10758  }
-
10759  break;
-
10760  }
-
10761 
-
10762  default:
-
10763  JSON_THROW(detail::out_of_range::create(404, "unresolved reference token '" + reference_token + "'"));
-
10764  }
-
10765  }
-
10766 
-
10767  return *ptr;
-
10768  }
-
10769 
-
10774  bool contains(const BasicJsonType* ptr) const
-
10775  {
-
10776  using size_type = typename BasicJsonType::size_type;
-
10777  for (const auto& reference_token : reference_tokens)
-
10778  {
-
10779  switch (ptr->type())
-
10780  {
- -
10782  {
-
10783  if (not ptr->contains(reference_token))
-
10784  {
-
10785  // we did not find the key in the object
-
10786  return false;
-
10787  }
-
10788 
-
10789  ptr = &ptr->operator[](reference_token);
-
10790  break;
-
10791  }
-
10792 
- -
10794  {
-
10795  if (JSON_HEDLEY_UNLIKELY(reference_token == "-"))
-
10796  {
-
10797  // "-" always fails the range check
-
10798  return false;
-
10799  }
-
10800 
-
10801  // error condition (cf. RFC 6901, Sect. 4)
-
10802  if (JSON_HEDLEY_UNLIKELY(reference_token.size() > 1 and reference_token[0] == '0'))
-
10803  {
- -
10805  "array index '" + reference_token +
-
10806  "' must not begin with '0'"));
-
10807  }
-
10808 
-
10809  JSON_TRY
-
10810  {
-
10811  const auto idx = static_cast<size_type>(array_index(reference_token));
-
10812  if (idx >= ptr->size())
-
10813  {
-
10814  // index out of range
-
10815  return false;
-
10816  }
-
10817 
-
10818  ptr = &ptr->operator[](idx);
-
10819  break;
-
10820  }
-
10821  JSON_CATCH(std::invalid_argument&)
-
10822  {
-
10823  JSON_THROW(detail::parse_error::create(109, 0, "array index '" + reference_token + "' is not a number"));
-
10824  }
-
10825  break;
-
10826  }
-
10827 
-
10828  default:
-
10829  {
-
10830  // we do not expect primitive values if there is still a
-
10831  // reference token to process
-
10832  return false;
-
10833  }
-
10834  }
-
10835  }
-
10836 
-
10837  // no reference token left means we found a primitive value
-
10838  return true;
-
10839  }
-
10840 
-
10850  static std::vector<std::string> split(const std::string& reference_string)
-
10851  {
-
10852  std::vector<std::string> result;
-
10853 
-
10854  // special case: empty reference string -> no reference tokens
-
10855  if (reference_string.empty())
-
10856  {
-
10857  return result;
-
10858  }
-
10859 
-
10860  // check if nonempty reference string begins with slash
-
10861  if (JSON_HEDLEY_UNLIKELY(reference_string[0] != '/'))
-
10862  {
- -
10864  "JSON pointer must be empty or begin with '/' - was: '" +
-
10865  reference_string + "'"));
-
10866  }
-
10867 
-
10868  // extract the reference tokens:
-
10869  // - slash: position of the last read slash (or end of string)
-
10870  // - start: position after the previous slash
-
10871  for (
-
10872  // search for the first slash after the first character
-
10873  std::size_t slash = reference_string.find_first_of('/', 1),
-
10874  // set the beginning of the first reference token
-
10875  start = 1;
-
10876  // we can stop if start == 0 (if slash == std::string::npos)
-
10877  start != 0;
-
10878  // set the beginning of the next reference token
-
10879  // (will eventually be 0 if slash == std::string::npos)
-
10880  start = (slash == std::string::npos) ? 0 : slash + 1,
-
10881  // find next slash
-
10882  slash = reference_string.find_first_of('/', start))
-
10883  {
-
10884  // use the text between the beginning of the reference token
-
10885  // (start) and the last slash (slash).
-
10886  auto reference_token = reference_string.substr(start, slash - start);
-
10887 
-
10888  // check reference tokens are properly escaped
-
10889  for (std::size_t pos = reference_token.find_first_of('~');
-
10890  pos != std::string::npos;
-
10891  pos = reference_token.find_first_of('~', pos + 1))
-
10892  {
-
10893  assert(reference_token[pos] == '~');
-
10894 
-
10895  // ~ must be followed by 0 or 1
-
10896  if (JSON_HEDLEY_UNLIKELY(pos == reference_token.size() - 1 or
-
10897  (reference_token[pos + 1] != '0' and
-
10898  reference_token[pos + 1] != '1')))
-
10899  {
-
10900  JSON_THROW(detail::parse_error::create(108, 0, "escape character '~' must be followed with '0' or '1'"));
-
10901  }
-
10902  }
-
10903 
-
10904  // finally, store the reference token
-
10905  unescape(reference_token);
-
10906  result.push_back(reference_token);
-
10907  }
-
10908 
-
10909  return result;
-
10910  }
-
10911 
-
10925  static void replace_substring(std::string& s, const std::string& f,
-
10926  const std::string& t)
-
10927  {
-
10928  assert(not f.empty());
-
10929  for (auto pos = s.find(f); // find first occurrence of f
-
10930  pos != std::string::npos; // make sure f was found
-
10931  s.replace(pos, f.size(), t), // replace with t, and
-
10932  pos = s.find(f, pos + t.size())) // find next occurrence of f
-
10933  {}
-
10934  }
-
10935 
-
10937  static std::string escape(std::string s)
-
10938  {
-
10939  replace_substring(s, "~", "~0");
-
10940  replace_substring(s, "/", "~1");
-
10941  return s;
-
10942  }
-
10943 
-
10945  static void unescape(std::string& s)
-
10946  {
-
10947  replace_substring(s, "~1", "/");
-
10948  replace_substring(s, "~0", "~");
-
10949  }
-
10950 
-
10958  static void flatten(const std::string& reference_string,
-
10959  const BasicJsonType& value,
-
10960  BasicJsonType& result)
-
10961  {
-
10962  switch (value.type())
-
10963  {
- -
10965  {
-
10966  if (value.m_value.array->empty())
-
10967  {
-
10968  // flatten empty array as null
-
10969  result[reference_string] = nullptr;
-
10970  }
-
10971  else
-
10972  {
-
10973  // iterate array and use index as reference string
-
10974  for (std::size_t i = 0; i < value.m_value.array->size(); ++i)
-
10975  {
-
10976  flatten(reference_string + "/" + std::to_string(i),
-
10977  value.m_value.array->operator[](i), result);
-
10978  }
-
10979  }
-
10980  break;
-
10981  }
-
10982 
- -
10984  {
-
10985  if (value.m_value.object->empty())
-
10986  {
-
10987  // flatten empty object as null
-
10988  result[reference_string] = nullptr;
-
10989  }
-
10990  else
-
10991  {
-
10992  // iterate object and use keys as reference string
-
10993  for (const auto& element : *value.m_value.object)
-
10994  {
-
10995  flatten(reference_string + "/" + escape(element.first), element.second, result);
-
10996  }
-
10997  }
-
10998  break;
-
10999  }
-
11000 
-
11001  default:
-
11002  {
-
11003  // add primitive value with its reference string
-
11004  result[reference_string] = value;
-
11005  break;
-
11006  }
-
11007  }
-
11008  }
-
11009 
-
11020  static BasicJsonType
-
11021  unflatten(const BasicJsonType& value)
-
11022  {
-
11023  if (JSON_HEDLEY_UNLIKELY(not value.is_object()))
-
11024  {
-
11025  JSON_THROW(detail::type_error::create(314, "only objects can be unflattened"));
-
11026  }
-
11027 
-
11028  BasicJsonType result;
-
11029 
-
11030  // iterate the JSON object values
-
11031  for (const auto& element : *value.m_value.object)
-
11032  {
-
11033  if (JSON_HEDLEY_UNLIKELY(not element.second.is_primitive()))
-
11034  {
-
11035  JSON_THROW(detail::type_error::create(315, "values in object must be primitive"));
-
11036  }
-
11037 
-
11038  // assign value to reference pointed to by JSON pointer; Note that if
-
11039  // the JSON pointer is "" (i.e., points to the whole value), function
-
11040  // get_and_create returns a reference to result itself. An assignment
-
11041  // will then create a primitive value.
-
11042  json_pointer(element.first).get_and_create(result) = element.second;
-
11043  }
-
11044 
-
11045  return result;
-
11046  }
-
11047 
-
11059  friend bool operator==(json_pointer const& lhs,
-
11060  json_pointer const& rhs) noexcept
-
11061  {
-
11062  return lhs.reference_tokens == rhs.reference_tokens;
-
11063  }
-
11064 
-
11076  friend bool operator!=(json_pointer const& lhs,
-
11077  json_pointer const& rhs) noexcept
-
11078  {
-
11079  return not (lhs == rhs);
-
11080  }
-
11081 
-
11083  std::vector<std::string> reference_tokens;
-
11084 };
-
11085 } // namespace nlohmann
-
11086 
-
11087 // #include <nlohmann/detail/json_ref.hpp>
-
11088 
-
11089 
-
11090 #include <initializer_list>
-
11091 #include <utility>
-
11092 
-
11093 // #include <nlohmann/detail/meta/type_traits.hpp>
-
11094 
-
11095 
-
11096 namespace nlohmann
-
11097 {
-
11098 namespace detail
-
11099 {
-
11100 template<typename BasicJsonType>
- -
11102 {
-
11103  public:
-
11104  using value_type = BasicJsonType;
-
11105 
- -
11107  : owned_value(std::move(value)), value_ref(&owned_value), is_rvalue(true)
-
11108  {}
-
11109 
-
11110  json_ref(const value_type& value)
-
11111  : value_ref(const_cast<value_type*>(&value)), is_rvalue(false)
-
11112  {}
-
11113 
-
11114  json_ref(std::initializer_list<json_ref> init)
-
11115  : owned_value(init), value_ref(&owned_value), is_rvalue(true)
-
11116  {}
-
11117 
-
11118  template <
-
11119  class... Args,
-
11120  enable_if_t<std::is_constructible<value_type, Args...>::value, int> = 0 >
-
11121  json_ref(Args && ... args)
-
11122  : owned_value(std::forward<Args>(args)...), value_ref(&owned_value),
-
11123  is_rvalue(true) {}
-
11124 
-
11125  // class should be movable only
-
11126  json_ref(json_ref&&) = default;
-
11127  json_ref(const json_ref&) = delete;
-
11128  json_ref& operator=(const json_ref&) = delete;
-
11129  json_ref& operator=(json_ref&&) = delete;
-
11130  ~json_ref() = default;
-
11131 
- -
11133  {
-
11134  if (is_rvalue)
-
11135  {
-
11136  return std::move(*value_ref);
-
11137  }
-
11138  return *value_ref;
-
11139  }
-
11140 
-
11141  value_type const& operator*() const
-
11142  {
-
11143  return *static_cast<value_type const*>(value_ref);
-
11144  }
-
11145 
-
11146  value_type const* operator->() const
-
11147  {
-
11148  return static_cast<value_type const*>(value_ref);
-
11149  }
-
11150 
-
11151  private:
-
11152  mutable value_type owned_value = nullptr;
-
11153  value_type* value_ref = nullptr;
-
11154  const bool is_rvalue;
-
11155 };
-
11156 } // namespace detail
-
11157 } // namespace nlohmann
-
11158 
-
11159 // #include <nlohmann/detail/macro_scope.hpp>
-
11160 
-
11161 // #include <nlohmann/detail/meta/cpp_future.hpp>
-
11162 
-
11163 // #include <nlohmann/detail/meta/type_traits.hpp>
-
11164 
-
11165 // #include <nlohmann/detail/output/binary_writer.hpp>
-
11166 
-
11167 
-
11168 #include <algorithm> // reverse
-
11169 #include <array> // array
-
11170 #include <cstdint> // uint8_t, uint16_t, uint32_t, uint64_t
-
11171 #include <cstring> // memcpy
-
11172 #include <limits> // numeric_limits
-
11173 #include <string> // string
-
11174 
-
11175 // #include <nlohmann/detail/input/binary_reader.hpp>
-
11176 
-
11177 // #include <nlohmann/detail/macro_scope.hpp>
-
11178 
-
11179 // #include <nlohmann/detail/output/output_adapters.hpp>
-
11180 
-
11181 
-
11182 #include <algorithm> // copy
-
11183 #include <cstddef> // size_t
-
11184 #include <ios> // streamsize
-
11185 #include <iterator> // back_inserter
-
11186 #include <memory> // shared_ptr, make_shared
-
11187 #include <ostream> // basic_ostream
-
11188 #include <string> // basic_string
-
11189 #include <vector> // vector
-
11190 // #include <nlohmann/detail/macro_scope.hpp>
-
11191 
-
11192 
-
11193 namespace nlohmann
-
11194 {
-
11195 namespace detail
-
11196 {
-
11198 template<typename CharType> struct output_adapter_protocol
-
11199 {
-
11200  virtual void write_character(CharType c) = 0;
-
11201  virtual void write_characters(const CharType* s, std::size_t length) = 0;
-
11202  virtual ~output_adapter_protocol() = default;
-
11203 };
-
11204 
-
11206 template<typename CharType>
-
11207 using output_adapter_t = std::shared_ptr<output_adapter_protocol<CharType>>;
-
11208 
-
11210 template<typename CharType>
- -
11212 {
-
11213  public:
-
11214  explicit output_vector_adapter(std::vector<CharType>& vec) noexcept
-
11215  : v(vec)
-
11216  {}
-
11217 
-
11218  void write_character(CharType c) override
-
11219  {
-
11220  v.push_back(c);
-
11221  }
-
11222 
- -
11224  void write_characters(const CharType* s, std::size_t length) override
-
11225  {
-
11226  std::copy(s, s + length, std::back_inserter(v));
-
11227  }
-
11228 
-
11229  private:
-
11230  std::vector<CharType>& v;
-
11231 };
-
11232 
-
11234 template<typename CharType>
- -
11236 {
-
11237  public:
-
11238  explicit output_stream_adapter(std::basic_ostream<CharType>& s) noexcept
-
11239  : stream(s)
-
11240  {}
-
11241 
-
11242  void write_character(CharType c) override
-
11243  {
-
11244  stream.put(c);
-
11245  }
-
11246 
- -
11248  void write_characters(const CharType* s, std::size_t length) override
-
11249  {
-
11250  stream.write(s, static_cast<std::streamsize>(length));
-
11251  }
-
11252 
-
11253  private:
-
11254  std::basic_ostream<CharType>& stream;
-
11255 };
-
11256 
-
11258 template<typename CharType, typename StringType = std::basic_string<CharType>>
- -
11260 {
-
11261  public:
-
11262  explicit output_string_adapter(StringType& s) noexcept
-
11263  : str(s)
-
11264  {}
-
11265 
-
11266  void write_character(CharType c) override
-
11267  {
-
11268  str.push_back(c);
-
11269  }
-
11270 
- -
11272  void write_characters(const CharType* s, std::size_t length) override
-
11273  {
-
11274  str.append(s, length);
-
11275  }
-
11276 
-
11277  private:
-
11278  StringType& str;
-
11279 };
-
11280 
-
11281 template<typename CharType, typename StringType = std::basic_string<CharType>>
- -
11283 {
-
11284  public:
-
11285  output_adapter(std::vector<CharType>& vec)
-
11286  : oa(std::make_shared<output_vector_adapter<CharType>>(vec)) {}
-
11287 
-
11288  output_adapter(std::basic_ostream<CharType>& s)
-
11289  : oa(std::make_shared<output_stream_adapter<CharType>>(s)) {}
-
11290 
-
11291  output_adapter(StringType& s)
-
11292  : oa(std::make_shared<output_string_adapter<CharType, StringType>>(s)) {}
-
11293 
- -
11295  {
-
11296  return oa;
-
11297  }
-
11298 
-
11299  private:
-
11300  output_adapter_t<CharType> oa = nullptr;
-
11301 };
-
11302 } // namespace detail
-
11303 } // namespace nlohmann
-
11304 
-
11305 
-
11306 namespace nlohmann
-
11307 {
-
11308 namespace detail
-
11309 {
-
11311 // binary writer //
-
11313 
-
11317 template<typename BasicJsonType, typename CharType>
- -
11319 {
-
11320  using string_t = typename BasicJsonType::string_t;
-
11321 
-
11322  public:
-
11328  explicit binary_writer(output_adapter_t<CharType> adapter) : oa(adapter)
-
11329  {
-
11330  assert(oa);
-
11331  }
-
11332 
-
11337  void write_bson(const BasicJsonType& j)
-
11338  {
-
11339  switch (j.type())
-
11340  {
-
11341  case value_t::object:
-
11342  {
-
11343  write_bson_object(*j.m_value.object);
-
11344  break;
-
11345  }
-
11346 
-
11347  default:
-
11348  {
-
11349  JSON_THROW(type_error::create(317, "to serialize to BSON, top-level type must be object, but is " + std::string(j.type_name())));
-
11350  }
-
11351  }
-
11352  }
-
11353 
-
11357  void write_cbor(const BasicJsonType& j)
-
11358  {
-
11359  switch (j.type())
-
11360  {
-
11361  case value_t::null:
-
11362  {
-
11363  oa->write_character(to_char_type(0xF6));
-
11364  break;
-
11365  }
-
11366 
-
11367  case value_t::boolean:
-
11368  {
-
11369  oa->write_character(j.m_value.boolean
-
11370  ? to_char_type(0xF5)
-
11371  : to_char_type(0xF4));
-
11372  break;
-
11373  }
-
11374 
- -
11376  {
-
11377  if (j.m_value.number_integer >= 0)
-
11378  {
-
11379  // CBOR does not differentiate between positive signed
-
11380  // integers and unsigned integers. Therefore, we used the
-
11381  // code from the value_t::number_unsigned case here.
-
11382  if (j.m_value.number_integer <= 0x17)
-
11383  {
-
11384  write_number(static_cast<std::uint8_t>(j.m_value.number_integer));
-
11385  }
-
11386  else if (j.m_value.number_integer <= (std::numeric_limits<std::uint8_t>::max)())
-
11387  {
-
11388  oa->write_character(to_char_type(0x18));
-
11389  write_number(static_cast<std::uint8_t>(j.m_value.number_integer));
-
11390  }
-
11391  else if (j.m_value.number_integer <= (std::numeric_limits<std::uint16_t>::max)())
-
11392  {
-
11393  oa->write_character(to_char_type(0x19));
-
11394  write_number(static_cast<std::uint16_t>(j.m_value.number_integer));
-
11395  }
-
11396  else if (j.m_value.number_integer <= (std::numeric_limits<std::uint32_t>::max)())
-
11397  {
-
11398  oa->write_character(to_char_type(0x1A));
-
11399  write_number(static_cast<std::uint32_t>(j.m_value.number_integer));
-
11400  }
-
11401  else
-
11402  {
-
11403  oa->write_character(to_char_type(0x1B));
-
11404  write_number(static_cast<std::uint64_t>(j.m_value.number_integer));
-
11405  }
-
11406  }
-
11407  else
-
11408  {
-
11409  // The conversions below encode the sign in the first
-
11410  // byte, and the value is converted to a positive number.
-
11411  const auto positive_number = -1 - j.m_value.number_integer;
-
11412  if (j.m_value.number_integer >= -24)
-
11413  {
-
11414  write_number(static_cast<std::uint8_t>(0x20 + positive_number));
-
11415  }
-
11416  else if (positive_number <= (std::numeric_limits<std::uint8_t>::max)())
-
11417  {
-
11418  oa->write_character(to_char_type(0x38));
-
11419  write_number(static_cast<std::uint8_t>(positive_number));
-
11420  }
-
11421  else if (positive_number <= (std::numeric_limits<std::uint16_t>::max)())
-
11422  {
-
11423  oa->write_character(to_char_type(0x39));
-
11424  write_number(static_cast<std::uint16_t>(positive_number));
-
11425  }
-
11426  else if (positive_number <= (std::numeric_limits<std::uint32_t>::max)())
-
11427  {
-
11428  oa->write_character(to_char_type(0x3A));
-
11429  write_number(static_cast<std::uint32_t>(positive_number));
-
11430  }
-
11431  else
-
11432  {
-
11433  oa->write_character(to_char_type(0x3B));
-
11434  write_number(static_cast<std::uint64_t>(positive_number));
-
11435  }
-
11436  }
-
11437  break;
-
11438  }
-
11439 
- -
11441  {
-
11442  if (j.m_value.number_unsigned <= 0x17)
-
11443  {
-
11444  write_number(static_cast<std::uint8_t>(j.m_value.number_unsigned));
-
11445  }
-
11446  else if (j.m_value.number_unsigned <= (std::numeric_limits<std::uint8_t>::max)())
-
11447  {
-
11448  oa->write_character(to_char_type(0x18));
-
11449  write_number(static_cast<std::uint8_t>(j.m_value.number_unsigned));
-
11450  }
-
11451  else if (j.m_value.number_unsigned <= (std::numeric_limits<std::uint16_t>::max)())
-
11452  {
-
11453  oa->write_character(to_char_type(0x19));
-
11454  write_number(static_cast<std::uint16_t>(j.m_value.number_unsigned));
-
11455  }
-
11456  else if (j.m_value.number_unsigned <= (std::numeric_limits<std::uint32_t>::max)())
-
11457  {
-
11458  oa->write_character(to_char_type(0x1A));
-
11459  write_number(static_cast<std::uint32_t>(j.m_value.number_unsigned));
-
11460  }
-
11461  else
-
11462  {
-
11463  oa->write_character(to_char_type(0x1B));
-
11464  write_number(static_cast<std::uint64_t>(j.m_value.number_unsigned));
-
11465  }
-
11466  break;
-
11467  }
-
11468 
-
11469  case value_t::number_float:
-
11470  {
-
11471  oa->write_character(get_cbor_float_prefix(j.m_value.number_float));
-
11472  write_number(j.m_value.number_float);
-
11473  break;
-
11474  }
-
11475 
-
11476  case value_t::string:
-
11477  {
-
11478  // step 1: write control byte and the string length
-
11479  const auto N = j.m_value.string->size();
-
11480  if (N <= 0x17)
-
11481  {
-
11482  write_number(static_cast<std::uint8_t>(0x60 + N));
-
11483  }
-
11484  else if (N <= (std::numeric_limits<std::uint8_t>::max)())
-
11485  {
-
11486  oa->write_character(to_char_type(0x78));
-
11487  write_number(static_cast<std::uint8_t>(N));
-
11488  }
-
11489  else if (N <= (std::numeric_limits<std::uint16_t>::max)())
-
11490  {
-
11491  oa->write_character(to_char_type(0x79));
-
11492  write_number(static_cast<std::uint16_t>(N));
-
11493  }
-
11494  else if (N <= (std::numeric_limits<std::uint32_t>::max)())
-
11495  {
-
11496  oa->write_character(to_char_type(0x7A));
-
11497  write_number(static_cast<std::uint32_t>(N));
-
11498  }
-
11499  // LCOV_EXCL_START
-
11500  else if (N <= (std::numeric_limits<std::uint64_t>::max)())
-
11501  {
-
11502  oa->write_character(to_char_type(0x7B));
-
11503  write_number(static_cast<std::uint64_t>(N));
-
11504  }
-
11505  // LCOV_EXCL_STOP
-
11506 
-
11507  // step 2: write the string
-
11508  oa->write_characters(
-
11509  reinterpret_cast<const CharType*>(j.m_value.string->c_str()),
-
11510  j.m_value.string->size());
-
11511  break;
-
11512  }
-
11513 
-
11514  case value_t::array:
-
11515  {
-
11516  // step 1: write control byte and the array size
-
11517  const auto N = j.m_value.array->size();
-
11518  if (N <= 0x17)
-
11519  {
-
11520  write_number(static_cast<std::uint8_t>(0x80 + N));
-
11521  }
-
11522  else if (N <= (std::numeric_limits<std::uint8_t>::max)())
-
11523  {
-
11524  oa->write_character(to_char_type(0x98));
-
11525  write_number(static_cast<std::uint8_t>(N));
-
11526  }
-
11527  else if (N <= (std::numeric_limits<std::uint16_t>::max)())
-
11528  {
-
11529  oa->write_character(to_char_type(0x99));
-
11530  write_number(static_cast<std::uint16_t>(N));
-
11531  }
-
11532  else if (N <= (std::numeric_limits<std::uint32_t>::max)())
-
11533  {
-
11534  oa->write_character(to_char_type(0x9A));
-
11535  write_number(static_cast<std::uint32_t>(N));
-
11536  }
-
11537  // LCOV_EXCL_START
-
11538  else if (N <= (std::numeric_limits<std::uint64_t>::max)())
-
11539  {
-
11540  oa->write_character(to_char_type(0x9B));
-
11541  write_number(static_cast<std::uint64_t>(N));
-
11542  }
-
11543  // LCOV_EXCL_STOP
-
11544 
-
11545  // step 2: write each element
-
11546  for (const auto& el : *j.m_value.array)
-
11547  {
-
11548  write_cbor(el);
-
11549  }
-
11550  break;
-
11551  }
-
11552 
-
11553  case value_t::object:
-
11554  {
-
11555  // step 1: write control byte and the object size
-
11556  const auto N = j.m_value.object->size();
-
11557  if (N <= 0x17)
-
11558  {
-
11559  write_number(static_cast<std::uint8_t>(0xA0 + N));
-
11560  }
-
11561  else if (N <= (std::numeric_limits<std::uint8_t>::max)())
-
11562  {
-
11563  oa->write_character(to_char_type(0xB8));
-
11564  write_number(static_cast<std::uint8_t>(N));
-
11565  }
-
11566  else if (N <= (std::numeric_limits<std::uint16_t>::max)())
-
11567  {
-
11568  oa->write_character(to_char_type(0xB9));
-
11569  write_number(static_cast<std::uint16_t>(N));
-
11570  }
-
11571  else if (N <= (std::numeric_limits<std::uint32_t>::max)())
-
11572  {
-
11573  oa->write_character(to_char_type(0xBA));
-
11574  write_number(static_cast<std::uint32_t>(N));
-
11575  }
-
11576  // LCOV_EXCL_START
-
11577  else if (N <= (std::numeric_limits<std::uint64_t>::max)())
-
11578  {
-
11579  oa->write_character(to_char_type(0xBB));
-
11580  write_number(static_cast<std::uint64_t>(N));
-
11581  }
-
11582  // LCOV_EXCL_STOP
-
11583 
-
11584  // step 2: write each element
-
11585  for (const auto& el : *j.m_value.object)
-
11586  {
-
11587  write_cbor(el.first);
-
11588  write_cbor(el.second);
-
11589  }
-
11590  break;
-
11591  }
-
11592 
-
11593  default:
-
11594  break;
-
11595  }
-
11596  }
-
11597 
-
11601  void write_msgpack(const BasicJsonType& j)
-
11602  {
-
11603  switch (j.type())
-
11604  {
-
11605  case value_t::null: // nil
-
11606  {
-
11607  oa->write_character(to_char_type(0xC0));
-
11608  break;
-
11609  }
-
11610 
-
11611  case value_t::boolean: // true and false
-
11612  {
-
11613  oa->write_character(j.m_value.boolean
-
11614  ? to_char_type(0xC3)
-
11615  : to_char_type(0xC2));
-
11616  break;
-
11617  }
-
11618 
- -
11620  {
-
11621  if (j.m_value.number_integer >= 0)
-
11622  {
-
11623  // MessagePack does not differentiate between positive
-
11624  // signed integers and unsigned integers. Therefore, we used
-
11625  // the code from the value_t::number_unsigned case here.
-
11626  if (j.m_value.number_unsigned < 128)
-
11627  {
-
11628  // positive fixnum
-
11629  write_number(static_cast<std::uint8_t>(j.m_value.number_integer));
-
11630  }
-
11631  else if (j.m_value.number_unsigned <= (std::numeric_limits<std::uint8_t>::max)())
-
11632  {
-
11633  // uint 8
-
11634  oa->write_character(to_char_type(0xCC));
-
11635  write_number(static_cast<std::uint8_t>(j.m_value.number_integer));
-
11636  }
-
11637  else if (j.m_value.number_unsigned <= (std::numeric_limits<std::uint16_t>::max)())
-
11638  {
-
11639  // uint 16
-
11640  oa->write_character(to_char_type(0xCD));
-
11641  write_number(static_cast<std::uint16_t>(j.m_value.number_integer));
-
11642  }
-
11643  else if (j.m_value.number_unsigned <= (std::numeric_limits<std::uint32_t>::max)())
-
11644  {
-
11645  // uint 32
-
11646  oa->write_character(to_char_type(0xCE));
-
11647  write_number(static_cast<std::uint32_t>(j.m_value.number_integer));
-
11648  }
-
11649  else if (j.m_value.number_unsigned <= (std::numeric_limits<std::uint64_t>::max)())
-
11650  {
-
11651  // uint 64
-
11652  oa->write_character(to_char_type(0xCF));
-
11653  write_number(static_cast<std::uint64_t>(j.m_value.number_integer));
-
11654  }
-
11655  }
-
11656  else
-
11657  {
-
11658  if (j.m_value.number_integer >= -32)
-
11659  {
-
11660  // negative fixnum
-
11661  write_number(static_cast<std::int8_t>(j.m_value.number_integer));
-
11662  }
-
11663  else if (j.m_value.number_integer >= (std::numeric_limits<std::int8_t>::min)() and
-
11664  j.m_value.number_integer <= (std::numeric_limits<std::int8_t>::max)())
-
11665  {
-
11666  // int 8
-
11667  oa->write_character(to_char_type(0xD0));
-
11668  write_number(static_cast<std::int8_t>(j.m_value.number_integer));
-
11669  }
-
11670  else if (j.m_value.number_integer >= (std::numeric_limits<std::int16_t>::min)() and
-
11671  j.m_value.number_integer <= (std::numeric_limits<std::int16_t>::max)())
-
11672  {
-
11673  // int 16
-
11674  oa->write_character(to_char_type(0xD1));
-
11675  write_number(static_cast<std::int16_t>(j.m_value.number_integer));
-
11676  }
-
11677  else if (j.m_value.number_integer >= (std::numeric_limits<std::int32_t>::min)() and
-
11678  j.m_value.number_integer <= (std::numeric_limits<std::int32_t>::max)())
-
11679  {
-
11680  // int 32
-
11681  oa->write_character(to_char_type(0xD2));
-
11682  write_number(static_cast<std::int32_t>(j.m_value.number_integer));
-
11683  }
-
11684  else if (j.m_value.number_integer >= (std::numeric_limits<std::int64_t>::min)() and
-
11685  j.m_value.number_integer <= (std::numeric_limits<std::int64_t>::max)())
-
11686  {
-
11687  // int 64
-
11688  oa->write_character(to_char_type(0xD3));
-
11689  write_number(static_cast<std::int64_t>(j.m_value.number_integer));
-
11690  }
-
11691  }
-
11692  break;
-
11693  }
-
11694 
- -
11696  {
-
11697  if (j.m_value.number_unsigned < 128)
-
11698  {
-
11699  // positive fixnum
-
11700  write_number(static_cast<std::uint8_t>(j.m_value.number_integer));
-
11701  }
-
11702  else if (j.m_value.number_unsigned <= (std::numeric_limits<std::uint8_t>::max)())
-
11703  {
-
11704  // uint 8
-
11705  oa->write_character(to_char_type(0xCC));
-
11706  write_number(static_cast<std::uint8_t>(j.m_value.number_integer));
-
11707  }
-
11708  else if (j.m_value.number_unsigned <= (std::numeric_limits<std::uint16_t>::max)())
-
11709  {
-
11710  // uint 16
-
11711  oa->write_character(to_char_type(0xCD));
-
11712  write_number(static_cast<std::uint16_t>(j.m_value.number_integer));
-
11713  }
-
11714  else if (j.m_value.number_unsigned <= (std::numeric_limits<std::uint32_t>::max)())
-
11715  {
-
11716  // uint 32
-
11717  oa->write_character(to_char_type(0xCE));
-
11718  write_number(static_cast<std::uint32_t>(j.m_value.number_integer));
-
11719  }
-
11720  else if (j.m_value.number_unsigned <= (std::numeric_limits<std::uint64_t>::max)())
-
11721  {
-
11722  // uint 64
-
11723  oa->write_character(to_char_type(0xCF));
-
11724  write_number(static_cast<std::uint64_t>(j.m_value.number_integer));
-
11725  }
-
11726  break;
-
11727  }
-
11728 
-
11729  case value_t::number_float:
-
11730  {
-
11731  oa->write_character(get_msgpack_float_prefix(j.m_value.number_float));
-
11732  write_number(j.m_value.number_float);
-
11733  break;
-
11734  }
-
11735 
-
11736  case value_t::string:
-
11737  {
-
11738  // step 1: write control byte and the string length
-
11739  const auto N = j.m_value.string->size();
-
11740  if (N <= 31)
-
11741  {
-
11742  // fixstr
-
11743  write_number(static_cast<std::uint8_t>(0xA0 | N));
-
11744  }
-
11745  else if (N <= (std::numeric_limits<std::uint8_t>::max)())
-
11746  {
-
11747  // str 8
-
11748  oa->write_character(to_char_type(0xD9));
-
11749  write_number(static_cast<std::uint8_t>(N));
-
11750  }
-
11751  else if (N <= (std::numeric_limits<std::uint16_t>::max)())
-
11752  {
-
11753  // str 16
-
11754  oa->write_character(to_char_type(0xDA));
-
11755  write_number(static_cast<std::uint16_t>(N));
-
11756  }
-
11757  else if (N <= (std::numeric_limits<std::uint32_t>::max)())
-
11758  {
-
11759  // str 32
-
11760  oa->write_character(to_char_type(0xDB));
-
11761  write_number(static_cast<std::uint32_t>(N));
-
11762  }
-
11763 
-
11764  // step 2: write the string
-
11765  oa->write_characters(
-
11766  reinterpret_cast<const CharType*>(j.m_value.string->c_str()),
-
11767  j.m_value.string->size());
-
11768  break;
-
11769  }
-
11770 
-
11771  case value_t::array:
-
11772  {
-
11773  // step 1: write control byte and the array size
-
11774  const auto N = j.m_value.array->size();
-
11775  if (N <= 15)
-
11776  {
-
11777  // fixarray
-
11778  write_number(static_cast<std::uint8_t>(0x90 | N));
-
11779  }
-
11780  else if (N <= (std::numeric_limits<std::uint16_t>::max)())
-
11781  {
-
11782  // array 16
-
11783  oa->write_character(to_char_type(0xDC));
-
11784  write_number(static_cast<std::uint16_t>(N));
-
11785  }
-
11786  else if (N <= (std::numeric_limits<std::uint32_t>::max)())
-
11787  {
-
11788  // array 32
-
11789  oa->write_character(to_char_type(0xDD));
-
11790  write_number(static_cast<std::uint32_t>(N));
-
11791  }
-
11792 
-
11793  // step 2: write each element
-
11794  for (const auto& el : *j.m_value.array)
-
11795  {
-
11796  write_msgpack(el);
-
11797  }
-
11798  break;
-
11799  }
-
11800 
-
11801  case value_t::object:
-
11802  {
-
11803  // step 1: write control byte and the object size
-
11804  const auto N = j.m_value.object->size();
-
11805  if (N <= 15)
-
11806  {
-
11807  // fixmap
-
11808  write_number(static_cast<std::uint8_t>(0x80 | (N & 0xF)));
-
11809  }
-
11810  else if (N <= (std::numeric_limits<std::uint16_t>::max)())
-
11811  {
-
11812  // map 16
-
11813  oa->write_character(to_char_type(0xDE));
-
11814  write_number(static_cast<std::uint16_t>(N));
-
11815  }
-
11816  else if (N <= (std::numeric_limits<std::uint32_t>::max)())
-
11817  {
-
11818  // map 32
-
11819  oa->write_character(to_char_type(0xDF));
-
11820  write_number(static_cast<std::uint32_t>(N));
-
11821  }
-
11822 
-
11823  // step 2: write each element
-
11824  for (const auto& el : *j.m_value.object)
-
11825  {
-
11826  write_msgpack(el.first);
-
11827  write_msgpack(el.second);
-
11828  }
-
11829  break;
-
11830  }
-
11831 
-
11832  default:
-
11833  break;
-
11834  }
-
11835  }
-
11836 
-
11843  void write_ubjson(const BasicJsonType& j, const bool use_count,
-
11844  const bool use_type, const bool add_prefix = true)
-
11845  {
-
11846  switch (j.type())
-
11847  {
-
11848  case value_t::null:
-
11849  {
-
11850  if (add_prefix)
-
11851  {
-
11852  oa->write_character(to_char_type('Z'));
-
11853  }
-
11854  break;
-
11855  }
-
11856 
-
11857  case value_t::boolean:
-
11858  {
-
11859  if (add_prefix)
-
11860  {
-
11861  oa->write_character(j.m_value.boolean
-
11862  ? to_char_type('T')
-
11863  : to_char_type('F'));
-
11864  }
-
11865  break;
-
11866  }
-
11867 
- -
11869  {
-
11870  write_number_with_ubjson_prefix(j.m_value.number_integer, add_prefix);
-
11871  break;
-
11872  }
-
11873 
- -
11875  {
-
11876  write_number_with_ubjson_prefix(j.m_value.number_unsigned, add_prefix);
-
11877  break;
-
11878  }
-
11879 
-
11880  case value_t::number_float:
-
11881  {
-
11882  write_number_with_ubjson_prefix(j.m_value.number_float, add_prefix);
-
11883  break;
-
11884  }
-
11885 
-
11886  case value_t::string:
-
11887  {
-
11888  if (add_prefix)
-
11889  {
-
11890  oa->write_character(to_char_type('S'));
-
11891  }
-
11892  write_number_with_ubjson_prefix(j.m_value.string->size(), true);
-
11893  oa->write_characters(
-
11894  reinterpret_cast<const CharType*>(j.m_value.string->c_str()),
-
11895  j.m_value.string->size());
-
11896  break;
-
11897  }
-
11898 
-
11899  case value_t::array:
-
11900  {
-
11901  if (add_prefix)
-
11902  {
-
11903  oa->write_character(to_char_type('['));
-
11904  }
-
11905 
-
11906  bool prefix_required = true;
-
11907  if (use_type and not j.m_value.array->empty())
-
11908  {
-
11909  assert(use_count);
-
11910  const CharType first_prefix = ubjson_prefix(j.front());
-
11911  const bool same_prefix = std::all_of(j.begin() + 1, j.end(),
-
11912  [this, first_prefix](const BasicJsonType & v)
-
11913  {
-
11914  return ubjson_prefix(v) == first_prefix;
-
11915  });
-
11916 
-
11917  if (same_prefix)
-
11918  {
-
11919  prefix_required = false;
-
11920  oa->write_character(to_char_type('$'));
-
11921  oa->write_character(first_prefix);
-
11922  }
-
11923  }
-
11924 
-
11925  if (use_count)
-
11926  {
-
11927  oa->write_character(to_char_type('#'));
-
11928  write_number_with_ubjson_prefix(j.m_value.array->size(), true);
-
11929  }
-
11930 
-
11931  for (const auto& el : *j.m_value.array)
-
11932  {
-
11933  write_ubjson(el, use_count, use_type, prefix_required);
-
11934  }
-
11935 
-
11936  if (not use_count)
-
11937  {
-
11938  oa->write_character(to_char_type(']'));
-
11939  }
-
11940 
-
11941  break;
-
11942  }
-
11943 
-
11944  case value_t::object:
-
11945  {
-
11946  if (add_prefix)
-
11947  {
-
11948  oa->write_character(to_char_type('{'));
-
11949  }
-
11950 
-
11951  bool prefix_required = true;
-
11952  if (use_type and not j.m_value.object->empty())
-
11953  {
-
11954  assert(use_count);
-
11955  const CharType first_prefix = ubjson_prefix(j.front());
-
11956  const bool same_prefix = std::all_of(j.begin(), j.end(),
-
11957  [this, first_prefix](const BasicJsonType & v)
-
11958  {
-
11959  return ubjson_prefix(v) == first_prefix;
-
11960  });
-
11961 
-
11962  if (same_prefix)
-
11963  {
-
11964  prefix_required = false;
-
11965  oa->write_character(to_char_type('$'));
-
11966  oa->write_character(first_prefix);
-
11967  }
-
11968  }
-
11969 
-
11970  if (use_count)
-
11971  {
-
11972  oa->write_character(to_char_type('#'));
-
11973  write_number_with_ubjson_prefix(j.m_value.object->size(), true);
-
11974  }
-
11975 
-
11976  for (const auto& el : *j.m_value.object)
-
11977  {
-
11978  write_number_with_ubjson_prefix(el.first.size(), true);
-
11979  oa->write_characters(
-
11980  reinterpret_cast<const CharType*>(el.first.c_str()),
-
11981  el.first.size());
-
11982  write_ubjson(el.second, use_count, use_type, prefix_required);
-
11983  }
-
11984 
-
11985  if (not use_count)
-
11986  {
-
11987  oa->write_character(to_char_type('}'));
-
11988  }
-
11989 
-
11990  break;
-
11991  }
-
11992 
-
11993  default:
-
11994  break;
-
11995  }
-
11996  }
-
11997 
-
11998  private:
-
12000  // BSON //
-
12002 
-
12007  static std::size_t calc_bson_entry_header_size(const string_t& name)
-
12008  {
-
12009  const auto it = name.find(static_cast<typename string_t::value_type>(0));
-
12010  if (JSON_HEDLEY_UNLIKELY(it != BasicJsonType::string_t::npos))
-
12011  {
- -
12013  "BSON key cannot contain code point U+0000 (at byte " + std::to_string(it) + ")"));
-
12014  }
-
12015 
-
12016  return /*id*/ 1ul + name.size() + /*zero-terminator*/1u;
-
12017  }
-
12018 
-
12022  void write_bson_entry_header(const string_t& name,
-
12023  const std::uint8_t element_type)
-
12024  {
-
12025  oa->write_character(to_char_type(element_type)); // boolean
-
12026  oa->write_characters(
-
12027  reinterpret_cast<const CharType*>(name.c_str()),
-
12028  name.size() + 1u);
-
12029  }
-
12030 
-
12034  void write_bson_boolean(const string_t& name,
-
12035  const bool value)
-
12036  {
-
12037  write_bson_entry_header(name, 0x08);
-
12038  oa->write_character(value ? to_char_type(0x01) : to_char_type(0x00));
-
12039  }
-
12040 
-
12044  void write_bson_double(const string_t& name,
-
12045  const double value)
-
12046  {
-
12047  write_bson_entry_header(name, 0x01);
-
12048  write_number<double, true>(value);
-
12049  }
-
12050 
-
12054  static std::size_t calc_bson_string_size(const string_t& value)
-
12055  {
-
12056  return sizeof(std::int32_t) + value.size() + 1ul;
-
12057  }
-
12058 
-
12062  void write_bson_string(const string_t& name,
-
12063  const string_t& value)
-
12064  {
-
12065  write_bson_entry_header(name, 0x02);
-
12066 
-
12067  write_number<std::int32_t, true>(static_cast<std::int32_t>(value.size() + 1ul));
-
12068  oa->write_characters(
-
12069  reinterpret_cast<const CharType*>(value.c_str()),
-
12070  value.size() + 1);
-
12071  }
-
12072 
-
12076  void write_bson_null(const string_t& name)
-
12077  {
-
12078  write_bson_entry_header(name, 0x0A);
-
12079  }
-
12080 
-
12084  static std::size_t calc_bson_integer_size(const std::int64_t value)
-
12085  {
-
12086  return (std::numeric_limits<std::int32_t>::min)() <= value and value <= (std::numeric_limits<std::int32_t>::max)()
-
12087  ? sizeof(std::int32_t)
-
12088  : sizeof(std::int64_t);
-
12089  }
-
12090 
-
12094  void write_bson_integer(const string_t& name,
-
12095  const std::int64_t value)
-
12096  {
-
12097  if ((std::numeric_limits<std::int32_t>::min)() <= value and value <= (std::numeric_limits<std::int32_t>::max)())
-
12098  {
-
12099  write_bson_entry_header(name, 0x10); // int32
-
12100  write_number<std::int32_t, true>(static_cast<std::int32_t>(value));
-
12101  }
-
12102  else
-
12103  {
-
12104  write_bson_entry_header(name, 0x12); // int64
-
12105  write_number<std::int64_t, true>(static_cast<std::int64_t>(value));
-
12106  }
-
12107  }
-
12108 
-
12112  static constexpr std::size_t calc_bson_unsigned_size(const std::uint64_t value) noexcept
-
12113  {
-
12114  return (value <= static_cast<std::uint64_t>((std::numeric_limits<std::int32_t>::max)()))
-
12115  ? sizeof(std::int32_t)
-
12116  : sizeof(std::int64_t);
-
12117  }
-
12118 
-
12122  void write_bson_unsigned(const string_t& name,
-
12123  const std::uint64_t value)
-
12124  {
-
12125  if (value <= static_cast<std::uint64_t>((std::numeric_limits<std::int32_t>::max)()))
-
12126  {
-
12127  write_bson_entry_header(name, 0x10 /* int32 */);
-
12128  write_number<std::int32_t, true>(static_cast<std::int32_t>(value));
-
12129  }
-
12130  else if (value <= static_cast<std::uint64_t>((std::numeric_limits<std::int64_t>::max)()))
-
12131  {
-
12132  write_bson_entry_header(name, 0x12 /* int64 */);
-
12133  write_number<std::int64_t, true>(static_cast<std::int64_t>(value));
-
12134  }
-
12135  else
-
12136  {
-
12137  JSON_THROW(out_of_range::create(407, "integer number " + std::to_string(value) + " cannot be represented by BSON as it does not fit int64"));
-
12138  }
-
12139  }
-
12140 
-
12144  void write_bson_object_entry(const string_t& name,
-
12145  const typename BasicJsonType::object_t& value)
-
12146  {
-
12147  write_bson_entry_header(name, 0x03); // object
-
12148  write_bson_object(value);
-
12149  }
-
12150 
-
12154  static std::size_t calc_bson_array_size(const typename BasicJsonType::array_t& value)
-
12155  {
-
12156  std::size_t array_index = 0ul;
-
12157 
-
12158  const std::size_t embedded_document_size = std::accumulate(std::begin(value), std::end(value), 0ul, [&array_index](std::size_t result, const typename BasicJsonType::array_t::value_type & el)
-
12159  {
-
12160  return result + calc_bson_element_size(std::to_string(array_index++), el);
-
12161  });
-
12162 
-
12163  return sizeof(std::int32_t) + embedded_document_size + 1ul;
-
12164  }
-
12165 
-
12169  void write_bson_array(const string_t& name,
-
12170  const typename BasicJsonType::array_t& value)
-
12171  {
-
12172  write_bson_entry_header(name, 0x04); // array
-
12173  write_number<std::int32_t, true>(static_cast<std::int32_t>(calc_bson_array_size(value)));
-
12174 
-
12175  std::size_t array_index = 0ul;
-
12176 
-
12177  for (const auto& el : value)
-
12178  {
-
12179  write_bson_element(std::to_string(array_index++), el);
-
12180  }
-
12181 
-
12182  oa->write_character(to_char_type(0x00));
-
12183  }
-
12184 
-
12189  static std::size_t calc_bson_element_size(const string_t& name,
-
12190  const BasicJsonType& j)
-
12191  {
-
12192  const auto header_size = calc_bson_entry_header_size(name);
-
12193  switch (j.type())
-
12194  {
-
12195  case value_t::object:
-
12196  return header_size + calc_bson_object_size(*j.m_value.object);
-
12197 
-
12198  case value_t::array:
-
12199  return header_size + calc_bson_array_size(*j.m_value.array);
-
12200 
-
12201  case value_t::boolean:
-
12202  return header_size + 1ul;
-
12203 
-
12204  case value_t::number_float:
-
12205  return header_size + 8ul;
-
12206 
- -
12208  return header_size + calc_bson_integer_size(j.m_value.number_integer);
-
12209 
- -
12211  return header_size + calc_bson_unsigned_size(j.m_value.number_unsigned);
-
12212 
-
12213  case value_t::string:
-
12214  return header_size + calc_bson_string_size(*j.m_value.string);
-
12215 
-
12216  case value_t::null:
-
12217  return header_size + 0ul;
-
12218 
-
12219  // LCOV_EXCL_START
-
12220  default:
-
12221  assert(false);
-
12222  return 0ul;
-
12223  // LCOV_EXCL_STOP
-
12224  }
-
12225  }
-
12226 
-
12234  void write_bson_element(const string_t& name,
-
12235  const BasicJsonType& j)
-
12236  {
-
12237  switch (j.type())
-
12238  {
-
12239  case value_t::object:
-
12240  return write_bson_object_entry(name, *j.m_value.object);
-
12241 
-
12242  case value_t::array:
-
12243  return write_bson_array(name, *j.m_value.array);
-
12244 
-
12245  case value_t::boolean:
-
12246  return write_bson_boolean(name, j.m_value.boolean);
-
12247 
-
12248  case value_t::number_float:
-
12249  return write_bson_double(name, j.m_value.number_float);
-
12250 
- -
12252  return write_bson_integer(name, j.m_value.number_integer);
-
12253 
- -
12255  return write_bson_unsigned(name, j.m_value.number_unsigned);
-
12256 
-
12257  case value_t::string:
-
12258  return write_bson_string(name, *j.m_value.string);
-
12259 
-
12260  case value_t::null:
-
12261  return write_bson_null(name);
-
12262 
-
12263  // LCOV_EXCL_START
-
12264  default:
-
12265  assert(false);
-
12266  return;
-
12267  // LCOV_EXCL_STOP
-
12268  }
-
12269  }
-
12270 
-
12277  static std::size_t calc_bson_object_size(const typename BasicJsonType::object_t& value)
-
12278  {
-
12279  std::size_t document_size = std::accumulate(value.begin(), value.end(), 0ul,
-
12280  [](size_t result, const typename BasicJsonType::object_t::value_type & el)
-
12281  {
-
12282  return result += calc_bson_element_size(el.first, el.second);
-
12283  });
-
12284 
-
12285  return sizeof(std::int32_t) + document_size + 1ul;
-
12286  }
-
12287 
-
12292  void write_bson_object(const typename BasicJsonType::object_t& value)
-
12293  {
-
12294  write_number<std::int32_t, true>(static_cast<std::int32_t>(calc_bson_object_size(value)));
-
12295 
-
12296  for (const auto& el : value)
-
12297  {
-
12298  write_bson_element(el.first, el.second);
-
12299  }
-
12300 
-
12301  oa->write_character(to_char_type(0x00));
-
12302  }
-
12303 
-
12305  // CBOR //
-
12307 
-
12308  static constexpr CharType get_cbor_float_prefix(float /*unused*/)
-
12309  {
-
12310  return to_char_type(0xFA); // Single-Precision Float
-
12311  }
-
12312 
-
12313  static constexpr CharType get_cbor_float_prefix(double /*unused*/)
-
12314  {
-
12315  return to_char_type(0xFB); // Double-Precision Float
-
12316  }
-
12317 
-
12319  // MsgPack //
-
12321 
-
12322  static constexpr CharType get_msgpack_float_prefix(float /*unused*/)
-
12323  {
-
12324  return to_char_type(0xCA); // float 32
-
12325  }
-
12326 
-
12327  static constexpr CharType get_msgpack_float_prefix(double /*unused*/)
-
12328  {
-
12329  return to_char_type(0xCB); // float 64
-
12330  }
-
12331 
-
12333  // UBJSON //
-
12335 
-
12336  // UBJSON: write number (floating point)
-
12337  template<typename NumberType, typename std::enable_if<
-
12338  std::is_floating_point<NumberType>::value, int>::type = 0>
-
12339  void write_number_with_ubjson_prefix(const NumberType n,
-
12340  const bool add_prefix)
-
12341  {
-
12342  if (add_prefix)
-
12343  {
-
12344  oa->write_character(get_ubjson_float_prefix(n));
-
12345  }
-
12346  write_number(n);
-
12347  }
-
12348 
-
12349  // UBJSON: write number (unsigned integer)
-
12350  template<typename NumberType, typename std::enable_if<
-
12351  std::is_unsigned<NumberType>::value, int>::type = 0>
-
12352  void write_number_with_ubjson_prefix(const NumberType n,
-
12353  const bool add_prefix)
-
12354  {
-
12355  if (n <= static_cast<std::uint64_t>((std::numeric_limits<std::int8_t>::max)()))
-
12356  {
-
12357  if (add_prefix)
-
12358  {
-
12359  oa->write_character(to_char_type('i')); // int8
-
12360  }
-
12361  write_number(static_cast<std::uint8_t>(n));
-
12362  }
-
12363  else if (n <= (std::numeric_limits<std::uint8_t>::max)())
-
12364  {
-
12365  if (add_prefix)
-
12366  {
-
12367  oa->write_character(to_char_type('U')); // uint8
-
12368  }
-
12369  write_number(static_cast<std::uint8_t>(n));
-
12370  }
-
12371  else if (n <= static_cast<std::uint64_t>((std::numeric_limits<std::int16_t>::max)()))
-
12372  {
-
12373  if (add_prefix)
-
12374  {
-
12375  oa->write_character(to_char_type('I')); // int16
-
12376  }
-
12377  write_number(static_cast<std::int16_t>(n));
-
12378  }
-
12379  else if (n <= static_cast<std::uint64_t>((std::numeric_limits<std::int32_t>::max)()))
-
12380  {
-
12381  if (add_prefix)
-
12382  {
-
12383  oa->write_character(to_char_type('l')); // int32
-
12384  }
-
12385  write_number(static_cast<std::int32_t>(n));
-
12386  }
-
12387  else if (n <= static_cast<std::uint64_t>((std::numeric_limits<std::int64_t>::max)()))
-
12388  {
-
12389  if (add_prefix)
-
12390  {
-
12391  oa->write_character(to_char_type('L')); // int64
-
12392  }
-
12393  write_number(static_cast<std::int64_t>(n));
-
12394  }
-
12395  else
-
12396  {
-
12397  JSON_THROW(out_of_range::create(407, "integer number " + std::to_string(n) + " cannot be represented by UBJSON as it does not fit int64"));
-
12398  }
-
12399  }
-
12400 
-
12401  // UBJSON: write number (signed integer)
-
12402  template<typename NumberType, typename std::enable_if<
-
12403  std::is_signed<NumberType>::value and
-
12404  not std::is_floating_point<NumberType>::value, int>::type = 0>
-
12405  void write_number_with_ubjson_prefix(const NumberType n,
-
12406  const bool add_prefix)
-
12407  {
-
12408  if ((std::numeric_limits<std::int8_t>::min)() <= n and n <= (std::numeric_limits<std::int8_t>::max)())
-
12409  {
-
12410  if (add_prefix)
-
12411  {
-
12412  oa->write_character(to_char_type('i')); // int8
-
12413  }
-
12414  write_number(static_cast<std::int8_t>(n));
-
12415  }
-
12416  else if (static_cast<std::int64_t>((std::numeric_limits<std::uint8_t>::min)()) <= n and n <= static_cast<std::int64_t>((std::numeric_limits<std::uint8_t>::max)()))
-
12417  {
-
12418  if (add_prefix)
-
12419  {
-
12420  oa->write_character(to_char_type('U')); // uint8
-
12421  }
-
12422  write_number(static_cast<std::uint8_t>(n));
-
12423  }
-
12424  else if ((std::numeric_limits<std::int16_t>::min)() <= n and n <= (std::numeric_limits<std::int16_t>::max)())
-
12425  {
-
12426  if (add_prefix)
-
12427  {
-
12428  oa->write_character(to_char_type('I')); // int16
-
12429  }
-
12430  write_number(static_cast<std::int16_t>(n));
-
12431  }
-
12432  else if ((std::numeric_limits<std::int32_t>::min)() <= n and n <= (std::numeric_limits<std::int32_t>::max)())
-
12433  {
-
12434  if (add_prefix)
-
12435  {
-
12436  oa->write_character(to_char_type('l')); // int32
-
12437  }
-
12438  write_number(static_cast<std::int32_t>(n));
-
12439  }
-
12440  else if ((std::numeric_limits<std::int64_t>::min)() <= n and n <= (std::numeric_limits<std::int64_t>::max)())
-
12441  {
-
12442  if (add_prefix)
-
12443  {
-
12444  oa->write_character(to_char_type('L')); // int64
-
12445  }
-
12446  write_number(static_cast<std::int64_t>(n));
-
12447  }
-
12448  // LCOV_EXCL_START
-
12449  else
-
12450  {
-
12451  JSON_THROW(out_of_range::create(407, "integer number " + std::to_string(n) + " cannot be represented by UBJSON as it does not fit int64"));
-
12452  }
-
12453  // LCOV_EXCL_STOP
-
12454  }
-
12455 
-
12465  CharType ubjson_prefix(const BasicJsonType& j) const noexcept
-
12466  {
-
12467  switch (j.type())
-
12468  {
-
12469  case value_t::null:
-
12470  return 'Z';
-
12471 
-
12472  case value_t::boolean:
-
12473  return j.m_value.boolean ? 'T' : 'F';
-
12474 
- -
12476  {
-
12477  if ((std::numeric_limits<std::int8_t>::min)() <= j.m_value.number_integer and j.m_value.number_integer <= (std::numeric_limits<std::int8_t>::max)())
-
12478  {
-
12479  return 'i';
-
12480  }
-
12481  if ((std::numeric_limits<std::uint8_t>::min)() <= j.m_value.number_integer and j.m_value.number_integer <= (std::numeric_limits<std::uint8_t>::max)())
-
12482  {
-
12483  return 'U';
-
12484  }
-
12485  if ((std::numeric_limits<std::int16_t>::min)() <= j.m_value.number_integer and j.m_value.number_integer <= (std::numeric_limits<std::int16_t>::max)())
-
12486  {
-
12487  return 'I';
-
12488  }
-
12489  if ((std::numeric_limits<std::int32_t>::min)() <= j.m_value.number_integer and j.m_value.number_integer <= (std::numeric_limits<std::int32_t>::max)())
-
12490  {
-
12491  return 'l';
-
12492  }
-
12493  // no check and assume int64_t (see note above)
-
12494  return 'L';
-
12495  }
-
12496 
- -
12498  {
-
12499  if (j.m_value.number_unsigned <= static_cast<std::uint64_t>((std::numeric_limits<std::int8_t>::max)()))
-
12500  {
-
12501  return 'i';
-
12502  }
-
12503  if (j.m_value.number_unsigned <= static_cast<std::uint64_t>((std::numeric_limits<std::uint8_t>::max)()))
-
12504  {
-
12505  return 'U';
-
12506  }
-
12507  if (j.m_value.number_unsigned <= static_cast<std::uint64_t>((std::numeric_limits<std::int16_t>::max)()))
-
12508  {
-
12509  return 'I';
-
12510  }
-
12511  if (j.m_value.number_unsigned <= static_cast<std::uint64_t>((std::numeric_limits<std::int32_t>::max)()))
-
12512  {
-
12513  return 'l';
-
12514  }
-
12515  // no check and assume int64_t (see note above)
-
12516  return 'L';
-
12517  }
-
12518 
-
12519  case value_t::number_float:
-
12520  return get_ubjson_float_prefix(j.m_value.number_float);
-
12521 
-
12522  case value_t::string:
-
12523  return 'S';
-
12524 
-
12525  case value_t::array:
-
12526  return '[';
-
12527 
-
12528  case value_t::object:
-
12529  return '{';
-
12530 
-
12531  default: // discarded values
-
12532  return 'N';
-
12533  }
-
12534  }
-
12535 
-
12536  static constexpr CharType get_ubjson_float_prefix(float /*unused*/)
-
12537  {
-
12538  return 'd'; // float 32
-
12539  }
-
12540 
-
12541  static constexpr CharType get_ubjson_float_prefix(double /*unused*/)
-
12542  {
-
12543  return 'D'; // float 64
-
12544  }
-
12545 
-
12547  // Utility functions //
-
12549 
-
12550  /*
-
12551  @brief write a number to output input
-
12552  @param[in] n number of type @a NumberType
-
12553  @tparam NumberType the type of the number
-
12554  @tparam OutputIsLittleEndian Set to true if output data is
-
12555  required to be little endian
-
12556 
-
12557  @note This function needs to respect the system's endianess, because bytes
-
12558  in CBOR, MessagePack, and UBJSON are stored in network order (big
-
12559  endian) and therefore need reordering on little endian systems.
-
12560  */
-
12561  template<typename NumberType, bool OutputIsLittleEndian = false>
-
12562  void write_number(const NumberType n)
-
12563  {
-
12564  // step 1: write number to array of length NumberType
-
12565  std::array<CharType, sizeof(NumberType)> vec;
-
12566  std::memcpy(vec.data(), &n, sizeof(NumberType));
-
12567 
-
12568  // step 2: write array to output (with possible reordering)
-
12569  if (is_little_endian != OutputIsLittleEndian)
-
12570  {
-
12571  // reverse byte order prior to conversion if necessary
-
12572  std::reverse(vec.begin(), vec.end());
-
12573  }
-
12574 
-
12575  oa->write_characters(vec.data(), sizeof(NumberType));
-
12576  }
-
12577 
-
12578  public:
-
12579  // The following to_char_type functions are implement the conversion
-
12580  // between uint8_t and CharType. In case CharType is not unsigned,
-
12581  // such a conversion is required to allow values greater than 128.
-
12582  // See <https://github.com/nlohmann/json/issues/1286> for a discussion.
-
12583  template < typename C = CharType,
-
12584  enable_if_t < std::is_signed<C>::value and std::is_signed<char>::value > * = nullptr >
-
12585  static constexpr CharType to_char_type(std::uint8_t x) noexcept
-
12586  {
-
12587  return *reinterpret_cast<char*>(&x);
-
12588  }
-
12589 
-
12590  template < typename C = CharType,
-
12591  enable_if_t < std::is_signed<C>::value and std::is_unsigned<char>::value > * = nullptr >
-
12592  static CharType to_char_type(std::uint8_t x) noexcept
-
12593  {
-
12594  static_assert(sizeof(std::uint8_t) == sizeof(CharType), "size of CharType must be equal to std::uint8_t");
-
12595  static_assert(std::is_pod<CharType>::value, "CharType must be POD");
-
12596  CharType result;
-
12597  std::memcpy(&result, &x, sizeof(x));
-
12598  return result;
-
12599  }
-
12600 
-
12601  template<typename C = CharType,
- -
12603  static constexpr CharType to_char_type(std::uint8_t x) noexcept
-
12604  {
-
12605  return x;
-
12606  }
-
12607 
-
12608  template < typename InputCharType, typename C = CharType,
-
12609  enable_if_t <
-
12610  std::is_signed<C>::value and
-
12611  std::is_signed<char>::value and
-
12612  std::is_same<char, typename std::remove_cv<InputCharType>::type>::value
-
12613  > * = nullptr >
-
12614  static constexpr CharType to_char_type(InputCharType x) noexcept
-
12615  {
-
12616  return x;
-
12617  }
-
12618 
-
12619  private:
-
12621  const bool is_little_endian = binary_reader<BasicJsonType>::little_endianess();
-
12622 
-
12624  output_adapter_t<CharType> oa = nullptr;
-
12625 };
-
12626 } // namespace detail
-
12627 } // namespace nlohmann
-
12628 
-
12629 // #include <nlohmann/detail/output/output_adapters.hpp>
-
12630 
-
12631 // #include <nlohmann/detail/output/serializer.hpp>
-
12632 
-
12633 
-
12634 #include <algorithm> // reverse, remove, fill, find, none_of
-
12635 #include <array> // array
-
12636 #include <cassert> // assert
-
12637 #include <ciso646> // and, or
-
12638 #include <clocale> // localeconv, lconv
-
12639 #include <cmath> // labs, isfinite, isnan, signbit
-
12640 #include <cstddef> // size_t, ptrdiff_t
-
12641 #include <cstdint> // uint8_t
-
12642 #include <cstdio> // snprintf
-
12643 #include <limits> // numeric_limits
-
12644 #include <string> // string
-
12645 #include <type_traits> // is_same
-
12646 #include <utility> // move
-
12647 
-
12648 // #include <nlohmann/detail/conversions/to_chars.hpp>
-
12649 
-
12650 
-
12651 #include <array> // array
-
12652 #include <cassert> // assert
-
12653 #include <ciso646> // or, and, not
-
12654 #include <cmath> // signbit, isfinite
-
12655 #include <cstdint> // intN_t, uintN_t
-
12656 #include <cstring> // memcpy, memmove
-
12657 #include <limits> // numeric_limits
-
12658 #include <type_traits> // conditional
-
12659 // #include <nlohmann/detail/macro_scope.hpp>
-
12660 
-
12661 
-
12662 namespace nlohmann
-
12663 {
-
12664 namespace detail
-
12665 {
-
12666 
-
12686 namespace dtoa_impl
-
12687 {
-
12688 
-
12689 template <typename Target, typename Source>
-
12690 Target reinterpret_bits(const Source source)
-
12691 {
-
12692  static_assert(sizeof(Target) == sizeof(Source), "size mismatch");
-
12693 
-
12694  Target target;
-
12695  std::memcpy(&target, &source, sizeof(Source));
-
12696  return target;
-
12697 }
-
12698 
-
12699 struct diyfp // f * 2^e
-
12700 {
-
12701  static constexpr int kPrecision = 64; // = q
-
12702 
-
12703  std::uint64_t f = 0;
-
12704  int e = 0;
-
12705 
-
12706  constexpr diyfp(std::uint64_t f_, int e_) noexcept : f(f_), e(e_) {}
-
12707 
-
12712  static diyfp sub(const diyfp& x, const diyfp& y) noexcept
-
12713  {
-
12714  assert(x.e == y.e);
-
12715  assert(x.f >= y.f);
-
12716 
-
12717  return {x.f - y.f, x.e};
-
12718  }
-
12719 
-
12724  static diyfp mul(const diyfp& x, const diyfp& y) noexcept
-
12725  {
-
12726  static_assert(kPrecision == 64, "internal error");
-
12727 
-
12728  // Computes:
-
12729  // f = round((x.f * y.f) / 2^q)
-
12730  // e = x.e + y.e + q
-
12731 
-
12732  // Emulate the 64-bit * 64-bit multiplication:
-
12733  //
-
12734  // p = u * v
-
12735  // = (u_lo + 2^32 u_hi) (v_lo + 2^32 v_hi)
-
12736  // = (u_lo v_lo ) + 2^32 ((u_lo v_hi ) + (u_hi v_lo )) + 2^64 (u_hi v_hi )
-
12737  // = (p0 ) + 2^32 ((p1 ) + (p2 )) + 2^64 (p3 )
-
12738  // = (p0_lo + 2^32 p0_hi) + 2^32 ((p1_lo + 2^32 p1_hi) + (p2_lo + 2^32 p2_hi)) + 2^64 (p3 )
-
12739  // = (p0_lo ) + 2^32 (p0_hi + p1_lo + p2_lo ) + 2^64 (p1_hi + p2_hi + p3)
-
12740  // = (p0_lo ) + 2^32 (Q ) + 2^64 (H )
-
12741  // = (p0_lo ) + 2^32 (Q_lo + 2^32 Q_hi ) + 2^64 (H )
-
12742  //
-
12743  // (Since Q might be larger than 2^32 - 1)
-
12744  //
-
12745  // = (p0_lo + 2^32 Q_lo) + 2^64 (Q_hi + H)
-
12746  //
-
12747  // (Q_hi + H does not overflow a 64-bit int)
-
12748  //
-
12749  // = p_lo + 2^64 p_hi
-
12750 
-
12751  const std::uint64_t u_lo = x.f & 0xFFFFFFFFu;
-
12752  const std::uint64_t u_hi = x.f >> 32u;
-
12753  const std::uint64_t v_lo = y.f & 0xFFFFFFFFu;
-
12754  const std::uint64_t v_hi = y.f >> 32u;
-
12755 
-
12756  const std::uint64_t p0 = u_lo * v_lo;
-
12757  const std::uint64_t p1 = u_lo * v_hi;
-
12758  const std::uint64_t p2 = u_hi * v_lo;
-
12759  const std::uint64_t p3 = u_hi * v_hi;
-
12760 
-
12761  const std::uint64_t p0_hi = p0 >> 32u;
-
12762  const std::uint64_t p1_lo = p1 & 0xFFFFFFFFu;
-
12763  const std::uint64_t p1_hi = p1 >> 32u;
-
12764  const std::uint64_t p2_lo = p2 & 0xFFFFFFFFu;
-
12765  const std::uint64_t p2_hi = p2 >> 32u;
-
12766 
-
12767  std::uint64_t Q = p0_hi + p1_lo + p2_lo;
-
12768 
-
12769  // The full product might now be computed as
-
12770  //
-
12771  // p_hi = p3 + p2_hi + p1_hi + (Q >> 32)
-
12772  // p_lo = p0_lo + (Q << 32)
-
12773  //
-
12774  // But in this particular case here, the full p_lo is not required.
-
12775  // Effectively we only need to add the highest bit in p_lo to p_hi (and
-
12776  // Q_hi + 1 does not overflow).
-
12777 
-
12778  Q += std::uint64_t{1} << (64u - 32u - 1u); // round, ties up
-
12779 
-
12780  const std::uint64_t h = p3 + p2_hi + p1_hi + (Q >> 32u);
-
12781 
-
12782  return {h, x.e + y.e + 64};
-
12783  }
-
12784 
-
12789  static diyfp normalize(diyfp x) noexcept
-
12790  {
-
12791  assert(x.f != 0);
-
12792 
-
12793  while ((x.f >> 63u) == 0)
-
12794  {
-
12795  x.f <<= 1u;
-
12796  x.e--;
-
12797  }
-
12798 
-
12799  return x;
-
12800  }
-
12801 
-
12806  static diyfp normalize_to(const diyfp& x, const int target_exponent) noexcept
-
12807  {
-
12808  const int delta = x.e - target_exponent;
-
12809 
-
12810  assert(delta >= 0);
-
12811  assert(((x.f << delta) >> delta) == x.f);
-
12812 
-
12813  return {x.f << delta, target_exponent};
-
12814  }
-
12815 };
-
12816 
- -
12818 {
- - - -
12822 };
-
12823 
-
12830 template <typename FloatType>
- -
12832 {
-
12833  assert(std::isfinite(value));
-
12834  assert(value > 0);
-
12835 
-
12836  // Convert the IEEE representation into a diyfp.
-
12837  //
-
12838  // If v is denormal:
-
12839  // value = 0.F * 2^(1 - bias) = ( F) * 2^(1 - bias - (p-1))
-
12840  // If v is normalized:
-
12841  // value = 1.F * 2^(E - bias) = (2^(p-1) + F) * 2^(E - bias - (p-1))
-
12842 
-
12843  static_assert(std::numeric_limits<FloatType>::is_iec559,
-
12844  "internal error: dtoa_short requires an IEEE-754 floating-point implementation");
-
12845 
-
12846  constexpr int kPrecision = std::numeric_limits<FloatType>::digits; // = p (includes the hidden bit)
-
12847  constexpr int kBias = std::numeric_limits<FloatType>::max_exponent - 1 + (kPrecision - 1);
-
12848  constexpr int kMinExp = 1 - kBias;
-
12849  constexpr std::uint64_t kHiddenBit = std::uint64_t{1} << (kPrecision - 1); // = 2^(p-1)
-
12850 
-
12851  using bits_type = typename std::conditional<kPrecision == 24, std::uint32_t, std::uint64_t >::type;
-
12852 
-
12853  const std::uint64_t bits = reinterpret_bits<bits_type>(value);
-
12854  const std::uint64_t E = bits >> (kPrecision - 1);
-
12855  const std::uint64_t F = bits & (kHiddenBit - 1);
-
12856 
-
12857  const bool is_denormal = E == 0;
-
12858  const diyfp v = is_denormal
-
12859  ? diyfp(F, kMinExp)
-
12860  : diyfp(F + kHiddenBit, static_cast<int>(E) - kBias);
-
12861 
-
12862  // Compute the boundaries m- and m+ of the floating-point value
-
12863  // v = f * 2^e.
-
12864  //
-
12865  // Determine v- and v+, the floating-point predecessor and successor if v,
-
12866  // respectively.
-
12867  //
-
12868  // v- = v - 2^e if f != 2^(p-1) or e == e_min (A)
-
12869  // = v - 2^(e-1) if f == 2^(p-1) and e > e_min (B)
-
12870  //
-
12871  // v+ = v + 2^e
-
12872  //
-
12873  // Let m- = (v- + v) / 2 and m+ = (v + v+) / 2. All real numbers _strictly_
-
12874  // between m- and m+ round to v, regardless of how the input rounding
-
12875  // algorithm breaks ties.
-
12876  //
-
12877  // ---+-------------+-------------+-------------+-------------+--- (A)
-
12878  // v- m- v m+ v+
-
12879  //
-
12880  // -----------------+------+------+-------------+-------------+--- (B)
-
12881  // v- m- v m+ v+
-
12882 
-
12883  const bool lower_boundary_is_closer = F == 0 and E > 1;
-
12884  const diyfp m_plus = diyfp(2 * v.f + 1, v.e - 1);
-
12885  const diyfp m_minus = lower_boundary_is_closer
-
12886  ? diyfp(4 * v.f - 1, v.e - 2) // (B)
-
12887  : diyfp(2 * v.f - 1, v.e - 1); // (A)
-
12888 
-
12889  // Determine the normalized w+ = m+.
-
12890  const diyfp w_plus = diyfp::normalize(m_plus);
-
12891 
-
12892  // Determine w- = m- such that e_(w-) = e_(w+).
-
12893  const diyfp w_minus = diyfp::normalize_to(m_minus, w_plus.e);
-
12894 
-
12895  return {diyfp::normalize(v), w_minus, w_plus};
-
12896 }
-
12897 
-
12898 // Given normalized diyfp w, Grisu needs to find a (normalized) cached
-
12899 // power-of-ten c, such that the exponent of the product c * w = f * 2^e lies
-
12900 // within a certain range [alpha, gamma] (Definition 3.2 from [1])
-
12901 //
-
12902 // alpha <= e = e_c + e_w + q <= gamma
-
12903 //
-
12904 // or
-
12905 //
-
12906 // f_c * f_w * 2^alpha <= f_c 2^(e_c) * f_w 2^(e_w) * 2^q
-
12907 // <= f_c * f_w * 2^gamma
-
12908 //
-
12909 // Since c and w are normalized, i.e. 2^(q-1) <= f < 2^q, this implies
-
12910 //
-
12911 // 2^(q-1) * 2^(q-1) * 2^alpha <= c * w * 2^q < 2^q * 2^q * 2^gamma
-
12912 //
-
12913 // or
-
12914 //
-
12915 // 2^(q - 2 + alpha) <= c * w < 2^(q + gamma)
-
12916 //
-
12917 // The choice of (alpha,gamma) determines the size of the table and the form of
-
12918 // the digit generation procedure. Using (alpha,gamma)=(-60,-32) works out well
-
12919 // in practice:
-
12920 //
-
12921 // The idea is to cut the number c * w = f * 2^e into two parts, which can be
-
12922 // processed independently: An integral part p1, and a fractional part p2:
-
12923 //
-
12924 // f * 2^e = ( (f div 2^-e) * 2^-e + (f mod 2^-e) ) * 2^e
-
12925 // = (f div 2^-e) + (f mod 2^-e) * 2^e
-
12926 // = p1 + p2 * 2^e
-
12927 //
-
12928 // The conversion of p1 into decimal form requires a series of divisions and
-
12929 // modulos by (a power of) 10. These operations are faster for 32-bit than for
-
12930 // 64-bit integers, so p1 should ideally fit into a 32-bit integer. This can be
-
12931 // achieved by choosing
-
12932 //
-
12933 // -e >= 32 or e <= -32 := gamma
-
12934 //
-
12935 // In order to convert the fractional part
-
12936 //
-
12937 // p2 * 2^e = p2 / 2^-e = d[-1] / 10^1 + d[-2] / 10^2 + ...
-
12938 //
-
12939 // into decimal form, the fraction is repeatedly multiplied by 10 and the digits
-
12940 // d[-i] are extracted in order:
-
12941 //
-
12942 // (10 * p2) div 2^-e = d[-1]
-
12943 // (10 * p2) mod 2^-e = d[-2] / 10^1 + ...
-
12944 //
-
12945 // The multiplication by 10 must not overflow. It is sufficient to choose
-
12946 //
-
12947 // 10 * p2 < 16 * p2 = 2^4 * p2 <= 2^64.
-
12948 //
-
12949 // Since p2 = f mod 2^-e < 2^-e,
-
12950 //
-
12951 // -e <= 60 or e >= -60 := alpha
-
12952 
-
12953 constexpr int kAlpha = -60;
-
12954 constexpr int kGamma = -32;
-
12955 
-
12956 struct cached_power // c = f * 2^e ~= 10^k
-
12957 {
-
12958  std::uint64_t f;
-
12959  int e;
-
12960  int k;
-
12961 };
-
12962 
- -
12971 {
-
12972  // Now
-
12973  //
-
12974  // alpha <= e_c + e + q <= gamma (1)
-
12975  // ==> f_c * 2^alpha <= c * 2^e * 2^q
-
12976  //
-
12977  // and since the c's are normalized, 2^(q-1) <= f_c,
-
12978  //
-
12979  // ==> 2^(q - 1 + alpha) <= c * 2^(e + q)
-
12980  // ==> 2^(alpha - e - 1) <= c
-
12981  //
-
12982  // If c were an exact power of ten, i.e. c = 10^k, one may determine k as
-
12983  //
-
12984  // k = ceil( log_10( 2^(alpha - e - 1) ) )
-
12985  // = ceil( (alpha - e - 1) * log_10(2) )
-
12986  //
-
12987  // From the paper:
-
12988  // "In theory the result of the procedure could be wrong since c is rounded,
-
12989  // and the computation itself is approximated [...]. In practice, however,
-
12990  // this simple function is sufficient."
-
12991  //
-
12992  // For IEEE double precision floating-point numbers converted into
-
12993  // normalized diyfp's w = f * 2^e, with q = 64,
-
12994  //
-
12995  // e >= -1022 (min IEEE exponent)
-
12996  // -52 (p - 1)
-
12997  // -52 (p - 1, possibly normalize denormal IEEE numbers)
-
12998  // -11 (normalize the diyfp)
-
12999  // = -1137
-
13000  //
-
13001  // and
-
13002  //
-
13003  // e <= +1023 (max IEEE exponent)
-
13004  // -52 (p - 1)
-
13005  // -11 (normalize the diyfp)
-
13006  // = 960
-
13007  //
-
13008  // This binary exponent range [-1137,960] results in a decimal exponent
-
13009  // range [-307,324]. One does not need to store a cached power for each
-
13010  // k in this range. For each such k it suffices to find a cached power
-
13011  // such that the exponent of the product lies in [alpha,gamma].
-
13012  // This implies that the difference of the decimal exponents of adjacent
-
13013  // table entries must be less than or equal to
-
13014  //
-
13015  // floor( (gamma - alpha) * log_10(2) ) = 8.
-
13016  //
-
13017  // (A smaller distance gamma-alpha would require a larger table.)
-
13018 
-
13019  // NB:
-
13020  // Actually this function returns c, such that -60 <= e_c + e + 64 <= -34.
-
13021 
-
13022  constexpr int kCachedPowersMinDecExp = -300;
-
13023  constexpr int kCachedPowersDecStep = 8;
-
13024 
-
13025  static constexpr std::array<cached_power, 79> kCachedPowers =
-
13026  {
-
13027  {
-
13028  { 0xAB70FE17C79AC6CA, -1060, -300 },
-
13029  { 0xFF77B1FCBEBCDC4F, -1034, -292 },
-
13030  { 0xBE5691EF416BD60C, -1007, -284 },
-
13031  { 0x8DD01FAD907FFC3C, -980, -276 },
-
13032  { 0xD3515C2831559A83, -954, -268 },
-
13033  { 0x9D71AC8FADA6C9B5, -927, -260 },
-
13034  { 0xEA9C227723EE8BCB, -901, -252 },
-
13035  { 0xAECC49914078536D, -874, -244 },
-
13036  { 0x823C12795DB6CE57, -847, -236 },
-
13037  { 0xC21094364DFB5637, -821, -228 },
-
13038  { 0x9096EA6F3848984F, -794, -220 },
-
13039  { 0xD77485CB25823AC7, -768, -212 },
-
13040  { 0xA086CFCD97BF97F4, -741, -204 },
-
13041  { 0xEF340A98172AACE5, -715, -196 },
-
13042  { 0xB23867FB2A35B28E, -688, -188 },
-
13043  { 0x84C8D4DFD2C63F3B, -661, -180 },
-
13044  { 0xC5DD44271AD3CDBA, -635, -172 },
-
13045  { 0x936B9FCEBB25C996, -608, -164 },
-
13046  { 0xDBAC6C247D62A584, -582, -156 },
-
13047  { 0xA3AB66580D5FDAF6, -555, -148 },
-
13048  { 0xF3E2F893DEC3F126, -529, -140 },
-
13049  { 0xB5B5ADA8AAFF80B8, -502, -132 },
-
13050  { 0x87625F056C7C4A8B, -475, -124 },
-
13051  { 0xC9BCFF6034C13053, -449, -116 },
-
13052  { 0x964E858C91BA2655, -422, -108 },
-
13053  { 0xDFF9772470297EBD, -396, -100 },
-
13054  { 0xA6DFBD9FB8E5B88F, -369, -92 },
-
13055  { 0xF8A95FCF88747D94, -343, -84 },
-
13056  { 0xB94470938FA89BCF, -316, -76 },
-
13057  { 0x8A08F0F8BF0F156B, -289, -68 },
-
13058  { 0xCDB02555653131B6, -263, -60 },
-
13059  { 0x993FE2C6D07B7FAC, -236, -52 },
-
13060  { 0xE45C10C42A2B3B06, -210, -44 },
-
13061  { 0xAA242499697392D3, -183, -36 },
-
13062  { 0xFD87B5F28300CA0E, -157, -28 },
-
13063  { 0xBCE5086492111AEB, -130, -20 },
-
13064  { 0x8CBCCC096F5088CC, -103, -12 },
-
13065  { 0xD1B71758E219652C, -77, -4 },
-
13066  { 0x9C40000000000000, -50, 4 },
-
13067  { 0xE8D4A51000000000, -24, 12 },
-
13068  { 0xAD78EBC5AC620000, 3, 20 },
-
13069  { 0x813F3978F8940984, 30, 28 },
-
13070  { 0xC097CE7BC90715B3, 56, 36 },
-
13071  { 0x8F7E32CE7BEA5C70, 83, 44 },
-
13072  { 0xD5D238A4ABE98068, 109, 52 },
-
13073  { 0x9F4F2726179A2245, 136, 60 },
-
13074  { 0xED63A231D4C4FB27, 162, 68 },
-
13075  { 0xB0DE65388CC8ADA8, 189, 76 },
-
13076  { 0x83C7088E1AAB65DB, 216, 84 },
-
13077  { 0xC45D1DF942711D9A, 242, 92 },
-
13078  { 0x924D692CA61BE758, 269, 100 },
-
13079  { 0xDA01EE641A708DEA, 295, 108 },
-
13080  { 0xA26DA3999AEF774A, 322, 116 },
-
13081  { 0xF209787BB47D6B85, 348, 124 },
-
13082  { 0xB454E4A179DD1877, 375, 132 },
-
13083  { 0x865B86925B9BC5C2, 402, 140 },
-
13084  { 0xC83553C5C8965D3D, 428, 148 },
-
13085  { 0x952AB45CFA97A0B3, 455, 156 },
-
13086  { 0xDE469FBD99A05FE3, 481, 164 },
-
13087  { 0xA59BC234DB398C25, 508, 172 },
-
13088  { 0xF6C69A72A3989F5C, 534, 180 },
-
13089  { 0xB7DCBF5354E9BECE, 561, 188 },
-
13090  { 0x88FCF317F22241E2, 588, 196 },
-
13091  { 0xCC20CE9BD35C78A5, 614, 204 },
-
13092  { 0x98165AF37B2153DF, 641, 212 },
-
13093  { 0xE2A0B5DC971F303A, 667, 220 },
-
13094  { 0xA8D9D1535CE3B396, 694, 228 },
-
13095  { 0xFB9B7CD9A4A7443C, 720, 236 },
-
13096  { 0xBB764C4CA7A44410, 747, 244 },
-
13097  { 0x8BAB8EEFB6409C1A, 774, 252 },
-
13098  { 0xD01FEF10A657842C, 800, 260 },
-
13099  { 0x9B10A4E5E9913129, 827, 268 },
-
13100  { 0xE7109BFBA19C0C9D, 853, 276 },
-
13101  { 0xAC2820D9623BF429, 880, 284 },
-
13102  { 0x80444B5E7AA7CF85, 907, 292 },
-
13103  { 0xBF21E44003ACDD2D, 933, 300 },
-
13104  { 0x8E679C2F5E44FF8F, 960, 308 },
-
13105  { 0xD433179D9C8CB841, 986, 316 },
-
13106  { 0x9E19DB92B4E31BA9, 1013, 324 },
-
13107  }
-
13108  };
-
13109 
-
13110  // This computation gives exactly the same results for k as
-
13111  // k = ceil((kAlpha - e - 1) * 0.30102999566398114)
-
13112  // for |e| <= 1500, but doesn't require floating-point operations.
-
13113  // NB: log_10(2) ~= 78913 / 2^18
-
13114  assert(e >= -1500);
-
13115  assert(e <= 1500);
-
13116  const int f = kAlpha - e - 1;
-
13117  const int k = (f * 78913) / (1 << 18) + static_cast<int>(f > 0);
-
13118 
-
13119  const int index = (-kCachedPowersMinDecExp + k + (kCachedPowersDecStep - 1)) / kCachedPowersDecStep;
-
13120  assert(index >= 0);
-
13121  assert(static_cast<std::size_t>(index) < kCachedPowers.size());
-
13122 
-
13123  const cached_power cached = kCachedPowers[static_cast<std::size_t>(index)];
-
13124  assert(kAlpha <= cached.e + e + 64);
-
13125  assert(kGamma >= cached.e + e + 64);
-
13126 
-
13127  return cached;
-
13128 }
-
13129 
-
13134 inline int find_largest_pow10(const std::uint32_t n, std::uint32_t& pow10)
-
13135 {
-
13136  // LCOV_EXCL_START
-
13137  if (n >= 1000000000)
-
13138  {
-
13139  pow10 = 1000000000;
-
13140  return 10;
-
13141  }
-
13142  // LCOV_EXCL_STOP
-
13143  else if (n >= 100000000)
-
13144  {
-
13145  pow10 = 100000000;
-
13146  return 9;
-
13147  }
-
13148  else if (n >= 10000000)
-
13149  {
-
13150  pow10 = 10000000;
-
13151  return 8;
-
13152  }
-
13153  else if (n >= 1000000)
-
13154  {
-
13155  pow10 = 1000000;
-
13156  return 7;
-
13157  }
-
13158  else if (n >= 100000)
-
13159  {
-
13160  pow10 = 100000;
-
13161  return 6;
-
13162  }
-
13163  else if (n >= 10000)
-
13164  {
-
13165  pow10 = 10000;
-
13166  return 5;
-
13167  }
-
13168  else if (n >= 1000)
-
13169  {
-
13170  pow10 = 1000;
-
13171  return 4;
-
13172  }
-
13173  else if (n >= 100)
-
13174  {
-
13175  pow10 = 100;
-
13176  return 3;
-
13177  }
-
13178  else if (n >= 10)
-
13179  {
-
13180  pow10 = 10;
-
13181  return 2;
-
13182  }
-
13183  else
-
13184  {
-
13185  pow10 = 1;
-
13186  return 1;
-
13187  }
-
13188 }
-
13189 
-
13190 inline void grisu2_round(char* buf, int len, std::uint64_t dist, std::uint64_t delta,
-
13191  std::uint64_t rest, std::uint64_t ten_k)
-
13192 {
-
13193  assert(len >= 1);
-
13194  assert(dist <= delta);
-
13195  assert(rest <= delta);
-
13196  assert(ten_k > 0);
-
13197 
-
13198  // <--------------------------- delta ---->
-
13199  // <---- dist --------->
-
13200  // --------------[------------------+-------------------]--------------
-
13201  // M- w M+
-
13202  //
-
13203  // ten_k
-
13204  // <------>
-
13205  // <---- rest ---->
-
13206  // --------------[------------------+----+--------------]--------------
-
13207  // w V
-
13208  // = buf * 10^k
-
13209  //
-
13210  // ten_k represents a unit-in-the-last-place in the decimal representation
-
13211  // stored in buf.
-
13212  // Decrement buf by ten_k while this takes buf closer to w.
-
13213 
-
13214  // The tests are written in this order to avoid overflow in unsigned
-
13215  // integer arithmetic.
-
13216 
-
13217  while (rest < dist
-
13218  and delta - rest >= ten_k
-
13219  and (rest + ten_k < dist or dist - rest > rest + ten_k - dist))
-
13220  {
-
13221  assert(buf[len - 1] != '0');
-
13222  buf[len - 1]--;
-
13223  rest += ten_k;
-
13224  }
-
13225 }
-
13226 
-
13231 inline void grisu2_digit_gen(char* buffer, int& length, int& decimal_exponent,
-
13232  diyfp M_minus, diyfp w, diyfp M_plus)
-
13233 {
-
13234  static_assert(kAlpha >= -60, "internal error");
-
13235  static_assert(kGamma <= -32, "internal error");
-
13236 
-
13237  // Generates the digits (and the exponent) of a decimal floating-point
-
13238  // number V = buffer * 10^decimal_exponent in the range [M-, M+]. The diyfp's
-
13239  // w, M- and M+ share the same exponent e, which satisfies alpha <= e <= gamma.
-
13240  //
-
13241  // <--------------------------- delta ---->
-
13242  // <---- dist --------->
-
13243  // --------------[------------------+-------------------]--------------
-
13244  // M- w M+
-
13245  //
-
13246  // Grisu2 generates the digits of M+ from left to right and stops as soon as
-
13247  // V is in [M-,M+].
-
13248 
-
13249  assert(M_plus.e >= kAlpha);
-
13250  assert(M_plus.e <= kGamma);
-
13251 
-
13252  std::uint64_t delta = diyfp::sub(M_plus, M_minus).f; // (significand of (M+ - M-), implicit exponent is e)
-
13253  std::uint64_t dist = diyfp::sub(M_plus, w ).f; // (significand of (M+ - w ), implicit exponent is e)
-
13254 
-
13255  // Split M+ = f * 2^e into two parts p1 and p2 (note: e < 0):
-
13256  //
-
13257  // M+ = f * 2^e
-
13258  // = ((f div 2^-e) * 2^-e + (f mod 2^-e)) * 2^e
-
13259  // = ((p1 ) * 2^-e + (p2 )) * 2^e
-
13260  // = p1 + p2 * 2^e
-
13261 
-
13262  const diyfp one(std::uint64_t{1} << -M_plus.e, M_plus.e);
-
13263 
-
13264  auto p1 = static_cast<std::uint32_t>(M_plus.f >> -one.e); // p1 = f div 2^-e (Since -e >= 32, p1 fits into a 32-bit int.)
-
13265  std::uint64_t p2 = M_plus.f & (one.f - 1); // p2 = f mod 2^-e
-
13266 
-
13267  // 1)
-
13268  //
-
13269  // Generate the digits of the integral part p1 = d[n-1]...d[1]d[0]
-
13270 
-
13271  assert(p1 > 0);
-
13272 
-
13273  std::uint32_t pow10;
-
13274  const int k = find_largest_pow10(p1, pow10);
-
13275 
-
13276  // 10^(k-1) <= p1 < 10^k, pow10 = 10^(k-1)
-
13277  //
-
13278  // p1 = (p1 div 10^(k-1)) * 10^(k-1) + (p1 mod 10^(k-1))
-
13279  // = (d[k-1] ) * 10^(k-1) + (p1 mod 10^(k-1))
-
13280  //
-
13281  // M+ = p1 + p2 * 2^e
-
13282  // = d[k-1] * 10^(k-1) + (p1 mod 10^(k-1)) + p2 * 2^e
-
13283  // = d[k-1] * 10^(k-1) + ((p1 mod 10^(k-1)) * 2^-e + p2) * 2^e
-
13284  // = d[k-1] * 10^(k-1) + ( rest) * 2^e
-
13285  //
-
13286  // Now generate the digits d[n] of p1 from left to right (n = k-1,...,0)
-
13287  //
-
13288  // p1 = d[k-1]...d[n] * 10^n + d[n-1]...d[0]
-
13289  //
-
13290  // but stop as soon as
-
13291  //
-
13292  // rest * 2^e = (d[n-1]...d[0] * 2^-e + p2) * 2^e <= delta * 2^e
-
13293 
-
13294  int n = k;
-
13295  while (n > 0)
-
13296  {
-
13297  // Invariants:
-
13298  // M+ = buffer * 10^n + (p1 + p2 * 2^e) (buffer = 0 for n = k)
-
13299  // pow10 = 10^(n-1) <= p1 < 10^n
-
13300  //
-
13301  const std::uint32_t d = p1 / pow10; // d = p1 div 10^(n-1)
-
13302  const std::uint32_t r = p1 % pow10; // r = p1 mod 10^(n-1)
-
13303  //
-
13304  // M+ = buffer * 10^n + (d * 10^(n-1) + r) + p2 * 2^e
-
13305  // = (buffer * 10 + d) * 10^(n-1) + (r + p2 * 2^e)
-
13306  //
-
13307  assert(d <= 9);
-
13308  buffer[length++] = static_cast<char>('0' + d); // buffer := buffer * 10 + d
-
13309  //
-
13310  // M+ = buffer * 10^(n-1) + (r + p2 * 2^e)
-
13311  //
-
13312  p1 = r;
-
13313  n--;
-
13314  //
-
13315  // M+ = buffer * 10^n + (p1 + p2 * 2^e)
-
13316  // pow10 = 10^n
-
13317  //
-
13318 
-
13319  // Now check if enough digits have been generated.
-
13320  // Compute
-
13321  //
-
13322  // p1 + p2 * 2^e = (p1 * 2^-e + p2) * 2^e = rest * 2^e
-
13323  //
-
13324  // Note:
-
13325  // Since rest and delta share the same exponent e, it suffices to
-
13326  // compare the significands.
-
13327  const std::uint64_t rest = (std::uint64_t{p1} << -one.e) + p2;
-
13328  if (rest <= delta)
-
13329  {
-
13330  // V = buffer * 10^n, with M- <= V <= M+.
-
13331 
-
13332  decimal_exponent += n;
-
13333 
-
13334  // We may now just stop. But instead look if the buffer could be
-
13335  // decremented to bring V closer to w.
-
13336  //
-
13337  // pow10 = 10^n is now 1 ulp in the decimal representation V.
-
13338  // The rounding procedure works with diyfp's with an implicit
-
13339  // exponent of e.
-
13340  //
-
13341  // 10^n = (10^n * 2^-e) * 2^e = ulp * 2^e
-
13342  //
-
13343  const std::uint64_t ten_n = std::uint64_t{pow10} << -one.e;
-
13344  grisu2_round(buffer, length, dist, delta, rest, ten_n);
-
13345 
-
13346  return;
-
13347  }
-
13348 
-
13349  pow10 /= 10;
-
13350  //
-
13351  // pow10 = 10^(n-1) <= p1 < 10^n
-
13352  // Invariants restored.
-
13353  }
-
13354 
-
13355  // 2)
-
13356  //
-
13357  // The digits of the integral part have been generated:
-
13358  //
-
13359  // M+ = d[k-1]...d[1]d[0] + p2 * 2^e
-
13360  // = buffer + p2 * 2^e
-
13361  //
-
13362  // Now generate the digits of the fractional part p2 * 2^e.
-
13363  //
-
13364  // Note:
-
13365  // No decimal point is generated: the exponent is adjusted instead.
-
13366  //
-
13367  // p2 actually represents the fraction
-
13368  //
-
13369  // p2 * 2^e
-
13370  // = p2 / 2^-e
-
13371  // = d[-1] / 10^1 + d[-2] / 10^2 + ...
-
13372  //
-
13373  // Now generate the digits d[-m] of p1 from left to right (m = 1,2,...)
-
13374  //
-
13375  // p2 * 2^e = d[-1]d[-2]...d[-m] * 10^-m
-
13376  // + 10^-m * (d[-m-1] / 10^1 + d[-m-2] / 10^2 + ...)
-
13377  //
-
13378  // using
-
13379  //
-
13380  // 10^m * p2 = ((10^m * p2) div 2^-e) * 2^-e + ((10^m * p2) mod 2^-e)
-
13381  // = ( d) * 2^-e + ( r)
-
13382  //
-
13383  // or
-
13384  // 10^m * p2 * 2^e = d + r * 2^e
-
13385  //
-
13386  // i.e.
-
13387  //
-
13388  // M+ = buffer + p2 * 2^e
-
13389  // = buffer + 10^-m * (d + r * 2^e)
-
13390  // = (buffer * 10^m + d) * 10^-m + 10^-m * r * 2^e
-
13391  //
-
13392  // and stop as soon as 10^-m * r * 2^e <= delta * 2^e
-
13393 
-
13394  assert(p2 > delta);
-
13395 
-
13396  int m = 0;
-
13397  for (;;)
-
13398  {
-
13399  // Invariant:
-
13400  // M+ = buffer * 10^-m + 10^-m * (d[-m-1] / 10 + d[-m-2] / 10^2 + ...) * 2^e
-
13401  // = buffer * 10^-m + 10^-m * (p2 ) * 2^e
-
13402  // = buffer * 10^-m + 10^-m * (1/10 * (10 * p2) ) * 2^e
-
13403  // = buffer * 10^-m + 10^-m * (1/10 * ((10*p2 div 2^-e) * 2^-e + (10*p2 mod 2^-e)) * 2^e
-
13404  //
-
13405  assert(p2 <= (std::numeric_limits<std::uint64_t>::max)() / 10);
-
13406  p2 *= 10;
-
13407  const std::uint64_t d = p2 >> -one.e; // d = (10 * p2) div 2^-e
-
13408  const std::uint64_t r = p2 & (one.f - 1); // r = (10 * p2) mod 2^-e
-
13409  //
-
13410  // M+ = buffer * 10^-m + 10^-m * (1/10 * (d * 2^-e + r) * 2^e
-
13411  // = buffer * 10^-m + 10^-m * (1/10 * (d + r * 2^e))
-
13412  // = (buffer * 10 + d) * 10^(-m-1) + 10^(-m-1) * r * 2^e
-
13413  //
-
13414  assert(d <= 9);
-
13415  buffer[length++] = static_cast<char>('0' + d); // buffer := buffer * 10 + d
-
13416  //
-
13417  // M+ = buffer * 10^(-m-1) + 10^(-m-1) * r * 2^e
-
13418  //
-
13419  p2 = r;
-
13420  m++;
-
13421  //
-
13422  // M+ = buffer * 10^-m + 10^-m * p2 * 2^e
-
13423  // Invariant restored.
-
13424 
-
13425  // Check if enough digits have been generated.
-
13426  //
-
13427  // 10^-m * p2 * 2^e <= delta * 2^e
-
13428  // p2 * 2^e <= 10^m * delta * 2^e
-
13429  // p2 <= 10^m * delta
-
13430  delta *= 10;
-
13431  dist *= 10;
-
13432  if (p2 <= delta)
-
13433  {
-
13434  break;
-
13435  }
-
13436  }
-
13437 
-
13438  // V = buffer * 10^-m, with M- <= V <= M+.
-
13439 
-
13440  decimal_exponent -= m;
-
13441 
-
13442  // 1 ulp in the decimal representation is now 10^-m.
-
13443  // Since delta and dist are now scaled by 10^m, we need to do the
-
13444  // same with ulp in order to keep the units in sync.
-
13445  //
-
13446  // 10^m * 10^-m = 1 = 2^-e * 2^e = ten_m * 2^e
-
13447  //
-
13448  const std::uint64_t ten_m = one.f;
-
13449  grisu2_round(buffer, length, dist, delta, p2, ten_m);
-
13450 
-
13451  // By construction this algorithm generates the shortest possible decimal
-
13452  // number (Loitsch, Theorem 6.2) which rounds back to w.
-
13453  // For an input number of precision p, at least
-
13454  //
-
13455  // N = 1 + ceil(p * log_10(2))
-
13456  //
-
13457  // decimal digits are sufficient to identify all binary floating-point
-
13458  // numbers (Matula, "In-and-Out conversions").
-
13459  // This implies that the algorithm does not produce more than N decimal
-
13460  // digits.
-
13461  //
-
13462  // N = 17 for p = 53 (IEEE double precision)
-
13463  // N = 9 for p = 24 (IEEE single precision)
-
13464 }
-
13465 
- -
13472 inline void grisu2(char* buf, int& len, int& decimal_exponent,
-
13473  diyfp m_minus, diyfp v, diyfp m_plus)
-
13474 {
-
13475  assert(m_plus.e == m_minus.e);
-
13476  assert(m_plus.e == v.e);
-
13477 
-
13478  // --------(-----------------------+-----------------------)-------- (A)
-
13479  // m- v m+
-
13480  //
-
13481  // --------------------(-----------+-----------------------)-------- (B)
-
13482  // m- v m+
-
13483  //
-
13484  // First scale v (and m- and m+) such that the exponent is in the range
-
13485  // [alpha, gamma].
-
13486 
-
13487  const cached_power cached = get_cached_power_for_binary_exponent(m_plus.e);
-
13488 
-
13489  const diyfp c_minus_k(cached.f, cached.e); // = c ~= 10^-k
-
13490 
-
13491  // The exponent of the products is = v.e + c_minus_k.e + q and is in the range [alpha,gamma]
-
13492  const diyfp w = diyfp::mul(v, c_minus_k);
-
13493  const diyfp w_minus = diyfp::mul(m_minus, c_minus_k);
-
13494  const diyfp w_plus = diyfp::mul(m_plus, c_minus_k);
-
13495 
-
13496  // ----(---+---)---------------(---+---)---------------(---+---)----
-
13497  // w- w w+
-
13498  // = c*m- = c*v = c*m+
-
13499  //
-
13500  // diyfp::mul rounds its result and c_minus_k is approximated too. w, w- and
-
13501  // w+ are now off by a small amount.
-
13502  // In fact:
-
13503  //
-
13504  // w - v * 10^k < 1 ulp
-
13505  //
-
13506  // To account for this inaccuracy, add resp. subtract 1 ulp.
-
13507  //
-
13508  // --------+---[---------------(---+---)---------------]---+--------
-
13509  // w- M- w M+ w+
-
13510  //
-
13511  // Now any number in [M-, M+] (bounds included) will round to w when input,
-
13512  // regardless of how the input rounding algorithm breaks ties.
-
13513  //
-
13514  // And digit_gen generates the shortest possible such number in [M-, M+].
-
13515  // Note that this does not mean that Grisu2 always generates the shortest
-
13516  // possible number in the interval (m-, m+).
-
13517  const diyfp M_minus(w_minus.f + 1, w_minus.e);
-
13518  const diyfp M_plus (w_plus.f - 1, w_plus.e );
-
13519 
-
13520  decimal_exponent = -cached.k; // = -(-k) = k
-
13521 
-
13522  grisu2_digit_gen(buf, len, decimal_exponent, M_minus, w, M_plus);
-
13523 }
-
13524 
-
13530 template <typename FloatType>
- -
13532 void grisu2(char* buf, int& len, int& decimal_exponent, FloatType value)
-
13533 {
-
13534  static_assert(diyfp::kPrecision >= std::numeric_limits<FloatType>::digits + 3,
-
13535  "internal error: not enough precision");
-
13536 
-
13537  assert(std::isfinite(value));
-
13538  assert(value > 0);
-
13539 
-
13540  // If the neighbors (and boundaries) of 'value' are always computed for double-precision
-
13541  // numbers, all float's can be recovered using strtod (and strtof). However, the resulting
-
13542  // decimal representations are not exactly "short".
-
13543  //
-
13544  // The documentation for 'std::to_chars' (https://en.cppreference.com/w/cpp/utility/to_chars)
-
13545  // says "value is converted to a string as if by std::sprintf in the default ("C") locale"
-
13546  // and since sprintf promotes float's to double's, I think this is exactly what 'std::to_chars'
-
13547  // does.
-
13548  // On the other hand, the documentation for 'std::to_chars' requires that "parsing the
-
13549  // representation using the corresponding std::from_chars function recovers value exactly". That
-
13550  // indicates that single precision floating-point numbers should be recovered using
-
13551  // 'std::strtof'.
-
13552  //
-
13553  // NB: If the neighbors are computed for single-precision numbers, there is a single float
-
13554  // (7.0385307e-26f) which can't be recovered using strtod. The resulting double precision
-
13555  // value is off by 1 ulp.
-
13556 #if 0
-
13557  const boundaries w = compute_boundaries(static_cast<double>(value));
-
13558 #else
-
13559  const boundaries w = compute_boundaries(value);
-
13560 #endif
-
13561 
-
13562  grisu2(buf, len, decimal_exponent, w.minus, w.w, w.plus);
-
13563 }
-
13564 
- - -
13572 inline char* append_exponent(char* buf, int e)
-
13573 {
-
13574  assert(e > -1000);
-
13575  assert(e < 1000);
-
13576 
-
13577  if (e < 0)
-
13578  {
-
13579  e = -e;
-
13580  *buf++ = '-';
-
13581  }
-
13582  else
-
13583  {
-
13584  *buf++ = '+';
-
13585  }
-
13586 
-
13587  auto k = static_cast<std::uint32_t>(e);
-
13588  if (k < 10)
-
13589  {
-
13590  // Always print at least two digits in the exponent.
-
13591  // This is for compatibility with printf("%g").
-
13592  *buf++ = '0';
-
13593  *buf++ = static_cast<char>('0' + k);
-
13594  }
-
13595  else if (k < 100)
-
13596  {
-
13597  *buf++ = static_cast<char>('0' + k / 10);
-
13598  k %= 10;
-
13599  *buf++ = static_cast<char>('0' + k);
-
13600  }
-
13601  else
-
13602  {
-
13603  *buf++ = static_cast<char>('0' + k / 100);
-
13604  k %= 100;
-
13605  *buf++ = static_cast<char>('0' + k / 10);
-
13606  k %= 10;
-
13607  *buf++ = static_cast<char>('0' + k);
-
13608  }
-
13609 
-
13610  return buf;
-
13611 }
-
13612 
- - -
13624 inline char* format_buffer(char* buf, int len, int decimal_exponent,
-
13625  int min_exp, int max_exp)
-
13626 {
-
13627  assert(min_exp < 0);
-
13628  assert(max_exp > 0);
-
13629 
-
13630  const int k = len;
-
13631  const int n = len + decimal_exponent;
-
13632 
-
13633  // v = buf * 10^(n-k)
-
13634  // k is the length of the buffer (number of decimal digits)
-
13635  // n is the position of the decimal point relative to the start of the buffer.
-
13636 
-
13637  if (k <= n and n <= max_exp)
-
13638  {
-
13639  // digits[000]
-
13640  // len <= max_exp + 2
-
13641 
-
13642  std::memset(buf + k, '0', static_cast<size_t>(n - k));
-
13643  // Make it look like a floating-point number (#362, #378)
-
13644  buf[n + 0] = '.';
-
13645  buf[n + 1] = '0';
-
13646  return buf + (n + 2);
-
13647  }
-
13648 
-
13649  if (0 < n and n <= max_exp)
-
13650  {
-
13651  // dig.its
-
13652  // len <= max_digits10 + 1
-
13653 
-
13654  assert(k > n);
-
13655 
-
13656  std::memmove(buf + (n + 1), buf + n, static_cast<size_t>(k - n));
-
13657  buf[n] = '.';
-
13658  return buf + (k + 1);
-
13659  }
-
13660 
-
13661  if (min_exp < n and n <= 0)
-
13662  {
-
13663  // 0.[000]digits
-
13664  // len <= 2 + (-min_exp - 1) + max_digits10
-
13665 
-
13666  std::memmove(buf + (2 + -n), buf, static_cast<size_t>(k));
-
13667  buf[0] = '0';
-
13668  buf[1] = '.';
-
13669  std::memset(buf + 2, '0', static_cast<size_t>(-n));
-
13670  return buf + (2 + (-n) + k);
-
13671  }
-
13672 
-
13673  if (k == 1)
-
13674  {
-
13675  // dE+123
-
13676  // len <= 1 + 5
-
13677 
-
13678  buf += 1;
-
13679  }
-
13680  else
-
13681  {
-
13682  // d.igitsE+123
-
13683  // len <= max_digits10 + 1 + 5
-
13684 
-
13685  std::memmove(buf + 2, buf + 1, static_cast<size_t>(k - 1));
-
13686  buf[1] = '.';
-
13687  buf += 1 + k;
-
13688  }
-
13689 
-
13690  *buf++ = 'e';
-
13691  return append_exponent(buf, n - 1);
-
13692 }
-
13693 
-
13694 } // namespace dtoa_impl
-
13695 
-
13706 template <typename FloatType>
- - -
13709 char* to_chars(char* first, const char* last, FloatType value)
-
13710 {
-
13711  static_cast<void>(last); // maybe unused - fix warning
-
13712  assert(std::isfinite(value));
-
13713 
-
13714  // Use signbit(value) instead of (value < 0) since signbit works for -0.
-
13715  if (std::signbit(value))
-
13716  {
-
13717  value = -value;
-
13718  *first++ = '-';
-
13719  }
-
13720 
-
13721  if (value == 0) // +-0
-
13722  {
-
13723  *first++ = '0';
-
13724  // Make it look like a floating-point number (#362, #378)
-
13725  *first++ = '.';
-
13726  *first++ = '0';
-
13727  return first;
-
13728  }
-
13729 
-
13730  assert(last - first >= std::numeric_limits<FloatType>::max_digits10);
-
13731 
-
13732  // Compute v = buffer * 10^decimal_exponent.
-
13733  // The decimal digits are stored in the buffer, which needs to be interpreted
-
13734  // as an unsigned decimal integer.
-
13735  // len is the length of the buffer, i.e. the number of decimal digits.
-
13736  int len = 0;
-
13737  int decimal_exponent = 0;
-
13738  dtoa_impl::grisu2(first, len, decimal_exponent, value);
-
13739 
-
13740  assert(len <= std::numeric_limits<FloatType>::max_digits10);
-
13741 
-
13742  // Format the buffer like printf("%.*g", prec, value)
-
13743  constexpr int kMinExp = -4;
-
13744  // Use digits10 here to increase compatibility with version 2.
-
13745  constexpr int kMaxExp = std::numeric_limits<FloatType>::digits10;
-
13746 
-
13747  assert(last - first >= kMaxExp + 2);
-
13748  assert(last - first >= 2 + (-kMinExp - 1) + std::numeric_limits<FloatType>::max_digits10);
-
13749  assert(last - first >= std::numeric_limits<FloatType>::max_digits10 + 6);
-
13750 
-
13751  return dtoa_impl::format_buffer(first, len, decimal_exponent, kMinExp, kMaxExp);
-
13752 }
-
13753 
-
13754 } // namespace detail
-
13755 } // namespace nlohmann
-
13756 
-
13757 // #include <nlohmann/detail/exceptions.hpp>
-
13758 
-
13759 // #include <nlohmann/detail/macro_scope.hpp>
-
13760 
-
13761 // #include <nlohmann/detail/meta/cpp_future.hpp>
-
13762 
-
13763 // #include <nlohmann/detail/output/binary_writer.hpp>
-
13764 
-
13765 // #include <nlohmann/detail/output/output_adapters.hpp>
-
13766 
-
13767 // #include <nlohmann/detail/value_t.hpp>
-
13768 
-
13769 
-
13770 namespace nlohmann
-
13771 {
-
13772 namespace detail
-
13773 {
-
13775 // serialization //
-
13777 
- -
13780 {
-
13781  strict,
-
13782  replace,
-
13783  ignore
-
13784 };
-
13785 
-
13786 template<typename BasicJsonType>
- -
13788 {
-
13789  using string_t = typename BasicJsonType::string_t;
-
13790  using number_float_t = typename BasicJsonType::number_float_t;
-
13791  using number_integer_t = typename BasicJsonType::number_integer_t;
-
13792  using number_unsigned_t = typename BasicJsonType::number_unsigned_t;
-
13793  static constexpr std::uint8_t UTF8_ACCEPT = 0;
-
13794  static constexpr std::uint8_t UTF8_REJECT = 1;
-
13795 
-
13796  public:
-
13802  serializer(output_adapter_t<char> s, const char ichar,
-
13803  error_handler_t error_handler_ = error_handler_t::strict)
-
13804  : o(std::move(s))
-
13805  , loc(std::localeconv())
-
13806  , thousands_sep(loc->thousands_sep == nullptr ? '\0' : * (loc->thousands_sep))
-
13807  , decimal_point(loc->decimal_point == nullptr ? '\0' : * (loc->decimal_point))
-
13808  , indent_char(ichar)
-
13809  , indent_string(512, indent_char)
-
13810  , error_handler(error_handler_)
-
13811  {}
-
13812 
-
13813  // delete because of pointer members
-
13814  serializer(const serializer&) = delete;
-
13815  serializer& operator=(const serializer&) = delete;
-
13816  serializer(serializer&&) = delete;
-
13817  serializer& operator=(serializer&&) = delete;
-
13818  ~serializer() = default;
-
13819 
-
13837  void dump(const BasicJsonType& val, const bool pretty_print,
-
13838  const bool ensure_ascii,
-
13839  const unsigned int indent_step,
-
13840  const unsigned int current_indent = 0)
-
13841  {
-
13842  switch (val.m_type)
-
13843  {
-
13844  case value_t::object:
-
13845  {
-
13846  if (val.m_value.object->empty())
-
13847  {
-
13848  o->write_characters("{}", 2);
-
13849  return;
-
13850  }
-
13851 
-
13852  if (pretty_print)
-
13853  {
-
13854  o->write_characters("{\n", 2);
-
13855 
-
13856  // variable to hold indentation for recursive calls
-
13857  const auto new_indent = current_indent + indent_step;
-
13858  if (JSON_HEDLEY_UNLIKELY(indent_string.size() < new_indent))
-
13859  {
-
13860  indent_string.resize(indent_string.size() * 2, ' ');
-
13861  }
-
13862 
-
13863  // first n-1 elements
-
13864  auto i = val.m_value.object->cbegin();
-
13865  for (std::size_t cnt = 0; cnt < val.m_value.object->size() - 1; ++cnt, ++i)
-
13866  {
-
13867  o->write_characters(indent_string.c_str(), new_indent);
-
13868  o->write_character('\"');
-
13869  dump_escaped(i->first, ensure_ascii);
-
13870  o->write_characters("\": ", 3);
-
13871  dump(i->second, true, ensure_ascii, indent_step, new_indent);
-
13872  o->write_characters(",\n", 2);
-
13873  }
-
13874 
-
13875  // last element
-
13876  assert(i != val.m_value.object->cend());
-
13877  assert(std::next(i) == val.m_value.object->cend());
-
13878  o->write_characters(indent_string.c_str(), new_indent);
-
13879  o->write_character('\"');
-
13880  dump_escaped(i->first, ensure_ascii);
-
13881  o->write_characters("\": ", 3);
-
13882  dump(i->second, true, ensure_ascii, indent_step, new_indent);
-
13883 
-
13884  o->write_character('\n');
-
13885  o->write_characters(indent_string.c_str(), current_indent);
-
13886  o->write_character('}');
-
13887  }
-
13888  else
-
13889  {
-
13890  o->write_character('{');
-
13891 
-
13892  // first n-1 elements
-
13893  auto i = val.m_value.object->cbegin();
-
13894  for (std::size_t cnt = 0; cnt < val.m_value.object->size() - 1; ++cnt, ++i)
-
13895  {
-
13896  o->write_character('\"');
-
13897  dump_escaped(i->first, ensure_ascii);
-
13898  o->write_characters("\":", 2);
-
13899  dump(i->second, false, ensure_ascii, indent_step, current_indent);
-
13900  o->write_character(',');
-
13901  }
-
13902 
-
13903  // last element
-
13904  assert(i != val.m_value.object->cend());
-
13905  assert(std::next(i) == val.m_value.object->cend());
-
13906  o->write_character('\"');
-
13907  dump_escaped(i->first, ensure_ascii);
-
13908  o->write_characters("\":", 2);
-
13909  dump(i->second, false, ensure_ascii, indent_step, current_indent);
-
13910 
-
13911  o->write_character('}');
-
13912  }
-
13913 
-
13914  return;
-
13915  }
-
13916 
-
13917  case value_t::array:
-
13918  {
-
13919  if (val.m_value.array->empty())
-
13920  {
-
13921  o->write_characters("[]", 2);
-
13922  return;
-
13923  }
-
13924 
-
13925  if (pretty_print)
-
13926  {
-
13927  o->write_characters("[\n", 2);
-
13928 
-
13929  // variable to hold indentation for recursive calls
-
13930  const auto new_indent = current_indent + indent_step;
-
13931  if (JSON_HEDLEY_UNLIKELY(indent_string.size() < new_indent))
-
13932  {
-
13933  indent_string.resize(indent_string.size() * 2, ' ');
-
13934  }
-
13935 
-
13936  // first n-1 elements
-
13937  for (auto i = val.m_value.array->cbegin();
-
13938  i != val.m_value.array->cend() - 1; ++i)
-
13939  {
-
13940  o->write_characters(indent_string.c_str(), new_indent);
-
13941  dump(*i, true, ensure_ascii, indent_step, new_indent);
-
13942  o->write_characters(",\n", 2);
-
13943  }
-
13944 
-
13945  // last element
-
13946  assert(not val.m_value.array->empty());
-
13947  o->write_characters(indent_string.c_str(), new_indent);
-
13948  dump(val.m_value.array->back(), true, ensure_ascii, indent_step, new_indent);
-
13949 
-
13950  o->write_character('\n');
-
13951  o->write_characters(indent_string.c_str(), current_indent);
-
13952  o->write_character(']');
-
13953  }
-
13954  else
-
13955  {
-
13956  o->write_character('[');
-
13957 
-
13958  // first n-1 elements
-
13959  for (auto i = val.m_value.array->cbegin();
-
13960  i != val.m_value.array->cend() - 1; ++i)
-
13961  {
-
13962  dump(*i, false, ensure_ascii, indent_step, current_indent);
-
13963  o->write_character(',');
-
13964  }
-
13965 
-
13966  // last element
-
13967  assert(not val.m_value.array->empty());
-
13968  dump(val.m_value.array->back(), false, ensure_ascii, indent_step, current_indent);
-
13969 
-
13970  o->write_character(']');
-
13971  }
-
13972 
-
13973  return;
-
13974  }
-
13975 
-
13976  case value_t::string:
-
13977  {
-
13978  o->write_character('\"');
-
13979  dump_escaped(*val.m_value.string, ensure_ascii);
-
13980  o->write_character('\"');
-
13981  return;
-
13982  }
-
13983 
-
13984  case value_t::boolean:
-
13985  {
-
13986  if (val.m_value.boolean)
-
13987  {
-
13988  o->write_characters("true", 4);
-
13989  }
-
13990  else
-
13991  {
-
13992  o->write_characters("false", 5);
-
13993  }
-
13994  return;
-
13995  }
-
13996 
- -
13998  {
-
13999  dump_integer(val.m_value.number_integer);
-
14000  return;
-
14001  }
-
14002 
- -
14004  {
-
14005  dump_integer(val.m_value.number_unsigned);
-
14006  return;
-
14007  }
-
14008 
-
14009  case value_t::number_float:
-
14010  {
-
14011  dump_float(val.m_value.number_float);
-
14012  return;
-
14013  }
-
14014 
-
14015  case value_t::discarded:
-
14016  {
-
14017  o->write_characters("<discarded>", 11);
-
14018  return;
-
14019  }
-
14020 
-
14021  case value_t::null:
-
14022  {
-
14023  o->write_characters("null", 4);
-
14024  return;
-
14025  }
-
14026 
-
14027  default: // LCOV_EXCL_LINE
-
14028  assert(false); // LCOV_EXCL_LINE
-
14029  }
-
14030  }
-
14031 
-
14032  private:
-
14047  void dump_escaped(const string_t& s, const bool ensure_ascii)
-
14048  {
-
14049  std::uint32_t codepoint;
-
14050  std::uint8_t state = UTF8_ACCEPT;
-
14051  std::size_t bytes = 0; // number of bytes written to string_buffer
-
14052 
-
14053  // number of bytes written at the point of the last valid byte
-
14054  std::size_t bytes_after_last_accept = 0;
-
14055  std::size_t undumped_chars = 0;
-
14056 
-
14057  for (std::size_t i = 0; i < s.size(); ++i)
-
14058  {
-
14059  const auto byte = static_cast<uint8_t>(s[i]);
-
14060 
-
14061  switch (decode(state, codepoint, byte))
-
14062  {
-
14063  case UTF8_ACCEPT: // decode found a new code point
-
14064  {
-
14065  switch (codepoint)
-
14066  {
-
14067  case 0x08: // backspace
-
14068  {
-
14069  string_buffer[bytes++] = '\\';
-
14070  string_buffer[bytes++] = 'b';
-
14071  break;
-
14072  }
-
14073 
-
14074  case 0x09: // horizontal tab
-
14075  {
-
14076  string_buffer[bytes++] = '\\';
-
14077  string_buffer[bytes++] = 't';
-
14078  break;
-
14079  }
-
14080 
-
14081  case 0x0A: // newline
-
14082  {
-
14083  string_buffer[bytes++] = '\\';
-
14084  string_buffer[bytes++] = 'n';
-
14085  break;
-
14086  }
-
14087 
-
14088  case 0x0C: // formfeed
-
14089  {
-
14090  string_buffer[bytes++] = '\\';
-
14091  string_buffer[bytes++] = 'f';
-
14092  break;
-
14093  }
-
14094 
-
14095  case 0x0D: // carriage return
-
14096  {
-
14097  string_buffer[bytes++] = '\\';
-
14098  string_buffer[bytes++] = 'r';
-
14099  break;
-
14100  }
-
14101 
-
14102  case 0x22: // quotation mark
-
14103  {
-
14104  string_buffer[bytes++] = '\\';
-
14105  string_buffer[bytes++] = '\"';
-
14106  break;
-
14107  }
-
14108 
-
14109  case 0x5C: // reverse solidus
-
14110  {
-
14111  string_buffer[bytes++] = '\\';
-
14112  string_buffer[bytes++] = '\\';
-
14113  break;
-
14114  }
-
14115 
-
14116  default:
-
14117  {
-
14118  // escape control characters (0x00..0x1F) or, if
-
14119  // ensure_ascii parameter is used, non-ASCII characters
-
14120  if ((codepoint <= 0x1F) or (ensure_ascii and (codepoint >= 0x7F)))
-
14121  {
-
14122  if (codepoint <= 0xFFFF)
-
14123  {
-
14124  (std::snprintf)(string_buffer.data() + bytes, 7, "\\u%04x",
-
14125  static_cast<std::uint16_t>(codepoint));
-
14126  bytes += 6;
-
14127  }
-
14128  else
-
14129  {
-
14130  (std::snprintf)(string_buffer.data() + bytes, 13, "\\u%04x\\u%04x",
-
14131  static_cast<std::uint16_t>(0xD7C0u + (codepoint >> 10u)),
-
14132  static_cast<std::uint16_t>(0xDC00u + (codepoint & 0x3FFu)));
-
14133  bytes += 12;
-
14134  }
-
14135  }
-
14136  else
-
14137  {
-
14138  // copy byte to buffer (all previous bytes
-
14139  // been copied have in default case above)
-
14140  string_buffer[bytes++] = s[i];
-
14141  }
-
14142  break;
-
14143  }
-
14144  }
-
14145 
-
14146  // write buffer and reset index; there must be 13 bytes
-
14147  // left, as this is the maximal number of bytes to be
-
14148  // written ("\uxxxx\uxxxx\0") for one code point
-
14149  if (string_buffer.size() - bytes < 13)
-
14150  {
-
14151  o->write_characters(string_buffer.data(), bytes);
-
14152  bytes = 0;
-
14153  }
-
14154 
-
14155  // remember the byte position of this accept
-
14156  bytes_after_last_accept = bytes;
-
14157  undumped_chars = 0;
-
14158  break;
-
14159  }
-
14160 
-
14161  case UTF8_REJECT: // decode found invalid UTF-8 byte
-
14162  {
-
14163  switch (error_handler)
-
14164  {
- -
14166  {
-
14167  std::string sn(3, '\0');
-
14168  (std::snprintf)(&sn[0], sn.size(), "%.2X", byte);
-
14169  JSON_THROW(type_error::create(316, "invalid UTF-8 byte at index " + std::to_string(i) + ": 0x" + sn));
-
14170  }
-
14171 
- - -
14174  {
-
14175  // in case we saw this character the first time, we
-
14176  // would like to read it again, because the byte
-
14177  // may be OK for itself, but just not OK for the
-
14178  // previous sequence
-
14179  if (undumped_chars > 0)
-
14180  {
-
14181  --i;
-
14182  }
-
14183 
-
14184  // reset length buffer to the last accepted index;
-
14185  // thus removing/ignoring the invalid characters
-
14186  bytes = bytes_after_last_accept;
-
14187 
-
14188  if (error_handler == error_handler_t::replace)
-
14189  {
-
14190  // add a replacement character
-
14191  if (ensure_ascii)
-
14192  {
-
14193  string_buffer[bytes++] = '\\';
-
14194  string_buffer[bytes++] = 'u';
-
14195  string_buffer[bytes++] = 'f';
-
14196  string_buffer[bytes++] = 'f';
-
14197  string_buffer[bytes++] = 'f';
-
14198  string_buffer[bytes++] = 'd';
-
14199  }
-
14200  else
-
14201  {
-
14202  string_buffer[bytes++] = detail::binary_writer<BasicJsonType, char>::to_char_type('\xEF');
-
14203  string_buffer[bytes++] = detail::binary_writer<BasicJsonType, char>::to_char_type('\xBF');
-
14204  string_buffer[bytes++] = detail::binary_writer<BasicJsonType, char>::to_char_type('\xBD');
-
14205  }
-
14206 
-
14207  // write buffer and reset index; there must be 13 bytes
-
14208  // left, as this is the maximal number of bytes to be
-
14209  // written ("\uxxxx\uxxxx\0") for one code point
-
14210  if (string_buffer.size() - bytes < 13)
-
14211  {
-
14212  o->write_characters(string_buffer.data(), bytes);
-
14213  bytes = 0;
-
14214  }
-
14215 
-
14216  bytes_after_last_accept = bytes;
-
14217  }
-
14218 
-
14219  undumped_chars = 0;
-
14220 
-
14221  // continue processing the string
-
14222  state = UTF8_ACCEPT;
-
14223  break;
-
14224  }
-
14225 
-
14226  default: // LCOV_EXCL_LINE
-
14227  assert(false); // LCOV_EXCL_LINE
-
14228  }
-
14229  break;
-
14230  }
-
14231 
-
14232  default: // decode found yet incomplete multi-byte code point
-
14233  {
-
14234  if (not ensure_ascii)
-
14235  {
-
14236  // code point will not be escaped - copy byte to buffer
-
14237  string_buffer[bytes++] = s[i];
-
14238  }
-
14239  ++undumped_chars;
-
14240  break;
-
14241  }
-
14242  }
-
14243  }
-
14244 
-
14245  // we finished processing the string
-
14246  if (JSON_HEDLEY_LIKELY(state == UTF8_ACCEPT))
-
14247  {
-
14248  // write buffer
-
14249  if (bytes > 0)
-
14250  {
-
14251  o->write_characters(string_buffer.data(), bytes);
-
14252  }
-
14253  }
-
14254  else
-
14255  {
-
14256  // we finish reading, but do not accept: string was incomplete
-
14257  switch (error_handler)
-
14258  {
- -
14260  {
-
14261  std::string sn(3, '\0');
-
14262  (std::snprintf)(&sn[0], sn.size(), "%.2X", static_cast<std::uint8_t>(s.back()));
-
14263  JSON_THROW(type_error::create(316, "incomplete UTF-8 string; last byte: 0x" + sn));
-
14264  }
-
14265 
- -
14267  {
-
14268  // write all accepted bytes
-
14269  o->write_characters(string_buffer.data(), bytes_after_last_accept);
-
14270  break;
-
14271  }
-
14272 
- -
14274  {
-
14275  // write all accepted bytes
-
14276  o->write_characters(string_buffer.data(), bytes_after_last_accept);
-
14277  // add a replacement character
-
14278  if (ensure_ascii)
-
14279  {
-
14280  o->write_characters("\\ufffd", 6);
-
14281  }
-
14282  else
-
14283  {
-
14284  o->write_characters("\xEF\xBF\xBD", 3);
-
14285  }
-
14286  break;
-
14287  }
-
14288 
-
14289  default: // LCOV_EXCL_LINE
-
14290  assert(false); // LCOV_EXCL_LINE
-
14291  }
-
14292  }
-
14293  }
-
14294 
-
14303  inline unsigned int count_digits(number_unsigned_t x) noexcept
-
14304  {
-
14305  unsigned int n_digits = 1;
-
14306  for (;;)
-
14307  {
-
14308  if (x < 10)
-
14309  {
-
14310  return n_digits;
-
14311  }
-
14312  if (x < 100)
-
14313  {
-
14314  return n_digits + 1;
-
14315  }
-
14316  if (x < 1000)
-
14317  {
-
14318  return n_digits + 2;
-
14319  }
-
14320  if (x < 10000)
-
14321  {
-
14322  return n_digits + 3;
-
14323  }
-
14324  x = x / 10000u;
-
14325  n_digits += 4;
-
14326  }
-
14327  }
-
14328 
-
14338  template<typename NumberType, detail::enable_if_t<
-
14339  std::is_same<NumberType, number_unsigned_t>::value or
-
14340  std::is_same<NumberType, number_integer_t>::value,
-
14341  int> = 0>
-
14342  void dump_integer(NumberType x)
-
14343  {
-
14344  static constexpr std::array<std::array<char, 2>, 100> digits_to_99
-
14345  {
-
14346  {
-
14347  {{'0', '0'}}, {{'0', '1'}}, {{'0', '2'}}, {{'0', '3'}}, {{'0', '4'}}, {{'0', '5'}}, {{'0', '6'}}, {{'0', '7'}}, {{'0', '8'}}, {{'0', '9'}},
-
14348  {{'1', '0'}}, {{'1', '1'}}, {{'1', '2'}}, {{'1', '3'}}, {{'1', '4'}}, {{'1', '5'}}, {{'1', '6'}}, {{'1', '7'}}, {{'1', '8'}}, {{'1', '9'}},
-
14349  {{'2', '0'}}, {{'2', '1'}}, {{'2', '2'}}, {{'2', '3'}}, {{'2', '4'}}, {{'2', '5'}}, {{'2', '6'}}, {{'2', '7'}}, {{'2', '8'}}, {{'2', '9'}},
-
14350  {{'3', '0'}}, {{'3', '1'}}, {{'3', '2'}}, {{'3', '3'}}, {{'3', '4'}}, {{'3', '5'}}, {{'3', '6'}}, {{'3', '7'}}, {{'3', '8'}}, {{'3', '9'}},
-
14351  {{'4', '0'}}, {{'4', '1'}}, {{'4', '2'}}, {{'4', '3'}}, {{'4', '4'}}, {{'4', '5'}}, {{'4', '6'}}, {{'4', '7'}}, {{'4', '8'}}, {{'4', '9'}},
-
14352  {{'5', '0'}}, {{'5', '1'}}, {{'5', '2'}}, {{'5', '3'}}, {{'5', '4'}}, {{'5', '5'}}, {{'5', '6'}}, {{'5', '7'}}, {{'5', '8'}}, {{'5', '9'}},
-
14353  {{'6', '0'}}, {{'6', '1'}}, {{'6', '2'}}, {{'6', '3'}}, {{'6', '4'}}, {{'6', '5'}}, {{'6', '6'}}, {{'6', '7'}}, {{'6', '8'}}, {{'6', '9'}},
-
14354  {{'7', '0'}}, {{'7', '1'}}, {{'7', '2'}}, {{'7', '3'}}, {{'7', '4'}}, {{'7', '5'}}, {{'7', '6'}}, {{'7', '7'}}, {{'7', '8'}}, {{'7', '9'}},
-
14355  {{'8', '0'}}, {{'8', '1'}}, {{'8', '2'}}, {{'8', '3'}}, {{'8', '4'}}, {{'8', '5'}}, {{'8', '6'}}, {{'8', '7'}}, {{'8', '8'}}, {{'8', '9'}},
-
14356  {{'9', '0'}}, {{'9', '1'}}, {{'9', '2'}}, {{'9', '3'}}, {{'9', '4'}}, {{'9', '5'}}, {{'9', '6'}}, {{'9', '7'}}, {{'9', '8'}}, {{'9', '9'}},
-
14357  }
-
14358  };
-
14359 
-
14360  // special case for "0"
-
14361  if (x == 0)
-
14362  {
-
14363  o->write_character('0');
-
14364  return;
-
14365  }
-
14366 
-
14367  // use a pointer to fill the buffer
-
14368  auto buffer_ptr = number_buffer.begin();
-
14369 
-
14370  const bool is_negative = std::is_same<NumberType, number_integer_t>::value and not(x >= 0); // see issue #755
-
14371  number_unsigned_t abs_value;
-
14372 
-
14373  unsigned int n_chars;
-
14374 
-
14375  if (is_negative)
-
14376  {
-
14377  *buffer_ptr = '-';
-
14378  abs_value = remove_sign(x);
-
14379 
-
14380  // account one more byte for the minus sign
-
14381  n_chars = 1 + count_digits(abs_value);
-
14382  }
-
14383  else
-
14384  {
-
14385  abs_value = static_cast<number_unsigned_t>(x);
-
14386  n_chars = count_digits(abs_value);
-
14387  }
-
14388 
-
14389  // spare 1 byte for '\0'
-
14390  assert(n_chars < number_buffer.size() - 1);
-
14391 
-
14392  // jump to the end to generate the string from backward
-
14393  // so we later avoid reversing the result
-
14394  buffer_ptr += n_chars;
-
14395 
-
14396  // Fast int2ascii implementation inspired by "Fastware" talk by Andrei Alexandrescu
-
14397  // See: https://www.youtube.com/watch?v=o4-CwDo2zpg
-
14398  while (abs_value >= 100)
-
14399  {
-
14400  const auto digits_index = static_cast<unsigned>((abs_value % 100));
-
14401  abs_value /= 100;
-
14402  *(--buffer_ptr) = digits_to_99[digits_index][1];
-
14403  *(--buffer_ptr) = digits_to_99[digits_index][0];
-
14404  }
-
14405 
-
14406  if (abs_value >= 10)
-
14407  {
-
14408  const auto digits_index = static_cast<unsigned>(abs_value);
-
14409  *(--buffer_ptr) = digits_to_99[digits_index][1];
-
14410  *(--buffer_ptr) = digits_to_99[digits_index][0];
-
14411  }
-
14412  else
-
14413  {
-
14414  *(--buffer_ptr) = static_cast<char>('0' + abs_value);
-
14415  }
-
14416 
-
14417  o->write_characters(number_buffer.data(), n_chars);
-
14418  }
-
14419 
-
14428  void dump_float(number_float_t x)
-
14429  {
-
14430  // NaN / inf
-
14431  if (not std::isfinite(x))
-
14432  {
-
14433  o->write_characters("null", 4);
-
14434  return;
-
14435  }
-
14436 
-
14437  // If number_float_t is an IEEE-754 single or double precision number,
-
14438  // use the Grisu2 algorithm to produce short numbers which are
-
14439  // guaranteed to round-trip, using strtof and strtod, resp.
-
14440  //
-
14441  // NB: The test below works if <long double> == <double>.
-
14442  static constexpr bool is_ieee_single_or_double
-
14443  = (std::numeric_limits<number_float_t>::is_iec559 and std::numeric_limits<number_float_t>::digits == 24 and std::numeric_limits<number_float_t>::max_exponent == 128) or
-
14444  (std::numeric_limits<number_float_t>::is_iec559 and std::numeric_limits<number_float_t>::digits == 53 and std::numeric_limits<number_float_t>::max_exponent == 1024);
-
14445 
-
14446  dump_float(x, std::integral_constant<bool, is_ieee_single_or_double>());
-
14447  }
-
14448 
-
14449  void dump_float(number_float_t x, std::true_type /*is_ieee_single_or_double*/)
-
14450  {
-
14451  char* begin = number_buffer.data();
-
14452  char* end = ::nlohmann::detail::to_chars(begin, begin + number_buffer.size(), x);
-
14453 
-
14454  o->write_characters(begin, static_cast<size_t>(end - begin));
-
14455  }
-
14456 
-
14457  void dump_float(number_float_t x, std::false_type /*is_ieee_single_or_double*/)
-
14458  {
-
14459  // get number of digits for a float -> text -> float round-trip
-
14460  static constexpr auto d = std::numeric_limits<number_float_t>::max_digits10;
-
14461 
-
14462  // the actual conversion
-
14463  std::ptrdiff_t len = (std::snprintf)(number_buffer.data(), number_buffer.size(), "%.*g", d, x);
-
14464 
-
14465  // negative value indicates an error
-
14466  assert(len > 0);
-
14467  // check if buffer was large enough
-
14468  assert(static_cast<std::size_t>(len) < number_buffer.size());
-
14469 
-
14470  // erase thousands separator
-
14471  if (thousands_sep != '\0')
-
14472  {
-
14473  const auto end = std::remove(number_buffer.begin(),
-
14474  number_buffer.begin() + len, thousands_sep);
-
14475  std::fill(end, number_buffer.end(), '\0');
-
14476  assert((end - number_buffer.begin()) <= len);
-
14477  len = (end - number_buffer.begin());
-
14478  }
-
14479 
-
14480  // convert decimal point to '.'
-
14481  if (decimal_point != '\0' and decimal_point != '.')
-
14482  {
-
14483  const auto dec_pos = std::find(number_buffer.begin(), number_buffer.end(), decimal_point);
-
14484  if (dec_pos != number_buffer.end())
-
14485  {
-
14486  *dec_pos = '.';
-
14487  }
-
14488  }
-
14489 
-
14490  o->write_characters(number_buffer.data(), static_cast<std::size_t>(len));
-
14491 
-
14492  // determine if need to append ".0"
-
14493  const bool value_is_int_like =
-
14494  std::none_of(number_buffer.begin(), number_buffer.begin() + len + 1,
-
14495  [](char c)
-
14496  {
-
14497  return c == '.' or c == 'e';
-
14498  });
-
14499 
-
14500  if (value_is_int_like)
-
14501  {
-
14502  o->write_characters(".0", 2);
-
14503  }
-
14504  }
-
14505 
-
14527  static std::uint8_t decode(std::uint8_t& state, std::uint32_t& codep, const std::uint8_t byte) noexcept
-
14528  {
-
14529  static const std::array<std::uint8_t, 400> utf8d =
-
14530  {
-
14531  {
-
14532  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 00..1F
-
14533  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 20..3F
-
14534  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 40..5F
-
14535  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 60..7F
-
14536  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, // 80..9F
-
14537  7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, // A0..BF
-
14538  8, 8, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, // C0..DF
-
14539  0xA, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, // E0..EF
-
14540  0xB, 0x6, 0x6, 0x6, 0x5, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, // F0..FF
-
14541  0x0, 0x1, 0x2, 0x3, 0x5, 0x8, 0x7, 0x1, 0x1, 0x1, 0x4, 0x6, 0x1, 0x1, 0x1, 0x1, // s0..s0
-
14542  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, // s1..s2
-
14543  1, 2, 1, 1, 1, 1, 1, 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, // s3..s4
-
14544  1, 2, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 3, 1, 1, 1, 1, 1, 1, // s5..s6
-
14545  1, 3, 1, 1, 1, 1, 1, 3, 1, 3, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 // s7..s8
-
14546  }
-
14547  };
-
14548 
-
14549  const std::uint8_t type = utf8d[byte];
-
14550 
-
14551  codep = (state != UTF8_ACCEPT)
-
14552  ? (byte & 0x3fu) | (codep << 6u)
-
14553  : (0xFFu >> type) & (byte);
-
14554 
-
14555  state = utf8d[256u + state * 16u + type];
-
14556  return state;
-
14557  }
-
14558 
-
14559  /*
-
14560  * Overload to make the compiler happy while it is instantiating
-
14561  * dump_integer for number_unsigned_t.
-
14562  * Must never be called.
-
14563  */
-
14564  number_unsigned_t remove_sign(number_unsigned_t x)
-
14565  {
-
14566  assert(false); // LCOV_EXCL_LINE
-
14567  return x; // LCOV_EXCL_LINE
-
14568  }
-
14569 
-
14570  /*
-
14571  * Helper function for dump_integer
-
14572  *
-
14573  * This function takes a negative signed integer and returns its absolute
-
14574  * value as unsigned integer. The plus/minus shuffling is necessary as we can
-
14575  * not directly remove the sign of an arbitrary signed integer as the
-
14576  * absolute values of INT_MIN and INT_MAX are usually not the same. See
-
14577  * #1708 for details.
-
14578  */
-
14579  inline number_unsigned_t remove_sign(number_integer_t x) noexcept
-
14580  {
-
14581  assert(x < 0 and x < (std::numeric_limits<number_integer_t>::max)());
-
14582  return static_cast<number_unsigned_t>(-(x + 1)) + 1;
-
14583  }
-
14584 
-
14585  private:
-
14587  output_adapter_t<char> o = nullptr;
-
14588 
-
14590  std::array<char, 64> number_buffer{{}};
-
14591 
-
14593  const std::lconv* loc = nullptr;
-
14595  const char thousands_sep = '\0';
-
14597  const char decimal_point = '\0';
-
14598 
-
14600  std::array<char, 512> string_buffer{{}};
-
14601 
-
14603  const char indent_char;
-
14605  string_t indent_string;
-
14606 
-
14608  const error_handler_t error_handler;
-
14609 };
-
14610 } // namespace detail
-
14611 } // namespace nlohmann
-
14612 
-
14613 // #include <nlohmann/detail/value_t.hpp>
-
14614 
-
14615 // #include <nlohmann/json_fwd.hpp>
-
14616 
-
14617 
-
14623 namespace nlohmann
-
14624 {
-
14625 
- -
14708 class basic_json
-
14709 {
-
14710  private:
-
14711  template<detail::value_t> friend struct detail::external_constructor;
-
14712  friend ::nlohmann::json_pointer<basic_json>;
-
14713  friend ::nlohmann::detail::parser<basic_json>;
-
14714  friend ::nlohmann::detail::serializer<basic_json>;
-
14715  template<typename BasicJsonType>
-
14716  friend class ::nlohmann::detail::iter_impl;
-
14717  template<typename BasicJsonType, typename CharType>
-
14718  friend class ::nlohmann::detail::binary_writer;
-
14719  template<typename BasicJsonType, typename SAX>
-
14720  friend class ::nlohmann::detail::binary_reader;
-
14721  template<typename BasicJsonType>
-
14722  friend class ::nlohmann::detail::json_sax_dom_parser;
-
14723  template<typename BasicJsonType>
-
14724  friend class ::nlohmann::detail::json_sax_dom_callback_parser;
-
14725 
-
14727  using basic_json_t = NLOHMANN_BASIC_JSON_TPL;
-
14728 
-
14729  // convenience aliases for types residing in namespace detail;
- - -
14732 
- -
14734  template<typename BasicJsonType>
- -
14736  template<typename BasicJsonType>
- -
14738  template<typename Iterator>
- - -
14741 
-
14742  template<typename CharType>
-
14743  using output_adapter_t = ::nlohmann::detail::output_adapter_t<CharType>;
-
14744 
- -
14746  template<typename CharType> using binary_writer = ::nlohmann::detail::binary_writer<basic_json, CharType>;
-
14747 
- -
14749 
-
14750  public:
- - -
14754  template<typename T, typename SFINAE>
-
14755  using json_serializer = JSONSerializer<T, SFINAE>;
- -
14759  using initializer_list_t = std::initializer_list<detail::json_ref<basic_json>>;
-
14760 
- - -
14764 
-
14766  // exceptions //
-
14768 
-
14772 
- - - - - - -
14785 
-
14787 
-
14788 
-
14790  // container types //
-
14792 
-
14797 
- -
14800 
- -
14804  using const_reference = const value_type&;
-
14805 
-
14807  using difference_type = std::ptrdiff_t;
-
14809  using size_type = std::size_t;
-
14810 
-
14812  using allocator_type = AllocatorType<basic_json>;
-
14813 
-
14815  using pointer = typename std::allocator_traits<allocator_type>::pointer;
-
14817  using const_pointer = typename std::allocator_traits<allocator_type>::const_pointer;
-
14818 
- - - - -
14827 
-
14829 
-
14830 
- -
14835  {
-
14836  return allocator_type();
-
14837  }
-
14838 
- -
14866  static basic_json meta()
-
14867  {
-
14868  basic_json result;
-
14869 
-
14870  result["copyright"] = "(C) 2013-2017 Niels Lohmann";
-
14871  result["name"] = "JSON for Modern C++";
-
14872  result["url"] = "https://github.com/nlohmann/json";
-
14873  result["version"]["string"] =
- - - -
14877  result["version"]["major"] = NLOHMANN_JSON_VERSION_MAJOR;
-
14878  result["version"]["minor"] = NLOHMANN_JSON_VERSION_MINOR;
-
14879  result["version"]["patch"] = NLOHMANN_JSON_VERSION_PATCH;
-
14880 
-
14881 #ifdef _WIN32
-
14882  result["platform"] = "win32";
-
14883 #elif defined __linux__
-
14884  result["platform"] = "linux";
-
14885 #elif defined __APPLE__
-
14886  result["platform"] = "apple";
-
14887 #elif defined __unix__
-
14888  result["platform"] = "unix";
-
14889 #else
-
14890  result["platform"] = "unknown";
-
14891 #endif
-
14892 
-
14893 #if defined(__ICC) || defined(__INTEL_COMPILER)
-
14894  result["compiler"] = {{"family", "icc"}, {"version", __INTEL_COMPILER}};
-
14895 #elif defined(__clang__)
-
14896  result["compiler"] = {{"family", "clang"}, {"version", __clang_version__}};
-
14897 #elif defined(__GNUC__) || defined(__GNUG__)
-
14898  result["compiler"] = {{"family", "gcc"}, {"version", std::to_string(__GNUC__) + "." + std::to_string(__GNUC_MINOR__) + "." + std::to_string(__GNUC_PATCHLEVEL__)}};
-
14899 #elif defined(__HP_cc) || defined(__HP_aCC)
-
14900  result["compiler"] = "hp"
-
14901 #elif defined(__IBMCPP__)
-
14902  result["compiler"] = {{"family", "ilecpp"}, {"version", __IBMCPP__}};
-
14903 #elif defined(_MSC_VER)
-
14904  result["compiler"] = {{"family", "msvc"}, {"version", _MSC_VER}};
-
14905 #elif defined(__PGI)
-
14906  result["compiler"] = {{"family", "pgcpp"}, {"version", __PGI}};
-
14907 #elif defined(__SUNPRO_CC)
-
14908  result["compiler"] = {{"family", "sunpro"}, {"version", __SUNPRO_CC}};
-
14909 #else
-
14910  result["compiler"] = {{"family", "unknown"}, {"version", "unknown"}};
-
14911 #endif
-
14912 
-
14913 #ifdef __cplusplus
-
14914  result["compiler"]["c++"] = std::to_string(__cplusplus);
-
14915 #else
-
14916  result["compiler"]["c++"] = "unknown";
-
14917 #endif
-
14918  return result;
-
14919  }
-
14920 
-
14921 
-
14923  // JSON value data types //
-
14925 
-
14930 
-
14931 #if defined(JSON_HAS_CPP_14)
-
14932  // Use transparent comparator if possible, combined with perfect forwarding
-
14933  // on find() and count() calls prevents unnecessary string construction.
-
14934  using object_comparator_t = std::less<>;
-
14935 #else
-
14936  using object_comparator_t = std::less<StringType>;
-
14937 #endif
-
14938 
-
15022  using object_t = ObjectType<StringType,
-
15023  basic_json,
- -
15025  AllocatorType<std::pair<const StringType,
- -
15027 
-
15072  using array_t = ArrayType<basic_json, AllocatorType<basic_json>>;
-
15073 
-
15125  using string_t = StringType;
-
15126 
-
15151  using boolean_t = BooleanType;
-
15152 
-
15223  using number_integer_t = NumberIntegerType;
-
15224 
-
15294  using number_unsigned_t = NumberUnsignedType;
-
15295 
-
15362  using number_float_t = NumberFloatType;
-
15363 
-
15365 
-
15366  private:
-
15367 
-
15369  template<typename T, typename... Args>
- -
15371  static T* create(Args&& ... args)
-
15372  {
-
15373  AllocatorType<T> alloc;
-
15374  using AllocatorTraits = std::allocator_traits<AllocatorType<T>>;
-
15375 
-
15376  auto deleter = [&](T * object)
-
15377  {
-
15378  AllocatorTraits::deallocate(alloc, object, 1);
-
15379  };
-
15380  std::unique_ptr<T, decltype(deleter)> object(AllocatorTraits::allocate(alloc, 1), deleter);
-
15381  AllocatorTraits::construct(alloc, object.get(), std::forward<Args>(args)...);
-
15382  assert(object != nullptr);
-
15383  return object.release();
-
15384  }
-
15385 
-
15387  // JSON value storage //
-
15389 
-
15414  union json_value
-
15415  {
-
15417  object_t* object;
-
15419  array_t* array;
-
15421  string_t* string;
-
15423  boolean_t boolean;
-
15425  number_integer_t number_integer;
-
15427  number_unsigned_t number_unsigned;
-
15429  number_float_t number_float;
-
15430 
-
15432  json_value() = default;
-
15434  json_value(boolean_t v) noexcept : boolean(v) {}
-
15436  json_value(number_integer_t v) noexcept : number_integer(v) {}
-
15438  json_value(number_unsigned_t v) noexcept : number_unsigned(v) {}
-
15440  json_value(number_float_t v) noexcept : number_float(v) {}
-
15442  json_value(value_t t)
-
15443  {
-
15444  switch (t)
-
15445  {
-
15446  case value_t::object:
-
15447  {
-
15448  object = create<object_t>();
-
15449  break;
-
15450  }
-
15451 
-
15452  case value_t::array:
-
15453  {
-
15454  array = create<array_t>();
-
15455  break;
-
15456  }
-
15457 
-
15458  case value_t::string:
-
15459  {
-
15460  string = create<string_t>("");
-
15461  break;
-
15462  }
-
15463 
-
15464  case value_t::boolean:
-
15465  {
-
15466  boolean = boolean_t(false);
-
15467  break;
-
15468  }
-
15469 
- -
15471  {
- -
15473  break;
-
15474  }
-
15475 
- -
15477  {
- -
15479  break;
-
15480  }
-
15481 
-
15482  case value_t::number_float:
-
15483  {
- -
15485  break;
-
15486  }
-
15487 
-
15488  case value_t::null:
-
15489  {
-
15490  object = nullptr; // silence warning, see #821
-
15491  break;
-
15492  }
-
15493 
-
15494  default:
-
15495  {
-
15496  object = nullptr; // silence warning, see #821
- -
15498  {
-
15499  JSON_THROW(other_error::create(500, "961c151d2e87f2686a955a9be24d316f1362bf21 3.7.3")); // LCOV_EXCL_LINE
-
15500  }
-
15501  break;
-
15502  }
-
15503  }
-
15504  }
-
15505 
-
15507  json_value(const string_t& value)
-
15508  {
-
15509  string = create<string_t>(value);
-
15510  }
-
15511 
-
15513  json_value(string_t&& value)
-
15514  {
-
15515  string = create<string_t>(std::move(value));
-
15516  }
-
15517 
-
15519  json_value(const object_t& value)
-
15520  {
-
15521  object = create<object_t>(value);
-
15522  }
-
15523 
-
15525  json_value(object_t&& value)
-
15526  {
-
15527  object = create<object_t>(std::move(value));
-
15528  }
-
15529 
-
15531  json_value(const array_t& value)
-
15532  {
-
15533  array = create<array_t>(value);
-
15534  }
-
15535 
-
15537  json_value(array_t&& value)
-
15538  {
-
15539  array = create<array_t>(std::move(value));
-
15540  }
-
15541 
-
15542  void destroy(value_t t) noexcept
-
15543  {
-
15544  // flatten the current json_value to a heap-allocated stack
-
15545  std::vector<basic_json> stack;
-
15546 
-
15547  // move the top-level items to stack
-
15548  if (t == value_t::array)
-
15549  {
-
15550  stack.reserve(array->size());
-
15551  std::move(array->begin(), array->end(), std::back_inserter(stack));
-
15552  }
-
15553  else if (t == value_t::object)
-
15554  {
-
15555  stack.reserve(object->size());
-
15556  for (auto&& it : *object)
-
15557  {
-
15558  stack.push_back(std::move(it.second));
-
15559  }
-
15560  }
-
15561 
-
15562  while (not stack.empty())
-
15563  {
-
15564  // move the last item to local variable to be processed
-
15565  basic_json current_item(std::move(stack.back()));
-
15566  stack.pop_back();
-
15567 
-
15568  // if current_item is array/object, move
-
15569  // its children to the stack to be processed later
-
15570  if (current_item.is_array())
-
15571  {
-
15572  std::move(current_item.m_value.array->begin(), current_item.m_value.array->end(),
-
15573  std::back_inserter(stack));
-
15574 
-
15575  current_item.m_value.array->clear();
-
15576  }
-
15577  else if (current_item.is_object())
-
15578  {
-
15579  for (auto&& it : *current_item.m_value.object)
-
15580  {
-
15581  stack.push_back(std::move(it.second));
-
15582  }
-
15583 
-
15584  current_item.m_value.object->clear();
-
15585  }
-
15586 
-
15587  // it's now safe that current_item get destructed
-
15588  // since it doesn't have any children
-
15589  }
-
15590 
-
15591  switch (t)
-
15592  {
-
15593  case value_t::object:
-
15594  {
-
15595  AllocatorType<object_t> alloc;
-
15596  std::allocator_traits<decltype(alloc)>::destroy(alloc, object);
-
15597  std::allocator_traits<decltype(alloc)>::deallocate(alloc, object, 1);
-
15598  break;
-
15599  }
-
15600 
-
15601  case value_t::array:
-
15602  {
-
15603  AllocatorType<array_t> alloc;
-
15604  std::allocator_traits<decltype(alloc)>::destroy(alloc, array);
-
15605  std::allocator_traits<decltype(alloc)>::deallocate(alloc, array, 1);
-
15606  break;
-
15607  }
-
15608 
-
15609  case value_t::string:
-
15610  {
-
15611  AllocatorType<string_t> alloc;
-
15612  std::allocator_traits<decltype(alloc)>::destroy(alloc, string);
-
15613  std::allocator_traits<decltype(alloc)>::deallocate(alloc, string, 1);
-
15614  break;
-
15615  }
-
15616 
-
15617  default:
-
15618  {
-
15619  break;
-
15620  }
-
15621  }
-
15622  }
-
15623  };
-
15624 
-
15634  void assert_invariant() const noexcept
-
15635  {
-
15636  assert(m_type != value_t::object or m_value.object != nullptr);
-
15637  assert(m_type != value_t::array or m_value.array != nullptr);
-
15638  assert(m_type != value_t::string or m_value.string != nullptr);
-
15639  }
-
15640 
-
15641  public:
-
15643  // JSON parser callback //
-
15645 
- -
15662 
- -
15713 
-
15715  // constructors //
-
15717 
-
15722 
- -
15753  : m_type(v), m_value(v)
-
15754  {
-
15755  assert_invariant();
-
15756  }
-
15757 
-
15776  basic_json(std::nullptr_t = nullptr) noexcept
-
15777  : basic_json(value_t::null)
-
15778  {
-
15779  assert_invariant();
-
15780  }
-
15781 
-
15839  template <typename CompatibleType,
-
15840  typename U = detail::uncvref_t<CompatibleType>,
- - -
15843  basic_json(CompatibleType && val) noexcept(noexcept(
-
15844  JSONSerializer<U>::to_json(std::declval<basic_json_t&>(),
-
15845  std::forward<CompatibleType>(val))))
-
15846  {
-
15847  JSONSerializer<U>::to_json(*this, std::forward<CompatibleType>(val));
-
15848  assert_invariant();
-
15849  }
-
15850 
-
15877  template <typename BasicJsonType,
- -
15879  detail::is_basic_json<BasicJsonType>::value and not std::is_same<basic_json, BasicJsonType>::value, int> = 0>
-
15880  basic_json(const BasicJsonType& val)
-
15881  {
-
15882  using other_boolean_t = typename BasicJsonType::boolean_t;
-
15883  using other_number_float_t = typename BasicJsonType::number_float_t;
-
15884  using other_number_integer_t = typename BasicJsonType::number_integer_t;
-
15885  using other_number_unsigned_t = typename BasicJsonType::number_unsigned_t;
-
15886  using other_string_t = typename BasicJsonType::string_t;
-
15887  using other_object_t = typename BasicJsonType::object_t;
-
15888  using other_array_t = typename BasicJsonType::array_t;
-
15889 
-
15890  switch (val.type())
-
15891  {
-
15892  case value_t::boolean:
-
15893  JSONSerializer<other_boolean_t>::to_json(*this, val.template get<other_boolean_t>());
-
15894  break;
-
15895  case value_t::number_float:
-
15896  JSONSerializer<other_number_float_t>::to_json(*this, val.template get<other_number_float_t>());
-
15897  break;
- -
15899  JSONSerializer<other_number_integer_t>::to_json(*this, val.template get<other_number_integer_t>());
-
15900  break;
- -
15902  JSONSerializer<other_number_unsigned_t>::to_json(*this, val.template get<other_number_unsigned_t>());
-
15903  break;
-
15904  case value_t::string:
-
15905  JSONSerializer<other_string_t>::to_json(*this, val.template get_ref<const other_string_t&>());
-
15906  break;
-
15907  case value_t::object:
-
15908  JSONSerializer<other_object_t>::to_json(*this, val.template get_ref<const other_object_t&>());
-
15909  break;
-
15910  case value_t::array:
-
15911  JSONSerializer<other_array_t>::to_json(*this, val.template get_ref<const other_array_t&>());
-
15912  break;
-
15913  case value_t::null:
-
15914  *this = nullptr;
-
15915  break;
-
15916  case value_t::discarded:
-
15917  m_type = value_t::discarded;
-
15918  break;
-
15919  default: // LCOV_EXCL_LINE
-
15920  assert(false); // LCOV_EXCL_LINE
-
15921  }
-
15922  assert_invariant();
-
15923  }
-
15924 
- -
16000  bool type_deduction = true,
-
16001  value_t manual_type = value_t::array)
-
16002  {
-
16003  // check if each element is an array with two elements whose first
-
16004  // element is a string
-
16005  bool is_an_object = std::all_of(init.begin(), init.end(),
-
16006  [](const detail::json_ref<basic_json>& element_ref)
-
16007  {
-
16008  return element_ref->is_array() and element_ref->size() == 2 and (*element_ref)[0].is_string();
-
16009  });
-
16010 
-
16011  // adjust type if type deduction is not wanted
-
16012  if (not type_deduction)
-
16013  {
-
16014  // if array is wanted, do not create an object though possible
-
16015  if (manual_type == value_t::array)
-
16016  {
-
16017  is_an_object = false;
-
16018  }
-
16019 
-
16020  // if object is wanted but impossible, throw an exception
-
16021  if (JSON_HEDLEY_UNLIKELY(manual_type == value_t::object and not is_an_object))
-
16022  {
-
16023  JSON_THROW(type_error::create(301, "cannot create object from initializer list"));
-
16024  }
-
16025  }
-
16026 
-
16027  if (is_an_object)
-
16028  {
-
16029  // the initializer list is a list of pairs -> create object
-
16030  m_type = value_t::object;
-
16031  m_value = value_t::object;
-
16032 
-
16033  std::for_each(init.begin(), init.end(), [this](const detail::json_ref<basic_json>& element_ref)
-
16034  {
-
16035  auto element = element_ref.moved_or_copied();
-
16036  m_value.object->emplace(
-
16037  std::move(*((*element.m_value.array)[0].m_value.string)),
-
16038  std::move((*element.m_value.array)[1]));
-
16039  });
-
16040  }
-
16041  else
-
16042  {
-
16043  // the initializer list describes an array -> create array
-
16044  m_type = value_t::array;
-
16045  m_value.array = create<array_t>(init.begin(), init.end());
-
16046  }
-
16047 
-
16048  assert_invariant();
-
16049  }
-
16050 
- - -
16090  {
-
16091  return basic_json(init, false, value_t::array);
-
16092  }
-
16093 
- - -
16134  {
-
16135  return basic_json(init, false, value_t::object);
-
16136  }
-
16137 
- -
16161  : m_type(value_t::array)
-
16162  {
-
16163  m_value.array = create<array_t>(cnt, val);
-
16164  assert_invariant();
-
16165  }
-
16166 
-
16222  template<class InputIT, typename std::enable_if<
-
16223  std::is_same<InputIT, typename basic_json_t::iterator>::value or
-
16224  std::is_same<InputIT, typename basic_json_t::const_iterator>::value, int>::type = 0>
-
16225  basic_json(InputIT first, InputIT last)
-
16226  {
-
16227  assert(first.m_object != nullptr);
-
16228  assert(last.m_object != nullptr);
-
16229 
-
16230  // make sure iterator fits the current value
-
16231  if (JSON_HEDLEY_UNLIKELY(first.m_object != last.m_object))
-
16232  {
-
16233  JSON_THROW(invalid_iterator::create(201, "iterators are not compatible"));
-
16234  }
-
16235 
-
16236  // copy type from first iterator
-
16237  m_type = first.m_object->m_type;
-
16238 
-
16239  // check if iterator range is complete for primitive values
-
16240  switch (m_type)
-
16241  {
-
16242  case value_t::boolean:
-
16243  case value_t::number_float:
- - -
16246  case value_t::string:
-
16247  {
-
16248  if (JSON_HEDLEY_UNLIKELY(not first.m_it.primitive_iterator.is_begin()
-
16249  or not last.m_it.primitive_iterator.is_end()))
-
16250  {
-
16251  JSON_THROW(invalid_iterator::create(204, "iterators out of range"));
-
16252  }
-
16253  break;
-
16254  }
-
16255 
-
16256  default:
-
16257  break;
-
16258  }
-
16259 
-
16260  switch (m_type)
-
16261  {
- -
16263  {
-
16264  m_value.number_integer = first.m_object->m_value.number_integer;
-
16265  break;
-
16266  }
-
16267 
- -
16269  {
-
16270  m_value.number_unsigned = first.m_object->m_value.number_unsigned;
-
16271  break;
-
16272  }
-
16273 
-
16274  case value_t::number_float:
-
16275  {
-
16276  m_value.number_float = first.m_object->m_value.number_float;
-
16277  break;
-
16278  }
-
16279 
-
16280  case value_t::boolean:
-
16281  {
-
16282  m_value.boolean = first.m_object->m_value.boolean;
-
16283  break;
-
16284  }
-
16285 
-
16286  case value_t::string:
-
16287  {
-
16288  m_value = *first.m_object->m_value.string;
-
16289  break;
-
16290  }
-
16291 
-
16292  case value_t::object:
-
16293  {
-
16294  m_value.object = create<object_t>(first.m_it.object_iterator,
-
16295  last.m_it.object_iterator);
-
16296  break;
-
16297  }
-
16298 
-
16299  case value_t::array:
-
16300  {
-
16301  m_value.array = create<array_t>(first.m_it.array_iterator,
-
16302  last.m_it.array_iterator);
-
16303  break;
-
16304  }
-
16305 
-
16306  default:
-
16307  JSON_THROW(invalid_iterator::create(206, "cannot construct with iterators from " +
-
16308  std::string(first.m_object->type_name())));
-
16309  }
-
16310 
-
16311  assert_invariant();
-
16312  }
-
16313 
-
16314 
-
16316  // other constructors and destructor //
-
16318 
- -
16321  : basic_json(ref.moved_or_copied())
-
16322  {}
-
16323 
-
16349  basic_json(const basic_json& other)
-
16350  : m_type(other.m_type)
-
16351  {
-
16352  // check of passed value is valid
-
16353  other.assert_invariant();
-
16354 
-
16355  switch (m_type)
-
16356  {
-
16357  case value_t::object:
-
16358  {
-
16359  m_value = *other.m_value.object;
-
16360  break;
-
16361  }
-
16362 
-
16363  case value_t::array:
-
16364  {
-
16365  m_value = *other.m_value.array;
-
16366  break;
-
16367  }
-
16368 
-
16369  case value_t::string:
-
16370  {
-
16371  m_value = *other.m_value.string;
-
16372  break;
-
16373  }
-
16374 
-
16375  case value_t::boolean:
-
16376  {
-
16377  m_value = other.m_value.boolean;
-
16378  break;
-
16379  }
-
16380 
- -
16382  {
-
16383  m_value = other.m_value.number_integer;
-
16384  break;
-
16385  }
-
16386 
- -
16388  {
-
16389  m_value = other.m_value.number_unsigned;
-
16390  break;
-
16391  }
-
16392 
-
16393  case value_t::number_float:
-
16394  {
-
16395  m_value = other.m_value.number_float;
-
16396  break;
-
16397  }
-
16398 
-
16399  default:
-
16400  break;
-
16401  }
-
16402 
-
16403  assert_invariant();
-
16404  }
-
16405 
-
16432  basic_json(basic_json&& other) noexcept
-
16433  : m_type(std::move(other.m_type)),
-
16434  m_value(std::move(other.m_value))
-
16435  {
-
16436  // check that passed value is valid
-
16437  other.assert_invariant();
-
16438 
-
16439  // invalidate payload
-
16440  other.m_type = value_t::null;
-
16441  other.m_value = {};
-
16442 
-
16443  assert_invariant();
-
16444  }
-
16445 
-
16469  basic_json& operator=(basic_json other) noexcept (
-
16470  std::is_nothrow_move_constructible<value_t>::value and
-
16471  std::is_nothrow_move_assignable<value_t>::value and
-
16472  std::is_nothrow_move_constructible<json_value>::value and
-
16473  std::is_nothrow_move_assignable<json_value>::value
-
16474  )
-
16475  {
-
16476  // check that passed value is valid
-
16477  other.assert_invariant();
-
16478 
-
16479  using std::swap;
-
16480  swap(m_type, other.m_type);
-
16481  swap(m_value, other.m_value);
-
16482 
-
16483  assert_invariant();
-
16484  return *this;
-
16485  }
-
16486 
-
16502  ~basic_json() noexcept
-
16503  {
-
16504  assert_invariant();
-
16505  m_value.destroy(m_type);
-
16506  }
-
16507 
-
16509 
-
16510  public:
-
16512  // object inspection //
-
16514 
-
16518 
-
16560  string_t dump(const int indent = -1,
-
16561  const char indent_char = ' ',
-
16562  const bool ensure_ascii = false,
-
16563  const error_handler_t error_handler = error_handler_t::strict) const
-
16564  {
-
16565  string_t result;
-
16566  serializer s(detail::output_adapter<char, string_t>(result), indent_char, error_handler);
-
16567 
-
16568  if (indent >= 0)
-
16569  {
-
16570  s.dump(*this, true, ensure_ascii, static_cast<unsigned int>(indent));
-
16571  }
-
16572  else
-
16573  {
-
16574  s.dump(*this, false, ensure_ascii, 0);
-
16575  }
-
16576 
-
16577  return result;
-
16578  }
-
16579 
-
16612  constexpr value_t type() const noexcept
-
16613  {
-
16614  return m_type;
-
16615  }
-
16616 
-
16642  constexpr bool is_primitive() const noexcept
-
16643  {
-
16644  return is_null() or is_string() or is_boolean() or is_number();
-
16645  }
-
16646 
-
16669  constexpr bool is_structured() const noexcept
-
16670  {
-
16671  return is_array() or is_object();
-
16672  }
-
16673 
-
16691  constexpr bool is_null() const noexcept
-
16692  {
-
16693  return m_type == value_t::null;
-
16694  }
-
16695 
-
16713  constexpr bool is_boolean() const noexcept
-
16714  {
-
16715  return m_type == value_t::boolean;
-
16716  }
-
16717 
-
16743  constexpr bool is_number() const noexcept
-
16744  {
-
16745  return is_number_integer() or is_number_float();
-
16746  }
-
16747 
-
16772  constexpr bool is_number_integer() const noexcept
-
16773  {
-
16774  return m_type == value_t::number_integer or m_type == value_t::number_unsigned;
-
16775  }
-
16776 
-
16800  constexpr bool is_number_unsigned() const noexcept
-
16801  {
-
16802  return m_type == value_t::number_unsigned;
-
16803  }
-
16804 
-
16828  constexpr bool is_number_float() const noexcept
-
16829  {
-
16830  return m_type == value_t::number_float;
-
16831  }
-
16832 
-
16850  constexpr bool is_object() const noexcept
-
16851  {
-
16852  return m_type == value_t::object;
-
16853  }
-
16854 
-
16872  constexpr bool is_array() const noexcept
-
16873  {
-
16874  return m_type == value_t::array;
-
16875  }
-
16876 
-
16894  constexpr bool is_string() const noexcept
-
16895  {
-
16896  return m_type == value_t::string;
-
16897  }
-
16898 
-
16921  constexpr bool is_discarded() const noexcept
-
16922  {
-
16923  return m_type == value_t::discarded;
-
16924  }
-
16925 
-
16947  constexpr operator value_t() const noexcept
-
16948  {
-
16949  return m_type;
-
16950  }
-
16951 
-
16953 
-
16954  private:
-
16956  // value access //
-
16958 
-
16960  boolean_t get_impl(boolean_t* /*unused*/) const
-
16961  {
- -
16963  {
-
16964  return m_value.boolean;
-
16965  }
-
16966 
-
16967  JSON_THROW(type_error::create(302, "type must be boolean, but is " + std::string(type_name())));
-
16968  }
-
16969 
-
16971  object_t* get_impl_ptr(object_t* /*unused*/) noexcept
-
16972  {
-
16973  return is_object() ? m_value.object : nullptr;
-
16974  }
-
16975 
-
16977  constexpr const object_t* get_impl_ptr(const object_t* /*unused*/) const noexcept
-
16978  {
-
16979  return is_object() ? m_value.object : nullptr;
-
16980  }
-
16981 
-
16983  array_t* get_impl_ptr(array_t* /*unused*/) noexcept
-
16984  {
-
16985  return is_array() ? m_value.array : nullptr;
-
16986  }
-
16987 
-
16989  constexpr const array_t* get_impl_ptr(const array_t* /*unused*/) const noexcept
-
16990  {
-
16991  return is_array() ? m_value.array : nullptr;
-
16992  }
-
16993 
-
16995  string_t* get_impl_ptr(string_t* /*unused*/) noexcept
-
16996  {
-
16997  return is_string() ? m_value.string : nullptr;
-
16998  }
-
16999 
-
17001  constexpr const string_t* get_impl_ptr(const string_t* /*unused*/) const noexcept
-
17002  {
-
17003  return is_string() ? m_value.string : nullptr;
-
17004  }
-
17005 
-
17007  boolean_t* get_impl_ptr(boolean_t* /*unused*/) noexcept
-
17008  {
-
17009  return is_boolean() ? &m_value.boolean : nullptr;
-
17010  }
-
17011 
-
17013  constexpr const boolean_t* get_impl_ptr(const boolean_t* /*unused*/) const noexcept
-
17014  {
-
17015  return is_boolean() ? &m_value.boolean : nullptr;
-
17016  }
-
17017 
-
17019  number_integer_t* get_impl_ptr(number_integer_t* /*unused*/) noexcept
-
17020  {
-
17021  return is_number_integer() ? &m_value.number_integer : nullptr;
-
17022  }
-
17023 
-
17025  constexpr const number_integer_t* get_impl_ptr(const number_integer_t* /*unused*/) const noexcept
-
17026  {
-
17027  return is_number_integer() ? &m_value.number_integer : nullptr;
-
17028  }
-
17029 
-
17031  number_unsigned_t* get_impl_ptr(number_unsigned_t* /*unused*/) noexcept
-
17032  {
-
17033  return is_number_unsigned() ? &m_value.number_unsigned : nullptr;
-
17034  }
-
17035 
-
17037  constexpr const number_unsigned_t* get_impl_ptr(const number_unsigned_t* /*unused*/) const noexcept
-
17038  {
-
17039  return is_number_unsigned() ? &m_value.number_unsigned : nullptr;
-
17040  }
-
17041 
-
17043  number_float_t* get_impl_ptr(number_float_t* /*unused*/) noexcept
-
17044  {
-
17045  return is_number_float() ? &m_value.number_float : nullptr;
-
17046  }
-
17047 
-
17049  constexpr const number_float_t* get_impl_ptr(const number_float_t* /*unused*/) const noexcept
-
17050  {
-
17051  return is_number_float() ? &m_value.number_float : nullptr;
-
17052  }
-
17053 
-
17065  template<typename ReferenceType, typename ThisType>
-
17066  static ReferenceType get_ref_impl(ThisType& obj)
-
17067  {
-
17068  // delegate the call to get_ptr<>()
-
17069  auto ptr = obj.template get_ptr<typename std::add_pointer<ReferenceType>::type>();
-
17070 
-
17071  if (JSON_HEDLEY_LIKELY(ptr != nullptr))
-
17072  {
-
17073  return *ptr;
-
17074  }
-
17075 
-
17076  JSON_THROW(type_error::create(303, "incompatible ReferenceType for get_ref, actual type is " + std::string(obj.type_name())));
-
17077  }
-
17078 
-
17079  public:
-
17083 
-
17098  template<typename BasicJsonType, detail::enable_if_t<
-
17099  std::is_same<typename std::remove_const<BasicJsonType>::type, basic_json_t>::value,
-
17100  int> = 0>
-
17101  basic_json get() const
-
17102  {
-
17103  return *this;
-
17104  }
-
17105 
-
17121  template<typename BasicJsonType, detail::enable_if_t<
-
17122  not std::is_same<BasicJsonType, basic_json>::value and
- -
17124  BasicJsonType get() const
-
17125  {
-
17126  return *this;
-
17127  }
-
17128 
-
17168  template<typename ValueTypeCV, typename ValueType = detail::uncvref_t<ValueTypeCV>,
-
17169  detail::enable_if_t <
-
17170  not detail::is_basic_json<ValueType>::value and
-
17171  detail::has_from_json<basic_json_t, ValueType>::value and
-
17172  not detail::has_non_default_from_json<basic_json_t, ValueType>::value,
-
17173  int> = 0>
-
17174  ValueType get() const noexcept(noexcept(
-
17175  JSONSerializer<ValueType>::from_json(std::declval<const basic_json_t&>(), std::declval<ValueType&>())))
-
17176  {
-
17177  // we cannot static_assert on ValueTypeCV being non-const, because
-
17178  // there is support for get<const basic_json_t>(), which is why we
-
17179  // still need the uncvref
-
17180  static_assert(not std::is_reference<ValueTypeCV>::value,
-
17181  "get() cannot be used with reference types, you might want to use get_ref()");
-
17182  static_assert(std::is_default_constructible<ValueType>::value,
-
17183  "types must be DefaultConstructible when used with get()");
-
17184 
-
17185  ValueType ret;
- -
17187  return ret;
-
17188  }
-
17189 
-
17221  template<typename ValueTypeCV, typename ValueType = detail::uncvref_t<ValueTypeCV>,
-
17222  detail::enable_if_t<not std::is_same<basic_json_t, ValueType>::value and
-
17223  detail::has_non_default_from_json<basic_json_t, ValueType>::value,
-
17224  int> = 0>
-
17225  ValueType get() const noexcept(noexcept(
-
17226  JSONSerializer<ValueType>::from_json(std::declval<const basic_json_t&>())))
-
17227  {
-
17228  static_assert(not std::is_reference<ValueTypeCV>::value,
-
17229  "get() cannot be used with reference types, you might want to use get_ref()");
- -
17231  }
-
17232 
-
17266  template<typename ValueType,
- - - -
17270  int> = 0>
-
17271  ValueType & get_to(ValueType& v) const noexcept(noexcept(
-
17272  JSONSerializer<ValueType>::from_json(std::declval<const basic_json_t&>(), v)))
-
17273  {
- -
17275  return v;
-
17276  }
-
17277 
-
17278  template <
-
17279  typename T, std::size_t N,
-
17280  typename Array = T (&)[N],
- - -
17283  Array get_to(T (&v)[N]) const
-
17284  noexcept(noexcept(JSONSerializer<Array>::from_json(
-
17285  std::declval<const basic_json_t&>(), v)))
-
17286  {
- -
17288  return v;
-
17289  }
-
17290 
-
17291 
-
17318  template<typename PointerType, typename std::enable_if<
-
17319  std::is_pointer<PointerType>::value, int>::type = 0>
-
17320  auto get_ptr() noexcept -> decltype(std::declval<basic_json_t&>().get_impl_ptr(std::declval<PointerType>()))
-
17321  {
-
17322  // delegate the call to get_impl_ptr<>()
-
17323  return get_impl_ptr(static_cast<PointerType>(nullptr));
-
17324  }
-
17325 
-
17330  template<typename PointerType, typename std::enable_if<
-
17331  std::is_pointer<PointerType>::value and
-
17332  std::is_const<typename std::remove_pointer<PointerType>::type>::value, int>::type = 0>
-
17333  constexpr auto get_ptr() const noexcept -> decltype(std::declval<const basic_json_t&>().get_impl_ptr(std::declval<PointerType>()))
-
17334  {
-
17335  // delegate the call to get_impl_ptr<>() const
-
17336  return get_impl_ptr(static_cast<PointerType>(nullptr));
-
17337  }
-
17338 
-
17366  template<typename PointerType, typename std::enable_if<
-
17367  std::is_pointer<PointerType>::value, int>::type = 0>
-
17368  auto get() noexcept -> decltype(std::declval<basic_json_t&>().template get_ptr<PointerType>())
-
17369  {
-
17370  // delegate the call to get_ptr
-
17371  return get_ptr<PointerType>();
-
17372  }
-
17373 
-
17378  template<typename PointerType, typename std::enable_if<
-
17379  std::is_pointer<PointerType>::value, int>::type = 0>
-
17380  constexpr auto get() const noexcept -> decltype(std::declval<const basic_json_t&>().template get_ptr<PointerType>())
-
17381  {
-
17382  // delegate the call to get_ptr
-
17383  return get_ptr<PointerType>();
-
17384  }
-
17385 
-
17412  template<typename ReferenceType, typename std::enable_if<
-
17413  std::is_reference<ReferenceType>::value, int>::type = 0>
-
17414  ReferenceType get_ref()
-
17415  {
-
17416  // delegate call to get_ref_impl
-
17417  return get_ref_impl<ReferenceType>(*this);
-
17418  }
-
17419 
-
17424  template<typename ReferenceType, typename std::enable_if<
-
17425  std::is_reference<ReferenceType>::value and
-
17426  std::is_const<typename std::remove_reference<ReferenceType>::type>::value, int>::type = 0>
-
17427  ReferenceType get_ref() const
-
17428  {
-
17429  // delegate call to get_ref_impl
-
17430  return get_ref_impl<ReferenceType>(*this);
-
17431  }
-
17432 
-
17462  template < typename ValueType, typename std::enable_if <
-
17463  not std::is_pointer<ValueType>::value and
-
17464  not std::is_same<ValueType, detail::json_ref<basic_json>>::value and
-
17465  not std::is_same<ValueType, typename string_t::value_type>::value and
- -
17467 
-
17468 #ifndef _MSC_VER // fix for issue #167 operator<< ambiguity under VS2015
-
17469  and not std::is_same<ValueType, std::initializer_list<typename string_t::value_type>>::value
-
17470 #if defined(JSON_HAS_CPP_17) && (defined(__GNUC__) || (defined(_MSC_VER) and _MSC_VER <= 1914))
-
17471  and not std::is_same<ValueType, typename std::string_view>::value
-
17472 #endif
-
17473 #endif
- -
17475  , int >::type = 0 >
-
17476  operator ValueType() const
-
17477  {
-
17478  // delegate the call to get<>() const
-
17479  return get<ValueType>();
-
17480  }
-
17481 
-
17483 
-
17484 
-
17486  // element access //
-
17488 
-
17492 
- -
17520  {
-
17521  // at only works for arrays
- -
17523  {
-
17524  JSON_TRY
-
17525  {
-
17526  return m_value.array->at(idx);
-
17527  }
-
17528  JSON_CATCH (std::out_of_range&)
-
17529  {
-
17530  // create better exception explanation
-
17531  JSON_THROW(out_of_range::create(401, "array index " + std::to_string(idx) + " is out of range"));
-
17532  }
-
17533  }
-
17534  else
-
17535  {
-
17536  JSON_THROW(type_error::create(304, "cannot use at() with " + std::string(type_name())));
-
17537  }
-
17538  }
-
17539 
- -
17567  {
-
17568  // at only works for arrays
- -
17570  {
-
17571  JSON_TRY
-
17572  {
-
17573  return m_value.array->at(idx);
-
17574  }
-
17575  JSON_CATCH (std::out_of_range&)
-
17576  {
-
17577  // create better exception explanation
-
17578  JSON_THROW(out_of_range::create(401, "array index " + std::to_string(idx) + " is out of range"));
-
17579  }
-
17580  }
-
17581  else
-
17582  {
-
17583  JSON_THROW(type_error::create(304, "cannot use at() with " + std::string(type_name())));
-
17584  }
-
17585  }
-
17586 
-
17617  reference at(const typename object_t::key_type& key)
-
17618  {
-
17619  // at only works for objects
- -
17621  {
-
17622  JSON_TRY
-
17623  {
-
17624  return m_value.object->at(key);
-
17625  }
-
17626  JSON_CATCH (std::out_of_range&)
-
17627  {
-
17628  // create better exception explanation
-
17629  JSON_THROW(out_of_range::create(403, "key '" + key + "' not found"));
-
17630  }
-
17631  }
-
17632  else
-
17633  {
-
17634  JSON_THROW(type_error::create(304, "cannot use at() with " + std::string(type_name())));
-
17635  }
-
17636  }
-
17637 
-
17668  const_reference at(const typename object_t::key_type& key) const
-
17669  {
-
17670  // at only works for objects
- -
17672  {
-
17673  JSON_TRY
-
17674  {
-
17675  return m_value.object->at(key);
-
17676  }
-
17677  JSON_CATCH (std::out_of_range&)
-
17678  {
-
17679  // create better exception explanation
-
17680  JSON_THROW(out_of_range::create(403, "key '" + key + "' not found"));
-
17681  }
-
17682  }
-
17683  else
-
17684  {
-
17685  JSON_THROW(type_error::create(304, "cannot use at() with " + std::string(type_name())));
-
17686  }
-
17687  }
-
17688 
- -
17715  {
-
17716  // implicitly convert null value to an empty array
-
17717  if (is_null())
-
17718  {
-
17719  m_type = value_t::array;
-
17720  m_value.array = create<array_t>();
-
17721  assert_invariant();
-
17722  }
-
17723 
-
17724  // operator[] only works for arrays
- -
17726  {
-
17727  // fill up array with null values if given idx is outside range
-
17728  if (idx >= m_value.array->size())
-
17729  {
-
17730  m_value.array->insert(m_value.array->end(),
-
17731  idx - m_value.array->size() + 1,
-
17732  basic_json());
-
17733  }
-
17734 
-
17735  return m_value.array->operator[](idx);
-
17736  }
-
17737 
-
17738  JSON_THROW(type_error::create(305, "cannot use operator[] with a numeric argument with " + std::string(type_name())));
-
17739  }
-
17740 
- -
17761  {
-
17762  // const operator[] only works for arrays
- -
17764  {
-
17765  return m_value.array->operator[](idx);
-
17766  }
-
17767 
-
17768  JSON_THROW(type_error::create(305, "cannot use operator[] with a numeric argument with " + std::string(type_name())));
-
17769  }
-
17770 
-
17798  reference operator[](const typename object_t::key_type& key)
-
17799  {
-
17800  // implicitly convert null value to an empty object
-
17801  if (is_null())
-
17802  {
-
17803  m_type = value_t::object;
-
17804  m_value.object = create<object_t>();
-
17805  assert_invariant();
-
17806  }
-
17807 
-
17808  // operator[] only works for objects
- -
17810  {
-
17811  return m_value.object->operator[](key);
-
17812  }
-
17813 
-
17814  JSON_THROW(type_error::create(305, "cannot use operator[] with a string argument with " + std::string(type_name())));
-
17815  }
-
17816 
-
17847  const_reference operator[](const typename object_t::key_type& key) const
-
17848  {
-
17849  // const operator[] only works for objects
- -
17851  {
-
17852  assert(m_value.object->find(key) != m_value.object->end());
-
17853  return m_value.object->find(key)->second;
-
17854  }
-
17855 
-
17856  JSON_THROW(type_error::create(305, "cannot use operator[] with a string argument with " + std::string(type_name())));
-
17857  }
-
17858 
-
17886  template<typename T>
- -
17888  reference operator[](T* key)
-
17889  {
-
17890  // implicitly convert null to object
-
17891  if (is_null())
-
17892  {
-
17893  m_type = value_t::object;
-
17894  m_value = value_t::object;
-
17895  assert_invariant();
-
17896  }
-
17897 
-
17898  // at only works for objects
- -
17900  {
-
17901  return m_value.object->operator[](key);
-
17902  }
-
17903 
-
17904  JSON_THROW(type_error::create(305, "cannot use operator[] with a string argument with " + std::string(type_name())));
-
17905  }
-
17906 
-
17937  template<typename T>
- -
17939  const_reference operator[](T* key) const
-
17940  {
-
17941  // at only works for objects
- -
17943  {
-
17944  assert(m_value.object->find(key) != m_value.object->end());
-
17945  return m_value.object->find(key)->second;
-
17946  }
-
17947 
-
17948  JSON_THROW(type_error::create(305, "cannot use operator[] with a string argument with " + std::string(type_name())));
-
17949  }
-
17950 
-
18001  template<class ValueType, typename std::enable_if<
-
18002  std::is_convertible<basic_json_t, ValueType>::value, int>::type = 0>
-
18003  ValueType value(const typename object_t::key_type& key, const ValueType& default_value) const
-
18004  {
-
18005  // at only works for objects
- -
18007  {
-
18008  // if key is found, return value and given default value otherwise
-
18009  const auto it = find(key);
-
18010  if (it != end())
-
18011  {
-
18012  return *it;
-
18013  }
-
18014 
-
18015  return default_value;
-
18016  }
-
18017 
-
18018  JSON_THROW(type_error::create(306, "cannot use value() with " + std::string(type_name())));
-
18019  }
-
18020 
-
18025  string_t value(const typename object_t::key_type& key, const char* default_value) const
-
18026  {
-
18027  return value(key, string_t(default_value));
-
18028  }
-
18029 
-
18073  template<class ValueType, typename std::enable_if<
-
18074  std::is_convertible<basic_json_t, ValueType>::value, int>::type = 0>
-
18075  ValueType value(const json_pointer& ptr, const ValueType& default_value) const
-
18076  {
-
18077  // at only works for objects
- -
18079  {
-
18080  // if pointer resolves a value, return it or use default value
-
18081  JSON_TRY
-
18082  {
-
18083  return ptr.get_checked(this);
-
18084  }
- -
18086  {
-
18087  return default_value;
-
18088  }
-
18089  }
-
18090 
-
18091  JSON_THROW(type_error::create(306, "cannot use value() with " + std::string(type_name())));
-
18092  }
-
18093 
- -
18099  string_t value(const json_pointer& ptr, const char* default_value) const
-
18100  {
-
18101  return value(ptr, string_t(default_value));
-
18102  }
-
18103 
- -
18130  {
-
18131  return *begin();
-
18132  }
-
18133 
- -
18138  {
-
18139  return *cbegin();
-
18140  }
-
18141 
- -
18174  {
-
18175  auto tmp = end();
-
18176  --tmp;
-
18177  return *tmp;
-
18178  }
-
18179 
- -
18184  {
-
18185  auto tmp = cend();
-
18186  --tmp;
-
18187  return *tmp;
-
18188  }
-
18189 
-
18236  template<class IteratorType, typename std::enable_if<
-
18237  std::is_same<IteratorType, typename basic_json_t::iterator>::value or
-
18238  std::is_same<IteratorType, typename basic_json_t::const_iterator>::value, int>::type
-
18239  = 0>
-
18240  IteratorType erase(IteratorType pos)
-
18241  {
-
18242  // make sure iterator fits the current value
-
18243  if (JSON_HEDLEY_UNLIKELY(this != pos.m_object))
-
18244  {
-
18245  JSON_THROW(invalid_iterator::create(202, "iterator does not fit current value"));
-
18246  }
-
18247 
-
18248  IteratorType result = end();
-
18249 
-
18250  switch (m_type)
-
18251  {
-
18252  case value_t::boolean:
-
18253  case value_t::number_float:
- - -
18256  case value_t::string:
-
18257  {
-
18258  if (JSON_HEDLEY_UNLIKELY(not pos.m_it.primitive_iterator.is_begin()))
-
18259  {
-
18260  JSON_THROW(invalid_iterator::create(205, "iterator out of range"));
-
18261  }
-
18262 
-
18263  if (is_string())
-
18264  {
-
18265  AllocatorType<string_t> alloc;
-
18266  std::allocator_traits<decltype(alloc)>::destroy(alloc, m_value.string);
-
18267  std::allocator_traits<decltype(alloc)>::deallocate(alloc, m_value.string, 1);
-
18268  m_value.string = nullptr;
-
18269  }
-
18270 
-
18271  m_type = value_t::null;
-
18272  assert_invariant();
-
18273  break;
-
18274  }
-
18275 
-
18276  case value_t::object:
-
18277  {
-
18278  result.m_it.object_iterator = m_value.object->erase(pos.m_it.object_iterator);
-
18279  break;
-
18280  }
-
18281 
-
18282  case value_t::array:
-
18283  {
-
18284  result.m_it.array_iterator = m_value.array->erase(pos.m_it.array_iterator);
-
18285  break;
-
18286  }
-
18287 
-
18288  default:
-
18289  JSON_THROW(type_error::create(307, "cannot use erase() with " + std::string(type_name())));
-
18290  }
-
18291 
-
18292  return result;
-
18293  }
-
18294 
-
18341  template<class IteratorType, typename std::enable_if<
-
18342  std::is_same<IteratorType, typename basic_json_t::iterator>::value or
-
18343  std::is_same<IteratorType, typename basic_json_t::const_iterator>::value, int>::type
-
18344  = 0>
-
18345  IteratorType erase(IteratorType first, IteratorType last)
-
18346  {
-
18347  // make sure iterator fits the current value
-
18348  if (JSON_HEDLEY_UNLIKELY(this != first.m_object or this != last.m_object))
-
18349  {
-
18350  JSON_THROW(invalid_iterator::create(203, "iterators do not fit current value"));
-
18351  }
-
18352 
-
18353  IteratorType result = end();
-
18354 
-
18355  switch (m_type)
-
18356  {
-
18357  case value_t::boolean:
-
18358  case value_t::number_float:
- - -
18361  case value_t::string:
-
18362  {
-
18363  if (JSON_HEDLEY_LIKELY(not first.m_it.primitive_iterator.is_begin()
-
18364  or not last.m_it.primitive_iterator.is_end()))
-
18365  {
-
18366  JSON_THROW(invalid_iterator::create(204, "iterators out of range"));
-
18367  }
-
18368 
-
18369  if (is_string())
-
18370  {
-
18371  AllocatorType<string_t> alloc;
-
18372  std::allocator_traits<decltype(alloc)>::destroy(alloc, m_value.string);
-
18373  std::allocator_traits<decltype(alloc)>::deallocate(alloc, m_value.string, 1);
-
18374  m_value.string = nullptr;
-
18375  }
-
18376 
-
18377  m_type = value_t::null;
-
18378  assert_invariant();
-
18379  break;
-
18380  }
-
18381 
-
18382  case value_t::object:
-
18383  {
-
18384  result.m_it.object_iterator = m_value.object->erase(first.m_it.object_iterator,
-
18385  last.m_it.object_iterator);
-
18386  break;
-
18387  }
-
18388 
-
18389  case value_t::array:
-
18390  {
-
18391  result.m_it.array_iterator = m_value.array->erase(first.m_it.array_iterator,
-
18392  last.m_it.array_iterator);
-
18393  break;
-
18394  }
-
18395 
-
18396  default:
-
18397  JSON_THROW(type_error::create(307, "cannot use erase() with " + std::string(type_name())));
-
18398  }
-
18399 
-
18400  return result;
-
18401  }
-
18402 
-
18432  size_type erase(const typename object_t::key_type& key)
-
18433  {
-
18434  // this erase only works for objects
- -
18436  {
-
18437  return m_value.object->erase(key);
-
18438  }
-
18439 
-
18440  JSON_THROW(type_error::create(307, "cannot use erase() with " + std::string(type_name())));
-
18441  }
-
18442 
-
18467  void erase(const size_type idx)
-
18468  {
-
18469  // this erase only works for arrays
- -
18471  {
-
18472  if (JSON_HEDLEY_UNLIKELY(idx >= size()))
-
18473  {
-
18474  JSON_THROW(out_of_range::create(401, "array index " + std::to_string(idx) + " is out of range"));
-
18475  }
-
18476 
-
18477  m_value.array->erase(m_value.array->begin() + static_cast<difference_type>(idx));
-
18478  }
-
18479  else
-
18480  {
-
18481  JSON_THROW(type_error::create(307, "cannot use erase() with " + std::string(type_name())));
-
18482  }
-
18483  }
-
18484 
-
18486 
-
18487 
-
18489  // lookup //
-
18491 
-
18494 
-
18519  template<typename KeyT>
-
18520  iterator find(KeyT&& key)
-
18521  {
-
18522  auto result = end();
-
18523 
-
18524  if (is_object())
-
18525  {
-
18526  result.m_it.object_iterator = m_value.object->find(std::forward<KeyT>(key));
-
18527  }
-
18528 
-
18529  return result;
-
18530  }
-
18531 
-
18536  template<typename KeyT>
-
18537  const_iterator find(KeyT&& key) const
-
18538  {
-
18539  auto result = cend();
-
18540 
-
18541  if (is_object())
-
18542  {
-
18543  result.m_it.object_iterator = m_value.object->find(std::forward<KeyT>(key));
-
18544  }
-
18545 
-
18546  return result;
-
18547  }
-
18548 
-
18570  template<typename KeyT>
-
18571  size_type count(KeyT&& key) const
-
18572  {
-
18573  // return 0 for all nonobject types
-
18574  return is_object() ? m_value.object->count(std::forward<KeyT>(key)) : 0;
-
18575  }
-
18576 
-
18602  template<typename KeyT, typename std::enable_if<
-
18603  not std::is_same<typename std::decay<KeyT>::type, json_pointer>::value, int>::type = 0>
-
18604  bool contains(KeyT && key) const
-
18605  {
-
18606  return is_object() and m_value.object->find(std::forward<KeyT>(key)) != m_value.object->end();
-
18607  }
-
18608 
-
18635  bool contains(const json_pointer& ptr) const
-
18636  {
-
18637  return ptr.contains(this);
-
18638  }
-
18639 
-
18641 
-
18642 
-
18644  // iterators //
-
18646 
-
18649 
-
18674  iterator begin() noexcept
-
18675  {
-
18676  iterator result(this);
-
18677  result.set_begin();
-
18678  return result;
-
18679  }
-
18680 
-
18684  const_iterator begin() const noexcept
-
18685  {
-
18686  return cbegin();
-
18687  }
-
18688 
-
18714  const_iterator cbegin() const noexcept
-
18715  {
-
18716  const_iterator result(this);
-
18717  result.set_begin();
-
18718  return result;
-
18719  }
-
18720 
-
18745  iterator end() noexcept
-
18746  {
-
18747  iterator result(this);
-
18748  result.set_end();
-
18749  return result;
-
18750  }
-
18751 
-
18755  const_iterator end() const noexcept
-
18756  {
-
18757  return cend();
-
18758  }
-
18759 
-
18785  const_iterator cend() const noexcept
-
18786  {
-
18787  const_iterator result(this);
-
18788  result.set_end();
-
18789  return result;
-
18790  }
-
18791 
- -
18816  {
-
18817  return reverse_iterator(end());
-
18818  }
-
18819 
- -
18824  {
-
18825  return crbegin();
-
18826  }
-
18827 
- -
18853  {
-
18854  return reverse_iterator(begin());
-
18855  }
-
18856 
-
18860  const_reverse_iterator rend() const noexcept
-
18861  {
-
18862  return crend();
-
18863  }
-
18864 
- -
18890  {
-
18891  return const_reverse_iterator(cend());
-
18892  }
-
18893 
- -
18919  {
-
18920  return const_reverse_iterator(cbegin());
-
18921  }
-
18922 
-
18923  public:
-
18981  JSON_HEDLEY_DEPRECATED(3.1.0)
- -
18983  {
-
18984  return ref.items();
-
18985  }
-
18986 
-
18990  JSON_HEDLEY_DEPRECATED(3.1.0)
- -
18992  {
-
18993  return ref.items();
-
18994  }
-
18995 
- -
19060  {
-
19061  return iteration_proxy<iterator>(*this);
-
19062  }
-
19063 
- -
19068  {
-
19069  return iteration_proxy<const_iterator>(*this);
-
19070  }
-
19071 
-
19073 
-
19074 
-
19076  // capacity //
-
19078 
-
19081 
-
19123  bool empty() const noexcept
-
19124  {
-
19125  switch (m_type)
-
19126  {
-
19127  case value_t::null:
-
19128  {
-
19129  // null values are empty
-
19130  return true;
-
19131  }
-
19132 
-
19133  case value_t::array:
-
19134  {
-
19135  // delegate call to array_t::empty()
-
19136  return m_value.array->empty();
-
19137  }
-
19138 
-
19139  case value_t::object:
-
19140  {
-
19141  // delegate call to object_t::empty()
-
19142  return m_value.object->empty();
-
19143  }
-
19144 
-
19145  default:
-
19146  {
-
19147  // all other types are nonempty
-
19148  return false;
-
19149  }
-
19150  }
-
19151  }
-
19152 
-
19195  size_type size() const noexcept
-
19196  {
-
19197  switch (m_type)
-
19198  {
-
19199  case value_t::null:
-
19200  {
-
19201  // null values are empty
-
19202  return 0;
-
19203  }
-
19204 
-
19205  case value_t::array:
-
19206  {
-
19207  // delegate call to array_t::size()
-
19208  return m_value.array->size();
-
19209  }
-
19210 
-
19211  case value_t::object:
-
19212  {
-
19213  // delegate call to object_t::size()
-
19214  return m_value.object->size();
-
19215  }
-
19216 
-
19217  default:
-
19218  {
-
19219  // all other types have size 1
-
19220  return 1;
-
19221  }
-
19222  }
-
19223  }
-
19224 
-
19265  size_type max_size() const noexcept
-
19266  {
-
19267  switch (m_type)
-
19268  {
-
19269  case value_t::array:
-
19270  {
-
19271  // delegate call to array_t::max_size()
-
19272  return m_value.array->max_size();
-
19273  }
-
19274 
-
19275  case value_t::object:
-
19276  {
-
19277  // delegate call to object_t::max_size()
-
19278  return m_value.object->max_size();
-
19279  }
-
19280 
-
19281  default:
-
19282  {
-
19283  // all other types have max_size() == size()
-
19284  return size();
-
19285  }
-
19286  }
-
19287  }
-
19288 
-
19290 
-
19291 
-
19293  // modifiers //
-
19295 
-
19298 
-
19335  void clear() noexcept
-
19336  {
-
19337  switch (m_type)
-
19338  {
- -
19340  {
-
19341  m_value.number_integer = 0;
-
19342  break;
-
19343  }
-
19344 
- -
19346  {
-
19347  m_value.number_unsigned = 0;
-
19348  break;
-
19349  }
-
19350 
-
19351  case value_t::number_float:
-
19352  {
-
19353  m_value.number_float = 0.0;
-
19354  break;
-
19355  }
-
19356 
-
19357  case value_t::boolean:
-
19358  {
-
19359  m_value.boolean = false;
-
19360  break;
-
19361  }
-
19362 
-
19363  case value_t::string:
-
19364  {
-
19365  m_value.string->clear();
-
19366  break;
-
19367  }
-
19368 
-
19369  case value_t::array:
-
19370  {
-
19371  m_value.array->clear();
-
19372  break;
-
19373  }
-
19374 
-
19375  case value_t::object:
-
19376  {
-
19377  m_value.object->clear();
-
19378  break;
-
19379  }
-
19380 
-
19381  default:
-
19382  break;
-
19383  }
-
19384  }
-
19385 
-
19406  void push_back(basic_json&& val)
-
19407  {
-
19408  // push_back only works for null objects or arrays
-
19409  if (JSON_HEDLEY_UNLIKELY(not(is_null() or is_array())))
-
19410  {
-
19411  JSON_THROW(type_error::create(308, "cannot use push_back() with " + std::string(type_name())));
-
19412  }
-
19413 
-
19414  // transform null object into an array
-
19415  if (is_null())
-
19416  {
-
19417  m_type = value_t::array;
-
19418  m_value = value_t::array;
-
19419  assert_invariant();
-
19420  }
-
19421 
-
19422  // add element to array (move semantics)
-
19423  m_value.array->push_back(std::move(val));
-
19424  // invalidate object: mark it null so we do not call the destructor
-
19425  // cppcheck-suppress accessMoved
-
19426  val.m_type = value_t::null;
-
19427  }
-
19428 
- -
19434  {
-
19435  push_back(std::move(val));
-
19436  return *this;
-
19437  }
-
19438 
-
19443  void push_back(const basic_json& val)
-
19444  {
-
19445  // push_back only works for null objects or arrays
-
19446  if (JSON_HEDLEY_UNLIKELY(not(is_null() or is_array())))
-
19447  {
-
19448  JSON_THROW(type_error::create(308, "cannot use push_back() with " + std::string(type_name())));
-
19449  }
-
19450 
-
19451  // transform null object into an array
-
19452  if (is_null())
-
19453  {
-
19454  m_type = value_t::array;
-
19455  m_value = value_t::array;
-
19456  assert_invariant();
-
19457  }
-
19458 
-
19459  // add element to array
-
19460  m_value.array->push_back(val);
-
19461  }
-
19462 
- -
19468  {
-
19469  push_back(val);
-
19470  return *this;
-
19471  }
-
19472 
-
19493  void push_back(const typename object_t::value_type& val)
-
19494  {
-
19495  // push_back only works for null objects or objects
-
19496  if (JSON_HEDLEY_UNLIKELY(not(is_null() or is_object())))
-
19497  {
-
19498  JSON_THROW(type_error::create(308, "cannot use push_back() with " + std::string(type_name())));
-
19499  }
-
19500 
-
19501  // transform null object into an object
-
19502  if (is_null())
-
19503  {
-
19504  m_type = value_t::object;
-
19505  m_value = value_t::object;
-
19506  assert_invariant();
-
19507  }
-
19508 
-
19509  // add element to array
-
19510  m_value.object->insert(val);
-
19511  }
-
19512 
-
19517  reference operator+=(const typename object_t::value_type& val)
-
19518  {
-
19519  push_back(val);
-
19520  return *this;
-
19521  }
-
19522 
- -
19549  {
-
19550  if (is_object() and init.size() == 2 and (*init.begin())->is_string())
-
19551  {
-
19552  basic_json&& key = init.begin()->moved_or_copied();
-
19553  push_back(typename object_t::value_type(
-
19554  std::move(key.get_ref<string_t&>()), (init.begin() + 1)->moved_or_copied()));
-
19555  }
-
19556  else
-
19557  {
-
19558  push_back(basic_json(init));
-
19559  }
-
19560  }
-
19561 
- -
19567  {
-
19568  push_back(init);
-
19569  return *this;
-
19570  }
-
19571 
-
19595  template<class... Args>
-
19596  reference emplace_back(Args&& ... args)
-
19597  {
-
19598  // emplace_back only works for null objects or arrays
-
19599  if (JSON_HEDLEY_UNLIKELY(not(is_null() or is_array())))
-
19600  {
-
19601  JSON_THROW(type_error::create(311, "cannot use emplace_back() with " + std::string(type_name())));
-
19602  }
-
19603 
-
19604  // transform null object into an array
-
19605  if (is_null())
-
19606  {
-
19607  m_type = value_t::array;
-
19608  m_value = value_t::array;
-
19609  assert_invariant();
-
19610  }
-
19611 
-
19612  // add element to array (perfect forwarding)
-
19613 #ifdef JSON_HAS_CPP_17
-
19614  return m_value.array->emplace_back(std::forward<Args>(args)...);
-
19615 #else
-
19616  m_value.array->emplace_back(std::forward<Args>(args)...);
-
19617  return m_value.array->back();
-
19618 #endif
-
19619  }
-
19620 
-
19648  template<class... Args>
-
19649  std::pair<iterator, bool> emplace(Args&& ... args)
-
19650  {
-
19651  // emplace only works for null objects or arrays
-
19652  if (JSON_HEDLEY_UNLIKELY(not(is_null() or is_object())))
-
19653  {
-
19654  JSON_THROW(type_error::create(311, "cannot use emplace() with " + std::string(type_name())));
-
19655  }
-
19656 
-
19657  // transform null object into an object
-
19658  if (is_null())
-
19659  {
-
19660  m_type = value_t::object;
-
19661  m_value = value_t::object;
-
19662  assert_invariant();
-
19663  }
-
19664 
-
19665  // add element to array (perfect forwarding)
-
19666  auto res = m_value.object->emplace(std::forward<Args>(args)...);
-
19667  // create result iterator and set iterator to the result of emplace
-
19668  auto it = begin();
-
19669  it.m_it.object_iterator = res.first;
-
19670 
-
19671  // return pair of iterator and boolean
-
19672  return {it, res.second};
-
19673  }
-
19674 
-
19678  template<typename... Args>
- -
19680  {
-
19681  iterator result(this);
-
19682  assert(m_value.array != nullptr);
-
19683 
-
19684  auto insert_pos = std::distance(m_value.array->begin(), pos.m_it.array_iterator);
-
19685  m_value.array->insert(pos.m_it.array_iterator, std::forward<Args>(args)...);
-
19686  result.m_it.array_iterator = m_value.array->begin() + insert_pos;
-
19687 
-
19688  // This could have been written as:
-
19689  // result.m_it.array_iterator = m_value.array->insert(pos.m_it.array_iterator, cnt, val);
-
19690  // but the return value of insert is missing in GCC 4.8, so it is written this way instead.
-
19691 
-
19692  return result;
-
19693  }
-
19694 
- -
19718  {
-
19719  // insert only works for arrays
- -
19721  {
-
19722  // check if iterator pos fits to this JSON value
-
19723  if (JSON_HEDLEY_UNLIKELY(pos.m_object != this))
-
19724  {
-
19725  JSON_THROW(invalid_iterator::create(202, "iterator does not fit current value"));
-
19726  }
-
19727 
-
19728  // insert to array and return iterator
-
19729  return insert_iterator(pos, val);
-
19730  }
-
19731 
-
19732  JSON_THROW(type_error::create(309, "cannot use insert() with " + std::string(type_name())));
-
19733  }
-
19734 
- -
19740  {
-
19741  return insert(pos, val);
-
19742  }
-
19743 
- -
19769  {
-
19770  // insert only works for arrays
- -
19772  {
-
19773  // check if iterator pos fits to this JSON value
-
19774  if (JSON_HEDLEY_UNLIKELY(pos.m_object != this))
-
19775  {
-
19776  JSON_THROW(invalid_iterator::create(202, "iterator does not fit current value"));
-
19777  }
-
19778 
-
19779  // insert to array and return iterator
-
19780  return insert_iterator(pos, cnt, val);
-
19781  }
-
19782 
-
19783  JSON_THROW(type_error::create(309, "cannot use insert() with " + std::string(type_name())));
-
19784  }
-
19785 
- -
19817  {
-
19818  // insert only works for arrays
-
19819  if (JSON_HEDLEY_UNLIKELY(not is_array()))
-
19820  {
-
19821  JSON_THROW(type_error::create(309, "cannot use insert() with " + std::string(type_name())));
-
19822  }
-
19823 
-
19824  // check if iterator pos fits to this JSON value
-
19825  if (JSON_HEDLEY_UNLIKELY(pos.m_object != this))
-
19826  {
-
19827  JSON_THROW(invalid_iterator::create(202, "iterator does not fit current value"));
-
19828  }
-
19829 
-
19830  // check if range iterators belong to the same JSON object
-
19831  if (JSON_HEDLEY_UNLIKELY(first.m_object != last.m_object))
-
19832  {
-
19833  JSON_THROW(invalid_iterator::create(210, "iterators do not fit"));
-
19834  }
-
19835 
-
19836  if (JSON_HEDLEY_UNLIKELY(first.m_object == this))
-
19837  {
-
19838  JSON_THROW(invalid_iterator::create(211, "passed iterators may not belong to container"));
-
19839  }
-
19840 
-
19841  // insert to array and return iterator
-
19842  return insert_iterator(pos, first.m_it.array_iterator, last.m_it.array_iterator);
-
19843  }
-
19844 
- -
19870  {
-
19871  // insert only works for arrays
-
19872  if (JSON_HEDLEY_UNLIKELY(not is_array()))
-
19873  {
-
19874  JSON_THROW(type_error::create(309, "cannot use insert() with " + std::string(type_name())));
-
19875  }
-
19876 
-
19877  // check if iterator pos fits to this JSON value
-
19878  if (JSON_HEDLEY_UNLIKELY(pos.m_object != this))
-
19879  {
-
19880  JSON_THROW(invalid_iterator::create(202, "iterator does not fit current value"));
-
19881  }
-
19882 
-
19883  // insert to array and return iterator
-
19884  return insert_iterator(pos, ilist.begin(), ilist.end());
-
19885  }
-
19886 
- -
19911  {
-
19912  // insert only works for objects
-
19913  if (JSON_HEDLEY_UNLIKELY(not is_object()))
-
19914  {
-
19915  JSON_THROW(type_error::create(309, "cannot use insert() with " + std::string(type_name())));
-
19916  }
-
19917 
-
19918  // check if range iterators belong to the same JSON object
-
19919  if (JSON_HEDLEY_UNLIKELY(first.m_object != last.m_object))
-
19920  {
-
19921  JSON_THROW(invalid_iterator::create(210, "iterators do not fit"));
-
19922  }
-
19923 
-
19924  // passed iterators must belong to objects
-
19925  if (JSON_HEDLEY_UNLIKELY(not first.m_object->is_object()))
-
19926  {
-
19927  JSON_THROW(invalid_iterator::create(202, "iterators first and last must point to objects"));
-
19928  }
-
19929 
-
19930  m_value.object->insert(first.m_it.object_iterator, last.m_it.object_iterator);
-
19931  }
-
19932 
- -
19953  {
-
19954  // implicitly convert null value to an empty object
-
19955  if (is_null())
-
19956  {
-
19957  m_type = value_t::object;
-
19958  m_value.object = create<object_t>();
-
19959  assert_invariant();
-
19960  }
-
19961 
-
19962  if (JSON_HEDLEY_UNLIKELY(not is_object()))
-
19963  {
-
19964  JSON_THROW(type_error::create(312, "cannot use update() with " + std::string(type_name())));
-
19965  }
-
19966  if (JSON_HEDLEY_UNLIKELY(not j.is_object()))
-
19967  {
-
19968  JSON_THROW(type_error::create(312, "cannot use update() with " + std::string(j.type_name())));
-
19969  }
-
19970 
-
19971  for (auto it = j.cbegin(); it != j.cend(); ++it)
-
19972  {
-
19973  m_value.object->operator[](it.key()) = it.value();
-
19974  }
-
19975  }
-
19976 
- -
20004  {
-
20005  // implicitly convert null value to an empty object
-
20006  if (is_null())
-
20007  {
-
20008  m_type = value_t::object;
-
20009  m_value.object = create<object_t>();
-
20010  assert_invariant();
-
20011  }
-
20012 
-
20013  if (JSON_HEDLEY_UNLIKELY(not is_object()))
-
20014  {
-
20015  JSON_THROW(type_error::create(312, "cannot use update() with " + std::string(type_name())));
-
20016  }
-
20017 
-
20018  // check if range iterators belong to the same JSON object
-
20019  if (JSON_HEDLEY_UNLIKELY(first.m_object != last.m_object))
-
20020  {
-
20021  JSON_THROW(invalid_iterator::create(210, "iterators do not fit"));
-
20022  }
-
20023 
-
20024  // passed iterators must belong to objects
-
20025  if (JSON_HEDLEY_UNLIKELY(not first.m_object->is_object()
-
20026  or not last.m_object->is_object()))
-
20027  {
-
20028  JSON_THROW(invalid_iterator::create(202, "iterators first and last must point to objects"));
-
20029  }
-
20030 
-
20031  for (auto it = first; it != last; ++it)
-
20032  {
-
20033  m_value.object->operator[](it.key()) = it.value();
-
20034  }
-
20035  }
-
20036 
-
20054  void swap(reference other) noexcept (
-
20055  std::is_nothrow_move_constructible<value_t>::value and
-
20056  std::is_nothrow_move_assignable<value_t>::value and
-
20057  std::is_nothrow_move_constructible<json_value>::value and
-
20058  std::is_nothrow_move_assignable<json_value>::value
-
20059  )
-
20060  {
-
20061  std::swap(m_type, other.m_type);
-
20062  std::swap(m_value, other.m_value);
-
20063  assert_invariant();
-
20064  }
-
20065 
-
20086  void swap(array_t& other)
-
20087  {
-
20088  // swap only works for arrays
- -
20090  {
-
20091  std::swap(*(m_value.array), other);
-
20092  }
-
20093  else
-
20094  {
-
20095  JSON_THROW(type_error::create(310, "cannot use swap() with " + std::string(type_name())));
-
20096  }
-
20097  }
-
20098 
-
20119  void swap(object_t& other)
-
20120  {
-
20121  // swap only works for objects
- -
20123  {
-
20124  std::swap(*(m_value.object), other);
-
20125  }
-
20126  else
-
20127  {
-
20128  JSON_THROW(type_error::create(310, "cannot use swap() with " + std::string(type_name())));
-
20129  }
-
20130  }
-
20131 
-
20152  void swap(string_t& other)
-
20153  {
-
20154  // swap only works for strings
- -
20156  {
-
20157  std::swap(*(m_value.string), other);
-
20158  }
-
20159  else
-
20160  {
-
20161  JSON_THROW(type_error::create(310, "cannot use swap() with " + std::string(type_name())));
-
20162  }
-
20163  }
-
20164 
-
20166 
-
20167  public:
-
20169  // lexicographical comparison operators //
-
20171 
-
20174 
-
20214  friend bool operator==(const_reference lhs, const_reference rhs) noexcept
-
20215  {
-
20216  const auto lhs_type = lhs.type();
-
20217  const auto rhs_type = rhs.type();
-
20218 
-
20219  if (lhs_type == rhs_type)
-
20220  {
-
20221  switch (lhs_type)
-
20222  {
-
20223  case value_t::array:
-
20224  return *lhs.m_value.array == *rhs.m_value.array;
-
20225 
-
20226  case value_t::object:
-
20227  return *lhs.m_value.object == *rhs.m_value.object;
-
20228 
-
20229  case value_t::null:
-
20230  return true;
-
20231 
-
20232  case value_t::string:
-
20233  return *lhs.m_value.string == *rhs.m_value.string;
-
20234 
-
20235  case value_t::boolean:
-
20236  return lhs.m_value.boolean == rhs.m_value.boolean;
-
20237 
- -
20239  return lhs.m_value.number_integer == rhs.m_value.number_integer;
-
20240 
- -
20242  return lhs.m_value.number_unsigned == rhs.m_value.number_unsigned;
-
20243 
-
20244  case value_t::number_float:
-
20245  return lhs.m_value.number_float == rhs.m_value.number_float;
-
20246 
-
20247  default:
-
20248  return false;
-
20249  }
-
20250  }
-
20251  else if (lhs_type == value_t::number_integer and rhs_type == value_t::number_float)
-
20252  {
-
20253  return static_cast<number_float_t>(lhs.m_value.number_integer) == rhs.m_value.number_float;
-
20254  }
-
20255  else if (lhs_type == value_t::number_float and rhs_type == value_t::number_integer)
-
20256  {
-
20257  return lhs.m_value.number_float == static_cast<number_float_t>(rhs.m_value.number_integer);
-
20258  }
-
20259  else if (lhs_type == value_t::number_unsigned and rhs_type == value_t::number_float)
-
20260  {
-
20261  return static_cast<number_float_t>(lhs.m_value.number_unsigned) == rhs.m_value.number_float;
-
20262  }
-
20263  else if (lhs_type == value_t::number_float and rhs_type == value_t::number_unsigned)
-
20264  {
-
20265  return lhs.m_value.number_float == static_cast<number_float_t>(rhs.m_value.number_unsigned);
-
20266  }
-
20267  else if (lhs_type == value_t::number_unsigned and rhs_type == value_t::number_integer)
-
20268  {
-
20269  return static_cast<number_integer_t>(lhs.m_value.number_unsigned) == rhs.m_value.number_integer;
-
20270  }
-
20271  else if (lhs_type == value_t::number_integer and rhs_type == value_t::number_unsigned)
-
20272  {
-
20273  return lhs.m_value.number_integer == static_cast<number_integer_t>(rhs.m_value.number_unsigned);
-
20274  }
-
20275 
-
20276  return false;
-
20277  }
-
20278 
-
20283  template<typename ScalarType, typename std::enable_if<
-
20284  std::is_scalar<ScalarType>::value, int>::type = 0>
-
20285  friend bool operator==(const_reference lhs, const ScalarType rhs) noexcept
-
20286  {
-
20287  return lhs == basic_json(rhs);
-
20288  }
-
20289 
-
20294  template<typename ScalarType, typename std::enable_if<
-
20295  std::is_scalar<ScalarType>::value, int>::type = 0>
-
20296  friend bool operator==(const ScalarType lhs, const_reference rhs) noexcept
-
20297  {
-
20298  return basic_json(lhs) == rhs;
-
20299  }
-
20300 
-
20319  friend bool operator!=(const_reference lhs, const_reference rhs) noexcept
-
20320  {
-
20321  return not (lhs == rhs);
-
20322  }
-
20323 
-
20328  template<typename ScalarType, typename std::enable_if<
-
20329  std::is_scalar<ScalarType>::value, int>::type = 0>
-
20330  friend bool operator!=(const_reference lhs, const ScalarType rhs) noexcept
-
20331  {
-
20332  return lhs != basic_json(rhs);
-
20333  }
-
20334 
-
20339  template<typename ScalarType, typename std::enable_if<
-
20340  std::is_scalar<ScalarType>::value, int>::type = 0>
-
20341  friend bool operator!=(const ScalarType lhs, const_reference rhs) noexcept
-
20342  {
-
20343  return basic_json(lhs) != rhs;
-
20344  }
-
20345 
-
20372  friend bool operator<(const_reference lhs, const_reference rhs) noexcept
-
20373  {
-
20374  const auto lhs_type = lhs.type();
-
20375  const auto rhs_type = rhs.type();
-
20376 
-
20377  if (lhs_type == rhs_type)
-
20378  {
-
20379  switch (lhs_type)
-
20380  {
-
20381  case value_t::array:
-
20382  // note parentheses are necessary, see
-
20383  // https://github.com/nlohmann/json/issues/1530
-
20384  return (*lhs.m_value.array) < (*rhs.m_value.array);
-
20385 
-
20386  case value_t::object:
-
20387  return (*lhs.m_value.object) < (*rhs.m_value.object);
-
20388 
-
20389  case value_t::null:
-
20390  return false;
-
20391 
-
20392  case value_t::string:
-
20393  return (*lhs.m_value.string) < (*rhs.m_value.string);
-
20394 
-
20395  case value_t::boolean:
-
20396  return (lhs.m_value.boolean) < (rhs.m_value.boolean);
-
20397 
- -
20399  return (lhs.m_value.number_integer) < (rhs.m_value.number_integer);
-
20400 
- -
20402  return (lhs.m_value.number_unsigned) < (rhs.m_value.number_unsigned);
-
20403 
-
20404  case value_t::number_float:
-
20405  return (lhs.m_value.number_float) < (rhs.m_value.number_float);
-
20406 
-
20407  default:
-
20408  return false;
-
20409  }
-
20410  }
-
20411  else if (lhs_type == value_t::number_integer and rhs_type == value_t::number_float)
-
20412  {
-
20413  return static_cast<number_float_t>(lhs.m_value.number_integer) < rhs.m_value.number_float;
-
20414  }
-
20415  else if (lhs_type == value_t::number_float and rhs_type == value_t::number_integer)
-
20416  {
-
20417  return lhs.m_value.number_float < static_cast<number_float_t>(rhs.m_value.number_integer);
-
20418  }
-
20419  else if (lhs_type == value_t::number_unsigned and rhs_type == value_t::number_float)
-
20420  {
-
20421  return static_cast<number_float_t>(lhs.m_value.number_unsigned) < rhs.m_value.number_float;
-
20422  }
-
20423  else if (lhs_type == value_t::number_float and rhs_type == value_t::number_unsigned)
-
20424  {
-
20425  return lhs.m_value.number_float < static_cast<number_float_t>(rhs.m_value.number_unsigned);
-
20426  }
-
20427  else if (lhs_type == value_t::number_integer and rhs_type == value_t::number_unsigned)
-
20428  {
-
20429  return lhs.m_value.number_integer < static_cast<number_integer_t>(rhs.m_value.number_unsigned);
-
20430  }
-
20431  else if (lhs_type == value_t::number_unsigned and rhs_type == value_t::number_integer)
-
20432  {
-
20433  return static_cast<number_integer_t>(lhs.m_value.number_unsigned) < rhs.m_value.number_integer;
-
20434  }
-
20435 
-
20436  // We only reach this line if we cannot compare values. In that case,
-
20437  // we compare types. Note we have to call the operator explicitly,
-
20438  // because MSVC has problems otherwise.
-
20439  return operator<(lhs_type, rhs_type);
-
20440  }
-
20441 
-
20446  template<typename ScalarType, typename std::enable_if<
-
20447  std::is_scalar<ScalarType>::value, int>::type = 0>
-
20448  friend bool operator<(const_reference lhs, const ScalarType rhs) noexcept
-
20449  {
-
20450  return lhs < basic_json(rhs);
-
20451  }
-
20452 
-
20457  template<typename ScalarType, typename std::enable_if<
-
20458  std::is_scalar<ScalarType>::value, int>::type = 0>
-
20459  friend bool operator<(const ScalarType lhs, const_reference rhs) noexcept
-
20460  {
-
20461  return basic_json(lhs) < rhs;
-
20462  }
-
20463 
-
20483  friend bool operator<=(const_reference lhs, const_reference rhs) noexcept
-
20484  {
-
20485  return not (rhs < lhs);
-
20486  }
-
20487 
-
20492  template<typename ScalarType, typename std::enable_if<
-
20493  std::is_scalar<ScalarType>::value, int>::type = 0>
-
20494  friend bool operator<=(const_reference lhs, const ScalarType rhs) noexcept
-
20495  {
-
20496  return lhs <= basic_json(rhs);
-
20497  }
-
20498 
-
20503  template<typename ScalarType, typename std::enable_if<
-
20504  std::is_scalar<ScalarType>::value, int>::type = 0>
-
20505  friend bool operator<=(const ScalarType lhs, const_reference rhs) noexcept
-
20506  {
-
20507  return basic_json(lhs) <= rhs;
-
20508  }
-
20509 
-
20529  friend bool operator>(const_reference lhs, const_reference rhs) noexcept
-
20530  {
-
20531  return not (lhs <= rhs);
-
20532  }
-
20533 
-
20538  template<typename ScalarType, typename std::enable_if<
-
20539  std::is_scalar<ScalarType>::value, int>::type = 0>
-
20540  friend bool operator>(const_reference lhs, const ScalarType rhs) noexcept
-
20541  {
-
20542  return lhs > basic_json(rhs);
-
20543  }
-
20544 
-
20549  template<typename ScalarType, typename std::enable_if<
-
20550  std::is_scalar<ScalarType>::value, int>::type = 0>
-
20551  friend bool operator>(const ScalarType lhs, const_reference rhs) noexcept
-
20552  {
-
20553  return basic_json(lhs) > rhs;
-
20554  }
-
20555 
-
20575  friend bool operator>=(const_reference lhs, const_reference rhs) noexcept
-
20576  {
-
20577  return not (lhs < rhs);
-
20578  }
-
20579 
-
20584  template<typename ScalarType, typename std::enable_if<
-
20585  std::is_scalar<ScalarType>::value, int>::type = 0>
-
20586  friend bool operator>=(const_reference lhs, const ScalarType rhs) noexcept
-
20587  {
-
20588  return lhs >= basic_json(rhs);
-
20589  }
-
20590 
-
20595  template<typename ScalarType, typename std::enable_if<
-
20596  std::is_scalar<ScalarType>::value, int>::type = 0>
-
20597  friend bool operator>=(const ScalarType lhs, const_reference rhs) noexcept
-
20598  {
-
20599  return basic_json(lhs) >= rhs;
-
20600  }
-
20601 
-
20603 
-
20605  // serialization //
-
20607 
-
20610 
-
20642  friend std::ostream& operator<<(std::ostream& o, const basic_json& j)
-
20643  {
-
20644  // read width member and use it as indentation parameter if nonzero
-
20645  const bool pretty_print = o.width() > 0;
-
20646  const auto indentation = pretty_print ? o.width() : 0;
-
20647 
-
20648  // reset width to 0 for subsequent calls to this stream
-
20649  o.width(0);
-
20650 
-
20651  // do the actual serialization
-
20652  serializer s(detail::output_adapter<char>(o), o.fill());
-
20653  s.dump(j, pretty_print, false, static_cast<unsigned int>(indentation));
-
20654  return o;
-
20655  }
-
20656 
-
20665  JSON_HEDLEY_DEPRECATED(3.0.0)
-
20666  friend std::ostream& operator>>(const basic_json& j, std::ostream& o)
-
20667  {
-
20668  return o << j;
-
20669  }
-
20670 
-
20672 
-
20673 
-
20675  // deserialization //
-
20677 
-
20680 
- - -
20746  const parser_callback_t cb = nullptr,
-
20747  const bool allow_exceptions = true)
-
20748  {
-
20749  basic_json result;
-
20750  parser(i, cb, allow_exceptions).parse(true, result);
-
20751  return result;
-
20752  }
-
20753 
- -
20755  {
-
20756  return parser(i).accept(true);
-
20757  }
-
20758 
-
20812  template <typename SAX>
- -
20814  static bool sax_parse(detail::input_adapter&& i, SAX* sax,
- -
20816  const bool strict = true)
-
20817  {
-
20818  assert(sax);
-
20819  return format == input_format_t::json
-
20820  ? parser(std::move(i)).sax_parse(sax, strict)
-
20821  : detail::binary_reader<basic_json, SAX>(std::move(i)).sax_parse(format, sax, strict);
-
20822  }
-
20823 
-
20873  template<class IteratorType, typename std::enable_if<
-
20874  std::is_base_of<
-
20875  std::random_access_iterator_tag,
-
20876  typename std::iterator_traits<IteratorType>::iterator_category>::value, int>::type = 0>
-
20877  static basic_json parse(IteratorType first, IteratorType last,
-
20878  const parser_callback_t cb = nullptr,
-
20879  const bool allow_exceptions = true)
-
20880  {
-
20881  basic_json result;
-
20882  parser(detail::input_adapter(first, last), cb, allow_exceptions).parse(true, result);
-
20883  return result;
-
20884  }
-
20885 
-
20886  template<class IteratorType, typename std::enable_if<
-
20887  std::is_base_of<
-
20888  std::random_access_iterator_tag,
-
20889  typename std::iterator_traits<IteratorType>::iterator_category>::value, int>::type = 0>
-
20890  static bool accept(IteratorType first, IteratorType last)
-
20891  {
-
20892  return parser(detail::input_adapter(first, last)).accept(true);
-
20893  }
-
20894 
-
20895  template<class IteratorType, class SAX, typename std::enable_if<
-
20896  std::is_base_of<
-
20897  std::random_access_iterator_tag,
-
20898  typename std::iterator_traits<IteratorType>::iterator_category>::value, int>::type = 0>
- -
20900  static bool sax_parse(IteratorType first, IteratorType last, SAX* sax)
-
20901  {
-
20902  return parser(detail::input_adapter(first, last)).sax_parse(sax);
-
20903  }
-
20904 
-
20913  JSON_HEDLEY_DEPRECATED(3.0.0)
-
20914  friend std::istream& operator<<(basic_json& j, std::istream& i)
-
20915  {
-
20916  return operator>>(i, j);
-
20917  }
-
20918 
-
20944  friend std::istream& operator>>(std::istream& i, basic_json& j)
-
20945  {
-
20946  parser(detail::input_adapter(i)).parse(false, j);
-
20947  return i;
-
20948  }
-
20949 
-
20951 
-
20953  // convenience functions //
-
20955 
- -
20987  const char* type_name() const noexcept
-
20988  {
-
20989  {
-
20990  switch (m_type)
-
20991  {
-
20992  case value_t::null:
-
20993  return "null";
-
20994  case value_t::object:
-
20995  return "object";
-
20996  case value_t::array:
-
20997  return "array";
-
20998  case value_t::string:
-
20999  return "string";
-
21000  case value_t::boolean:
-
21001  return "boolean";
-
21002  case value_t::discarded:
-
21003  return "discarded";
-
21004  default:
-
21005  return "number";
-
21006  }
-
21007  }
-
21008  }
-
21009 
-
21010 
-
21011  private:
-
21013  // member variables //
-
21015 
-
21017  value_t m_type = value_t::null;
-
21018 
-
21020  json_value m_value = {};
-
21021 
-
21023  // binary serialization/deserialization //
-
21025 
-
21028 
-
21029  public:
-
21118  static std::vector<uint8_t> to_cbor(const basic_json& j)
-
21119  {
-
21120  std::vector<uint8_t> result;
-
21121  to_cbor(j, result);
-
21122  return result;
-
21123  }
-
21124 
- -
21126  {
- -
21128  }
-
21129 
- -
21131  {
- -
21133  }
-
21134 
-
21214  static std::vector<uint8_t> to_msgpack(const basic_json& j)
-
21215  {
-
21216  std::vector<uint8_t> result;
-
21217  to_msgpack(j, result);
-
21218  return result;
-
21219  }
-
21220 
- -
21222  {
- -
21224  }
-
21225 
- -
21227  {
- -
21229  }
-
21230 
-
21311  static std::vector<uint8_t> to_ubjson(const basic_json& j,
-
21312  const bool use_size = false,
-
21313  const bool use_type = false)
-
21314  {
-
21315  std::vector<uint8_t> result;
-
21316  to_ubjson(j, result, use_size, use_type);
-
21317  return result;
-
21318  }
-
21319 
- -
21321  const bool use_size = false, const bool use_type = false)
-
21322  {
-
21323  binary_writer<uint8_t>(o).write_ubjson(j, use_size, use_type);
-
21324  }
-
21325 
- -
21327  const bool use_size = false, const bool use_type = false)
-
21328  {
-
21329  binary_writer<char>(o).write_ubjson(j, use_size, use_type);
-
21330  }
-
21331 
-
21332 
-
21388  static std::vector<uint8_t> to_bson(const basic_json& j)
-
21389  {
-
21390  std::vector<uint8_t> result;
-
21391  to_bson(j, result);
-
21392  return result;
-
21393  }
-
21394 
- -
21404  {
- -
21406  }
-
21407 
- -
21412  {
- -
21414  }
-
21415 
-
21416 
- - -
21518  const bool strict = true,
-
21519  const bool allow_exceptions = true)
-
21520  {
-
21521  basic_json result;
-
21522  detail::json_sax_dom_parser<basic_json> sdp(result, allow_exceptions);
-
21523  const bool res = binary_reader(detail::input_adapter(i)).sax_parse(input_format_t::cbor, &sdp, strict);
-
21524  return res ? result : basic_json(value_t::discarded);
-
21525  }
-
21526 
-
21530  template<typename A1, typename A2,
- - -
21533  static basic_json from_cbor(A1 && a1, A2 && a2,
-
21534  const bool strict = true,
-
21535  const bool allow_exceptions = true)
-
21536  {
-
21537  basic_json result;
-
21538  detail::json_sax_dom_parser<basic_json> sdp(result, allow_exceptions);
-
21539  const bool res = binary_reader(detail::input_adapter(std::forward<A1>(a1), std::forward<A2>(a2))).sax_parse(input_format_t::cbor, &sdp, strict);
-
21540  return res ? result : basic_json(value_t::discarded);
-
21541  }
-
21542 
- - -
21627  const bool strict = true,
-
21628  const bool allow_exceptions = true)
-
21629  {
-
21630  basic_json result;
-
21631  detail::json_sax_dom_parser<basic_json> sdp(result, allow_exceptions);
-
21632  const bool res = binary_reader(detail::input_adapter(i)).sax_parse(input_format_t::msgpack, &sdp, strict);
-
21633  return res ? result : basic_json(value_t::discarded);
-
21634  }
-
21635 
-
21639  template<typename A1, typename A2,
- - -
21642  static basic_json from_msgpack(A1 && a1, A2 && a2,
-
21643  const bool strict = true,
-
21644  const bool allow_exceptions = true)
-
21645  {
-
21646  basic_json result;
-
21647  detail::json_sax_dom_parser<basic_json> sdp(result, allow_exceptions);
-
21648  const bool res = binary_reader(detail::input_adapter(std::forward<A1>(a1), std::forward<A2>(a2))).sax_parse(input_format_t::msgpack, &sdp, strict);
-
21649  return res ? result : basic_json(value_t::discarded);
-
21650  }
-
21651 
- - -
21715  const bool strict = true,
-
21716  const bool allow_exceptions = true)
-
21717  {
-
21718  basic_json result;
-
21719  detail::json_sax_dom_parser<basic_json> sdp(result, allow_exceptions);
-
21720  const bool res = binary_reader(detail::input_adapter(i)).sax_parse(input_format_t::ubjson, &sdp, strict);
-
21721  return res ? result : basic_json(value_t::discarded);
-
21722  }
-
21723 
-
21727  template<typename A1, typename A2,
- - -
21730  static basic_json from_ubjson(A1 && a1, A2 && a2,
-
21731  const bool strict = true,
-
21732  const bool allow_exceptions = true)
-
21733  {
-
21734  basic_json result;
-
21735  detail::json_sax_dom_parser<basic_json> sdp(result, allow_exceptions);
-
21736  const bool res = binary_reader(detail::input_adapter(std::forward<A1>(a1), std::forward<A2>(a2))).sax_parse(input_format_t::ubjson, &sdp, strict);
-
21737  return res ? result : basic_json(value_t::discarded);
-
21738  }
-
21739 
- - -
21802  const bool strict = true,
-
21803  const bool allow_exceptions = true)
-
21804  {
-
21805  basic_json result;
-
21806  detail::json_sax_dom_parser<basic_json> sdp(result, allow_exceptions);
-
21807  const bool res = binary_reader(detail::input_adapter(i)).sax_parse(input_format_t::bson, &sdp, strict);
-
21808  return res ? result : basic_json(value_t::discarded);
-
21809  }
-
21810 
-
21814  template<typename A1, typename A2,
- - -
21817  static basic_json from_bson(A1 && a1, A2 && a2,
-
21818  const bool strict = true,
-
21819  const bool allow_exceptions = true)
-
21820  {
-
21821  basic_json result;
-
21822  detail::json_sax_dom_parser<basic_json> sdp(result, allow_exceptions);
-
21823  const bool res = binary_reader(detail::input_adapter(std::forward<A1>(a1), std::forward<A2>(a2))).sax_parse(input_format_t::bson, &sdp, strict);
-
21824  return res ? result : basic_json(value_t::discarded);
-
21825  }
-
21826 
-
21827 
-
21828 
-
21830 
-
21832  // JSON Pointer support //
-
21834 
-
21837 
- -
21872  {
-
21873  return ptr.get_unchecked(this);
-
21874  }
-
21875 
- -
21900  {
-
21901  return ptr.get_unchecked(this);
-
21902  }
-
21903 
- -
21943  {
-
21944  return ptr.get_checked(this);
-
21945  }
-
21946 
-
21985  const_reference at(const json_pointer& ptr) const
-
21986  {
-
21987  return ptr.get_checked(this);
-
21988  }
-
21989 
- -
22013  {
-
22014  basic_json result(value_t::object);
-
22015  json_pointer::flatten("", *this, result);
-
22016  return result;
-
22017  }
-
22018 
- -
22050  {
-
22051  return json_pointer::unflatten(*this);
-
22052  }
-
22053 
-
22055 
-
22057  // JSON Patch functions //
-
22059 
-
22062 
-
22110  basic_json patch(const basic_json& json_patch) const
-
22111  {
-
22112  // make a working copy to apply the patch to
-
22113  basic_json result = *this;
-
22114 
-
22115  // the valid JSON Patch operations
-
22116  enum class patch_operations {add, remove, replace, move, copy, test, invalid};
-
22117 
-
22118  const auto get_op = [](const std::string & op)
-
22119  {
-
22120  if (op == "add")
-
22121  {
-
22122  return patch_operations::add;
-
22123  }
-
22124  if (op == "remove")
-
22125  {
-
22126  return patch_operations::remove;
-
22127  }
-
22128  if (op == "replace")
-
22129  {
-
22130  return patch_operations::replace;
-
22131  }
-
22132  if (op == "move")
-
22133  {
-
22134  return patch_operations::move;
-
22135  }
-
22136  if (op == "copy")
-
22137  {
-
22138  return patch_operations::copy;
-
22139  }
-
22140  if (op == "test")
-
22141  {
-
22142  return patch_operations::test;
-
22143  }
-
22144 
-
22145  return patch_operations::invalid;
-
22146  };
-
22147 
-
22148  // wrapper for "add" operation; add value at ptr
-
22149  const auto operation_add = [&result](json_pointer & ptr, basic_json val)
-
22150  {
-
22151  // adding to the root of the target document means replacing it
-
22152  if (ptr.empty())
-
22153  {
-
22154  result = val;
-
22155  return;
-
22156  }
-
22157 
-
22158  // make sure the top element of the pointer exists
-
22159  json_pointer top_pointer = ptr.top();
-
22160  if (top_pointer != ptr)
-
22161  {
-
22162  result.at(top_pointer);
-
22163  }
-
22164 
-
22165  // get reference to parent of JSON pointer ptr
-
22166  const auto last_path = ptr.back();
-
22167  ptr.pop_back();
-
22168  basic_json& parent = result[ptr];
-
22169 
-
22170  switch (parent.m_type)
-
22171  {
-
22172  case value_t::null:
-
22173  case value_t::object:
-
22174  {
-
22175  // use operator[] to add value
-
22176  parent[last_path] = val;
-
22177  break;
-
22178  }
-
22179 
-
22180  case value_t::array:
-
22181  {
-
22182  if (last_path == "-")
-
22183  {
-
22184  // special case: append to back
-
22185  parent.push_back(val);
-
22186  }
-
22187  else
-
22188  {
-
22189  const auto idx = json_pointer::array_index(last_path);
-
22190  if (JSON_HEDLEY_UNLIKELY(static_cast<size_type>(idx) > parent.size()))
-
22191  {
-
22192  // avoid undefined behavior
-
22193  JSON_THROW(out_of_range::create(401, "array index " + std::to_string(idx) + " is out of range"));
-
22194  }
-
22195 
-
22196  // default case: insert add offset
-
22197  parent.insert(parent.begin() + static_cast<difference_type>(idx), val);
-
22198  }
-
22199  break;
-
22200  }
-
22201 
-
22202  // if there exists a parent it cannot be primitive
-
22203  default: // LCOV_EXCL_LINE
-
22204  assert(false); // LCOV_EXCL_LINE
-
22205  }
-
22206  };
-
22207 
-
22208  // wrapper for "remove" operation; remove value at ptr
-
22209  const auto operation_remove = [&result](json_pointer & ptr)
-
22210  {
-
22211  // get reference to parent of JSON pointer ptr
-
22212  const auto last_path = ptr.back();
-
22213  ptr.pop_back();
-
22214  basic_json& parent = result.at(ptr);
-
22215 
-
22216  // remove child
-
22217  if (parent.is_object())
-
22218  {
-
22219  // perform range check
-
22220  auto it = parent.find(last_path);
-
22221  if (JSON_HEDLEY_LIKELY(it != parent.end()))
-
22222  {
-
22223  parent.erase(it);
-
22224  }
-
22225  else
-
22226  {
-
22227  JSON_THROW(out_of_range::create(403, "key '" + last_path + "' not found"));
-
22228  }
-
22229  }
-
22230  else if (parent.is_array())
-
22231  {
-
22232  // note erase performs range check
-
22233  parent.erase(static_cast<size_type>(json_pointer::array_index(last_path)));
-
22234  }
-
22235  };
-
22236 
-
22237  // type check: top level value must be an array
-
22238  if (JSON_HEDLEY_UNLIKELY(not json_patch.is_array()))
-
22239  {
-
22240  JSON_THROW(parse_error::create(104, 0, "JSON patch must be an array of objects"));
-
22241  }
-
22242 
-
22243  // iterate and apply the operations
-
22244  for (const auto& val : json_patch)
-
22245  {
-
22246  // wrapper to get a value for an operation
-
22247  const auto get_value = [&val](const std::string & op,
-
22248  const std::string & member,
-
22249  bool string_type) -> basic_json &
-
22250  {
-
22251  // find value
-
22252  auto it = val.m_value.object->find(member);
-
22253 
-
22254  // context-sensitive error message
-
22255  const auto error_msg = (op == "op") ? "operation" : "operation '" + op + "'";
-
22256 
-
22257  // check if desired value is present
-
22258  if (JSON_HEDLEY_UNLIKELY(it == val.m_value.object->end()))
-
22259  {
-
22260  JSON_THROW(parse_error::create(105, 0, error_msg + " must have member '" + member + "'"));
-
22261  }
-
22262 
-
22263  // check if result is of type string
-
22264  if (JSON_HEDLEY_UNLIKELY(string_type and not it->second.is_string()))
-
22265  {
-
22266  JSON_THROW(parse_error::create(105, 0, error_msg + " must have string member '" + member + "'"));
-
22267  }
-
22268 
-
22269  // no error: return value
-
22270  return it->second;
-
22271  };
-
22272 
-
22273  // type check: every element of the array must be an object
-
22274  if (JSON_HEDLEY_UNLIKELY(not val.is_object()))
-
22275  {
-
22276  JSON_THROW(parse_error::create(104, 0, "JSON patch must be an array of objects"));
-
22277  }
-
22278 
-
22279  // collect mandatory members
-
22280  const std::string op = get_value("op", "op", true);
-
22281  const std::string path = get_value(op, "path", true);
-
22282  json_pointer ptr(path);
-
22283 
-
22284  switch (get_op(op))
-
22285  {
-
22286  case patch_operations::add:
-
22287  {
-
22288  operation_add(ptr, get_value("add", "value", false));
-
22289  break;
-
22290  }
-
22291 
-
22292  case patch_operations::remove:
-
22293  {
-
22294  operation_remove(ptr);
-
22295  break;
-
22296  }
-
22297 
-
22298  case patch_operations::replace:
-
22299  {
-
22300  // the "path" location must exist - use at()
-
22301  result.at(ptr) = get_value("replace", "value", false);
-
22302  break;
-
22303  }
-
22304 
-
22305  case patch_operations::move:
-
22306  {
-
22307  const std::string from_path = get_value("move", "from", true);
-
22308  json_pointer from_ptr(from_path);
-
22309 
-
22310  // the "from" location must exist - use at()
-
22311  basic_json v = result.at(from_ptr);
-
22312 
-
22313  // The move operation is functionally identical to a
-
22314  // "remove" operation on the "from" location, followed
-
22315  // immediately by an "add" operation at the target
-
22316  // location with the value that was just removed.
-
22317  operation_remove(from_ptr);
-
22318  operation_add(ptr, v);
-
22319  break;
-
22320  }
-
22321 
-
22322  case patch_operations::copy:
-
22323  {
-
22324  const std::string from_path = get_value("copy", "from", true);
-
22325  const json_pointer from_ptr(from_path);
-
22326 
-
22327  // the "from" location must exist - use at()
-
22328  basic_json v = result.at(from_ptr);
-
22329 
-
22330  // The copy is functionally identical to an "add"
-
22331  // operation at the target location using the value
-
22332  // specified in the "from" member.
-
22333  operation_add(ptr, v);
-
22334  break;
-
22335  }
-
22336 
-
22337  case patch_operations::test:
-
22338  {
-
22339  bool success = false;
-
22340  JSON_TRY
-
22341  {
-
22342  // check if "value" matches the one at "path"
-
22343  // the "path" location must exist - use at()
-
22344  success = (result.at(ptr) == get_value("test", "value", false));
-
22345  }
- -
22347  {
-
22348  // ignore out of range errors: success remains false
-
22349  }
-
22350 
-
22351  // throw an exception if test fails
-
22352  if (JSON_HEDLEY_UNLIKELY(not success))
-
22353  {
-
22354  JSON_THROW(other_error::create(501, "unsuccessful: " + val.dump()));
-
22355  }
-
22356 
-
22357  break;
-
22358  }
-
22359 
-
22360  default:
-
22361  {
-
22362  // op must be "add", "remove", "replace", "move", "copy", or
-
22363  // "test"
-
22364  JSON_THROW(parse_error::create(105, 0, "operation value '" + op + "' is invalid"));
-
22365  }
-
22366  }
-
22367  }
-
22368 
-
22369  return result;
-
22370  }
-
22371 
- -
22406  static basic_json diff(const basic_json& source, const basic_json& target,
-
22407  const std::string& path = "")
-
22408  {
-
22409  // the patch
-
22410  basic_json result(value_t::array);
-
22411 
-
22412  // if the values are the same, return empty patch
-
22413  if (source == target)
-
22414  {
-
22415  return result;
-
22416  }
-
22417 
-
22418  if (source.type() != target.type())
-
22419  {
-
22420  // different types: replace value
-
22421  result.push_back(
-
22422  {
-
22423  {"op", "replace"}, {"path", path}, {"value", target}
-
22424  });
-
22425  return result;
-
22426  }
-
22427 
-
22428  switch (source.type())
-
22429  {
-
22430  case value_t::array:
-
22431  {
-
22432  // first pass: traverse common elements
-
22433  std::size_t i = 0;
-
22434  while (i < source.size() and i < target.size())
-
22435  {
-
22436  // recursive call to compare array values at index i
-
22437  auto temp_diff = diff(source[i], target[i], path + "/" + std::to_string(i));
-
22438  result.insert(result.end(), temp_diff.begin(), temp_diff.end());
-
22439  ++i;
-
22440  }
-
22441 
-
22442  // i now reached the end of at least one array
-
22443  // in a second pass, traverse the remaining elements
-
22444 
-
22445  // remove my remaining elements
-
22446  const auto end_index = static_cast<difference_type>(result.size());
-
22447  while (i < source.size())
-
22448  {
-
22449  // add operations in reverse order to avoid invalid
-
22450  // indices
-
22451  result.insert(result.begin() + end_index, object(
-
22452  {
-
22453  {"op", "remove"},
-
22454  {"path", path + "/" + std::to_string(i)}
-
22455  }));
-
22456  ++i;
-
22457  }
-
22458 
-
22459  // add other remaining elements
-
22460  while (i < target.size())
-
22461  {
-
22462  result.push_back(
-
22463  {
-
22464  {"op", "add"},
-
22465  {"path", path + "/" + std::to_string(i)},
-
22466  {"value", target[i]}
-
22467  });
-
22468  ++i;
-
22469  }
-
22470 
-
22471  break;
-
22472  }
-
22473 
-
22474  case value_t::object:
-
22475  {
-
22476  // first pass: traverse this object's elements
-
22477  for (auto it = source.cbegin(); it != source.cend(); ++it)
-
22478  {
-
22479  // escape the key name to be used in a JSON patch
-
22480  const auto key = json_pointer::escape(it.key());
-
22481 
-
22482  if (target.find(it.key()) != target.end())
-
22483  {
-
22484  // recursive call to compare object values at key it
-
22485  auto temp_diff = diff(it.value(), target[it.key()], path + "/" + key);
-
22486  result.insert(result.end(), temp_diff.begin(), temp_diff.end());
-
22487  }
-
22488  else
-
22489  {
-
22490  // found a key that is not in o -> remove it
-
22491  result.push_back(object(
-
22492  {
-
22493  {"op", "remove"}, {"path", path + "/" + key}
-
22494  }));
-
22495  }
-
22496  }
-
22497 
-
22498  // second pass: traverse other object's elements
-
22499  for (auto it = target.cbegin(); it != target.cend(); ++it)
-
22500  {
-
22501  if (source.find(it.key()) == source.end())
-
22502  {
-
22503  // found a key that is not in this -> add it
-
22504  const auto key = json_pointer::escape(it.key());
-
22505  result.push_back(
-
22506  {
-
22507  {"op", "add"}, {"path", path + "/" + key},
-
22508  {"value", it.value()}
-
22509  });
-
22510  }
-
22511  }
-
22512 
-
22513  break;
-
22514  }
-
22515 
-
22516  default:
-
22517  {
-
22518  // both primitive type: replace value
-
22519  result.push_back(
-
22520  {
-
22521  {"op", "replace"}, {"path", path}, {"value", target}
-
22522  });
-
22523  break;
-
22524  }
-
22525  }
-
22526 
-
22527  return result;
-
22528  }
-
22529 
-
22531 
-
22533  // JSON Merge Patch functions //
-
22535 
-
22538 
-
22581  void merge_patch(const basic_json& apply_patch)
-
22582  {
-
22583  if (apply_patch.is_object())
-
22584  {
-
22585  if (not is_object())
-
22586  {
-
22587  *this = object();
-
22588  }
-
22589  for (auto it = apply_patch.begin(); it != apply_patch.end(); ++it)
-
22590  {
-
22591  if (it.value().is_null())
-
22592  {
-
22593  erase(it.key());
-
22594  }
-
22595  else
-
22596  {
-
22597  operator[](it.key()).merge_patch(it.value());
-
22598  }
-
22599  }
-
22600  }
-
22601  else
-
22602  {
-
22603  *this = apply_patch;
-
22604  }
-
22605  }
-
22606 
-
22608 };
-
22609 
- -
22620 std::string to_string(const NLOHMANN_BASIC_JSON_TPL& j)
-
22621 {
-
22622  return j.dump();
-
22623 }
-
22624 } // namespace nlohmann
-
22625 
-
22627 // nonmember support //
-
22629 
-
22630 // specialization of std::swap, and std::hash
-
22631 namespace std
-
22632 {
-
22633 
-
22635 template<>
-
22636 struct hash<nlohmann::json>
-
22637 {
-
22643  std::size_t operator()(const nlohmann::json& j) const
-
22644  {
-
22645  // a naive hashing via the string representation
-
22646  const auto& h = hash<nlohmann::json::string_t>();
-
22647  return h(j.dump());
-
22648  }
-
22649 };
-
22650 
-
22654 template<>
- -
22656 {
- -
22662  nlohmann::detail::value_t rhs) const noexcept
-
22663  {
-
22664  return nlohmann::detail::operator<(lhs, rhs);
-
22665  }
-
22666 };
-
22667 
-
22673 template<>
-
22674 inline void swap<nlohmann::json>(nlohmann::json& j1, nlohmann::json& j2) noexcept(
-
22675  is_nothrow_move_constructible<nlohmann::json>::value and
-
22676  is_nothrow_move_assignable<nlohmann::json>::value
-
22677 )
-
22678 {
-
22679  j1.swap(j2);
-
22680 }
-
22681 
-
22682 } // namespace std
-
22683 
- -
22698 inline nlohmann::json operator "" _json(const char* s, std::size_t n)
-
22699 {
-
22700  return nlohmann::json::parse(s, s + n);
-
22701 }
-
22702 
- -
22717 inline nlohmann::json::json_pointer operator "" _json_pointer(const char* s, std::size_t n)
-
22718 {
-
22719  return nlohmann::json::json_pointer(std::string(s, n));
-
22720 }
-
22721 
-
22722 // #include <nlohmann/detail/macro_unscope.hpp>
-
22723 
-
22724 
-
22725 // restore GCC/clang diagnostic settings
-
22726 #if defined(__clang__) || defined(__GNUC__) || defined(__GNUG__)
-
22727  #pragma GCC diagnostic pop
-
22728 #endif
-
22729 #if defined(__clang__)
-
22730  #pragma GCC diagnostic pop
-
22731 #endif
-
22732 
-
22733 // clean up
-
22734 #undef JSON_INTERNAL_CATCH
-
22735 #undef JSON_CATCH
-
22736 #undef JSON_THROW
-
22737 #undef JSON_TRY
-
22738 #undef JSON_HAS_CPP_14
-
22739 #undef JSON_HAS_CPP_17
-
22740 #undef NLOHMANN_BASIC_JSON_TPL_DECLARATION
-
22741 #undef NLOHMANN_BASIC_JSON_TPL
-
22742 
-
22743 // #include <nlohmann/thirdparty/hedley/hedley_undef.hpp>
-
22744 #undef JSON_HEDLEY_ALWAYS_INLINE
-
22745 #undef JSON_HEDLEY_ARM_VERSION
-
22746 #undef JSON_HEDLEY_ARM_VERSION_CHECK
-
22747 #undef JSON_HEDLEY_ARRAY_PARAM
-
22748 #undef JSON_HEDLEY_ASSUME
-
22749 #undef JSON_HEDLEY_BEGIN_C_DECLS
-
22750 #undef JSON_HEDLEY_C_DECL
-
22751 #undef JSON_HEDLEY_CLANG_HAS_ATTRIBUTE
-
22752 #undef JSON_HEDLEY_CLANG_HAS_BUILTIN
-
22753 #undef JSON_HEDLEY_CLANG_HAS_CPP_ATTRIBUTE
-
22754 #undef JSON_HEDLEY_CLANG_HAS_DECLSPEC_DECLSPEC_ATTRIBUTE
-
22755 #undef JSON_HEDLEY_CLANG_HAS_EXTENSION
-
22756 #undef JSON_HEDLEY_CLANG_HAS_FEATURE
-
22757 #undef JSON_HEDLEY_CLANG_HAS_WARNING
-
22758 #undef JSON_HEDLEY_COMPCERT_VERSION
-
22759 #undef JSON_HEDLEY_COMPCERT_VERSION_CHECK
-
22760 #undef JSON_HEDLEY_CONCAT
-
22761 #undef JSON_HEDLEY_CONCAT_EX
-
22762 #undef JSON_HEDLEY_CONST
-
22763 #undef JSON_HEDLEY_CONST_CAST
-
22764 #undef JSON_HEDLEY_CONSTEXPR
-
22765 #undef JSON_HEDLEY_CPP_CAST
-
22766 #undef JSON_HEDLEY_CRAY_VERSION
-
22767 #undef JSON_HEDLEY_CRAY_VERSION_CHECK
-
22768 #undef JSON_HEDLEY_DEPRECATED
-
22769 #undef JSON_HEDLEY_DEPRECATED_FOR
-
22770 #undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL
-
22771 #undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_
-
22772 #undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED
-
22773 #undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES
-
22774 #undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS
-
22775 #undef JSON_HEDLEY_DIAGNOSTIC_POP
-
22776 #undef JSON_HEDLEY_DIAGNOSTIC_PUSH
-
22777 #undef JSON_HEDLEY_DMC_VERSION
-
22778 #undef JSON_HEDLEY_DMC_VERSION_CHECK
-
22779 #undef JSON_HEDLEY_EMPTY_BASES
-
22780 #undef JSON_HEDLEY_EMSCRIPTEN_VERSION
-
22781 #undef JSON_HEDLEY_EMSCRIPTEN_VERSION_CHECK
-
22782 #undef JSON_HEDLEY_END_C_DECLS
-
22783 #undef JSON_HEDLEY_FALL_THROUGH
-
22784 #undef JSON_HEDLEY_FLAGS
-
22785 #undef JSON_HEDLEY_FLAGS_CAST
-
22786 #undef JSON_HEDLEY_GCC_HAS_ATTRIBUTE
-
22787 #undef JSON_HEDLEY_GCC_HAS_BUILTIN
-
22788 #undef JSON_HEDLEY_GCC_HAS_CPP_ATTRIBUTE
-
22789 #undef JSON_HEDLEY_GCC_HAS_DECLSPEC_ATTRIBUTE
-
22790 #undef JSON_HEDLEY_GCC_HAS_EXTENSION
-
22791 #undef JSON_HEDLEY_GCC_HAS_FEATURE
-
22792 #undef JSON_HEDLEY_GCC_HAS_WARNING
-
22793 #undef JSON_HEDLEY_GCC_NOT_CLANG_VERSION_CHECK
-
22794 #undef JSON_HEDLEY_GCC_VERSION
-
22795 #undef JSON_HEDLEY_GCC_VERSION_CHECK
-
22796 #undef JSON_HEDLEY_GNUC_HAS_ATTRIBUTE
-
22797 #undef JSON_HEDLEY_GNUC_HAS_BUILTIN
-
22798 #undef JSON_HEDLEY_GNUC_HAS_CPP_ATTRIBUTE
-
22799 #undef JSON_HEDLEY_GNUC_HAS_DECLSPEC_ATTRIBUTE
-
22800 #undef JSON_HEDLEY_GNUC_HAS_EXTENSION
-
22801 #undef JSON_HEDLEY_GNUC_HAS_FEATURE
-
22802 #undef JSON_HEDLEY_GNUC_HAS_WARNING
-
22803 #undef JSON_HEDLEY_GNUC_VERSION
-
22804 #undef JSON_HEDLEY_GNUC_VERSION_CHECK
-
22805 #undef JSON_HEDLEY_HAS_ATTRIBUTE
-
22806 #undef JSON_HEDLEY_HAS_BUILTIN
-
22807 #undef JSON_HEDLEY_HAS_CPP_ATTRIBUTE
-
22808 #undef JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS
-
22809 #undef JSON_HEDLEY_HAS_DECLSPEC_ATTRIBUTE
-
22810 #undef JSON_HEDLEY_HAS_EXTENSION
-
22811 #undef JSON_HEDLEY_HAS_FEATURE
-
22812 #undef JSON_HEDLEY_HAS_WARNING
-
22813 #undef JSON_HEDLEY_IAR_VERSION
-
22814 #undef JSON_HEDLEY_IAR_VERSION_CHECK
-
22815 #undef JSON_HEDLEY_IBM_VERSION
-
22816 #undef JSON_HEDLEY_IBM_VERSION_CHECK
-
22817 #undef JSON_HEDLEY_IMPORT
-
22818 #undef JSON_HEDLEY_INLINE
-
22819 #undef JSON_HEDLEY_INTEL_VERSION
-
22820 #undef JSON_HEDLEY_INTEL_VERSION_CHECK
-
22821 #undef JSON_HEDLEY_IS_CONSTANT
-
22822 #undef JSON_HEDLEY_IS_CONSTEXPR_
-
22823 #undef JSON_HEDLEY_LIKELY
-
22824 #undef JSON_HEDLEY_MALLOC
-
22825 #undef JSON_HEDLEY_MESSAGE
-
22826 #undef JSON_HEDLEY_MSVC_VERSION
-
22827 #undef JSON_HEDLEY_MSVC_VERSION_CHECK
-
22828 #undef JSON_HEDLEY_NEVER_INLINE
-
22829 #undef JSON_HEDLEY_NO_ESCAPE
-
22830 #undef JSON_HEDLEY_NON_NULL
-
22831 #undef JSON_HEDLEY_NO_RETURN
-
22832 #undef JSON_HEDLEY_NO_THROW
-
22833 #undef JSON_HEDLEY_NULL
-
22834 #undef JSON_HEDLEY_PELLES_VERSION
-
22835 #undef JSON_HEDLEY_PELLES_VERSION_CHECK
-
22836 #undef JSON_HEDLEY_PGI_VERSION
-
22837 #undef JSON_HEDLEY_PGI_VERSION_CHECK
-
22838 #undef JSON_HEDLEY_PREDICT
-
22839 #undef JSON_HEDLEY_PRINTF_FORMAT
-
22840 #undef JSON_HEDLEY_PRIVATE
-
22841 #undef JSON_HEDLEY_PUBLIC
-
22842 #undef JSON_HEDLEY_PURE
-
22843 #undef JSON_HEDLEY_REINTERPRET_CAST
-
22844 #undef JSON_HEDLEY_REQUIRE
-
22845 #undef JSON_HEDLEY_REQUIRE_CONSTEXPR
-
22846 #undef JSON_HEDLEY_REQUIRE_MSG
-
22847 #undef JSON_HEDLEY_RESTRICT
-
22848 #undef JSON_HEDLEY_RETURNS_NON_NULL
-
22849 #undef JSON_HEDLEY_SENTINEL
-
22850 #undef JSON_HEDLEY_STATIC_ASSERT
-
22851 #undef JSON_HEDLEY_STATIC_CAST
-
22852 #undef JSON_HEDLEY_STRINGIFY
-
22853 #undef JSON_HEDLEY_STRINGIFY_EX
-
22854 #undef JSON_HEDLEY_SUNPRO_VERSION
-
22855 #undef JSON_HEDLEY_SUNPRO_VERSION_CHECK
-
22856 #undef JSON_HEDLEY_TINYC_VERSION
-
22857 #undef JSON_HEDLEY_TINYC_VERSION_CHECK
-
22858 #undef JSON_HEDLEY_TI_VERSION
-
22859 #undef JSON_HEDLEY_TI_VERSION_CHECK
-
22860 #undef JSON_HEDLEY_UNAVAILABLE
-
22861 #undef JSON_HEDLEY_UNLIKELY
-
22862 #undef JSON_HEDLEY_UNPREDICTABLE
-
22863 #undef JSON_HEDLEY_UNREACHABLE
-
22864 #undef JSON_HEDLEY_UNREACHABLE_RETURN
-
22865 #undef JSON_HEDLEY_VERSION
-
22866 #undef JSON_HEDLEY_VERSION_DECODE_MAJOR
-
22867 #undef JSON_HEDLEY_VERSION_DECODE_MINOR
-
22868 #undef JSON_HEDLEY_VERSION_DECODE_REVISION
-
22869 #undef JSON_HEDLEY_VERSION_ENCODE
-
22870 #undef JSON_HEDLEY_WARNING
-
22871 #undef JSON_HEDLEY_WARN_UNUSED_RESULT
-
22872 
-
22873 
-
22874 
-
22875 #endif // INCLUDE_NLOHMANN_JSON_HPP_
-
-
a template for a reverse iterator class
Definition: json.hpp:9982
-
difference_type operator-(const iter_impl &other) const
return difference
Definition: json.hpp:9864
-
void int_to_string(string_type &target, std::size_t value)
Definition: json.hpp:3293
-
iteration_proxy_value< IteratorType > begin() noexcept
return iterator begin (needed for range-based for)
Definition: json.hpp:3397
-
primitive_iterator_t & operator+=(difference_type n) noexcept
Definition: json.hpp:9261
-
static auto to_json(BasicJsonType &j, ValueType &&val) noexcept(noexcept(::nlohmann::to_json(j, std::forward< ValueType >(val)))) -> decltype(::nlohmann::to_json(j, std::forward< ValueType >(val)), void())
convert any value type to a JSON value
Definition: json.hpp:3827
-
void insert(const_iterator first, const_iterator last)
inserts elements
Definition: json.hpp:19910
-
typename BasicJsonType::parse_event_t parse_event_t
Definition: json.hpp:4644
-
IteratorType erase(IteratorType pos)
remove element given an iterator
Definition: json.hpp:18240
-
Array get_to(T(&v)[N]) const noexcept(noexcept(JSONSerializer< Array >::from_json(std::declval< const basic_json_t & >(), v)))
Definition: json.hpp:17283
-
NumberFloatType number_float_t
a type for a number (floating-point)
Definition: json.hpp:15362
-
std::char_traits< char >::int_type get_character() noexcept override
get a character [0,255] or std::char_traits<char>::eof().
Definition: json.hpp:4008
-
exception indicating executing a member function with a wrong type
Definition: json.hpp:2075
-
const_reference operator[](const json_pointer &ptr) const
access specified element via JSON Pointer
Definition: json.hpp:21899
-
primitive_iterator_t & operator++() noexcept
Definition: json.hpp:9235
-
typename T::difference_type difference_type_t
Definition: json.hpp:2495
-
static constexpr int kPrecision
Definition: json.hpp:12701
-
std::ptrdiff_t difference_type
Definition: json.hpp:3300
-
std::char_traits< char >::int_type get_character() override
get a character [0,255] or std::char_traits<char>::eof().
Definition: json.hpp:3976
-
#define NLOHMANN_BASIC_JSON_TPL_DECLARATION
Definition: json.hpp:1814
-
void write_cbor(const BasicJsonType &j)
Definition: json.hpp:11357
-
json_ref(value_type &&value)
Definition: json.hpp:11106
- -
static bool accept(IteratorType first, IteratorType last)
Definition: json.hpp:20890
-
#define JSON_HEDLEY_DIAGNOSTIC_POP
Definition: json.hpp:736
-
static auto from_json(BasicJsonType &&j, ValueType &val) noexcept(noexcept(::nlohmann::from_json(std::forward< BasicJsonType >(j), val))) -> decltype(::nlohmann::from_json(std::forward< BasicJsonType >(j), val), void())
convert a JSON value to any value type
Definition: json.hpp:3810
-
boundaries compute_boundaries(FloatType value)
Definition: json.hpp:12831
-
pointer operator->() const
dereference the iterator
Definition: json.hpp:9583
-
decltype(std::declval< T & >().start_array(std::declval< std::size_t >())) start_array_function_t
Definition: json.hpp:5066
-
bool string(string_t &val)
Definition: json.hpp:4691
-
static constexpr CharType to_char_type(InputCharType x) noexcept
Definition: json.hpp:12614
-
json_ref & operator=(const json_ref &)=delete
-
IteratorType::reference value() const
return value of the iterator
Definition: json.hpp:3378
-
@ begin_object
the character for object begin {
-
iterator insert(const_iterator pos, size_type cnt, const basic_json &val)
inserts elements
Definition: json.hpp:19768
-
void get_arithmetic_value(const BasicJsonType &j, ArithmeticType &val)
Definition: json.hpp:2912
-
NLOHMANN_BASIC_JSON_TPL_DECLARATION std::string to_string(const NLOHMANN_BASIC_JSON_TPL &j)
user-defined to_string function for JSON values
Definition: json.hpp:22620
-
bool string(string_t &val)
Definition: json.hpp:4508
-
value_type moved_or_copied() const
Definition: json.hpp:11132
-
general exception of the basic_json class
Definition: json.hpp:1864
- -
bool empty() const noexcept
return whether pointer points to the root document
Definition: json.hpp:10391
-
Definition: json.hpp:2520
-
value_t
the JSON type enumeration
Definition: json.hpp:2854
-
@ value
the parser finished reading a JSON value
-
const_reference at(size_type idx) const
access specified array element with bounds checking
Definition: json.hpp:17566
-
constexpr bool is_number_integer() const noexcept
return whether value is an integer number
Definition: json.hpp:16772
-
iter_impl(const iter_impl< typename std::remove_const< BasicJsonType >::type > &other) noexcept
converting constructor
Definition: json.hpp:9456
-
iter_impl & operator--()
pre-decrement (–it)
Definition: json.hpp:9671
-
decltype(get< N >(std::declval< ::nlohmann::detail::iteration_proxy_value< IteratorType > >())) type
Definition: json.hpp:3448
-
decltype(std::declval< T & >().start_object(std::declval< std::size_t >())) start_object_function_t
Definition: json.hpp:5055
-
reference front()
access the first element
Definition: json.hpp:18129
-
const iter_impl operator++(int)
post-increment (it++)
Definition: json.hpp:9617
-
iter_impl & operator=(const iter_impl< const BasicJsonType > &other) noexcept
converting assignment
Definition: json.hpp:9444
- -
static void to_bson(const basic_json &j, detail::output_adapter< char > o)
Serializes the given JSON object j to BSON and forwards the corresponding BSON-representation to the ...
Definition: json.hpp:21411
-
@ ignore
ignore invalid UTF-8 sequences
-
decltype(std::declval< T & >().boolean(std::declval< bool >())) boolean_function_t
Definition: json.hpp:5035
-
static void construct(BasicJsonType &j, const CompatibleArrayType &arr)
Definition: json.hpp:3572
-
void grisu2_round(char *buf, int len, std::uint64_t dist, std::uint64_t delta, std::uint64_t rest, std::uint64_t ten_k)
Definition: json.hpp:13190
-
ArrayType< basic_json, AllocatorType< basic_json > > array_t
a type for an array
Definition: json.hpp:15072
-
bool key(string_t &val)
Definition: json.hpp:4715
-
basic_json(initializer_list_t init, bool type_deduction=true, value_t manual_type=value_t::array)
create a container (array or object) from an initializer list
Definition: json.hpp:15999
-
void write_character(CharType c) override
Definition: json.hpp:11266
- -
friend bool operator!=(const ScalarType lhs, const_reference rhs) noexcept
comparison: not equal
Definition: json.hpp:20341
-
~input_stream_adapter() override
Definition: json.hpp:3956
-
bool end_object()
Definition: json.hpp:4988
-
JSON_HEDLEY_RETURNS_NON_NULL char * to_chars(char *first, const char *last, FloatType value)
generates a decimal representation of the floating-point number value in [first, last).
Definition: json.hpp:13709
-
typename BasicJsonType::number_unsigned_t number_unsigned_t
type for unsigned integers
Definition: json.hpp:4338
-
bool start_array(std::size_t len)
Definition: json.hpp:4761
-
friend bool operator<(const_reference lhs, const ScalarType rhs) noexcept
comparison: less than
Definition: json.hpp:20448
-
Definition: json.hpp:2799
-
@ replace
replace invalid UTF-8 sequences with U+FFFD
- -
bool operator==(const iter_impl &other) const
comparison: equal
Definition: json.hpp:9703
-
typename BasicJsonType::template json_serializer< T, void > serializer
Definition: json.hpp:2526
-
typename T::mapped_type mapped_type_t
Definition: json.hpp:2486
-
void type
Definition: json.hpp:2265
-
#define JSON_HEDLEY_PURE
Definition: json.hpp:1170
-
bool start_object(std::size_t=std::size_t(-1))
Definition: json.hpp:4978
-
value_type const & operator*() const
Definition: json.hpp:11141
-
virtual bool parse_error(std::size_t position, const std::string &last_token, const detail::exception &ex)=0
a parse error occurred
-
#define JSON_HEDLEY_UNLIKELY(expr)
Definition: json.hpp:1124
- -
static void construct(BasicJsonType &j, typename BasicJsonType::object_t &&obj)
Definition: json.hpp:3621
-
virtual bool number_unsigned(number_unsigned_t val)=0
an unsigned integer number was read
-
JSON_HEDLEY_RETURNS_NON_NULL char * format_buffer(char *buf, int len, int decimal_exponent, int min_exp, int max_exp)
prettify v = buf * 10^decimal_exponent
Definition: json.hpp:13624
-
void grisu2_digit_gen(char *buffer, int &length, int &decimal_exponent, diyfp M_minus, diyfp w, diyfp M_plus)
Definition: json.hpp:13231
-
Definition: json.hpp:12699
-
std::char_traits< char >::int_type get_character() noexcept override
get a character [0,255] or std::char_traits<char>::eof().
Definition: json.hpp:4158
-
json_reverse_iterator operator+(difference_type i) const
add to iterator
Definition: json.hpp:10029
-
@ parse_error
indicating a parse error
-
@ object
object (unordered set of name/value pairs)
-
json_sax_dom_parser(BasicJsonType &r, const bool allow_exceptions_=true)
Definition: json.hpp:4467
-
typename BasicJsonType::number_float_t number_float_t
Definition: json.hpp:4459
- -
std::string get_token_string() const
Definition: json.hpp:8488
-
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json object(initializer_list_t init={})
explicitly create an object from an initializer list
Definition: json.hpp:16133
-
typename BasicJsonType::string_t string_t
Definition: json.hpp:4460
-
~file_input_adapter() override=default
- -
struct to capture the start position of the current token
Definition: json.hpp:89
-
void dump(const BasicJsonType &val, const bool pretty_print, const bool ensure_ascii, const unsigned int indent_step, const unsigned int current_indent=0)
internal implementation of the serialization function
Definition: json.hpp:13837
-
diyfp w
Definition: json.hpp:12819
-
Definition: json.hpp:2589
-
static constexpr CharType to_char_type(std::uint8_t x) noexcept
Definition: json.hpp:12585
-
Definition: json.hpp:2228
-
static std::vector< uint8_t > to_msgpack(const basic_json &j)
create a MessagePack serialization of a given JSON value
Definition: json.hpp:21214
-
reference operator[](const json_pointer &ptr)
access specified element via JSON Pointer
Definition: json.hpp:21871
-
const_iterator find(KeyT &&key) const
find an element in a JSON object
Definition: json.hpp:18537
-
static other_error create(int id_, const std::string &what_arg)
Definition: json.hpp:2163
-
json_pointer(const std::string &s="")
create JSON pointer
Definition: json.hpp:10120
-
basic_json(basic_json &&other) noexcept
move constructor
Definition: json.hpp:16432
-
input_buffer_adapter & operator=(input_buffer_adapter &)=delete
-
size_type count(KeyT &&key) const
returns the number of occurrences of a key in a JSON object
Definition: json.hpp:18571
-
const_iterator cend() const noexcept
returns a const iterator to one past the last element
Definition: json.hpp:18785
-
reference operator+=(initializer_list_t init)
add an object to an object
Definition: json.hpp:19566
-
const_iterator begin() const noexcept
returns a const iterator to the first element
Definition: json.hpp:18684
-
constexpr bool is_null() const noexcept
return whether value is null
Definition: json.hpp:16691
-
constexpr position_t get_position() const noexcept
return position of last read token
Definition: json.hpp:8480
-
typename BasicJsonType::number_integer_t number_integer_t
Definition: json.hpp:4943
-
exception indicating access out of the defined range
Definition: json.hpp:2122
-
typename detected_or< Default, Op, Args... >::type detected_or_t
Definition: json.hpp:2373
-
#define JSON_CATCH(exception)
Definition: json.hpp:1756
-
const_reference at(const json_pointer &ptr) const
access specified element via JSON Pointer
Definition: json.hpp:21985
-
std::false_type value_t
Definition: json.hpp:2352
-
static void construct(BasicJsonType &j, typename BasicJsonType::array_t &&arr)
Definition: json.hpp:3562
-
bool parse_error(std::size_t, const std::string &, const detail::exception &ex)
Definition: json.hpp:4559
-
exception indicating errors with iterators
Definition: json.hpp:2021
-
#define JSON_INTERNAL_CATCH(exception)
Definition: json.hpp:1757
-
void swap(reference other) noexcept(std::is_nothrow_move_constructible< value_t >::value and std::is_nothrow_move_assignable< value_t >::value and std::is_nothrow_move_constructible< json_value >::value and std::is_nothrow_move_assignable< json_value >::value)
exchanges the values
Definition: json.hpp:20054
-
typename BasicJsonType::string_t string_t
Definition: json.hpp:4642
-
json_reverse_iterator< typename basic_json::iterator > reverse_iterator
a reverse iterator for a basic_json container
Definition: json.hpp:14824
- - -
size_type erase(const typename object_t::key_type &key)
remove element from a JSON object given a key
Definition: json.hpp:18432
-
static std::string name(const std::string &ename, int id_)
Definition: json.hpp:1881
-
static out_of_range create(int id_, const std::string &what_arg)
Definition: json.hpp:2125
- - -
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json from_ubjson(detail::input_adapter &&i, const bool strict=true, const bool allow_exceptions=true)
create a JSON value from an input in UBJSON format
Definition: json.hpp:21714
-
std::size_t chars_read_current_line
the number of characters read in the current line
Definition: json.hpp:94
-
input_buffer_adapter(const char *b, const std::size_t l) noexcept
Definition: json.hpp:3997
-
std::char_traits< char >::int_type get_character() noexcept override
get a character [0,255] or std::char_traits<char>::eof().
Definition: json.hpp:3933
- -
static void to_cbor(const basic_json &j, detail::output_adapter< char > o)
Definition: json.hpp:21130
-
friend json_pointer operator/(const json_pointer &lhs, const json_pointer &rhs)
create a new JSON pointer by appending the right JSON pointer at the end of the left JSON pointer
Definition: json.hpp:10236
-
json_sax_dom_parser & operator=(const json_sax_dom_parser &)=delete
-
ValueType & get_to(ValueType &v) const noexcept(noexcept(JSONSerializer< ValueType >::from_json(std::declval< const basic_json_t & >(), v)))
get a value (explicit)
Definition: json.hpp:17271
-
Definition: json.hpp:2229
-
BasicJsonType::object_t::iterator object_iterator
iterator for JSON objects
Definition: json.hpp:9290
-
Definition: json.hpp:2263
-
reference operator[](size_type idx)
access specified array element
Definition: json.hpp:17714
-
typename std::enable_if< B, T >::type enable_if_t
Definition: json.hpp:2191
-
void write_msgpack(const BasicJsonType &j)
Definition: json.hpp:11601
-
void from_json(const BasicJsonType &j, typename std::nullptr_t &n)
Definition: json.hpp:2898
-
std::size_t size_type
a type to represent container sizes
Definition: json.hpp:14809
- -
void write_ubjson(const BasicJsonType &j, const bool use_count, const bool use_type, const bool add_prefix=true)
Definition: json.hpp:11843
-
Definition: json.hpp:3775
-
ValueType get() const noexcept(noexcept(JSONSerializer< ValueType >::from_json(std::declval< const basic_json_t & >(), std::declval< ValueType & >())))
get a value (explicit)
Definition: json.hpp:17174
-
bool start_object(std::size_t len)
Definition: json.hpp:4514
-
json_sax_dom_callback_parser & operator=(const json_sax_dom_callback_parser &)=delete
-
auto key() const -> decltype(std::declval< Base >().key())
return the key of an object iterator
Definition: json.hpp:10053
-
basic_json(InputIT first, InputIT last)
construct a JSON container given an iterator range
Definition: json.hpp:16225
-
wide_string_input_adapter(const WideStringType &w) noexcept
Definition: json.hpp:4154
-
namespace for Niels Lohmann
Definition: json.hpp:84
-
serialization to CBOR and MessagePack values
Definition: json.hpp:11318
-
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json array(initializer_list_t init={})
explicitly create an array from an initializer list
Definition: json.hpp:16089
-
typename BasicJsonType::number_integer_t number_integer_t
Definition: json.hpp:4457
-
ValueType get() const noexcept(noexcept(JSONSerializer< ValueType >::from_json(std::declval< const basic_json_t & >())))
get a value (explicit); special case
Definition: json.hpp:17225
-
void set_end() noexcept
set iterator to a defined past the end
Definition: json.hpp:9196
-
static diyfp normalize_to(const diyfp &x, const int target_exponent) noexcept
normalize x such that the result has the exponent E
Definition: json.hpp:12806
- -
void swap(object_t &other)
exchanges the values
Definition: json.hpp:20119
-
basic_json & operator=(basic_json other) noexcept(std::is_nothrow_move_constructible< value_t >::value and std::is_nothrow_move_assignable< value_t >::value and std::is_nothrow_move_constructible< json_value >::value and std::is_nothrow_move_assignable< json_value >::value)
copy assignment
Definition: json.hpp:16469
-
json_reverse_iterator(const typename base_iterator::iterator_type &it) noexcept
create reverse iterator from iterator
Definition: json.hpp:9992
-
bool number_float(number_float_t val, const string_t &)
Definition: json.hpp:4685
-
#define JSON_HEDLEY_DIAGNOSTIC_PUSH
Definition: json.hpp:735
-
constexpr bool is_primitive() const noexcept
return whether type is primitive
Definition: json.hpp:16642
-
constexpr difference_type get_value() const noexcept
Definition: json.hpp:9184
-
static void construct(BasicJsonType &j, typename BasicJsonType::number_integer_t val) noexcept
Definition: json.hpp:3542
-
constexpr bool is_end() const noexcept
return whether the iterator is at end
Definition: json.hpp:9208
-
@ value_unsigned
an unsigned integer – use get_number_unsigned() for actual value
-
void merge_patch(const basic_json &apply_patch)
applies a JSON Merge Patch
Definition: json.hpp:22581
-
SAX implementation to create a JSON value from SAX events.
Definition: json.hpp:4454
- -
@ number_float
number value (floating-point)
-
iterator find(KeyT &&key)
find an element in a JSON object
Definition: json.hpp:18520
-
primitive_iterator_t & operator--() noexcept
Definition: json.hpp:9248
-
static constexpr std::size_t size() noexcept
Definition: json.hpp:2203
-
JSON Pointer.
Definition: json.hpp:2435
-
json_pointer parent_pointer() const
returns the parent of this JSON pointer
Definition: json.hpp:10295
-
token_type
token types for the parser
Definition: json.hpp:7170
-
bool number_integer(number_integer_t val)
Definition: json.hpp:4490
-
exception indicating other library errors
Definition: json.hpp:2160
-
bool sax_parse(SAX *sax, const bool strict=true)
Definition: json.hpp:8802
-
input adapter for buffer input
Definition: json.hpp:3994
-
iteration_proxy_value & operator*()
dereference operator (needed for range-based for)
Definition: json.hpp:3323
-
json_reverse_iterator & operator+=(difference_type i)
add to iterator
Definition: json.hpp:10023
-
input_adapter(T(&array)[N])
input adapter for array
Definition: json.hpp:4284
-
@ object_end
the parser read } and finished processing a JSON object
-
Definition: json.hpp:2279
-
bool key(string_t &)
Definition: json.hpp:4983
-
void from_json(const BasicJsonType &j, std::unordered_map< Key, Value, Hash, KeyEqual, Allocator > &m)
Definition: json.hpp:3224
-
BooleanType boolean_t
a type for a boolean
Definition: json.hpp:15151
-
cached_power get_cached_power_for_binary_exponent(int e)
Definition: json.hpp:12970
-
virtual bool string(string_t &val)=0
a string was read
-
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json from_msgpack(A1 &&a1, A2 &&a2, const bool strict=true, const bool allow_exceptions=true)
create a JSON value from an input in MessagePack format
Definition: json.hpp:21642
-
@ number_integer
number value (signed integer)
-
void update(const_reference j)
updates a JSON object from another object, overwriting existing keys
Definition: json.hpp:19952
-
Definition: json.hpp:2350
-
typename BasicJsonType::parser_callback_t parser_callback_t
Definition: json.hpp:4643
-
input_adapter(const std::wstring &ws)
Definition: json.hpp:4212
- -
json_sax_dom_callback_parser(BasicJsonType &r, const parser_callback_t cb, const bool allow_exceptions_=true)
Definition: json.hpp:4646
-
output_vector_adapter(std::vector< CharType > &vec) noexcept
Definition: json.hpp:11214
-
iter_impl operator-(difference_type i) const
subtract from iterator
Definition: json.hpp:9853
-
std::input_iterator_tag iterator_category
Definition: json.hpp:3304
-
friend bool operator<=(const_reference lhs, const_reference rhs) noexcept
comparison: less than or equal
Definition: json.hpp:20483
-
void update(const_iterator first, const_iterator last)
updates a JSON object from another object, overwriting existing keys
Definition: json.hpp:20003
-
constexpr bool is_boolean() const noexcept
return whether value is a boolean
Definition: json.hpp:16713
-
#define JSON_HEDLEY_WARN_UNUSED_RESULT
Definition: json.hpp:893
-
std::string to_string() const
return a string representation of the JSON pointer
Definition: json.hpp:10138
-
bool string(string_t &)
Definition: json.hpp:4973
-
std::function< bool(int depth, parse_event_t event, BasicJsonType &parsed)> parser_callback_t
Definition: json.hpp:8711
-
iteration_proxy< const_iterator > items() const noexcept
helper to access iterator member functions in range-based for
Definition: json.hpp:19067
-
iterator begin() noexcept
returns an iterator to the first element
Definition: json.hpp:18674
-
typename std::remove_cv< typename std::remove_reference< decltype(std::declval< IteratorType >().key()) >::type >::type string_type
Definition: json.hpp:3305
-
bool end_array()
Definition: json.hpp:4553
-
void push_back(const basic_json &val)
add an object to an array
Definition: json.hpp:19443
-
static void fill_buffer(const WideStringType &str, size_t &current_wchar, std::array< std::char_traits< char >::int_type, 4 > &utf8_bytes, size_t &utf8_bytes_index, size_t &utf8_bytes_filled)
Definition: json.hpp:4089
-
output_string_adapter(StringType &s) noexcept
Definition: json.hpp:11262
- -
static void to_cbor(const basic_json &j, detail::output_adapter< uint8_t > o)
Definition: json.hpp:21125
- - -
const primitive_iterator_t operator++(int) noexcept
Definition: json.hpp:9241
-
@ key
the parser read a key of a value in an object
-
std::ptrdiff_t difference_type
a type to represent differences between iterators
Definition: json.hpp:14807
-
std::bidirectional_iterator_tag iterator_category
Definition: json.hpp:9367
-
bool end_array()
Definition: json.hpp:4778
-
decltype(std::declval< T & >().null()) null_function_t
Definition: json.hpp:5031
-
const_reverse_iterator rend() const noexcept
returns a const reverse iterator to one before the first
Definition: json.hpp:18860
-
bool empty() const noexcept
checks whether the container is empty.
Definition: json.hpp:19123
-
friend json_pointer operator/(const json_pointer &ptr, std::string token)
create a new JSON pointer by appending the unescaped token at the end of the JSON pointer
Definition: json.hpp:10257
-
lexical analysis
Definition: json.hpp:7161
-
json_ref(std::initializer_list< json_ref > init)
Definition: json.hpp:11114
-
std::random_access_iterator_tag iterator_category
Definition: json.hpp:2310
-
void to_json_tuple_impl(BasicJsonType &j, const Tuple &t, index_sequence< Idx... >)
Definition: json.hpp:3764
-
bool key(string_t &val)
Definition: json.hpp:4527
-
virtual bool boolean(bool val)=0
a boolean value was read
-
static void construct(BasicJsonType &j, const typename BasicJsonType::array_t &arr)
Definition: json.hpp:3554
-
reference value() const
return the value of an iterator
Definition: json.hpp:10060
-
primitive_iterator_t operator+(difference_type n) noexcept
Definition: json.hpp:9223
-
bool boolean(bool val)
Definition: json.hpp:4484
-
#define NLOHMANN_BASIC_JSON_TPL
Definition: json.hpp:1822
-
const std::size_t byte
byte index of the parse error
Definition: json.hpp:1971
-
@ value_integer
a signed integer – use get_number_integer() for actual value
-
BasicJsonType get() const
get special-case overload
Definition: json.hpp:17124
-
bool number_unsigned(number_unsigned_t val)
Definition: json.hpp:4496
- -
output_stream_adapter(std::basic_ostream< CharType > &s) noexcept
Definition: json.hpp:11238
-
bool operator!=(const iter_impl &other) const
comparison: not equal
Definition: json.hpp:9730
- -
void set_begin() noexcept
set iterator to a defined beginning
Definition: json.hpp:9190
-
#define NLOHMANN_JSON_VERSION_PATCH
Definition: json.hpp:35
-
static diyfp sub(const diyfp &x, const diyfp &y) noexcept
returns x - y
Definition: json.hpp:12712
-
json_ref(Args &&... args)
Definition: json.hpp:11121
-
ObjectType< StringType, basic_json, object_comparator_t, AllocatorType< std::pair< const StringType, basic_json > >> object_t
a type for an object
Definition: json.hpp:15026
-
output_adapter(std::basic_ostream< CharType > &s)
Definition: json.hpp:11288
-
const std::string & back() const
return last reference token
Definition: json.hpp:10344
-
token_type scan()
Definition: json.hpp:8540
-
Definition: json.hpp:11101
-
bool start_array(std::size_t=std::size_t(-1))
Definition: json.hpp:4993
-
decltype(std::declval< T >().template get< U >()) get_template_function
Definition: json.hpp:2516
-
basic_json(CompatibleType &&val) noexcept(noexcept(JSONSerializer< U >::to_json(std::declval< basic_json_t & >(), std::forward< CompatibleType >(val))))
create a JSON value
Definition: json.hpp:15843
- -
constexpr bool is_errored() const
Definition: json.hpp:4587
-
input_stream_adapter(std::istream &i)
Definition: json.hpp:3963
-
exception indicating a parse error
Definition: json.hpp:1935
- -
constexpr bool is_begin() const noexcept
return whether the iterator can be dereferenced
Definition: json.hpp:9202
-
decltype(std::declval< T & >().end_array()) end_array_function_t
Definition: json.hpp:5069
-
friend bool operator==(const_reference lhs, const_reference rhs) noexcept
comparison: equal
Definition: json.hpp:20214
-
std::shared_ptr< input_adapter_protocol > input_adapter_t
a type to simplify interfaces
Definition: json.hpp:3912
-
friend bool operator>(const ScalarType lhs, const_reference rhs) noexcept
comparison: greater than
Definition: json.hpp:20551
-
output adapter for byte vectors
Definition: json.hpp:11211
- -
a template for a bidirectional iterator for the basic_json class This class implements a both iterato...
Definition: json.hpp:9346
-
BasicJsonType::array_t::iterator array_iterator
iterator for JSON arrays
Definition: json.hpp:9292
-
static void construct(BasicJsonType &j, const CompatibleStringType &str)
Definition: json.hpp:3506
- -
typename std::conditional< std::is_const< BasicJsonType >::value, typename BasicJsonType::const_reference, typename BasicJsonType::reference >::type reference
defines a reference to the type iterated over (value_type)
Definition: json.hpp:9381
-
bool accept(const bool strict=true)
public accept interface
Definition: json.hpp:8794
-
static bool sax_parse(detail::input_adapter &&i, SAX *sax, input_format_t format=input_format_t::json, const bool strict=true)
generate SAX events
Definition: json.hpp:20814
-
constexpr bool is_string() const noexcept
return whether value is a string
Definition: json.hpp:16894
-
static parse_error create(int id_, std::size_t byte_, const std::string &what_arg)
Definition: json.hpp:1954
-
static diyfp mul(const diyfp &x, const diyfp &y) noexcept
returns x * y
Definition: json.hpp:12724
-
reference operator[](difference_type n) const
access to successor
Definition: json.hpp:10047
-
default JSONSerializer template argument
Definition: json.hpp:2409
- -
typename make_void< Ts... >::type void_t
Definition: json.hpp:2267
-
static void to_msgpack(const basic_json &j, detail::output_adapter< uint8_t > o)
Definition: json.hpp:21221
-
Definition: json.hpp:2210
-
typename BasicJsonType::number_integer_t number_integer_t
type for (signed) integers
Definition: json.hpp:4336
-
error_handler_t
how to treat decoding errors
Definition: json.hpp:13779
-
basic_json get() const
get special-case overload
Definition: json.hpp:17101
-
std::uint64_t f
Definition: json.hpp:12958
-
constexpr bool is_discarded() const noexcept
return whether value is discarded
Definition: json.hpp:16921
-
#define JSON_HEDLEY_CONST
Definition: json.hpp:1191
-
typename T::iterator iterator_t
Definition: json.hpp:2507
-
static void fill_buffer(const WideStringType &str, size_t &current_wchar, std::array< std::char_traits< char >::int_type, 4 > &utf8_bytes, size_t &utf8_bytes_index, size_t &utf8_bytes_filled)
Definition: json.hpp:4030
-
Target reinterpret_bits(const Source source)
Definition: json.hpp:12690
-
basic_json(const basic_json &other)
copy constructor
Definition: json.hpp:16349
-
constexpr bool is_number_float() const noexcept
return whether value is a floating-point number
Definition: json.hpp:16828
-
friend json_pointer operator/(const json_pointer &ptr, std::size_t array_index)
create a new JSON pointer by appending the array-index-token at the end of the JSON pointer
Definition: json.hpp:10277
-
typename T::value_type value_type_t
Definition: json.hpp:2492
-
friend bool operator<=(const ScalarType lhs, const_reference rhs) noexcept
comparison: less than or equal
Definition: json.hpp:20505
-
constexpr bool is_structured() const noexcept
return whether type is structured
Definition: json.hpp:16669
-
friend bool operator>(const_reference lhs, const_reference rhs) noexcept
comparison: greater than
Definition: json.hpp:20529
- -
const_reverse_iterator crend() const noexcept
returns a const reverse iterator to one before the first
Definition: json.hpp:18918
-
friend bool operator>(const_reference lhs, const ScalarType rhs) noexcept
comparison: greater than
Definition: json.hpp:20540
-
void clear() noexcept
clears the contents
Definition: json.hpp:19335
-
typename BasicJsonType::string_t string_t
type for strings
Definition: json.hpp:4342
-
static allocator_type get_allocator()
returns the allocator associated with the container
Definition: json.hpp:14834
- -
static CharType to_char_type(std::uint8_t x) noexcept
Definition: json.hpp:12592
-
void grisu2(char *buf, int &len, int &decimal_exponent, diyfp m_minus, diyfp v, diyfp m_plus)
Definition: json.hpp:13472
-
friend std::istream & operator>>(std::istream &i, basic_json &j)
deserialize from stream
Definition: json.hpp:20944
-
auto operator()(const BasicJsonType &j, T &val) const noexcept(noexcept(from_json(j, val))) -> decltype(from_json(j, val), void())
Definition: json.hpp:3244
-
const_reverse_iterator rbegin() const noexcept
returns a const reverse iterator to the last element
Definition: json.hpp:18823
-
static void construct(BasicJsonType &j, typename BasicJsonType::number_unsigned_t val) noexcept
Definition: json.hpp:3530
-
std::ptrdiff_t difference_type
Definition: json.hpp:9985
-
static constexpr bool little_endianess(int num=1) noexcept
determine system byte order
Definition: json.hpp:5268
- -
basic_json(const BasicJsonType &val)
create a JSON value from an existing one
Definition: json.hpp:15880
-
#define JSON_THROW(exception)
Definition: json.hpp:1754
-
@ end_of_input
indicating the end of the input buffer
-
output_adapter(StringType &s)
Definition: json.hpp:11291
-
bool number_integer(number_integer_t val)
Definition: json.hpp:4673
-
Definition: json.hpp:2199
- -
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json from_ubjson(A1 &&a1, A2 &&a2, const bool strict=true, const bool allow_exceptions=true)
create a JSON value from an input in UBJSON format
Definition: json.hpp:21730
-
static diyfp normalize(diyfp x) noexcept
normalize x such that the significand is >= 2^(q-1)
Definition: json.hpp:12789
-
iter_impl & operator++()
pre-increment (++it)
Definition: json.hpp:9628
-
syntax analysis
Definition: json.hpp:8684
-
const_reference operator[](size_type idx) const
access specified array element
Definition: json.hpp:17760
-
void push_back(initializer_list_t init)
add an object to an object
Definition: json.hpp:19548
-
~basic_json() noexcept
destructor
Definition: json.hpp:16502
- -
reference emplace_back(Args &&... args)
add an object to an array
Definition: json.hpp:19596
-
const string_type & key() const
return key of the iterator
Definition: json.hpp:3350
-
basic_json flatten() const
return flattened JSON value
Definition: json.hpp:22012
-
int e
Definition: json.hpp:12959
-
file_input_adapter & operator=(const file_input_adapter &)=delete
-
string_t & get_string()
return current string value (implicitly resets the token; useful only once)
Definition: json.hpp:8470
-
iterator end() noexcept
returns an iterator to one past the last element
Definition: json.hpp:18745
-
typename BasicJsonType::number_unsigned_t number_unsigned_t
Definition: json.hpp:4458
-
#define JSON_HEDLEY_RETURNS_NON_NULL
Definition: json.hpp:1362
-
reference operator+=(const typename object_t::value_type &val)
add an object to an object
Definition: json.hpp:19517
-
#define JSON_HEDLEY_NON_NULL(...)
Definition: json.hpp:1032
-
typename Base::reference reference
the reference type for the pointed-to element
Definition: json.hpp:9989
- -
@ array_end
the parser read ] and finished processing a JSON array
-
static void to_msgpack(const basic_json &j, detail::output_adapter< char > o)
Definition: json.hpp:21226
-
iteration_proxy_value< IteratorType > end() noexcept
return iterator end (needed for range-based for)
Definition: json.hpp:3403
-
bool number_integer(number_integer_t)
Definition: json.hpp:4958
-
bool operator>=(const iter_impl &other) const
comparison: greater than or equal
Definition: json.hpp:9784
-
json_reverse_iterator operator-(difference_type i) const
subtract from iterator
Definition: json.hpp:10035
-
serializer & operator=(const serializer &)=delete
-
static bool accept(detail::input_adapter &&i)
Definition: json.hpp:20754
-
detail::value_t value_t
Definition: json.hpp:14751
-
NumberUnsignedType number_unsigned_t
a type for a number (unsigned)
Definition: json.hpp:15294
-
static basic_json parse(IteratorType first, IteratorType last, const parser_callback_t cb=nullptr, const bool allow_exceptions=true)
deserialize from an iterator range with contiguous storage
Definition: json.hpp:20877
-
std::shared_ptr< output_adapter_protocol< CharType > > output_adapter_t
a type to simplify interfaces
Definition: json.hpp:11207
-
bool operator<(const value_t lhs, const value_t rhs) noexcept
comparison operator for JSON types
Definition: json.hpp:2877
-
friend bool operator==(const ScalarType lhs, const_reference rhs) noexcept
comparison: equal
Definition: json.hpp:20296
-
iter_impl(const iter_impl< const BasicJsonType > &other) noexcept
const copy constructor
Definition: json.hpp:9434
-
constexpr bool is_number_unsigned() const noexcept
return whether value is an unsigned integer number
Definition: json.hpp:16800
-
parser(detail::input_adapter_t &&adapter, const parser_callback_t cb=nullptr, const bool allow_exceptions_=true)
a parser reading from an input adapter
Definition: json.hpp:8714
- -
reference back()
access the last element
Definition: json.hpp:18173
-
const primitive_iterator_t operator--(int) noexcept
Definition: json.hpp:9254
-
input_format_t
the supported input formats
Definition: json.hpp:3887
-
reference at(size_type idx)
access specified array element with bounds checking
Definition: json.hpp:17519
-
bool operator<=(const iter_impl &other) const
comparison: less than or equal
Definition: json.hpp:9766
-
constexpr bool is_object() const noexcept
return whether value is an object
Definition: json.hpp:16850
-
basic_json(const value_t v)
create an empty value with a given type
Definition: json.hpp:15752
- -
@ strict
throw a type_error exception in case of invalid UTF-8
-
constexpr int kGamma
Definition: json.hpp:12954
-
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json meta()
returns version information on the library
Definition: json.hpp:14866
-
void pop_back()
remove last reference token
Definition: json.hpp:10320
-
decltype(std::declval< T & >().number_integer(std::declval< Integer >())) number_integer_function_t
Definition: json.hpp:5039
-
std::uint64_t f
Definition: json.hpp:12703
-
static std::vector< uint8_t > to_cbor(const basic_json &j)
create a CBOR serialization of a given JSON value
Definition: json.hpp:21118
-
basic_json unflatten() const
unflatten a previously flattened JSON value
Definition: json.hpp:22049
-
Definition: json.hpp:2297
-
#define JSON_HEDLEY_DEPRECATED(since)
Definition: json.hpp:860
-
bool number_unsigned(number_unsigned_t)
Definition: json.hpp:4963
-
string_t value(const typename object_t::key_type &key, const char *default_value) const
overload for a default value of type const char*
Definition: json.hpp:18025
-
bool number_unsigned(number_unsigned_t val)
Definition: json.hpp:4679
-
virtual bool number_float(number_float_t val, const string_t &s)=0
an floating-point number was read
-
j template void())
Definition: json.hpp:3108
-
bool start_array(std::size_t len)
Definition: json.hpp:4540
-
bool parse_error(std::size_t, const std::string &, const detail::exception &ex)
Definition: json.hpp:4806
-
iterator insert(const_iterator pos, basic_json &&val)
inserts element
Definition: json.hpp:19739
-
void erase(const size_type idx)
remove element from a JSON array given an index
Definition: json.hpp:18467
-
diyfp minus
Definition: json.hpp:12820
-
json_reverse_iterator< typename basic_json::const_iterator > const_reverse_iterator
a const reverse iterator for a basic_json container
Definition: json.hpp:14826
-
#define JSON_TRY
Definition: json.hpp:1755
-
abstract input adapter interface
Definition: json.hpp:3904
-
reference operator*() const
return a reference to the value pointed to by the iterator
Definition: json.hpp:9546
-
StringType string_t
a type for a string
Definition: json.hpp:15125
-
bool contains(const json_pointer &ptr) const
check the existence of an element in a JSON object given a JSON pointer
Definition: json.hpp:18635
- -
decltype(std::declval< T & >().key(std::declval< String & >())) key_function_t
Definition: json.hpp:5059
-
const int id
the id of the exception
Definition: json.hpp:1875
- -
virtual bool end_object()=0
the end of an object was read
-
serializer(output_adapter_t< char > s, const char ichar, error_handler_t error_handler_=error_handler_t::strict)
Definition: json.hpp:13802
-
input_adapter(std::FILE *file)
Definition: json.hpp:4202
-
bool operator<(const iter_impl &other) const
comparison: smaller
Definition: json.hpp:9739
-
friend bool operator>=(const_reference lhs, const ScalarType rhs) noexcept
comparison: greater than or equal
Definition: json.hpp:20586
-
@ uninitialized
indicating the scanner is uninitialized
-
basic_json(size_type cnt, const basic_json &val)
construct an array with count copies of given value
Definition: json.hpp:16160
- - -
reverse_iterator rend() noexcept
returns an iterator to the reverse-end
Definition: json.hpp:18852
-
ReferenceType get_ref()
get a reference value (implicit)
Definition: json.hpp:17414
-
constexpr bool is_number() const noexcept
return whether value is a number
Definition: json.hpp:16743
-
static std::vector< uint8_t > to_bson(const basic_json &j)
Serializes the given JSON object j to BSON and returns a vector containing the corresponding BSON-rep...
Definition: json.hpp:21388
-
const_reverse_iterator crbegin() const noexcept
returns a const reverse iterator to the last element
Definition: json.hpp:18889
-
constexpr number_unsigned_t get_number_unsigned() const noexcept
return unsigned integer value
Definition: json.hpp:8458
-
primitive_iterator_t primitive_iterator
generic iterator for all other types
Definition: json.hpp:9294
-
std::size_t lines_read
the number of lines read
Definition: json.hpp:96
-
@ number_unsigned
number value (unsigned integer)
-
std::initializer_list< detail::json_ref< basic_json > > initializer_list_t
helper type for initializer lists of basic_json values
Definition: json.hpp:14759
-
bool sax_parse(const input_format_t format, json_sax_t *sax_, const bool strict=true)
Definition: json.hpp:5210
-
Definition: json.hpp:2795
-
deserialization of CBOR, MessagePack, and UBJSON values
Definition: json.hpp:5175
- -
@ array
array (ordered collection of values)
-
static void construct(BasicJsonType &j, typename BasicJsonType::string_t &&s)
Definition: json.hpp:3496
-
decltype(T::from_json(std::declval< Args >()...)) from_json_function
Definition: json.hpp:2513
-
JSON_HEDLEY_RETURNS_NON_NULL char * append_exponent(char *buf, int e)
appends a decimal representation of e to buf
Definition: json.hpp:13572
-
typename BasicJsonType::number_integer_t number_integer_t
Definition: json.hpp:4639
-
static void to_ubjson(const basic_json &j, detail::output_adapter< char > o, const bool use_size=false, const bool use_type=false)
Definition: json.hpp:21326
-
reference at(const typename object_t::key_type &key)
access specified object element with bounds checking
Definition: json.hpp:17617
-
void push_back(std::string &&token)
append an unescaped token at the end of the reference pointer
Definition: json.hpp:10372
-
binary_reader & operator=(const binary_reader &)=delete
-
input_adapter(const std::u16string &ws)
Definition: json.hpp:4215
-
value_type const * operator->() const
Definition: json.hpp:11146
-
diyfp plus
Definition: json.hpp:12821
-
void push_back(basic_json &&val)
add an object to an array
Definition: json.hpp:19406
-
static type_error create(int id_, const std::string &what_arg)
Definition: json.hpp:2078
- -
static void to_bson(const basic_json &j, detail::output_adapter< uint8_t > o)
Serializes the given JSON object j to BSON and forwards the corresponding BSON-representation to the ...
Definition: json.hpp:21403
-
constexpr diyfp(std::uint64_t f_, int e_) noexcept
Definition: json.hpp:12706
-
typename detector< nonesuch, void, Op, Args... >::type detected_t
Definition: json.hpp:2367
-
size_type size() const noexcept
returns the number of elements
Definition: json.hpp:19195
-
decltype(std::declval< T & >().end_object()) end_object_function_t
Definition: json.hpp:5062
-
static std::vector< uint8_t > to_ubjson(const basic_json &j, const bool use_size=false, const bool use_type=false)
create a UBJSON serialization of a given JSON value
Definition: json.hpp:21311
-
friend bool operator!=(json_pointer const &lhs, json_pointer const &rhs) noexcept
compares two JSON pointers for inequality
Definition: json.hpp:11076
- -
std::is_convertible< detected_t< Op, Args... >, To > is_detected_convertible
Definition: json.hpp:2380
-
typename BasicJsonType::number_float_t number_float_t
Definition: json.hpp:4945
-
iteration_proxy_value & operator++()
increment operator (needed for range-based for)
Definition: json.hpp:3329
-
abstract output adapter interface
Definition: json.hpp:11198
-
iteration_proxy_value(IteratorType it) noexcept
Definition: json.hpp:3320
-
const_reference at(const typename object_t::key_type &key) const
access specified object element with bounds checking
Definition: json.hpp:17668
-
@ discarded
discarded by the the parser callback function
-
parse_event_t
Definition: json.hpp:8694
-
Default type
Definition: json.hpp:2353
-
bool end_object()
Definition: json.hpp:4534
- -
static void construct(BasicJsonType &j, const typename BasicJsonType::string_t &s)
Definition: json.hpp:3488
-
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json from_cbor(A1 &&a1, A2 &&a2, const bool strict=true, const bool allow_exceptions=true)
create a JSON value from an input in CBOR format
Definition: json.hpp:21533
-
Definition: json.hpp:2569
- -
bool operator()(nlohmann::detail::value_t lhs, nlohmann::detail::value_t rhs) const noexcept
compare two value_t enum values
Definition: json.hpp:22661
-
typename detector< nonesuch, void, Op, Args... >::value_t is_detected
Definition: json.hpp:2364
-
constexpr auto get_ptr() const noexcept -> decltype(std::declval< const basic_json_t & >().get_impl_ptr(std::declval< PointerType >()))
get a pointer value (implicit)
Definition: json.hpp:17333
- -
iter_impl(pointer object) noexcept
constructor for a given JSON instance
Definition: json.hpp:9392
-
virtual bool start_object(std::size_t elements)=0
the beginning of an object was read
-
lexer(detail::input_adapter_t &&adapter)
Definition: json.hpp:7237
-
std::pair< iterator, bool > emplace(Args &&... args)
add an object to an object if key does not exist
Definition: json.hpp:19649
-
input_adapter(IteratorType first, IteratorType last)
input adapter for iterator range with contiguous storage
Definition: json.hpp:4249
-
json_pointer & operator/=(std::string token)
append an unescaped reference token at the end of this JSON pointer
Definition: json.hpp:10194
-
friend bool operator>=(const_reference lhs, const_reference rhs) noexcept
comparison: greater than or equal
Definition: json.hpp:20575
-
std::less< StringType > object_comparator_t
Definition: json.hpp:14936
- -
json_pointer & operator/=(std::size_t array_index)
append an array index at the end of this JSON pointer
Definition: json.hpp:10216
-
static void construct(BasicJsonType &j, const CompatibleObjectType &obj)
Definition: json.hpp:3630
-
constexpr auto get() const noexcept -> decltype(std::declval< const basic_json_t & >().template get_ptr< PointerType >())
get a pointer value (explicit)
Definition: json.hpp:17380
-
iterator insert(const_iterator pos, initializer_list_t ilist)
inserts elements
Definition: json.hpp:19869
-
lexer & operator=(lexer &)=delete
-
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json from_bson(detail::input_adapter &&i, const bool strict=true, const bool allow_exceptions=true)
Create a JSON value from an input in BSON format.
Definition: json.hpp:21801
-
iter_impl()=default
default constructor
Definition: json.hpp:9349
-
virtual bool number_integer(number_integer_t val)=0
an integer number was read
-
Definition: json.hpp:13787
-
bool operator>(const iter_impl &other) const
comparison: greater than
Definition: json.hpp:9775
-
IteratorType erase(IteratorType first, IteratorType last)
remove elements given an iterator range
Definition: json.hpp:18345
-
AllocatorType< basic_json > allocator_type
the allocator type
Definition: json.hpp:14812
-
friend bool operator<(const_reference lhs, const_reference rhs) noexcept
comparison: less than
Definition: json.hpp:20372
-
@ end_array
the character for array end ]
-
output adapter for output streams
Definition: json.hpp:11235
-
Definition: json.hpp:2476
-
json_pointer & operator/=(const json_pointer &ptr)
append another JSON pointer at the end of this JSON pointer
Definition: json.hpp:10170
-
a class to store JSON values
Definition: json.hpp:2421
-
@ value_separator
the value separator ,
-
static invalid_iterator create(int id_, const std::string &what_arg)
Definition: json.hpp:2024
-
const json_reverse_iterator operator++(int)
post-increment (it++)
Definition: json.hpp:9999
-
Definition: json.hpp:2800
-
#define JSON_HEDLEY_LIKELY(expr)
Definition: json.hpp:1123
- -
friend bool operator==(const_reference lhs, const ScalarType rhs) noexcept
comparison: equal
Definition: json.hpp:20285
- -
virtual bool end_array()=0
the end of an array was read
-
JSONSerializer< T, SFINAE > json_serializer
Definition: json.hpp:14755
-
Definition: json.hpp:4940
-
Definition: json.hpp:12817
-
input_adapter(CharT b, std::size_t l)
input adapter for buffer
Definition: json.hpp:4228
-
static parse_error create(int id_, const position_t &pos, const std::string &what_arg)
create a parse error exception
Definition: json.hpp:1947
-
static constexpr T value
Definition: json.hpp:2235
-
Definition: json.hpp:2551
- -
Definition: json.hpp:5077
-
friend iter_impl operator+(difference_type i, const iter_impl &it)
addition of distance and iterator
Definition: json.hpp:9842
-
constexpr number_integer_t get_number_integer() const noexcept
return integer value
Definition: json.hpp:8452
-
Definition: json.hpp:3431
- -
iterator insert_iterator(const_iterator pos, Args &&... args)
Definition: json.hpp:19679
-
json_reverse_iterator & operator++()
pre-increment (++it)
Definition: json.hpp:10005
-
@ name_separator
the name separator :
-
basic_json<> json
default JSON class
Definition: json.hpp:2445
-
constexpr friend difference_type operator-(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept
Definition: json.hpp:9230
-
Definition: json.hpp:4197
-
friend bool operator!=(const_reference lhs, const_reference rhs) noexcept
comparison: not equal
Definition: json.hpp:20319
-
typename BasicJsonType::template json_serializer< T, void > serializer
Definition: json.hpp:2541
-
const_reference operator[](const typename object_t::key_type &key) const
read-only access specified object element
Definition: json.hpp:17847
-
iter_impl & operator=(const iter_impl< typename std::remove_const< BasicJsonType >::type > &other) noexcept
converting assignment
Definition: json.hpp:9466
- -
void push_back(const std::string &token)
append an unescaped token at the end of the reference pointer
Definition: json.hpp:10366
-
Definition: json.hpp:3241
-
void from_json_tuple_impl(const BasicJsonType &j, Tuple &t, index_sequence< Idx... >)
Definition: json.hpp:3190
-
static void construct(BasicJsonType &j, typename BasicJsonType::number_float_t val) noexcept
Definition: json.hpp:3518
-
void write_character(CharType c) override
Definition: json.hpp:11218
-
bool number_float(number_float_t, const string_t &)
Definition: json.hpp:4968
-
void swap(array_t &other)
exchanges the values
Definition: json.hpp:20086
-
decltype(std::declval< T & >().parse_error(std::declval< std::size_t >(), std::declval< const std::string & >(), std::declval< const Exception & >())) parse_error_function_t
Definition: json.hpp:5074
-
::nlohmann::json_pointer< basic_json > json_pointer
JSON Pointer, see nlohmann::json_pointer.
Definition: json.hpp:14753
-
typename parser::parse_event_t parse_event_t
parser event types
Definition: json.hpp:15661
-
const_reference front() const
access the first element
Definition: json.hpp:18137
-
size_type max_size() const noexcept
returns the maximum possible number of elements
Definition: json.hpp:19265
-
reference operator[](const typename object_t::key_type &key)
access specified object element
Definition: json.hpp:17798
-
auto get(const nlohmann::detail::iteration_proxy_value< IteratorType > &i) -> decltype(i.key())
Definition: json.hpp:3412
-
static void construct(BasicJsonType &j, const std::vector< bool > &arr)
Definition: json.hpp:3582
-
constexpr friend bool operator<(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept
Definition: json.hpp:9218
-
input_adapter(std::istream &i)
input adapter for input stream
Definition: json.hpp:4205
-
void parse(const bool strict, BasicJsonType &result)
public parser interface
Definition: json.hpp:8733
-
const JSON_HEDLEY_RETURNS_NON_NULL char * type_name() const noexcept
return the type as string
Definition: json.hpp:20987
-
iter_impl & operator-=(difference_type i)
subtract from iterator
Definition: json.hpp:9822
-
typename BasicJsonType::number_unsigned_t number_unsigned_t
Definition: json.hpp:4944
-
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json from_msgpack(detail::input_adapter &&i, const bool strict=true, const bool allow_exceptions=true)
create a JSON value from an input in MessagePack format
Definition: json.hpp:21626
-
input_adapter(const std::u32string &ws)
Definition: json.hpp:4218
-
typename BasicJsonType::number_unsigned_t number_unsigned_t
Definition: json.hpp:4640
-
decltype(std::declval< T & >().number_float(std::declval< Float >(), std::declval< const String & >())) number_float_function_t
Definition: json.hpp:5047
- -
an iterator value
Definition: json.hpp:9287
-
#define NLOHMANN_JSON_VERSION_MAJOR
Definition: json.hpp:33
-
reference operator+=(const basic_json &val)
add an object to an array
Definition: json.hpp:19467
-
bool boolean(bool)
Definition: json.hpp:4953
-
const_reference back() const
access the last element
Definition: json.hpp:18183
- -
json_ref(const value_type &value)
Definition: json.hpp:11110
-
input_adapter(const ContiguousContainer &c)
input adapter for contiguous container
Definition: json.hpp:4292
-
reference at(const json_pointer &ptr)
access specified element via JSON Pointer
Definition: json.hpp:21942
-
typename BasicJsonType::value_type value_type
the type of the values when the iterator is dereferenced
Definition: json.hpp:9370
-
string_t dump(const int indent=-1, const char indent_char=' ', const bool ensure_ascii=false, const error_handler_t error_handler=error_handler_t::strict) const
serialization
Definition: json.hpp:16560
-
ValueType value(const typename object_t::key_type &key, const ValueType &default_value) const
access specified object element with default value
Definition: json.hpp:18003
-
constexpr const JSON_HEDLEY_RETURNS_NON_NULL char * get_error_message() const noexcept
return syntax error message
Definition: json.hpp:8513
-
std::size_t chars_read_total
the total number of characters read
Definition: json.hpp:92
- - -
#define NLOHMANN_JSON_VERSION_MINOR
Definition: json.hpp:34
-
void operator=(nonesuch const &)=delete
-
output adapter for basic_string
Definition: json.hpp:11259
-
void push_back(const typename object_t::value_type &val)
add an object to an object
Definition: json.hpp:19493
-
iter_impl operator+(difference_type i) const
add to iterator
Definition: json.hpp:9831
-
binary_reader(input_adapter_t adapter)
create a binary reader
Definition: json.hpp:5189
-
static void construct(BasicJsonType &j, const std::valarray< T > &arr)
Definition: json.hpp:3596
-
decltype(std::declval< T & >().number_unsigned(std::declval< Unsigned >())) number_unsigned_function_t
Definition: json.hpp:5043
-
reference operator[](difference_type n) const
access to successor
Definition: json.hpp:9885
-
Definition: json.hpp:2217
-
typename BasicJsonType::number_float_t number_float_t
type for floating-point numbers
Definition: json.hpp:4340
-
@ array_start
the parser read [ and started to process a JSON array
-
const json_reverse_iterator operator--(int)
post-decrement (it–)
Definition: json.hpp:10011
-
constexpr bool is_array() const noexcept
return whether value is an array
Definition: json.hpp:16872
-
const_iterator end() const noexcept
returns a const iterator to one past the last element
Definition: json.hpp:18755
-
decltype(T::to_json(std::declval< Args >()...)) to_json_function
Definition: json.hpp:2510
-
typename BasicJsonType::number_float_t number_float_t
Definition: json.hpp:4641
-
bool start_object(std::size_t len)
Definition: json.hpp:4697
-
primitive_iterator_t & operator-=(difference_type n) noexcept
Definition: json.hpp:9267
-
iteration_proxy(typename IteratorType::reference cont) noexcept
construct iteration proxy from a container
Definition: json.hpp:3393
-
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json from_bson(A1 &&a1, A2 &&a2, const bool strict=true, const bool allow_exceptions=true)
Create a JSON value from an input in BSON format.
Definition: json.hpp:21817
-
const JSON_HEDLEY_RETURNS_NON_NULL char * what() const noexcept override
returns the explanatory string
Definition: json.hpp:1869
-
friend std::ostream & operator<<(std::ostream &o, const basic_json &j)
serialize to stream
Definition: json.hpp:20642
-
friend std::ostream & operator>>(const basic_json &j, std::ostream &o)
serialize to stream
Definition: json.hpp:20666
-
Definition: json.hpp:2336
-
auto get() noexcept -> decltype(std::declval< basic_json_t & >().template get_ptr< PointerType >())
get a pointer value (explicit)
Definition: json.hpp:17368
-
typename T::reference reference_t
Definition: json.hpp:2501
-
bool operator!=(const iteration_proxy_value &o) const
inequality operator (needed for range-based for)
Definition: json.hpp:3344
-
virtual std::char_traits< char >::int_type get_character()=0
get a character [0,255] or std::char_traits<char>::eof().
-
const_iterator cbegin() const noexcept
returns a const iterator to the first element
Definition: json.hpp:18714
-
constexpr int kAlpha
Definition: json.hpp:12953
-
constexpr number_float_t get_number_float() const noexcept
return floating-point value
Definition: json.hpp:8464
- -
static constexpr bool value
Definition: json.hpp:5090
-
Definition: json.hpp:3918
-
reverse_iterator rbegin() noexcept
returns an iterator to the reverse-beginning
Definition: json.hpp:18815
-
typename std::allocator_traits< allocator_type >::const_pointer const_pointer
the type of an element const pointer
Definition: json.hpp:14817
-
bool skip_bom()
skip the UTF-8 byte order mark
Definition: json.hpp:8526
-
bool end_object()
Definition: json.hpp:4732
- -
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json parse(detail::input_adapter &&i, const parser_callback_t cb=nullptr, const bool allow_exceptions=true)
deserialize from a compatible input
Definition: json.hpp:20745
- -
decltype(std::declval< T & >().string(std::declval< String & >())) string_function_t
Definition: json.hpp:5051
-
input_stream_adapter & operator=(input_stream_adapter &)=delete
-
bool operator==(const iteration_proxy_value &o) const
equality operator (needed for InputIterator)
Definition: json.hpp:3338
-
virtual bool start_array(std::size_t elements)=0
the beginning of an array was read
-
typename T::key_type key_type_t
Definition: json.hpp:2489
-
typename std::allocator_traits< allocator_type >::pointer pointer
the type of an element pointer
Definition: json.hpp:14815
-
typename BasicJsonType::difference_type difference_type
a type to represent differences between iterators
Definition: json.hpp:9372
-
NumberIntegerType number_integer_t
a type for a number (integer)
Definition: json.hpp:15223
-
void from_json_array_impl(const BasicJsonType &j, typename BasicJsonType::array_t &arr, priority_tag< 3 >)
Definition: json.hpp:3042
-
SAX interface.
Definition: json.hpp:4333
-
friend bool operator>=(const ScalarType lhs, const_reference rhs) noexcept
comparison: greater than or equal
Definition: json.hpp:20597
-
file_input_adapter(std::FILE *f) noexcept
Definition: json.hpp:3922
-
int k
Definition: json.hpp:12960
-
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json from_cbor(detail::input_adapter &&i, const bool strict=true, const bool allow_exceptions=true)
create a JSON value from an input in CBOR format
Definition: json.hpp:21517
-
proxy class for the items() function
Definition: json.hpp:3385
-
const object_t::key_type & key() const
return the key of an object iterator
Definition: json.hpp:9916
-
static void construct(BasicJsonType &j, const typename BasicJsonType::object_t &obj)
Definition: json.hpp:3613
-
typename BasicJsonType::template json_serializer< T, void > serializer
Definition: json.hpp:2556
-
void to_json(BasicJsonType &j, const T &b)
Definition: json.hpp:3758
- -
difference_type operator-(const json_reverse_iterator &other) const
return difference
Definition: json.hpp:10041
-
bool parse_error(std::size_t, const std::string &, const detail::exception &)
Definition: json.hpp:5003
-
static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json diff(const basic_json &source, const basic_json &target, const std::string &path="")
creates a diff as a JSON patch
Definition: json.hpp:22406
- -
input_adapter(CharT b)
input adapter for string literal
Definition: json.hpp:4240
-
typename T::pointer pointer_t
Definition: json.hpp:2498
-
@ object_start
the parser read { and started to process a JSON object
-
@ literal_or_value
a literal or the begin of a value (only for diagnostics)
-
friend bool operator!=(const_reference lhs, const ScalarType rhs) noexcept
comparison: not equal
Definition: json.hpp:20330
-
void swap(string_t &other)
exchanges the values
Definition: json.hpp:20152
-
int e
Definition: json.hpp:12704
-
basic_json patch(const basic_json &json_patch) const
applies a JSON patch
Definition: json.hpp:22110
-
typename std::conditional< std::is_const< BasicJsonType >::value, typename BasicJsonType::const_pointer, typename BasicJsonType::pointer >::type pointer
defines a pointer to the type iterated over (value_type)
Definition: json.hpp:9376
-
const iter_impl operator--(int)
post-decrement (it–)
Definition: json.hpp:9660
-
virtual bool key(string_t &val)=0
an object key was read
- -
typename parser::parser_callback_t parser_callback_t
per-element parser callback type
Definition: json.hpp:15712
-
static void to_ubjson(const basic_json &j, detail::output_adapter< uint8_t > o, const bool use_size=false, const bool use_type=false)
Definition: json.hpp:21320
-
@ value_float
an floating point number – use get_number_float() for actual value
-
@ begin_array
the character for array begin [
-
constexpr value_t type() const noexcept
return the type of the JSON value (explicit)
Definition: json.hpp:16612
-
binary_writer(output_adapter_t< CharType > adapter)
create a binary writer
Definition: json.hpp:11328
-
Definition: json.hpp:2233
-
@ value_string
a string – use get_string() for actual value
-
reference operator+=(basic_json &&val)
add an object to an array
Definition: json.hpp:19433
-
virtual ~json_sax()=default
-
void write_character(CharType c) override
Definition: json.hpp:11242
- -
output_adapter(std::vector< CharType > &vec)
Definition: json.hpp:11285
-
constexpr friend bool operator==(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept
Definition: json.hpp:9213
-
input_adapter(std::istream &&i)
input adapter for input stream
Definition: json.hpp:4209
-
friend bool operator==(json_pointer const &lhs, json_pointer const &rhs) noexcept
compares two JSON pointers for equality
Definition: json.hpp:11059
-
typename BasicJsonType::string_t string_t
Definition: json.hpp:4946
-
bool number_float(number_float_t val, const string_t &)
Definition: json.hpp:4502
-
friend bool operator<=(const_reference lhs, const ScalarType rhs) noexcept
comparison: less than or equal
Definition: json.hpp:20494
-
bool end_array()
Definition: json.hpp:4998
-
int find_largest_pow10(const std::uint32_t n, std::uint32_t &pow10)
Definition: json.hpp:13134
-
std::reverse_iterator< Base > base_iterator
shortcut to the reverse iterator adapter
Definition: json.hpp:9987
-
json_reverse_iterator & operator--()
pre-decrement (–it)
Definition: json.hpp:10017
-
static void construct(BasicJsonType &j, typename BasicJsonType::boolean_t b) noexcept
Definition: json.hpp:3476
-
iterator insert(const_iterator pos, const basic_json &val)
inserts element
Definition: json.hpp:19717
-
reference value() const
return the value of an iterator
Definition: json.hpp:9932
-
JSON_HEDLEY_RETURNS_NON_NULL static const JSON_HEDLEY_CONST char * token_type_name(const token_type t) noexcept
return name of values of type token_type (only used for errors)
Definition: json.hpp:7194
-
static iteration_proxy< iterator > iterator_wrapper(reference ref) noexcept
wrapper to access iterator member functions in range-based for
Definition: json.hpp:18982
-
json_reverse_iterator(const base_iterator &it) noexcept
create reverse iterator from base class
Definition: json.hpp:9996
-
iteration_proxy< iterator > items() noexcept
helper to access iterator member functions in range-based for
Definition: json.hpp:19059
-
void to_json(BasicJsonType &j, T b) noexcept
Definition: json.hpp:3647
-
@ end_object
the character for object end }
- -
constexpr bool is_errored() const
Definition: json.hpp:4834
-
void write_bson(const BasicJsonType &j)
Definition: json.hpp:11337
-
iter_impl & operator+=(difference_type i)
add to iterator
Definition: json.hpp:9793
-
Definition: json.hpp:11282
-
typename T::iterator_category iterator_category_t
Definition: json.hpp:2504
-
ValueType value(const json_pointer &ptr, const ValueType &default_value) const
access specified object element via JSON Pointer with default value
Definition: json.hpp:18075
-
bool boolean(bool val)
Definition: json.hpp:4667
-
iterator insert(const_iterator pos, const_iterator first, const_iterator last)
inserts elements
Definition: json.hpp:19816
-
BasicJsonType value_type
Definition: json.hpp:11104
-
basic_json(std::nullptr_t=nullptr) noexcept
create a null object
Definition: json.hpp:15776
-
auto operator()(BasicJsonType &j, T &&val) const noexcept(noexcept(to_json(j, std::forward< T >(val)))) -> decltype(to_json(j, std::forward< T >(val)), void())
Definition: json.hpp:3778
-
auto get_ptr() noexcept -> decltype(std::declval< basic_json_t & >().get_impl_ptr(std::declval< PointerType >()))
get a pointer value (implicit)
Definition: json.hpp:17320
-
bool contains(KeyT &&key) const
check the existence of an element in a JSON object
Definition: json.hpp:18604
-
ReferenceType get_ref() const
get a reference value (implicit)
Definition: json.hpp:17427
-
std::is_same< Expected, detected_t< Op, Args... > > is_detected_exact
Definition: json.hpp:2376
-
friend bool operator<(const ScalarType lhs, const_reference rhs) noexcept
comparison: less than
Definition: json.hpp:20459
-
std::size_t operator()(const nlohmann::json &j) const
return a hash value for a JSON object
Definition: json.hpp:22643
-
typename std::remove_cv< typename std::remove_reference< T >::type >::type uncvref_t
Definition: json.hpp:2194
- - - - diff --git a/help/html/json__fwd_8hpp.html b/help/html/json__fwd_8hpp.html deleted file mode 100644 index aa8e57a..0000000 --- a/help/html/json__fwd_8hpp.html +++ /dev/null @@ -1,122 +0,0 @@ - - - - - - - -CocoaTweet: build/_deps/json-src/include/nlohmann/json_fwd.hpp File Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
json_fwd.hpp File Reference
-
-
-
#include <cstdint>
-#include <map>
-#include <memory>
-#include <string>
-#include <vector>
-
-Include dependency graph for json_fwd.hpp:
-
-
- - - - - - - - -
-
-

Go to the source code of this file.

- - - - - - - - - - - -

-Classes

struct  nlohmann::adl_serializer< typename, typename >
 default JSONSerializer template argument More...
 
class  nlohmann::basic_json
 a class to store JSON values More...
 
class  nlohmann::json_pointer< BasicJsonType >
 JSON Pointer. More...
 
- - - - -

-Namespaces

 nlohmann
 namespace for Niels Lohmann
 
-
- - - - diff --git a/help/html/json__fwd_8hpp__incl.map b/help/html/json__fwd_8hpp__incl.map deleted file mode 100644 index 96acbc6..0000000 --- a/help/html/json__fwd_8hpp__incl.map +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/help/html/json__fwd_8hpp__incl.md5 b/help/html/json__fwd_8hpp__incl.md5 deleted file mode 100644 index 5cc3f53..0000000 --- a/help/html/json__fwd_8hpp__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -309e9ad1f820ad8d6fa6b527dcd27675 \ No newline at end of file diff --git a/help/html/json__fwd_8hpp__incl.png b/help/html/json__fwd_8hpp__incl.png deleted file mode 100644 index 89db4e5..0000000 Binary files a/help/html/json__fwd_8hpp__incl.png and /dev/null differ diff --git a/help/html/json__fwd_8hpp_source.html b/help/html/json__fwd_8hpp_source.html deleted file mode 100644 index 1252ecf..0000000 --- a/help/html/json__fwd_8hpp_source.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - - -CocoaTweet: build/_deps/json-src/include/nlohmann/json_fwd.hpp Source File - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
json_fwd.hpp
-
-
-Go to the documentation of this file.
1 #ifndef INCLUDE_NLOHMANN_JSON_FWD_HPP_
-
2 #define INCLUDE_NLOHMANN_JSON_FWD_HPP_
-
3 
-
4 #include <cstdint> // int64_t, uint64_t
-
5 #include <map> // map
-
6 #include <memory> // allocator
-
7 #include <string> // string
-
8 #include <vector> // vector
-
9 
-
15 namespace nlohmann
-
16 {
-
24 template<typename T = void, typename SFINAE = void>
-
25 struct adl_serializer;
-
26 
-
27 template<template<typename U, typename V, typename... Args> class ObjectType =
-
28  std::map,
-
29  template<typename U, typename... Args> class ArrayType = std::vector,
-
30  class StringType = std::string, class BooleanType = bool,
-
31  class NumberIntegerType = std::int64_t,
-
32  class NumberUnsignedType = std::uint64_t,
-
33  class NumberFloatType = double,
-
34  template<typename U> class AllocatorType = std::allocator,
-
35  template<typename T, typename SFINAE = void> class JSONSerializer =
-
36  adl_serializer>
-
37 class basic_json;
-
38 
-
50 template<typename BasicJsonType>
-
51 class json_pointer;
-
52 
-
61 using json = basic_json<>;
-
62 } // namespace nlohmann
-
63 
-
64 #endif // INCLUDE_NLOHMANN_JSON_FWD_HPP_
-
-
namespace for Niels Lohmann
Definition: json.hpp:84
-
basic_json<> json
default JSON class
Definition: json.hpp:2445
- - - - diff --git a/help/html/key_8cc.html b/help/html/key_8cc.html deleted file mode 100644 index 73dcfba..0000000 --- a/help/html/key_8cc.html +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/oauth/key.cc File Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
key.cc File Reference
-
-
-
#include "cocoatweet/oauth/key.h"
-#include "nlohmann/json.hpp"
-#include <fstream>
-#include <string>
-#include <typeinfo>
-
-Include dependency graph for key.cc:
-
-
- - - - - - - - - -
-
- - - - - -

-Namespaces

 CocoaTweet
 
 CocoaTweet::OAuth
 
-
- - - - diff --git a/help/html/key_8cc__incl.map b/help/html/key_8cc__incl.map deleted file mode 100644 index 6d33af1..0000000 --- a/help/html/key_8cc__incl.map +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/help/html/key_8cc__incl.md5 b/help/html/key_8cc__incl.md5 deleted file mode 100644 index 4723c0c..0000000 --- a/help/html/key_8cc__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -9a4351d272d03ef128001a622c81a832 \ No newline at end of file diff --git a/help/html/key_8cc__incl.png b/help/html/key_8cc__incl.png deleted file mode 100644 index e7354a5..0000000 Binary files a/help/html/key_8cc__incl.png and /dev/null differ diff --git a/help/html/key_8h.html b/help/html/key_8h.html deleted file mode 100644 index 70eb2b4..0000000 --- a/help/html/key_8h.html +++ /dev/null @@ -1,156 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/oauth/key.h File Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
key.h File Reference
-
-
-
#include <string>
-#include <map>
-
-Include dependency graph for key.h:
-
-
- - - - - -
-
-This graph shows which files directly or indirectly include this file:
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-

Go to the source code of this file.

- - - - -

-Classes

class  CocoaTweet::OAuth::Key
 
- - - - - -

-Namespaces

 CocoaTweet
 
 CocoaTweet::OAuth
 
-
- - - - diff --git a/help/html/key_8h__dep__incl.map b/help/html/key_8h__dep__incl.map deleted file mode 100644 index 6adda02..0000000 --- a/help/html/key_8h__dep__incl.map +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/help/html/key_8h__dep__incl.md5 b/help/html/key_8h__dep__incl.md5 deleted file mode 100644 index ff4c81d..0000000 --- a/help/html/key_8h__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -41556ebae5e13e481c9ad9b00d2516d3 \ No newline at end of file diff --git a/help/html/key_8h__dep__incl.png b/help/html/key_8h__dep__incl.png deleted file mode 100644 index fbdd6ad..0000000 Binary files a/help/html/key_8h__dep__incl.png and /dev/null differ diff --git a/help/html/key_8h__incl.map b/help/html/key_8h__incl.map deleted file mode 100644 index 1a8e1c2..0000000 --- a/help/html/key_8h__incl.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/help/html/key_8h__incl.md5 b/help/html/key_8h__incl.md5 deleted file mode 100644 index 45c3216..0000000 --- a/help/html/key_8h__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -3ce4d027a7609509a75fc7ba6e39b0d3 \ No newline at end of file diff --git a/help/html/key_8h__incl.png b/help/html/key_8h__incl.png deleted file mode 100644 index bacec9c..0000000 Binary files a/help/html/key_8h__incl.png and /dev/null differ diff --git a/help/html/key_8h_source.html b/help/html/key_8h_source.html deleted file mode 100644 index e24581a..0000000 --- a/help/html/key_8h_source.html +++ /dev/null @@ -1,173 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/oauth/key.h Source File - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
key.h
-
-
-Go to the documentation of this file.
1 #ifndef COCOATWEET_OAUTH_KEY_H_
-
2 #define COCOATWEET_OAUTH_KEY_H_
-
3 
-
4 #include <string>
-
5 #include <map>
-
6 
-
7 namespace CocoaTweet::OAuth {
-
8 class Key {
-
9  std::string consumerKey_;
-
10  std::string consumerSecret_;
-
11  std::string accessToken_;
-
12  std::string accessTokenSecret_;
-
13  std::string bearerToken_;
-
14 
-
15 public:
-
16  Key() : consumerKey_(""), consumerSecret_(""), accessToken_(""), accessTokenSecret_("") {}
-
17  Key(const std::string& _consumerKey, const std::string& _consumerSecret,
-
18  const std::string& _accessToken, const std::string& _accessTokenSecret)
-
19  : consumerKey_(_consumerKey),
-
20  consumerSecret_(_consumerSecret),
-
21  accessToken_(_accessToken),
-
22  accessTokenSecret_(_accessTokenSecret) {}
-
23  Key(const std::string& _consumerKey, const std::string& _consumerSecret)
-
24  : consumerKey_(_consumerKey), consumerSecret_(_consumerSecret) {}
-
25 
-
26  void consumerKey(const std::string& _consumerKey) {
-
27  consumerKey_ = _consumerKey;
-
28  }
-
29 
-
30  void consumerSecret(const std::string& _consumerSecret) {
-
31  consumerSecret_ = _consumerSecret;
-
32  }
-
33 
-
34  void accessToken(const std::string& _accessToken) {
-
35  accessToken_ = _accessToken;
-
36  }
-
37 
-
38  void accessTokenSecret(const std::string& _accessTokenSecret) {
-
39  accessTokenSecret_ = _accessTokenSecret;
-
40  }
-
41 
-
42  void bearerToken(const std::string& _bearer) {
-
43  bearerToken_ = _bearer;
-
44  }
-
45  const std::string& consumerKey() const {
-
46  return consumerKey_;
-
47  }
-
48  const std::string& consumerSecret() const {
-
49  return consumerSecret_;
-
50  }
-
51  const std::string& accessToken() const {
-
52  return accessToken_;
-
53  }
-
54  const std::string& accessTokenSecret() const {
-
55  return accessTokenSecret_;
-
56  }
-
57 
-
58  const std::string& bearerToken() const {
-
59  return bearerToken_;
-
60  }
-
61 
-
62  std::map<std::string, std::string> noSecret() const {
-
63  return std::map<std::string, std::string>{{"oauth_consumer_key", consumerKey_},
-
64  {"oauth_token", accessToken_}};
-
65  }
-
66  const std::map<std::string, std::string> secret() const {
-
67  return std::map<std::string, std::string>{{"oauth_consumer_key", consumerSecret_},
-
68  {"oauth_token", accessTokenSecret_}};
-
69  }
-
70 
-
71  static Key fromJsonFile(const std::string _jsonFile);
-
72 };
-
73 } // namespace CocoaTweet::OAuth
-
74 
-
75 #endif
-
-
void bearerToken(const std::string &_bearer)
Definition: key.h:42
-
Key(const std::string &_consumerKey, const std::string &_consumerSecret)
Definition: key.h:23
-
void accessTokenSecret(const std::string &_accessTokenSecret)
Definition: key.h:38
-
const std::map< std::string, std::string > secret() const
Definition: key.h:66
-
static Key fromJsonFile(const std::string _jsonFile)
Definition: key.cc:8
-
const std::string & consumerKey() const
Definition: key.h:45
-
Key(const std::string &_consumerKey, const std::string &_consumerSecret, const std::string &_accessToken, const std::string &_accessTokenSecret)
Definition: key.h:17
-
void consumerSecret(const std::string &_consumerSecret)
Definition: key.h:30
-
Definition: key.h:8
-
std::map< std::string, std::string > noSecret() const
Definition: key.h:62
-
const std::string & accessToken() const
Definition: key.h:51
-
const std::string & bearerToken() const
Definition: key.h:58
-
const std::string & consumerSecret() const
Definition: key.h:48
-
void accessToken(const std::string &_accessToken)
Definition: key.h:34
-
const std::string & accessTokenSecret() const
Definition: key.h:54
-
Key()
Definition: key.h:16
-
void consumerKey(const std::string &_consumerKey)
Definition: key.h:26
-
Definition: key.cc:7
- - - - diff --git a/help/html/main_8cc.html b/help/html/main_8cc.html deleted file mode 100644 index ce7842b..0000000 --- a/help/html/main_8cc.html +++ /dev/null @@ -1,141 +0,0 @@ - - - - - - - -CocoaTweet: src/main.cc File Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
main.cc File Reference
-
-
-
#include <cocoatweet/api/api.h>
-#include <iostream>
-#include <cocoatweet/exception/exception.h>
-
-Include dependency graph for main.cc:
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- - - -

-Functions

auto main () -> int
 
-

Function Documentation

- -

◆ main()

- -
-
- - - - - - - -
auto main () -> int
-
- -
-
-
- - - - diff --git a/help/html/main_8cc__incl.map b/help/html/main_8cc__incl.map deleted file mode 100644 index 0c13499..0000000 --- a/help/html/main_8cc__incl.map +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/help/html/main_8cc__incl.md5 b/help/html/main_8cc__incl.md5 deleted file mode 100644 index f0cbafe..0000000 --- a/help/html/main_8cc__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -21735d69d498186a4ce5ecbd7e93223c \ No newline at end of file diff --git a/help/html/main_8cc__incl.png b/help/html/main_8cc__incl.png deleted file mode 100644 index ac9bb1d..0000000 Binary files a/help/html/main_8cc__incl.png and /dev/null differ diff --git a/help/html/md_README.html b/help/html/md_README.html deleted file mode 100644 index 93862fd..0000000 --- a/help/html/md_README.html +++ /dev/null @@ -1,225 +0,0 @@ - - - - - - - -CocoaTweet: README - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
README
-
-
-

https://jenkins.milkcocoa.info/job/CocoaTweet/job/master

-

-CocoaTweet

-

This is a library for using Twitter API from C++
-

-

-Features

-

you can use these endpoint

    -
  • statuses/update
  • -
  • statuses/destroy/:id
  • -
  • statuses/retweet/:id
  • -
  • statuses/unretweet/:id
  • -
  • statuses/user_timeline
  • -
  • favorites/create
  • -
  • favorites/destroy
  • -
  • media/upload(support: jpg, jpeg, png, gif, mp4)
  • -
  • direct_messages/events/new (message_create)
  • -
-

-Dependency

-
    -
  • libcurl(openssl version)
  • -
  • libssl
  • -
-

-Installation

-

-Ubuntu

-
# apt install clang cmake git libboost-dev libboost-test-dev libcurl4-openssl-dev libssl-dev ninja-build
-
$ git clone https://github.com/koron0902/CocoaTweet
-
$ cd CocoaTweet
-
$ mkdir build
-
$ cd build
-
$ cmake .. -G Ninja
-
$ ninja
-

-macOS

-
$ brew install cmake curl git ninja openssl pkg-config
-
$ git clone https://github.com/koron0902/CocoaTweet
-
$ cd CocoaTweet
-
$ mkdir build
-
$ cd build
-
$ cmake .. -G ninja -DOPENSSL_ROOT_DIR=<path/to/openssl/install> # CANNOT detect libssl automatically with homebrew and cmake bug
-
$ ninja
-

-Windows

-
    -
  • Get MinGW32 from here(start download automatically at open link)
    -
  • -
  • Install mingw32-base-bin and mingw32-gcc-g+-bin via MinGW32
    -
  • -
  • Add PATH in System Environment
    -
  • -
  • Get libcurl-32bit and OpenSSL-32bit from here
    -
  • -
  • Get ninja from here and add PATH(Optional, but build faster)
    -
  • -
-

and then....

$ git clone https://github.com/koron0902/CocoaTweet
-
$ cd CocoaTweet
-
$ mkdir build
-
$ cd build
-
-
// if install ninja
-
$ cmake .. -G Ninja -DOPENSSL_ROOT_DIR=<path/to/openssl/install> -DCURL_ROOT_DIR=<path/to/curl/install> -DCMAKE_CXX_COMPILER=mingw32-g++ -DCMAKE_C_COMPILER=mingw32-gcc -DCMAKE_MAKE_PROGRAM=ninja
-
$ ninja
-
-
// if NOT install ninja
-
$ cmake .. -G "MinGW Makefiles" -DOPENSSL_ROOT_DIR=<path/to/openssl/install> -DCURL_ROOT_DIR=<path/to/curl/install>
-
$ mingw32-make
-

-How

-

-API Key Registration

-

-1.Write Key into code

-

write api key into code and create Key object use it.
-

#include "cocoatweet/oauth/key.h"
-
-
auto consumerKey = "your consumer key";
-
auto consumerSecret = "your consumer secret";
-
auto accessToken = "your access token";
-
auto accessTokenSecret = "your access token secret";
-
-
CocoaTweet::OAuth::Key key(consumerKey, consumerSecret, accessToken, accessTokenSecret);
-

-2. Load Key from JSON file

-

prepare file which written 'api-key' with json format.
-

{
-
"consumer_key" : "your consumer key",
-
"consumer_secret" : "your consumer secret",
-
"access_token" : "your access token",
-
"access_token_secret" : "your access token secret"
-
}
-

then you can load api key from json file.
-

#include "cocoatweet/oauth/key.h"
-
-
CocoaTweet::OAuth::Key key = CocoaTweet::OAuth::Key::fromJsonFile("api_key.json");
-

-Generate API object

-

generating API object with Key.
- this object is API entry point.
-

-
#include "cocoatweet/api/api.h"
-
-
CocoaTweet::API::API api(key);
-

-NOTE

-

if you want to call Twitter API using Bearer Token; OAuth2, you can do.

api.generateBearerToken();
-

After call it, always use Bearer Token to access API which kinds of GET method.
- no affect to POST method.
- then, if you use this, and ONLY use kind of GET API, you DO NOT need acess token.

-

-Use API

-
// Post a tweet
-
api.status().update("Hello, World!!\nTweet from Cocoa Twitter Library");
-
-
// Upload a media
-
auto media1 = api.media().Upload("path/to/file/image.jpeg");
-
auto media2 = api.media().Upload("path/to/file/image2.png");
-
api.status().update("Upload media from Cocoa Twitter Library", std::vector<std::string>{media1.id(), media2.id()});
-
-
// Retweet a tweet
-
api.status().retweet("tweet id");
-
-
// un RT a tweet
-
api.status().unretweet("tweet id")
-
-
// Delete a tweet
-
api.status().destroy("tweet id");
-
-
// Fav. a tweet
-
api.favorite().create("tweet id");
-
-
// un Fav. a tweet
-
api.favorite().destroy("tweet id");
-
-
// get a timeline with screen name
-
auto timeline = api.status().userTimeline("milkcocoa0902");
-
-
// send a direct message
-
// you cau get recipient_id using https://idtwi.com/
-
api.directMessage().messageCreate("<recipient_id>", "Sent message using Cocoa Twitter Library");
-

-More Information

-

See API Document

-

donate by BitCoin : bc1qhpm8tmq72scqpl2ccemcf0ktfjg4rsu73e99tz
-

-
-
- - - - diff --git a/help/html/md_build__deps_json-src_README.html b/help/html/md_build__deps_json-src_README.html deleted file mode 100644 index 67778ec..0000000 --- a/help/html/md_build__deps_json-src_README.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - - - - -CocoaTweet: Release-tracking repository for nlohmann/json - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
Release-tracking repository for nlohmann/json
-
-
-

This repository is based on: astoeckel/json The goal is to provide a lightweight repository tracking every releases of nlohmann/json. This repository is compatible with cmake FetchContent.

-

You can depends on nlohmann/json using:

-

Example:

include(FetchContent)
-
-
FetchContent_Declare(json
-
GIT_REPOSITORY https://github.com/ArthurSonzogni/nlohman_json
-
GIT_TAG v3.7.3)
-
-
FetchContent_GetProperties(json)
-
if(NOT json_POPULATED)
-
FetchContent_Populate(json)
-
add_subdirectory(${json_SOURCE_DIR} ${json_BINARY_DIR} EXCLUDE_FROM_ALL)
-
endif()
-
-
target_link_libraries(foo PRIVATE nlohmann_json::nlohmann_json)
-

You can replace always replace the URL by the official repository: https://github.com/nlohmann/json The only difference is the download size. It will several orders of magnitude larger.

-

This repository is fully autonomous. It updates itself every week using github actions.

-

See:

-
-
- - - - diff --git a/help/html/mediaStore_8cc.html b/help/html/mediaStore_8cc.html deleted file mode 100644 index a2c327a..0000000 --- a/help/html/mediaStore_8cc.html +++ /dev/null @@ -1,108 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api/model/mediaStore.cc File Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
mediaStore.cc File Reference
-
-
-
#include <cocoatweet/api/model/mediaStore.h>
-#include <cocoatweet/exception/exception.h>
-#include "nlohmann/json.hpp"
-
-Include dependency graph for mediaStore.cc:
-
-
- - - - - - - - -
-
- - - - - - - -

-Namespaces

 CocoaTweet
 
 CocoaTweet::API
 
 CocoaTweet::API::Model
 
-
- - - - diff --git a/help/html/mediaStore_8cc__incl.map b/help/html/mediaStore_8cc__incl.map deleted file mode 100644 index 06b28f0..0000000 --- a/help/html/mediaStore_8cc__incl.map +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/help/html/mediaStore_8cc__incl.md5 b/help/html/mediaStore_8cc__incl.md5 deleted file mode 100644 index 8872c9e..0000000 --- a/help/html/mediaStore_8cc__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -78dc739a5f08f069c7f668e39cac3fe7 \ No newline at end of file diff --git a/help/html/mediaStore_8cc__incl.png b/help/html/mediaStore_8cc__incl.png deleted file mode 100644 index 1b476e6..0000000 Binary files a/help/html/mediaStore_8cc__incl.png and /dev/null differ diff --git a/help/html/mediaStore_8h.html b/help/html/mediaStore_8h.html deleted file mode 100644 index 2d0b4c3..0000000 --- a/help/html/mediaStore_8h.html +++ /dev/null @@ -1,127 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api/model/mediaStore.h File Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
mediaStore.h File Reference
-
-
-
#include <string>
-
-Include dependency graph for mediaStore.h:
-
-
- - - - -
-
-This graph shows which files directly or indirectly include this file:
-
-
- - - - - - - - - - - -
-
-

Go to the source code of this file.

- - - - - -

-Classes

class  CocoaTweet::API::Model::MediaStore
 data class for tweet object More...
 
- - - - - - - -

-Namespaces

 CocoaTweet
 
 CocoaTweet::API
 
 CocoaTweet::API::Model
 
-
- - - - diff --git a/help/html/mediaStore_8h__dep__incl.map b/help/html/mediaStore_8h__dep__incl.map deleted file mode 100644 index 564e780..0000000 --- a/help/html/mediaStore_8h__dep__incl.map +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/help/html/mediaStore_8h__dep__incl.md5 b/help/html/mediaStore_8h__dep__incl.md5 deleted file mode 100644 index 2ea6a7b..0000000 --- a/help/html/mediaStore_8h__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -6a927a3da3b572659961134227385f0c \ No newline at end of file diff --git a/help/html/mediaStore_8h__dep__incl.png b/help/html/mediaStore_8h__dep__incl.png deleted file mode 100644 index 2c332bb..0000000 Binary files a/help/html/mediaStore_8h__dep__incl.png and /dev/null differ diff --git a/help/html/mediaStore_8h__incl.map b/help/html/mediaStore_8h__incl.map deleted file mode 100644 index 8c77879..0000000 --- a/help/html/mediaStore_8h__incl.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/help/html/mediaStore_8h__incl.md5 b/help/html/mediaStore_8h__incl.md5 deleted file mode 100644 index 9b64320..0000000 --- a/help/html/mediaStore_8h__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -d7717dd7bebb043b568c405a9f99e835 \ No newline at end of file diff --git a/help/html/mediaStore_8h__incl.png b/help/html/mediaStore_8h__incl.png deleted file mode 100644 index 3c0ea51..0000000 Binary files a/help/html/mediaStore_8h__incl.png and /dev/null differ diff --git a/help/html/mediaStore_8h_source.html b/help/html/mediaStore_8h_source.html deleted file mode 100644 index 1a679fe..0000000 --- a/help/html/mediaStore_8h_source.html +++ /dev/null @@ -1,138 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api/model/mediaStore.h Source File - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
mediaStore.h
-
-
-Go to the documentation of this file.
1 #ifndef COCOATWEET_API_MODEL_MEDIASTORE_H_
-
2 #define COCOATWEET_API_MODEL_MEDIASTORE_H_
-
3 
-
4 #include <string>
-
5 
-
6 namespace CocoaTweet::API::Model {
-
7 
-
9 class MediaStore final {
-
10 public:
-
12  MediaStore() = default;
-
13 
-
15  MediaStore(const MediaStore&) = default;
-
16 
-
19  MediaStore(const std::string& _json) : MediaStore(MediaStore::parse(_json)) {}
-
20 
-
24  static MediaStore parse(const std::string& _json);
-
25 
-
29  void id(const std::string _id);
-
30 
-
34  void size(const unsigned int _size);
-
35 
-
39  void expires(const unsigned int _ex);
-
40 
-
44  void state(const std::string _state);
-
45 
-
49  void remain(const unsigned int _remain);
-
50 
-
54  const std::string id() const;
-
55 
-
59  const unsigned int size() const;
-
60 
-
64  const unsigned int expire() const;
-
65 
-
69  const std::string state() const;
-
70 
-
74  const unsigned int remain() const;
-
75 
-
76 private:
-
77  std::string id_;
-
78  unsigned long long size_;
-
79  unsigned long long expires_;
-
80  std::string state_;
-
81  unsigned long long remain_;
-
82 };
-
83 } // namespace CocoaTweet::API::Model
-
84 
-
85 #endif
-
-
data class for tweet object
Definition: mediaStore.h:9
-
void expires(const unsigned int _ex)
set remaining time to expire the media
Definition: mediaStore.cc:40
-
const unsigned int expire() const
get remaining time to expire the media
Definition: mediaStore.cc:57
-
const unsigned int size() const
get media size
Definition: mediaStore.cc:54
-
const std::string id() const
get media id
Definition: mediaStore.cc:51
-
static MediaStore parse(const std::string &_json)
response parser for MediaStore object
Definition: mediaStore.cc:6
-
const unsigned int remain() const
set how second need for upload complete
Definition: mediaStore.cc:64
-
Definition: mediaStore.cc:5
-
MediaStore()=default
constructor
-
MediaStore(const std::string &_json)
constructor for create object from json response
Definition: mediaStore.h:19
-
const std::string state() const
get media processing status
Definition: mediaStore.cc:60
- - - - diff --git a/help/html/media_8cc.html b/help/html/media_8cc.html deleted file mode 100644 index 921ec30..0000000 --- a/help/html/media_8cc.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api/media/media.cc File Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
media.cc File Reference
-
-
-
-Include dependency graph for media.cc:
-
-
- - - - - - - - - - - - - - - - - -
-
- - - - - - - -

-Namespaces

 CocoaTweet
 
 CocoaTweet::API
 
 CocoaTweet::API::Medias
 
-
- - - - diff --git a/help/html/media_8cc__incl.map b/help/html/media_8cc__incl.map deleted file mode 100644 index f3cee87..0000000 --- a/help/html/media_8cc__incl.map +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/help/html/media_8cc__incl.md5 b/help/html/media_8cc__incl.md5 deleted file mode 100644 index 53804e8..0000000 --- a/help/html/media_8cc__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -9225ea79323e1a756f22ebb46a9037d9 \ No newline at end of file diff --git a/help/html/media_8cc__incl.png b/help/html/media_8cc__incl.png deleted file mode 100644 index 730a13f..0000000 Binary files a/help/html/media_8cc__incl.png and /dev/null differ diff --git a/help/html/media_8h.html b/help/html/media_8h.html deleted file mode 100644 index 6e612ad..0000000 --- a/help/html/media_8h.html +++ /dev/null @@ -1,139 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api/media/media.h File Reference - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
media.h File Reference
-
-
-
-Include dependency graph for media.h:
-
-
- - - - - - - - - - - - - - - - -
-
-This graph shows which files directly or indirectly include this file:
-
-
- - - - - - - -
-
-

Go to the source code of this file.

- - - - - -

-Classes

class  CocoaTweet::API::Medias::Media
 Entory point for statuses/*. More...
 
- - - - - - - -

-Namespaces

 CocoaTweet
 
 CocoaTweet::API
 
 CocoaTweet::API::Medias
 
-
- - - - diff --git a/help/html/media_8h__dep__incl.map b/help/html/media_8h__dep__incl.map deleted file mode 100644 index 369a4d8..0000000 --- a/help/html/media_8h__dep__incl.map +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/help/html/media_8h__dep__incl.md5 b/help/html/media_8h__dep__incl.md5 deleted file mode 100644 index 1c76cf1..0000000 --- a/help/html/media_8h__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -d0ce17e871869ff302d07fc2007e0e6b \ No newline at end of file diff --git a/help/html/media_8h__dep__incl.png b/help/html/media_8h__dep__incl.png deleted file mode 100644 index 6e3d73a..0000000 Binary files a/help/html/media_8h__dep__incl.png and /dev/null differ diff --git a/help/html/media_8h__incl.map b/help/html/media_8h__incl.map deleted file mode 100644 index ca1065b..0000000 --- a/help/html/media_8h__incl.map +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/help/html/media_8h__incl.md5 b/help/html/media_8h__incl.md5 deleted file mode 100644 index 35e3535..0000000 --- a/help/html/media_8h__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -b19b0ed83808b29acb543043c2ae39d7 \ No newline at end of file diff --git a/help/html/media_8h__incl.png b/help/html/media_8h__incl.png deleted file mode 100644 index 3d4b0fd..0000000 Binary files a/help/html/media_8h__incl.png and /dev/null differ diff --git a/help/html/media_8h_source.html b/help/html/media_8h_source.html deleted file mode 100644 index 0302af7..0000000 --- a/help/html/media_8h_source.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api/media/media.h Source File - - - - - - - - - -
-
- - - - - - -
-
CocoaTweet -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
media.h
-
-
-Go to the documentation of this file.
1 #ifndef COCOATWEET_API_MEDIA_MEDIA_H_
-
2 #define COCOATWEET_API_MEDIA_MEDIA_H_
-
3 
- - - - -
8 #include <vector>
-
9 
-
10 namespace CocoaTweet::API::Medias {
-
11 
-
13 class Media : public groupInterface {
-
14 public:
-
16  Media() = default;
-
17 
-
20  Media(std::shared_ptr<CocoaTweet::OAuth::OAuth1> _oauth);
-
21 
-
22  CocoaTweet::API::Model::MediaStore upload(const std::string& _file) const;
-
23 
-
24 private:
-
25 };
-
26 } // namespace CocoaTweet::API::Medias
-
27 
-
28 #endif
-
- -
data class for tweet object
Definition: mediaStore.h:9
-
Media()=default
primary constructor to allow for create NON-INITIALIZED object
-
Definition: groupInterface.h:8
-
Definition: media.cc:3
- -
CocoaTweet::API::Model::MediaStore upload(const std::string &_file) const
Definition: media.cc:8
- - -
Entory point for statuses/*.
Definition: media.h:13
- - - - diff --git a/help/html/menu.js b/help/html/menu.js deleted file mode 100644 index 433c15b..0000000 --- a/help/html/menu.js +++ /dev/null @@ -1,50 +0,0 @@ -/* - @licstart The following is the entire license notice for the - JavaScript code in this file. - - Copyright (C) 1997-2017 by Dimitri van Heesch - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - - @licend The above is the entire license notice - for the JavaScript code in this file - */ -function initMenu(relPath,searchEnabled,serverSide,searchPage,search) { - function makeTree(data,relPath) { - var result=''; - if ('children' in data) { - result+=''; - } - return result; - } - - $('#main-nav').append(makeTree(menudata,relPath)); - $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); - if (searchEnabled) { - if (serverSide) { - $('#main-menu').append('
  • '); - } else { - $('#main-menu').append('
  • '); - } - } - $('#main-menu').smartmenus(); -} -/* @license-end */ diff --git a/help/html/menudata.js b/help/html/menudata.js deleted file mode 100644 index 786f258..0000000 --- a/help/html/menudata.js +++ /dev/null @@ -1,90 +0,0 @@ -/* -@licstart The following is the entire license notice for the -JavaScript code in this file. - -Copyright (C) 1997-2019 by Dimitri van Heesch - -This program is free software; you can redistribute it and/or modify -it under the terms of version 2 of the GNU General Public License as published by -the Free Software Foundation - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License along -with this program; if not, write to the Free Software Foundation, Inc., -51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -@licend The above is the entire license notice -for the JavaScript code in this file -*/ -var menudata={children:[ -{text:"Main Page",url:"index.html"}, -{text:"Related Pages",url:"pages.html"}, -{text:"Namespaces",url:"namespaces.html",children:[ -{text:"Namespace List",url:"namespaces.html"}, -{text:"Namespace Members",url:"namespacemembers.html",children:[ -{text:"All",url:"namespacemembers.html"}, -{text:"Functions",url:"namespacemembers_func.html"}]}]}, -{text:"Classes",url:"annotated.html",children:[ -{text:"Class List",url:"annotated.html"}, -{text:"Class Index",url:"classes.html"}, -{text:"Class Hierarchy",url:"inherits.html"}, -{text:"Class Members",url:"functions.html",children:[ -{text:"All",url:"functions.html",children:[ -{text:"a",url:"functions.html#index_a"}, -{text:"b",url:"functions.html#index_b"}, -{text:"c",url:"functions.html#index_c"}, -{text:"d",url:"functions.html#index_d"}, -{text:"e",url:"functions.html#index_e"}, -{text:"f",url:"functions.html#index_f"}, -{text:"g",url:"functions.html#index_g"}, -{text:"h",url:"functions.html#index_h"}, -{text:"i",url:"functions.html#index_i"}, -{text:"k",url:"functions.html#index_k"}, -{text:"l",url:"functions.html#index_l"}, -{text:"m",url:"functions.html#index_m"}, -{text:"n",url:"functions.html#index_n"}, -{text:"o",url:"functions.html#index_o"}, -{text:"p",url:"functions.html#index_p"}, -{text:"r",url:"functions.html#index_r"}, -{text:"s",url:"functions.html#index_s"}, -{text:"t",url:"functions.html#index_t"}, -{text:"u",url:"functions.html#index_u"}, -{text:"v",url:"functions.html#index_v"}, -{text:"w",url:"functions.html#index_w"}, -{text:"~",url:"functions.html#index__7E"}]}, -{text:"Functions",url:"functions_func.html",children:[ -{text:"a",url:"functions_func.html#index_a"}, -{text:"b",url:"functions_func.html#index_b"}, -{text:"c",url:"functions_func.html#index_c"}, -{text:"d",url:"functions_func.html#index_d"}, -{text:"e",url:"functions_func.html#index_e"}, -{text:"f",url:"functions_func.html#index_f"}, -{text:"g",url:"functions_func.html#index_g"}, -{text:"h",url:"functions_func.html#index_h"}, -{text:"i",url:"functions_func.html#index_i"}, -{text:"k",url:"functions_func.html#index_k"}, -{text:"l",url:"functions_func.html#index_l"}, -{text:"m",url:"functions_func.html#index_m"}, -{text:"n",url:"functions_func.html#index_n"}, -{text:"o",url:"functions_func.html#index_o"}, -{text:"p",url:"functions_func.html#index_p"}, -{text:"r",url:"functions_func.html#index_r"}, -{text:"s",url:"functions_func.html#index_s"}, -{text:"t",url:"functions_func.html#index_t"}, -{text:"u",url:"functions_func.html#index_u"}, -{text:"v",url:"functions_func.html#index_v"}, -{text:"w",url:"functions_func.html#index_w"}, -{text:"~",url:"functions_func.html#index__7E"}]}, -{text:"Variables",url:"functions_vars.html"}, -{text:"Enumerations",url:"functions_enum.html"}, -{text:"Enumerator",url:"functions_eval.html"}]}]}, -{text:"Files",url:"files.html",children:[ -{text:"File List",url:"files.html"}, -{text:"File Members",url:"globals.html",children:[ -{text:"All",url:"globals.html"}, -{text:"Functions",url:"globals_func.html"}, -{text:"Variables",url:"globals_vars.html"}]}]}]} diff --git a/help/html/namespaceCocoaTweet.html b/help/html/namespaceCocoaTweet.html deleted file mode 100644 index a2289aa..0000000 --- a/help/html/namespaceCocoaTweet.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - - -CocoaTweet: CocoaTweet Namespace Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    - -
    -
    CocoaTweet Namespace Reference
    -
    -
    - - - - - - - - - - -

    -Namespaces

     API
     
     Exception
     
     OAuth
     
     Util
     
    -
    - - - - diff --git a/help/html/namespaceCocoaTweet_1_1API.html b/help/html/namespaceCocoaTweet_1_1API.html deleted file mode 100644 index efb960b..0000000 --- a/help/html/namespaceCocoaTweet_1_1API.html +++ /dev/null @@ -1,107 +0,0 @@ - - - - - - - -CocoaTweet: CocoaTweet::API Namespace Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    CocoaTweet::API Namespace Reference
    -
    -
    - - - - - - - - - - - - - - -

    -Namespaces

     DirectMessages
     
     Favorites
     
     Interface
     
     Medias
     
     Model
     
     Statuses
     
    - - - - - - -

    -Classes

    class  API
     Twitter API Entry Point. More...
     
    class  groupInterface
     
    -
    - - - - diff --git a/help/html/namespaceCocoaTweet_1_1API_1_1DirectMessages.html b/help/html/namespaceCocoaTweet_1_1API_1_1DirectMessages.html deleted file mode 100644 index a0644c5..0000000 --- a/help/html/namespaceCocoaTweet_1_1API_1_1DirectMessages.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - -CocoaTweet: CocoaTweet::API::DirectMessages Namespace Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    CocoaTweet::API::DirectMessages Namespace Reference
    -
    -
    - - - - - - - - -

    -Classes

    class  DirectMessage
     Entory point for statuses/*. More...
     
    class  New
     class for using statuses/update endpoint More...
     
    -
    - - - - diff --git a/help/html/namespaceCocoaTweet_1_1API_1_1Favorites.html b/help/html/namespaceCocoaTweet_1_1API_1_1Favorites.html deleted file mode 100644 index 58e72b2..0000000 --- a/help/html/namespaceCocoaTweet_1_1API_1_1Favorites.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - -CocoaTweet: CocoaTweet::API::Favorites Namespace Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    CocoaTweet::API::Favorites Namespace Reference
    -
    -
    - - - - - - - - -

    -Classes

    class  Create
     
    class  Destroy
     
    class  Favorite
     
    -
    - - - - diff --git a/help/html/namespaceCocoaTweet_1_1API_1_1Interface.html b/help/html/namespaceCocoaTweet_1_1API_1_1Interface.html deleted file mode 100644 index a4a51ec..0000000 --- a/help/html/namespaceCocoaTweet_1_1API_1_1Interface.html +++ /dev/null @@ -1,94 +0,0 @@ - - - - - - - -CocoaTweet: CocoaTweet::API::Interface Namespace Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    CocoaTweet::API::Interface Namespace Reference
    -
    -
    - - - - - - - - - - -

    -Classes

    class  HttpBase
     
    class  HttpGet
     class for Send request with POST method More...
     
    class  HttpPost
     class for Send request with POST method More...
     
    -
    - - - - diff --git a/help/html/namespaceCocoaTweet_1_1API_1_1Medias.html b/help/html/namespaceCocoaTweet_1_1API_1_1Medias.html deleted file mode 100644 index 25583de..0000000 --- a/help/html/namespaceCocoaTweet_1_1API_1_1Medias.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - -CocoaTweet: CocoaTweet::API::Medias Namespace Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    CocoaTweet::API::Medias Namespace Reference
    -
    -
    - - - - - - - - -

    -Classes

    class  Media
     Entory point for statuses/*. More...
     
    class  Upload
     entry point for using media/upload endpoint More...
     
    -
    - - - - diff --git a/help/html/namespaceCocoaTweet_1_1API_1_1Model.html b/help/html/namespaceCocoaTweet_1_1API_1_1Model.html deleted file mode 100644 index ecbc913..0000000 --- a/help/html/namespaceCocoaTweet_1_1API_1_1Model.html +++ /dev/null @@ -1,95 +0,0 @@ - - - - - - - -CocoaTweet: CocoaTweet::API::Model Namespace Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    CocoaTweet::API::Model Namespace Reference
    -
    -
    - - - - - - - - - - - -

    -Classes

    class  MediaStore
     data class for tweet object More...
     
    class  Tweet
     data class for tweet object More...
     
    class  User
     data class for tweet object More...
     
    -
    - - - - diff --git a/help/html/namespaceCocoaTweet_1_1API_1_1Statuses.html b/help/html/namespaceCocoaTweet_1_1API_1_1Statuses.html deleted file mode 100644 index d0ad580..0000000 --- a/help/html/namespaceCocoaTweet_1_1API_1_1Statuses.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - - - - -CocoaTweet: CocoaTweet::API::Statuses Namespace Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    CocoaTweet::API::Statuses Namespace Reference
    -
    -
    - - - - - - - - - - - - - - - - - - -

    -Classes

    class  Destroy
     class for using status/destroy:id endpoint More...
     
    class  Retweet
     
    class  Status
     Entory point for statuses/*. More...
     
    class  Unretweet
     
    class  Update
     class for using statuses/update endpoint More...
     
    class  UserTimeline
     class for using statuses/user_timeline endpoint More...
     
    -
    - - - - diff --git a/help/html/namespaceCocoaTweet_1_1Exception.html b/help/html/namespaceCocoaTweet_1_1Exception.html deleted file mode 100644 index b237496..0000000 --- a/help/html/namespaceCocoaTweet_1_1Exception.html +++ /dev/null @@ -1,104 +0,0 @@ - - - - - - - -CocoaTweet: CocoaTweet::Exception Namespace Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    CocoaTweet::Exception Namespace Reference
    -
    -
    - - - - - - - - - - - - - - - - - - - - -

    -Classes

    class  AuthenticateException
     
    class  Exception
     
    class  InvalidParameterException
     
    class  RateLimitException
     
    class  TokenInvalidException
     
    class  TweetDuplicateException
     
    class  TweetNotFoundException
     
    class  TweetTooLongException
     
    class  UnsupportedMediaTypeException
     
    -
    - - - - diff --git a/help/html/namespaceCocoaTweet_1_1OAuth.html b/help/html/namespaceCocoaTweet_1_1OAuth.html deleted file mode 100644 index d391b13..0000000 --- a/help/html/namespaceCocoaTweet_1_1OAuth.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - - -CocoaTweet: CocoaTweet::OAuth Namespace Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    CocoaTweet::OAuth Namespace Reference
    -
    -
    - - - - - - -

    -Classes

    class  Key
     
    class  OAuth1
     
    -
    - - - - diff --git a/help/html/namespaceCocoaTweet_1_1Util.html b/help/html/namespaceCocoaTweet_1_1Util.html deleted file mode 100644 index ba2c528..0000000 --- a/help/html/namespaceCocoaTweet_1_1Util.html +++ /dev/null @@ -1,137 +0,0 @@ - - - - - - - -CocoaTweet: CocoaTweet::Util Namespace Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    CocoaTweet::Util Namespace Reference
    -
    -
    - - - - - - -

    -Functions

    std::string urlEncode (const std::string &_str)
     
    std::string join (const std::vector< std::string > _vec, const std::string &_delim)
     
    -

    Function Documentation

    - -

    ◆ join()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    std::string CocoaTweet::Util::join (const std::vector< std::string > _vec,
    const std::string & _delim 
    )
    -
    - -
    -
    - -

    ◆ urlEncode()

    - -
    -
    - - - - - - - - -
    std::string CocoaTweet::Util::urlEncode (const std::string & _str)
    -
    - -
    -
    -
    - - - - diff --git a/help/html/namespacemembers.html b/help/html/namespacemembers.html deleted file mode 100644 index c2c4462..0000000 --- a/help/html/namespacemembers.html +++ /dev/null @@ -1,80 +0,0 @@ - - - - - - - -CocoaTweet: Namespace Members - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -
    Here is a list of all namespace members with links to the namespace documentation for each member:
    -
    - - - - diff --git a/help/html/namespacemembers_enum.html b/help/html/namespacemembers_enum.html deleted file mode 100644 index bbd41cd..0000000 --- a/help/html/namespacemembers_enum.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - - -CocoaTweet: Namespace Members - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -
    - - - - diff --git a/help/html/namespacemembers_func.html b/help/html/namespacemembers_func.html deleted file mode 100644 index 801ca5c..0000000 --- a/help/html/namespacemembers_func.html +++ /dev/null @@ -1,80 +0,0 @@ - - - - - - - -CocoaTweet: Namespace Members - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -
    - - - - diff --git a/help/html/namespacemembers_type.html b/help/html/namespacemembers_type.html deleted file mode 100644 index 66883a1..0000000 --- a/help/html/namespacemembers_type.html +++ /dev/null @@ -1,264 +0,0 @@ - - - - - - - -CocoaTweet: Namespace Members - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -  - -

    - b -

    - - -

    - c -

    - - -

    - d -

    - - -

    - e -

    - - -

    - f -

    - - -

    - g -

    - - -

    - i -

    - - -

    - j -

    - - -

    - k -

    - - -

    - m -

    - - -

    - n -

    - - -

    - o -

    - - -

    - p -

    - - -

    - r -

    - - -

    - s -

    - - -

    - t -

    - - -

    - u -

    - - -

    - v -

    -
    - - - - diff --git a/help/html/namespacemembers_vars.html b/help/html/namespacemembers_vars.html deleted file mode 100644 index 62308d0..0000000 --- a/help/html/namespacemembers_vars.html +++ /dev/null @@ -1,113 +0,0 @@ - - - - - - - -CocoaTweet: Namespace Members - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -
    - - - - diff --git a/help/html/namespacenlohmann.html b/help/html/namespacenlohmann.html deleted file mode 100644 index 8b8af05..0000000 --- a/help/html/namespacenlohmann.html +++ /dev/null @@ -1,197 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann Namespace Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    - -
    -
    nlohmann Namespace Reference
    -
    -
    - -

    namespace for Niels Lohmann -More...

    - - - - - -

    -Namespaces

     detail
     detail namespace with internal helper functions
     
    - - - - - - - - - - - - - - - - - - -

    -Classes

    struct  adl_serializer
     default JSONSerializer template argument More...
     
    class  basic_json
     a class to store JSON values More...
     
    class  byte_container_with_subtype
     an internal type for a backed binary type More...
     
    class  json_pointer
     JSON Pointer. More...
     
    struct  json_sax
     SAX interface. More...
     
    struct  ordered_map
     
    - - - - - - - -

    -Typedefs

    using json = basic_json<>
     default JSON class More...
     
    using ordered_json = basic_json< nlohmann::ordered_map >
     ordered JSON class More...
     
    - - - - -

    -Functions

    NLOHMANN_BASIC_JSON_TPL_DECLARATION std::string to_string (const NLOHMANN_BASIC_JSON_TPL &j)
     user-defined to_string function for JSON values More...
     
    -

    Detailed Description

    -

    namespace for Niels Lohmann

    -

    namespace to hold default to_json function

    -
    See also
    https://github.com/nlohmann
    -
    Since
    version 1.0.0
    -

    Typedef Documentation

    - -

    ◆ json

    - -
    -
    - - - - -
    typedef basic_json<> nlohmann::json
    -
    - -

    default JSON class

    -

    This type is the default specialization of the basic_json class which uses the standard template types.

    -
    Since
    version 1.0.0
    - -
    -
    - -

    ◆ ordered_json

    - -
    -
    - -

    ordered JSON class

    -

    This type preserves the insertion order of object keys.

    -
    Since
    version 3.9.0
    - -
    -
    -

    Function Documentation

    - -

    ◆ to_string()

    - -
    -
    - - - - - - - - -
    NLOHMANN_BASIC_JSON_TPL_DECLARATION std::string nlohmann::to_string (const NLOHMANN_BASIC_JSON_TPLj)
    -
    - -

    user-defined to_string function for JSON values

    -

    This function implements a user-defined to_string for JSON objects.

    -
    Parameters
    - - -
    [in]ja JSON object
    -
    -
    -
    Returns
    a std::string object
    - -
    -
    -
    - - - - diff --git a/help/html/namespacenlohmann_1_1detail.html b/help/html/namespacenlohmann_1_1detail.html deleted file mode 100644 index 4b252fb..0000000 --- a/help/html/namespacenlohmann_1_1detail.html +++ /dev/null @@ -1,3557 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail Namespace Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    nlohmann::detail Namespace Reference
    -
    -
    - -

    detail namespace with internal helper functions -More...

    - - - - - -

    -Namespaces

     dtoa_impl
     implements the Grisu2 algorithm for binary to decimal floating-point conversion.
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Classes

    class  binary_reader
     deserialization of CBOR, MessagePack, and UBJSON values More...
     
    class  binary_writer
     serialization to CBOR and MessagePack values More...
     
    struct  conjunction
     
    struct  conjunction< B1 >
     
    struct  conjunction< B1, Bn... >
     
    struct  detector
     
    struct  detector< Default, void_t< Op< Args... > >, Op, Args... >
     
    class  exception
     general exception of the basic_json class More...
     
    struct  external_constructor
     
    struct  external_constructor< value_t::array >
     
    struct  external_constructor< value_t::binary >
     
    struct  external_constructor< value_t::boolean >
     
    struct  external_constructor< value_t::number_float >
     
    struct  external_constructor< value_t::number_integer >
     
    struct  external_constructor< value_t::number_unsigned >
     
    struct  external_constructor< value_t::object >
     
    struct  external_constructor< value_t::string >
     
    class  file_input_adapter
     
    struct  from_json_fn
     
    struct  has_from_json
     
    struct  has_from_json< BasicJsonType, T, enable_if_t< !is_basic_json< T >::value > >
     
    struct  has_from_json< BasicJsonType, T, enable_if_t< not is_basic_json< T >::value > >
     
    struct  has_non_default_from_json
     
    struct  has_non_default_from_json< BasicJsonType, T, enable_if_t< !is_basic_json< T >::value > >
     
    struct  has_non_default_from_json< BasicJsonType, T, enable_if_t< not is_basic_json< T >::value > >
     
    struct  has_to_json
     
    struct  has_to_json< BasicJsonType, T, enable_if_t< !is_basic_json< T >::value > >
     
    struct  has_to_json< BasicJsonType, T, enable_if_t< not is_basic_json< T >::value > >
     
    struct  index_sequence
     
    class  input_adapter
     
    struct  input_adapter_protocol
     abstract input adapter interface More...
     
    class  input_buffer_adapter
     input adapter for buffer input More...
     
    class  input_stream_adapter
     
    struct  internal_iterator
     an iterator value More...
     
    class  invalid_iterator
     exception indicating errors with iterators More...
     
    struct  is_basic_json
     
    struct  is_basic_json< NLOHMANN_BASIC_JSON_TPL >
     
    struct  is_compatible_array_type
     
    struct  is_compatible_array_type_impl
     
    struct  is_compatible_array_type_impl< BasicJsonType, CompatibleArrayType, enable_if_t< is_detected< value_type_t, CompatibleArrayType >::value &&is_detected< iterator_t, CompatibleArrayType >::value &&!is_iterator_traits< iterator_traits< CompatibleArrayType > >::value > >
     
    struct  is_compatible_array_type_impl< BasicJsonType, CompatibleArrayType, enable_if_t< is_detected< value_type_t, CompatibleArrayType >::value and is_detected< iterator_t, CompatibleArrayType >::value and not is_iterator_traits< iterator_traits< CompatibleArrayType > >::value > >
     
    struct  is_compatible_integer_type
     
    struct  is_compatible_integer_type_impl
     
    struct  is_compatible_integer_type_impl< RealIntegerType, CompatibleNumberIntegerType, enable_if_t< std::is_integral< RealIntegerType >::value &&std::is_integral< CompatibleNumberIntegerType >::value &&!std::is_same< bool, CompatibleNumberIntegerType >::value > >
     
    struct  is_compatible_integer_type_impl< RealIntegerType, CompatibleNumberIntegerType, enable_if_t< std::is_integral< RealIntegerType >::value and std::is_integral< CompatibleNumberIntegerType >::value and not std::is_same< bool, CompatibleNumberIntegerType >::value > >
     
    struct  is_compatible_object_type
     
    struct  is_compatible_object_type_impl
     
    struct  is_compatible_object_type_impl< BasicJsonType, CompatibleObjectType, enable_if_t< is_detected< mapped_type_t, CompatibleObjectType >::value &&is_detected< key_type_t, CompatibleObjectType >::value > >
     
    struct  is_compatible_object_type_impl< BasicJsonType, CompatibleObjectType, enable_if_t< is_detected< mapped_type_t, CompatibleObjectType >::value and is_detected< key_type_t, CompatibleObjectType >::value > >
     
    struct  is_compatible_string_type
     
    struct  is_compatible_string_type_impl
     
    struct  is_compatible_string_type_impl< BasicJsonType, CompatibleStringType, enable_if_t< is_detected_exact< typename BasicJsonType::string_t::value_type, value_type_t, CompatibleStringType >::value > >
     
    struct  is_compatible_type
     
    struct  is_compatible_type_impl
     
    struct  is_compatible_type_impl< BasicJsonType, CompatibleType, enable_if_t< is_complete_type< CompatibleType >::value > >
     
    struct  is_complete_type
     
    struct  is_complete_type< T, decltype(void(sizeof(T)))>
     
    struct  is_constructible_array_type
     
    struct  is_constructible_array_type_impl
     
    struct  is_constructible_array_type_impl< BasicJsonType, ConstructibleArrayType, enable_if_t< !std::is_same< ConstructibleArrayType, typename BasicJsonType::value_type >::value &&std::is_default_constructible< ConstructibleArrayType >::value &&(std::is_move_assignable< ConstructibleArrayType >::value||std::is_copy_assignable< ConstructibleArrayType >::value)&&is_detected< value_type_t, ConstructibleArrayType >::value &&is_detected< iterator_t, ConstructibleArrayType >::value &&is_complete_type< detected_t< value_type_t, ConstructibleArrayType > >::value > >
     
    struct  is_constructible_array_type_impl< BasicJsonType, ConstructibleArrayType, enable_if_t< not std::is_same< ConstructibleArrayType, typename BasicJsonType::value_type >::value and std::is_default_constructible< ConstructibleArrayType >::value and(std::is_move_assignable< ConstructibleArrayType >::value or std::is_copy_assignable< ConstructibleArrayType >::value) andis_detected< value_type_t, ConstructibleArrayType >::value andis_detected< iterator_t, ConstructibleArrayType >::value andis_complete_type< detected_t< value_type_t, ConstructibleArrayType > >::value > >
     
    struct  is_constructible_array_type_impl< BasicJsonType, ConstructibleArrayType, enable_if_t< std::is_same< ConstructibleArrayType, typename BasicJsonType::value_type >::value > >
     
    struct  is_constructible_object_type
     
    struct  is_constructible_object_type_impl
     
    struct  is_constructible_object_type_impl< BasicJsonType, ConstructibleObjectType, enable_if_t< is_detected< mapped_type_t, ConstructibleObjectType >::value &&is_detected< key_type_t, ConstructibleObjectType >::value > >
     
    struct  is_constructible_object_type_impl< BasicJsonType, ConstructibleObjectType, enable_if_t< is_detected< mapped_type_t, ConstructibleObjectType >::value and is_detected< key_type_t, ConstructibleObjectType >::value > >
     
    struct  is_constructible_string_type
     
    struct  is_constructible_string_type_impl
     
    struct  is_constructible_string_type_impl< BasicJsonType, ConstructibleStringType, enable_if_t< is_detected_exact< typename BasicJsonType::string_t::value_type, value_type_t, ConstructibleStringType >::value > >
     
    struct  is_constructible_tuple
     
    struct  is_constructible_tuple< T1, std::tuple< Args... > >
     
    struct  is_getable
     
    struct  is_iterator_of_multibyte
     
    struct  is_iterator_traits
     
    struct  is_iterator_traits< iterator_traits< T > >
     
    struct  is_json_ref
     
    struct  is_json_ref< json_ref< T > >
     
    struct  is_sax
     
    struct  is_sax_static_asserts
     
    class  iter_impl
     a template for a bidirectional iterator for the basic_json class This class implements a both iterators (iterator and const_iterator) for the basic_json class. More...
     
    class  iteration_proxy
     proxy class for the items() function More...
     
    class  iteration_proxy_value
     
    class  iterator_input_adapter
     
    struct  iterator_input_adapter_factory
     
    struct  iterator_input_adapter_factory< IteratorType, enable_if_t< is_iterator_of_multibyte< IteratorType >::value > >
     
    struct  iterator_traits
     
    struct  iterator_traits< T *, enable_if_t< std::is_object< T >::value > >
     
    struct  iterator_traits< T, enable_if_t< !std::is_pointer< T >::value > >
     
    struct  iterator_types
     
    struct  iterator_types< It, void_t< typename It::difference_type, typename It::value_type, typename It::pointer, typename It::reference, typename It::iterator_category > >
     
    class  json_ref
     
    class  json_reverse_iterator
     a template for a reverse iterator class More...
     
    class  json_sax_acceptor
     
    class  json_sax_dom_callback_parser
     
    class  json_sax_dom_parser
     SAX implementation to create a JSON value from SAX events. More...
     
    class  lexer
     lexical analysis More...
     
    class  lexer_base
     
    struct  make_index_sequence
     
    struct  make_index_sequence< 0 >
     
    struct  make_index_sequence< 1 >
     
    struct  make_void
     
    struct  merge_and_renumber
     
    struct  merge_and_renumber< index_sequence< I1... >, index_sequence< I2... > >
     
    struct  nonesuch
     
    class  other_error
     exception indicating other library errors More...
     
    class  out_of_range
     exception indicating access out of the defined range More...
     
    class  output_adapter
     
    struct  output_adapter_protocol
     abstract output adapter interface More...
     
    class  output_stream_adapter
     output adapter for output streams More...
     
    class  output_string_adapter
     output adapter for basic_string More...
     
    class  output_vector_adapter
     output adapter for byte vectors More...
     
    class  parse_error
     exception indicating a parse error More...
     
    class  parser
     syntax analysis More...
     
    struct  position_t
     struct to capture the start position of the current token More...
     
    class  primitive_iterator_t
     
    struct  priority_tag
     
    struct  priority_tag< 0 >
     
    class  serializer
     
    class  span_input_adapter
     
    struct  static_const
     
    struct  to_json_fn
     
    class  type_error
     exception indicating executing a member function with a wrong type More...
     
    class  wide_string_input_adapter
     
    struct  wide_string_input_helper
     
    struct  wide_string_input_helper< BaseInputAdapter, 2 >
     
    struct  wide_string_input_helper< BaseInputAdapter, 4 >
     
    struct  wide_string_input_helper< WideStringType, 2 >
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Typedefs

    template<bool B, typename T = void>
    using enable_if_t = typename std::enable_if< B, T >::type
     
    template<typename T >
    using uncvref_t = typename std::remove_cv< typename std::remove_reference< T >::type >::type
     
    template<typename... Ts>
    using index_sequence_for = make_index_sequence< sizeof...(Ts)>
     
    template<typename ... Ts>
    using void_t = typename make_void< Ts... >::type
     
    template<template< class... > class Op, class... Args>
    using is_detected = typename detector< nonesuch, void, Op, Args... >::value_t
     
    template<template< class... > class Op, class... Args>
    using detected_t = typename detector< nonesuch, void, Op, Args... >::type
     
    template<class Default , template< class... > class Op, class... Args>
    using detected_or = detector< Default, void, Op, Args... >
     
    template<class Default , template< class... > class Op, class... Args>
    using detected_or_t = typename detected_or< Default, Op, Args... >::type
     
    template<class Expected , template< class... > class Op, class... Args>
    using is_detected_exact = std::is_same< Expected, detected_t< Op, Args... > >
     
    template<class To , template< class... > class Op, class... Args>
    using is_detected_convertible = std::is_convertible< detected_t< Op, Args... >, To >
     
    template<typename T >
    using mapped_type_t = typename T::mapped_type
     
    template<typename T >
    using key_type_t = typename T::key_type
     
    template<typename T >
    using value_type_t = typename T::value_type
     
    template<typename T >
    using difference_type_t = typename T::difference_type
     
    template<typename T >
    using pointer_t = typename T::pointer
     
    template<typename T >
    using reference_t = typename T::reference
     
    template<typename T >
    using iterator_category_t = typename T::iterator_category
     
    template<typename T >
    using iterator_t = typename T::iterator
     
    template<typename T , typename... Args>
    using to_json_function = decltype(T::to_json(std::declval< Args >()...))
     
    template<typename T , typename... Args>
    using from_json_function = decltype(T::from_json(std::declval< Args >()...))
     
    template<typename T , typename U >
    using get_template_function = decltype(std::declval< T >().template get< U >())
     
    using input_adapter_t = std::shared_ptr< input_adapter_protocol >
     a type to simplify interfaces More...
     
    template<typename T >
    using null_function_t = decltype(std::declval< T & >().null())
     
    template<typename T >
    using boolean_function_t = decltype(std::declval< T & >().boolean(std::declval< bool >()))
     
    template<typename T , typename Integer >
    using number_integer_function_t = decltype(std::declval< T & >().number_integer(std::declval< Integer >()))
     
    template<typename T , typename Unsigned >
    using number_unsigned_function_t = decltype(std::declval< T & >().number_unsigned(std::declval< Unsigned >()))
     
    template<typename T , typename Float , typename String >
    using number_float_function_t = decltype(std::declval< T & >().number_float(std::declval< Float >(), std::declval< const String & >()))
     
    template<typename T , typename String >
    using string_function_t = decltype(std::declval< T & >().string(std::declval< String & >()))
     
    template<typename T >
    using start_object_function_t = decltype(std::declval< T & >().start_object(std::declval< std::size_t >()))
     
    template<typename T , typename String >
    using key_function_t = decltype(std::declval< T & >().key(std::declval< String & >()))
     
    template<typename T >
    using end_object_function_t = decltype(std::declval< T & >().end_object())
     
    template<typename T >
    using start_array_function_t = decltype(std::declval< T & >().start_array(std::declval< std::size_t >()))
     
    template<typename T >
    using end_array_function_t = decltype(std::declval< T & >().end_array())
     
    template<typename T , typename Exception >
    using parse_error_function_t = decltype(std::declval< T & >().parse_error(std::declval< std::size_t >(), std::declval< const std::string & >(), std::declval< const Exception & >()))
     
    template<typename CharType >
    using output_adapter_t = std::shared_ptr< output_adapter_protocol< CharType > >
     a type to simplify interfaces More...
     
    using contiguous_bytes_input_adapter = decltype(input_adapter(std::declval< const char * >(), std::declval< const char * >()))
     
    template<typename T , typename Binary >
    using binary_function_t = decltype(std::declval< T & >().binary(std::declval< Binary & >()))
     
    template<typename BasicJsonType >
    using parser_callback_t = std::function< bool(int depth, parse_event_t event, BasicJsonType &parsed)>
     
    - - - - - - - - - - - - - - - - - - - - - - - - -

    -Enumerations

    enum  value_t : std::uint8_t {
    -  value_t::null, -value_t::object, -value_t::array, -value_t::string, -
    -  value_t::boolean, -value_t::number_integer, -value_t::number_unsigned, -value_t::number_float, -
    -  value_t::discarded, -value_t::null, -value_t::object, -value_t::array, -
    -  value_t::string, -value_t::boolean, -value_t::number_integer, -value_t::number_unsigned, -
    -  value_t::number_float, -value_t::binary, -value_t::discarded -
    - }
     the JSON type enumeration More...
     
    enum  input_format_t {
    -  input_format_t::json, -input_format_t::cbor, -input_format_t::msgpack, -input_format_t::ubjson, -
    -  input_format_t::bson, -input_format_t::json, -input_format_t::cbor, -input_format_t::msgpack, -
    -  input_format_t::ubjson, -input_format_t::bson -
    - }
     the supported input formats More...
     
    enum  error_handler_t {
    -  error_handler_t::strict, -error_handler_t::replace, -error_handler_t::ignore, -error_handler_t::strict, -
    -  error_handler_t::replace, -error_handler_t::ignore -
    - }
     how to treat decoding errors More...
     
    enum  value_t : std::uint8_t {
    -  value_t::null, -value_t::object, -value_t::array, -value_t::string, -
    -  value_t::boolean, -value_t::number_integer, -value_t::number_unsigned, -value_t::number_float, -
    -  value_t::discarded, -value_t::null, -value_t::object, -value_t::array, -
    -  value_t::string, -value_t::boolean, -value_t::number_integer, -value_t::number_unsigned, -
    -  value_t::number_float, -value_t::binary, -value_t::discarded -
    - }
     the JSON type enumeration More...
     
    enum  input_format_t {
    -  input_format_t::json, -input_format_t::cbor, -input_format_t::msgpack, -input_format_t::ubjson, -
    -  input_format_t::bson, -input_format_t::json, -input_format_t::cbor, -input_format_t::msgpack, -
    -  input_format_t::ubjson, -input_format_t::bson -
    - }
     the supported input formats More...
     
    enum  cbor_tag_handler_t { cbor_tag_handler_t::error, -cbor_tag_handler_t::ignore - }
     how to treat CBOR tags More...
     
    enum  parse_event_t : uint8_t {
    -  parse_event_t::object_start, -parse_event_t::object_end, -parse_event_t::array_start, -parse_event_t::array_end, -
    -  parse_event_t::key, -parse_event_t::value -
    - }
     
    enum  error_handler_t {
    -  error_handler_t::strict, -error_handler_t::replace, -error_handler_t::ignore, -error_handler_t::strict, -
    -  error_handler_t::replace, -error_handler_t::ignore -
    - }
     how to treat decoding errors More...
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Functions

    bool operator< (const value_t lhs, const value_t rhs) noexcept
     comparison operator for JSON types More...
     
    template<typename BasicJsonType >
    void from_json (const BasicJsonType &j, typename std::nullptr_t &n)
     
    template<typename BasicJsonType , typename ArithmeticType , enable_if_t< std::is_arithmetic< ArithmeticType >::value and not std::is_same< ArithmeticType, typename BasicJsonType::boolean_t >::value, int > = 0>
    void get_arithmetic_value (const BasicJsonType &j, ArithmeticType &val)
     
    template<typename BasicJsonType >
    void from_json (const BasicJsonType &j, typename BasicJsonType::boolean_t &b)
     
    template<typename BasicJsonType >
    void from_json (const BasicJsonType &j, typename BasicJsonType::string_t &s)
     
    template<typename BasicJsonType , typename ConstructibleStringType , enable_if_t< is_constructible_string_type< BasicJsonType, ConstructibleStringType >::value and not std::is_same< typename BasicJsonType::string_t, ConstructibleStringType >::value, int > = 0>
    void from_json (const BasicJsonType &j, ConstructibleStringType &s)
     
    template<typename BasicJsonType >
    void from_json (const BasicJsonType &j, typename BasicJsonType::number_float_t &val)
     
    template<typename BasicJsonType >
    void from_json (const BasicJsonType &j, typename BasicJsonType::number_unsigned_t &val)
     
    template<typename BasicJsonType >
    void from_json (const BasicJsonType &j, typename BasicJsonType::number_integer_t &val)
     
    template<typename BasicJsonType , typename EnumType , enable_if_t< std::is_enum< EnumType >::value, int > = 0>
    void from_json (const BasicJsonType &j, EnumType &e)
     
    template<typename BasicJsonType , typename T , typename Allocator , enable_if_t< std::is_convertible< BasicJsonType, T >::value, int > = 0>
    void from_json (const BasicJsonType &j, std::forward_list< T, Allocator > &l)
     
    template<typename BasicJsonType , typename T , enable_if_t< std::is_convertible< BasicJsonType, T >::value, int > = 0>
    void from_json (const BasicJsonType &j, std::valarray< T > &l)
     
    template<typename BasicJsonType , typename T , std::size_t N>
    auto from_json (const BasicJsonType &j, T(&arr)[N]) -> decltype(j.template get< T >(), void())
     
    template<typename BasicJsonType >
    void from_json_array_impl (const BasicJsonType &j, typename BasicJsonType::array_t &arr, priority_tag< 3 >)
     
    template<typename BasicJsonType , typename T , std::size_t N>
    auto from_json_array_impl (const BasicJsonType &j, std::array< T, N > &arr, priority_tag< 2 >) -> decltype(j.template get< T >(), void())
     
    template<typename BasicJsonType , typename ConstructibleArrayType >
    auto from_json_array_impl (const BasicJsonType &j, ConstructibleArrayType &arr, priority_tag< 1 >) -> decltype(arr.reserve(std::declval< typename ConstructibleArrayType::size_type >()), j.template get< typename ConstructibleArrayType::value_type >(), void())
     
    template<typename BasicJsonType , typename ConstructibleArrayType >
    void from_json_array_impl (const BasicJsonType &j, ConstructibleArrayType &arr, priority_tag< 0 >)
     
    template<typename BasicJsonType , typename ConstructibleArrayType , enable_if_t< is_constructible_array_type< BasicJsonType, ConstructibleArrayType >::value and not is_constructible_object_type< BasicJsonType, ConstructibleArrayType >::value and not is_constructible_string_type< BasicJsonType, ConstructibleArrayType >::value and not is_basic_json< ConstructibleArrayType >::value, int > = 0>
    auto from_json (const BasicJsonType &j, ConstructibleArrayType &arr) -> decltype(from_json_array_impl(j, arr, priority_tag< 3 >
     
    j template get< typename ConstructibleArrayType::value_type > ()
     
    j template void ())
     
    template<typename BasicJsonType , typename ConstructibleObjectType , enable_if_t< is_constructible_object_type< BasicJsonType, ConstructibleObjectType >::value, int > = 0>
    void from_json (const BasicJsonType &j, ConstructibleObjectType &obj)
     
    template<typename BasicJsonType , typename ArithmeticType , enable_if_t< std::is_arithmetic< ArithmeticType >::value and not std::is_same< ArithmeticType, typename BasicJsonType::number_unsigned_t >::value and not std::is_same< ArithmeticType, typename BasicJsonType::number_integer_t >::value and not std::is_same< ArithmeticType, typename BasicJsonType::number_float_t >::value and not std::is_same< ArithmeticType, typename BasicJsonType::boolean_t >::value, int > = 0>
    void from_json (const BasicJsonType &j, ArithmeticType &val)
     
    template<typename BasicJsonType , typename A1 , typename A2 >
    void from_json (const BasicJsonType &j, std::pair< A1, A2 > &p)
     
    template<typename BasicJsonType , typename Tuple , std::size_t... Idx>
    void from_json_tuple_impl (const BasicJsonType &j, Tuple &t, index_sequence< Idx... >)
     
    template<typename BasicJsonType , typename... Args>
    void from_json (const BasicJsonType &j, std::tuple< Args... > &t)
     
    template<typename BasicJsonType , typename Key , typename Value , typename Compare , typename Allocator , typename = enable_if_t<not std::is_constructible< typename BasicJsonType::string_t, Key>::value>>
    void from_json (const BasicJsonType &j, std::map< Key, Value, Compare, Allocator > &m)
     
    template<typename BasicJsonType , typename Key , typename Value , typename Hash , typename KeyEqual , typename Allocator , typename = enable_if_t<not std::is_constructible< typename BasicJsonType::string_t, Key>::value>>
    void from_json (const BasicJsonType &j, std::unordered_map< Key, Value, Hash, KeyEqual, Allocator > &m)
     
    template<typename string_type >
    void int_to_string (string_type &target, std::size_t value)
     
    template<std::size_t N, typename IteratorType , enable_if_t< N==0, int > = 0>
    auto get (const nlohmann::detail::iteration_proxy_value< IteratorType > &i) -> decltype(i.key())
     
    template<typename BasicJsonType , typename T , enable_if_t< std::is_same< T, typename BasicJsonType::boolean_t >::value, int > = 0>
    void to_json (BasicJsonType &j, T b) noexcept
     
    template<typename BasicJsonType , typename CompatibleString , enable_if_t< std::is_constructible< typename BasicJsonType::string_t, CompatibleString >::value, int > = 0>
    void to_json (BasicJsonType &j, const CompatibleString &s)
     
    template<typename BasicJsonType >
    void to_json (BasicJsonType &j, typename BasicJsonType::string_t &&s)
     
    template<typename BasicJsonType , typename FloatType , enable_if_t< std::is_floating_point< FloatType >::value, int > = 0>
    void to_json (BasicJsonType &j, FloatType val) noexcept
     
    template<typename BasicJsonType , typename CompatibleNumberUnsignedType , enable_if_t< is_compatible_integer_type< typename BasicJsonType::number_unsigned_t, CompatibleNumberUnsignedType >::value, int > = 0>
    void to_json (BasicJsonType &j, CompatibleNumberUnsignedType val) noexcept
     
    template<typename BasicJsonType , typename CompatibleNumberIntegerType , enable_if_t< is_compatible_integer_type< typename BasicJsonType::number_integer_t, CompatibleNumberIntegerType >::value, int > = 0>
    void to_json (BasicJsonType &j, CompatibleNumberIntegerType val) noexcept
     
    template<typename BasicJsonType , typename EnumType , enable_if_t< std::is_enum< EnumType >::value, int > = 0>
    void to_json (BasicJsonType &j, EnumType e) noexcept
     
    template<typename BasicJsonType >
    void to_json (BasicJsonType &j, const std::vector< bool > &e)
     
    template<typename BasicJsonType , typename CompatibleArrayType , enable_if_t< is_compatible_array_type< BasicJsonType, CompatibleArrayType >::value and not is_compatible_object_type< BasicJsonType, CompatibleArrayType >::value and not is_compatible_string_type< BasicJsonType, CompatibleArrayType >::value and not is_basic_json< CompatibleArrayType >::value, int > = 0>
    void to_json (BasicJsonType &j, const CompatibleArrayType &arr)
     
    template<typename BasicJsonType , typename T , enable_if_t< std::is_convertible< T, BasicJsonType >::value, int > = 0>
    void to_json (BasicJsonType &j, const std::valarray< T > &arr)
     
    template<typename BasicJsonType >
    void to_json (BasicJsonType &j, typename BasicJsonType::array_t &&arr)
     
    template<typename BasicJsonType , typename CompatibleObjectType , enable_if_t< is_compatible_object_type< BasicJsonType, CompatibleObjectType >::value and not is_basic_json< CompatibleObjectType >::value, int > = 0>
    void to_json (BasicJsonType &j, const CompatibleObjectType &obj)
     
    template<typename BasicJsonType >
    void to_json (BasicJsonType &j, typename BasicJsonType::object_t &&obj)
     
    template<typename BasicJsonType , typename T , std::size_t N, enable_if_t< not std::is_constructible< typename BasicJsonType::string_t, const T(&)[N]>::value, int > = 0>
    void to_json (BasicJsonType &j, const T(&arr)[N])
     
    template<typename BasicJsonType , typename T1 , typename T2 , enable_if_t< std::is_constructible< BasicJsonType, T1 >::value &&std::is_constructible< BasicJsonType, T2 >::value, int > = 0>
    void to_json (BasicJsonType &j, const std::pair< T1, T2 > &p)
     
    template<typename BasicJsonType , typename T , enable_if_t< std::is_same< T, iteration_proxy_value< typename BasicJsonType::iterator >>::value, int > = 0>
    void to_json (BasicJsonType &j, const T &b)
     
    template<typename BasicJsonType , typename Tuple , std::size_t... Idx>
    void to_json_tuple_impl (BasicJsonType &j, const Tuple &t, index_sequence< Idx... >)
     
    template<typename FloatType >
    JSON_HEDLEY_RETURNS_NON_NULL char * to_chars (char *first, const char *last, FloatType value)
     generates a decimal representation of the floating-point number value in [first, last). More...
     
    template<typename BasicJsonType >
    void from_json (const BasicJsonType &j, typename BasicJsonType::binary_t &bin)
     
    template<typename BasicJsonType >
    void to_json (BasicJsonType &j, const typename BasicJsonType::binary_t &bin)
     
    std::size_t combine (std::size_t seed, std::size_t h) noexcept
     
    template<typename BasicJsonType >
    std::size_t hash (const BasicJsonType &j)
     hash a JSON value More...
     
    template<typename IteratorType >
    iterator_input_adapter_factory< IteratorType >::adapter_type input_adapter (IteratorType first, IteratorType last)
     
    template<typename ContainerType >
    auto input_adapter (const ContainerType &container) -> decltype(input_adapter(begin(container), end(container)))
     
    file_input_adapter input_adapter (std::FILE *file)
     
    input_stream_adapter input_adapter (std::istream &stream)
     
    input_stream_adapter input_adapter (std::istream &&stream)
     
    template<typename CharT , typename std::enable_if< std::is_pointer< CharT >::value &&!std::is_array< CharT >::value &&std::is_integral< typename std::remove_pointer< CharT >::type >::value &&sizeof(typename std::remove_pointer< CharT >::type)==1, int >::type = 0>
    contiguous_bytes_input_adapter input_adapter (CharT b)
     
    template<typename T , std::size_t N>
    auto input_adapter (T(&array)[N]) -> decltype(input_adapter(array, array+N))
     
    -

    Detailed Description

    -

    detail namespace with internal helper functions

    -

    This namespace collects functions that should not be exposed, implementations of some basic_json methods, and meta-programming helpers.

    -
    Since
    version 2.1.0
    -

    Typedef Documentation

    - -

    ◆ binary_function_t

    - -
    -
    -
    -template<typename T , typename Binary >
    - - - - -
    using nlohmann::detail::binary_function_t = typedef decltype(std::declval<T&>().binary(std::declval<Binary&>()))
    -
    - -
    -
    - -

    ◆ boolean_function_t

    - -
    -
    -
    -template<typename T >
    - - - - -
    using nlohmann::detail::boolean_function_t = typedef decltype(std::declval<T&>().boolean(std::declval<bool>()))
    -
    - -
    -
    - -

    ◆ contiguous_bytes_input_adapter

    - -
    -
    - - - - -
    using nlohmann::detail::contiguous_bytes_input_adapter = typedef decltype(input_adapter(std::declval<const char*>(), std::declval<const char*>()))
    -
    - -
    -
    - -

    ◆ detected_or

    - -
    -
    -
    -template<class Default , template< class... > class Op, class... Args>
    - - - - -
    using nlohmann::detail::detected_or = typedef detector<Default, void, Op, Args...>
    -
    - -
    -
    - -

    ◆ detected_or_t

    - -
    -
    -
    -template<class Default , template< class... > class Op, class... Args>
    - - - - -
    using nlohmann::detail::detected_or_t = typedef typename detected_or<Default, Op, Args...>::type
    -
    - -
    -
    - -

    ◆ detected_t

    - -
    -
    -
    -template<template< class... > class Op, class... Args>
    - - - - -
    using nlohmann::detail::detected_t = typedef typename detector<nonesuch, void, Op, Args...>::type
    -
    - -
    -
    - -

    ◆ difference_type_t

    - -
    -
    -
    -template<typename T >
    - - - - -
    using nlohmann::detail::difference_type_t = typedef typename T::difference_type
    -
    - -
    -
    - -

    ◆ enable_if_t

    - -
    -
    -
    -template<bool B, typename T = void>
    - - - - -
    using nlohmann::detail::enable_if_t = typedef typename std::enable_if<B, T>::type
    -
    - -
    -
    - -

    ◆ end_array_function_t

    - -
    -
    -
    -template<typename T >
    - - - - -
    using nlohmann::detail::end_array_function_t = typedef decltype(std::declval<T&>().end_array())
    -
    - -
    -
    - -

    ◆ end_object_function_t

    - -
    -
    -
    -template<typename T >
    - - - - -
    using nlohmann::detail::end_object_function_t = typedef decltype(std::declval<T&>().end_object())
    -
    - -
    -
    - -

    ◆ from_json_function

    - -
    -
    -
    -template<typename T , typename... Args>
    - - - - -
    using nlohmann::detail::from_json_function = typedef decltype(T::from_json(std::declval<Args>()...))
    -
    - -
    -
    - -

    ◆ get_template_function

    - -
    -
    -
    -template<typename T , typename U >
    - - - - -
    using nlohmann::detail::get_template_function = typedef decltype(std::declval<T>().template get<U>())
    -
    - -
    -
    - -

    ◆ index_sequence_for

    - -
    -
    -
    -template<typename... Ts>
    - - - - -
    using nlohmann::detail::index_sequence_for = typedef make_index_sequence<sizeof...(Ts)>
    -
    - -
    -
    - -

    ◆ input_adapter_t

    - -
    -
    - - - - -
    using nlohmann::detail::input_adapter_t = typedef std::shared_ptr<input_adapter_protocol>
    -
    - -

    a type to simplify interfaces

    - -
    -
    - -

    ◆ is_detected

    - -
    -
    -
    -template<template< class... > class Op, class... Args>
    - - - - -
    using nlohmann::detail::is_detected = typedef typename detector<nonesuch, void, Op, Args...>::value_t
    -
    - -
    -
    - -

    ◆ is_detected_convertible

    - -
    -
    -
    -template<class To , template< class... > class Op, class... Args>
    - - - - -
    using nlohmann::detail::is_detected_convertible = typedef std::is_convertible<detected_t<Op, Args...>, To>
    -
    - -
    -
    - -

    ◆ is_detected_exact

    - -
    -
    -
    -template<class Expected , template< class... > class Op, class... Args>
    - - - - -
    using nlohmann::detail::is_detected_exact = typedef std::is_same<Expected, detected_t<Op, Args...> >
    -
    - -
    -
    - -

    ◆ iterator_category_t

    - -
    -
    -
    -template<typename T >
    - - - - -
    using nlohmann::detail::iterator_category_t = typedef typename T::iterator_category
    -
    - -
    -
    - -

    ◆ iterator_t

    - -
    -
    -
    -template<typename T >
    - - - - -
    using nlohmann::detail::iterator_t = typedef typename T::iterator
    -
    - -
    -
    - -

    ◆ key_function_t

    - -
    -
    -
    -template<typename T , typename String >
    - - - - -
    using nlohmann::detail::key_function_t = typedef decltype(std::declval<T&>().key(std::declval<String&>()))
    -
    - -
    -
    - -

    ◆ key_type_t

    - -
    -
    -
    -template<typename T >
    - - - - -
    using nlohmann::detail::key_type_t = typedef typename T::key_type
    -
    - -
    -
    - -

    ◆ mapped_type_t

    - -
    -
    -
    -template<typename T >
    - - - - -
    using nlohmann::detail::mapped_type_t = typedef typename T::mapped_type
    -
    - -
    -
    - -

    ◆ null_function_t

    - -
    -
    -
    -template<typename T >
    - - - - -
    using nlohmann::detail::null_function_t = typedef decltype(std::declval<T&>().null())
    -
    - -
    -
    - -

    ◆ number_float_function_t

    - -
    -
    -
    -template<typename T , typename Float , typename String >
    - - - - -
    using nlohmann::detail::number_float_function_t = typedef decltype(std::declval<T&>().number_float( std::declval<Float>(), std::declval<const String&>()))
    -
    - -
    -
    - -

    ◆ number_integer_function_t

    - -
    -
    -
    -template<typename T , typename Integer >
    - - - - -
    using nlohmann::detail::number_integer_function_t = typedef decltype(std::declval<T&>().number_integer(std::declval<Integer>()))
    -
    - -
    -
    - -

    ◆ number_unsigned_function_t

    - -
    -
    -
    -template<typename T , typename Unsigned >
    - - - - -
    using nlohmann::detail::number_unsigned_function_t = typedef decltype(std::declval<T&>().number_unsigned(std::declval<Unsigned>()))
    -
    - -
    -
    - -

    ◆ output_adapter_t

    - -
    -
    -
    -template<typename CharType >
    - - - - -
    using nlohmann::detail::output_adapter_t = typedef std::shared_ptr<output_adapter_protocol<CharType> >
    -
    - -

    a type to simplify interfaces

    - -
    -
    - -

    ◆ parse_error_function_t

    - -
    -
    -
    -template<typename T , typename Exception >
    - - - - -
    using nlohmann::detail::parse_error_function_t = typedef decltype(std::declval<T&>().parse_error( std::declval<std::size_t>(), std::declval<const std::string&>(), std::declval<const Exception&>()))
    -
    - -
    -
    - -

    ◆ parser_callback_t

    - -
    -
    -
    -template<typename BasicJsonType >
    - - - - -
    using nlohmann::detail::parser_callback_t = typedef std::function<bool(int depth, parse_event_t event, BasicJsonType& parsed)>
    -
    - -
    -
    - -

    ◆ pointer_t

    - -
    -
    -
    -template<typename T >
    - - - - -
    using nlohmann::detail::pointer_t = typedef typename T::pointer
    -
    - -
    -
    - -

    ◆ reference_t

    - -
    -
    -
    -template<typename T >
    - - - - -
    using nlohmann::detail::reference_t = typedef typename T::reference
    -
    - -
    -
    - -

    ◆ start_array_function_t

    - -
    -
    -
    -template<typename T >
    - - - - -
    using nlohmann::detail::start_array_function_t = typedef decltype(std::declval<T&>().start_array(std::declval<std::size_t>()))
    -
    - -
    -
    - -

    ◆ start_object_function_t

    - -
    -
    -
    -template<typename T >
    - - - - -
    using nlohmann::detail::start_object_function_t = typedef decltype(std::declval<T&>().start_object(std::declval<std::size_t>()))
    -
    - -
    -
    - -

    ◆ string_function_t

    - -
    -
    -
    -template<typename T , typename String >
    - - - - -
    using nlohmann::detail::string_function_t = typedef decltype(std::declval<T&>().string(std::declval<String&>()))
    -
    - -
    -
    - -

    ◆ to_json_function

    - -
    -
    -
    -template<typename T , typename... Args>
    - - - - -
    using nlohmann::detail::to_json_function = typedef decltype(T::to_json(std::declval<Args>()...))
    -
    - -
    -
    - -

    ◆ uncvref_t

    - -
    -
    -
    -template<typename T >
    - - - - -
    using nlohmann::detail::uncvref_t = typedef typename std::remove_cv<typename std::remove_reference<T>::type>::type
    -
    - -
    -
    - -

    ◆ value_type_t

    - -
    -
    -
    -template<typename T >
    - - - - -
    using nlohmann::detail::value_type_t = typedef typename T::value_type
    -
    - -
    -
    - -

    ◆ void_t

    - -
    -
    -
    -template<typename ... Ts>
    - - - - -
    using nlohmann::detail::void_t = typedef typename make_void<Ts...>::type
    -
    - -
    -
    -

    Enumeration Type Documentation

    - -

    ◆ cbor_tag_handler_t

    - -
    -
    - - - - - -
    - - - - -
    enum nlohmann::detail::cbor_tag_handler_t
    -
    -strong
    -
    - -

    how to treat CBOR tags

    - - - -
    Enumerator
    error 

    throw a parse_error exception in case of a tag

    -
    ignore 

    ignore tags

    -
    - -
    -
    - -

    ◆ error_handler_t [1/2]

    - -
    -
    - - - - - -
    - - - - -
    enum nlohmann::detail::error_handler_t
    -
    -strong
    -
    - -

    how to treat decoding errors

    - - - - - - - -
    Enumerator
    strict 

    throw a type_error exception in case of invalid UTF-8

    -
    replace 

    replace invalid UTF-8 sequences with U+FFFD

    -
    ignore 

    ignore invalid UTF-8 sequences

    -
    strict 

    throw a type_error exception in case of invalid UTF-8

    -
    replace 

    replace invalid UTF-8 sequences with U+FFFD

    -
    ignore 

    ignore invalid UTF-8 sequences

    -
    - -
    -
    - -

    ◆ error_handler_t [2/2]

    - -
    -
    - - - - - -
    - - - - -
    enum nlohmann::detail::error_handler_t
    -
    -strong
    -
    - -

    how to treat decoding errors

    - - - - - - - -
    Enumerator
    strict 

    throw a type_error exception in case of invalid UTF-8

    -
    replace 

    replace invalid UTF-8 sequences with U+FFFD

    -
    ignore 

    ignore invalid UTF-8 sequences

    -
    strict 

    throw a type_error exception in case of invalid UTF-8

    -
    replace 

    replace invalid UTF-8 sequences with U+FFFD

    -
    ignore 

    ignore invalid UTF-8 sequences

    -
    - -
    -
    - -

    ◆ input_format_t [1/2]

    - -
    -
    - - - - - -
    - - - - -
    enum nlohmann::detail::input_format_t
    -
    -strong
    -
    - -

    the supported input formats

    - - - - - - - - - - - -
    Enumerator
    json 
    cbor 
    msgpack 
    ubjson 
    bson 
    json 
    cbor 
    msgpack 
    ubjson 
    bson 
    - -
    -
    - -

    ◆ input_format_t [2/2]

    - -
    -
    - - - - - -
    - - - - -
    enum nlohmann::detail::input_format_t
    -
    -strong
    -
    - -

    the supported input formats

    - - - - - - - - - - - -
    Enumerator
    json 
    cbor 
    msgpack 
    ubjson 
    bson 
    json 
    cbor 
    msgpack 
    ubjson 
    bson 
    - -
    -
    - -

    ◆ parse_event_t

    - -
    -
    - - - - - -
    - - - - -
    enum nlohmann::detail::parse_event_t : uint8_t
    -
    -strong
    -
    - - - - - - - -
    Enumerator
    object_start 

    the parser read { and started to process a JSON object

    -
    object_end 

    the parser read } and finished processing a JSON object

    -
    array_start 

    the parser read [ and started to process a JSON array

    -
    array_end 

    the parser read ] and finished processing a JSON array

    -
    key 

    the parser read a key of a value in an object

    -
    value 

    the parser finished reading a JSON value

    -
    - -
    -
    - -

    ◆ value_t [1/2]

    - -
    -
    - - - - - -
    - - - - -
    enum nlohmann::detail::value_t : std::uint8_t
    -
    -strong
    -
    - -

    the JSON type enumeration

    -

    This enumeration collects the different JSON types. It is internally used to distinguish the stored values, and the functions basic_json::is_null(), basic_json::is_object(), basic_json::is_array(), basic_json::is_string(), basic_json::is_boolean(), basic_json::is_number() (with basic_json::is_number_integer(), basic_json::is_number_unsigned(), and basic_json::is_number_float()), basic_json::is_discarded(), basic_json::is_primitive(), and basic_json::is_structured() rely on it.

    -
    Note
    There are three enumeration entries (number_integer, number_unsigned, and number_float), because the library distinguishes these three types for numbers: basic_json::number_unsigned_t is used for unsigned integers, basic_json::number_integer_t is used for signed integers, and basic_json::number_float_t is used for floating-point numbers or to approximate integers which do not fit in the limits of their respective type.
    -
    See also
    basic_json::basic_json(const value_t value_type) – create a JSON value with the default value for a given type
    -
    Since
    version 1.0.0
    - - - - - - - - - - - - - - - - - - - - -
    Enumerator
    null 

    null value

    -
    object 

    object (unordered set of name/value pairs)

    -
    array 

    array (ordered collection of values)

    -
    string 

    string value

    -
    boolean 

    boolean value

    -
    number_integer 

    number value (signed integer)

    -
    number_unsigned 

    number value (unsigned integer)

    -
    number_float 

    number value (floating-point)

    -
    discarded 

    discarded by the the parser callback function

    -
    null 

    null value

    -
    object 

    object (unordered set of name/value pairs)

    -
    array 

    array (ordered collection of values)

    -
    string 

    string value

    -
    boolean 

    boolean value

    -
    number_integer 

    number value (signed integer)

    -
    number_unsigned 

    number value (unsigned integer)

    -
    number_float 

    number value (floating-point)

    -
    binary 

    binary array (ordered collection of bytes)

    -
    discarded 

    discarded by the parser callback function

    -
    - -
    -
    - -

    ◆ value_t [2/2]

    - -
    -
    - - - - - -
    - - - - -
    enum nlohmann::detail::value_t : std::uint8_t
    -
    -strong
    -
    - -

    the JSON type enumeration

    -

    This enumeration collects the different JSON types. It is internally used to distinguish the stored values, and the functions basic_json::is_null(), basic_json::is_object(), basic_json::is_array(), basic_json::is_string(), basic_json::is_boolean(), basic_json::is_number() (with basic_json::is_number_integer(), basic_json::is_number_unsigned(), and basic_json::is_number_float()), basic_json::is_discarded(), basic_json::is_primitive(), and basic_json::is_structured() rely on it.

    -
    Note
    There are three enumeration entries (number_integer, number_unsigned, and number_float), because the library distinguishes these three types for numbers: basic_json::number_unsigned_t is used for unsigned integers, basic_json::number_integer_t is used for signed integers, and basic_json::number_float_t is used for floating-point numbers or to approximate integers which do not fit in the limits of their respective type.
    -
    See also
    basic_json::basic_json(const value_t value_type) – create a JSON value with the default value for a given type
    -
    Since
    version 1.0.0
    - - - - - - - - - - - - - - - - - - - - -
    Enumerator
    null 

    null value

    -
    object 

    object (unordered set of name/value pairs)

    -
    array 

    array (ordered collection of values)

    -
    string 

    string value

    -
    boolean 

    boolean value

    -
    number_integer 

    number value (signed integer)

    -
    number_unsigned 

    number value (unsigned integer)

    -
    number_float 

    number value (floating-point)

    -
    discarded 

    discarded by the the parser callback function

    -
    null 

    null value

    -
    object 

    object (unordered set of name/value pairs)

    -
    array 

    array (ordered collection of values)

    -
    string 

    string value

    -
    boolean 

    boolean value

    -
    number_integer 

    number value (signed integer)

    -
    number_unsigned 

    number value (unsigned integer)

    -
    number_float 

    number value (floating-point)

    -
    binary 

    binary array (ordered collection of bytes)

    -
    discarded 

    discarded by the parser callback function

    -
    - -
    -
    -

    Function Documentation

    - -

    ◆ combine()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    std::size_t nlohmann::detail::combine (std::size_t seed,
    std::size_t h 
    )
    -
    -inlinenoexcept
    -
    - -
    -
    - -

    ◆ from_json() [1/19]

    - -
    -
    -
    -template<typename BasicJsonType , typename ArithmeticType , enable_if_t< std::is_arithmetic< ArithmeticType >::value and not std::is_same< ArithmeticType, typename BasicJsonType::number_unsigned_t >::value and not std::is_same< ArithmeticType, typename BasicJsonType::number_integer_t >::value and not std::is_same< ArithmeticType, typename BasicJsonType::number_float_t >::value and not std::is_same< ArithmeticType, typename BasicJsonType::boolean_t >::value, int > = 0>
    - - - - - - - - - - - - - - - - - - -
    void nlohmann::detail::from_json (const BasicJsonType & j,
    ArithmeticType & val 
    )
    -
    - -
    -
    - -

    ◆ from_json() [2/19]

    - -
    -
    -
    -template<typename BasicJsonType , typename ConstructibleArrayType , enable_if_t< is_constructible_array_type< BasicJsonType, ConstructibleArrayType >::value and not is_constructible_object_type< BasicJsonType, ConstructibleArrayType >::value and not is_constructible_string_type< BasicJsonType, ConstructibleArrayType >::value and not is_basic_json< ConstructibleArrayType >::value, int > = 0>
    - - - - - - - - - - - - - - - - - - -
    auto nlohmann::detail::from_json (const BasicJsonType & j,
    ConstructibleArrayType & arr 
    ) -> decltype(from_json_array_impl(j, arr, priority_tag<3>
    -
    - -
    -
    - -

    ◆ from_json() [3/19]

    - -
    -
    -
    -template<typename BasicJsonType , typename ConstructibleObjectType , enable_if_t< is_constructible_object_type< BasicJsonType, ConstructibleObjectType >::value, int > = 0>
    - - - - - - - - - - - - - - - - - - -
    void nlohmann::detail::from_json (const BasicJsonType & j,
    ConstructibleObjectType & obj 
    )
    -
    - -
    -
    - -

    ◆ from_json() [4/19]

    - -
    -
    -
    -template<typename BasicJsonType , typename ConstructibleStringType , enable_if_t< is_constructible_string_type< BasicJsonType, ConstructibleStringType >::value and not std::is_same< typename BasicJsonType::string_t, ConstructibleStringType >::value, int > = 0>
    - - - - - - - - - - - - - - - - - - -
    void nlohmann::detail::from_json (const BasicJsonType & j,
    ConstructibleStringType & s 
    )
    -
    - -
    -
    - -

    ◆ from_json() [5/19]

    - -
    -
    -
    -template<typename BasicJsonType , typename EnumType , enable_if_t< std::is_enum< EnumType >::value, int > = 0>
    - - - - - - - - - - - - - - - - - - -
    void nlohmann::detail::from_json (const BasicJsonType & j,
    EnumType & e 
    )
    -
    - -
    -
    - -

    ◆ from_json() [6/19]

    - -
    -
    -
    -template<typename BasicJsonType , typename T , typename Allocator , enable_if_t< std::is_convertible< BasicJsonType, T >::value, int > = 0>
    - - - - - - - - - - - - - - - - - - -
    void nlohmann::detail::from_json (const BasicJsonType & j,
    std::forward_list< T, Allocator > & l 
    )
    -
    - -
    -
    - -

    ◆ from_json() [7/19]

    - -
    -
    -
    -template<typename BasicJsonType , typename Key , typename Value , typename Compare , typename Allocator , typename = enable_if_t<not std::is_constructible< typename BasicJsonType::string_t, Key>::value>>
    - - - - - - - - - - - - - - - - - - -
    void nlohmann::detail::from_json (const BasicJsonType & j,
    std::map< Key, Value, Compare, Allocator > & m 
    )
    -
    - -
    -
    - -

    ◆ from_json() [8/19]

    - -
    -
    -
    -template<typename BasicJsonType , typename A1 , typename A2 >
    - - - - - - - - - - - - - - - - - - -
    void nlohmann::detail::from_json (const BasicJsonType & j,
    std::pair< A1, A2 > & p 
    )
    -
    - -
    -
    - -

    ◆ from_json() [9/19]

    - -
    -
    -
    -template<typename BasicJsonType , typename... Args>
    - - - - - - - - - - - - - - - - - - -
    void nlohmann::detail::from_json (const BasicJsonType & j,
    std::tuple< Args... > & t 
    )
    -
    - -
    -
    - -

    ◆ from_json() [10/19]

    - -
    -
    -
    -template<typename BasicJsonType , typename Key , typename Value , typename Hash , typename KeyEqual , typename Allocator , typename = enable_if_t<not std::is_constructible< typename BasicJsonType::string_t, Key>::value>>
    - - - - - - - - - - - - - - - - - - -
    void nlohmann::detail::from_json (const BasicJsonType & j,
    std::unordered_map< Key, Value, Hash, KeyEqual, Allocator > & m 
    )
    -
    - -
    -
    - -

    ◆ from_json() [11/19]

    - -
    -
    -
    -template<typename BasicJsonType , typename T , enable_if_t< std::is_convertible< BasicJsonType, T >::value, int > = 0>
    - - - - - - - - - - - - - - - - - - -
    void nlohmann::detail::from_json (const BasicJsonType & j,
    std::valarray< T > & l 
    )
    -
    - -
    -
    - -

    ◆ from_json() [12/19]

    - -
    -
    -
    -template<typename BasicJsonType , typename T , std::size_t N>
    - - - - - - - - - - - - - - - - - - -
    auto nlohmann::detail::from_json (const BasicJsonType & j,
    T(&) arr[N] 
    ) -> decltype(j.template get<T>(), void()) -
    -
    - -
    -
    - -

    ◆ from_json() [13/19]

    - -
    -
    -
    -template<typename BasicJsonType >
    - - - - - - - - - - - - - - - - - - -
    void nlohmann::detail::from_json (const BasicJsonType & j,
    typename BasicJsonType::binary_t & bin 
    )
    -
    - -
    -
    - -

    ◆ from_json() [14/19]

    - -
    -
    -
    -template<typename BasicJsonType >
    - - - - - - - - - - - - - - - - - - -
    void nlohmann::detail::from_json (const BasicJsonType & j,
    typename BasicJsonType::boolean_t & b 
    )
    -
    - -
    -
    - -

    ◆ from_json() [15/19]

    - -
    -
    -
    -template<typename BasicJsonType >
    - - - - - - - - - - - - - - - - - - -
    void nlohmann::detail::from_json (const BasicJsonType & j,
    typename BasicJsonType::number_float_t & val 
    )
    -
    - -
    -
    - -

    ◆ from_json() [16/19]

    - -
    -
    -
    -template<typename BasicJsonType >
    - - - - - - - - - - - - - - - - - - -
    void nlohmann::detail::from_json (const BasicJsonType & j,
    typename BasicJsonType::number_integer_t & val 
    )
    -
    - -
    -
    - -

    ◆ from_json() [17/19]

    - -
    -
    -
    -template<typename BasicJsonType >
    - - - - - - - - - - - - - - - - - - -
    void nlohmann::detail::from_json (const BasicJsonType & j,
    typename BasicJsonType::number_unsigned_t & val 
    )
    -
    - -
    -
    - -

    ◆ from_json() [18/19]

    - -
    -
    -
    -template<typename BasicJsonType >
    - - - - - - - - - - - - - - - - - - -
    void nlohmann::detail::from_json (const BasicJsonType & j,
    typename BasicJsonType::string_t & s 
    )
    -
    - -
    -
    - -

    ◆ from_json() [19/19]

    - -
    -
    -
    -template<typename BasicJsonType >
    - - - - - - - - - - - - - - - - - - -
    void nlohmann::detail::from_json (const BasicJsonType & j,
    typename std::nullptr_t & n 
    )
    -
    - -
    -
    - -

    ◆ from_json_array_impl() [1/4]

    - -
    -
    -
    -template<typename BasicJsonType , typename ConstructibleArrayType >
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void nlohmann::detail::from_json_array_impl (const BasicJsonType & j,
    ConstructibleArrayType & arr,
    priority_tag< 0 >  
    )
    -
    - -
    -
    - -

    ◆ from_json_array_impl() [2/4]

    - -
    -
    -
    -template<typename BasicJsonType , typename ConstructibleArrayType >
    - - - - - - - - - - - - - - - - - - - - - - - - -
    auto nlohmann::detail::from_json_array_impl (const BasicJsonType & j,
    ConstructibleArrayType & arr,
    priority_tag< 1 >  
    ) -> decltype( - arr.reserve(std::declval<typename ConstructibleArrayType::size_type>()), - j.template get<typename ConstructibleArrayType::value_type>(), - void()) -
    -
    - -
    -
    - -

    ◆ from_json_array_impl() [3/4]

    - -
    -
    -
    -template<typename BasicJsonType , typename T , std::size_t N>
    - - - - - - - - - - - - - - - - - - - - - - - - -
    auto nlohmann::detail::from_json_array_impl (const BasicJsonType & j,
    std::array< T, N > & arr,
    priority_tag< 2 >  
    ) -> decltype(j.template get<T>(), void()) -
    -
    - -
    -
    - -

    ◆ from_json_array_impl() [4/4]

    - -
    -
    -
    -template<typename BasicJsonType >
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void nlohmann::detail::from_json_array_impl (const BasicJsonType & j,
    typename BasicJsonType::array_t & arr,
    priority_tag< 3 >  
    )
    -
    - -
    -
    - -

    ◆ from_json_tuple_impl()

    - -
    -
    -
    -template<typename BasicJsonType , typename Tuple , std::size_t... Idx>
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void nlohmann::detail::from_json_tuple_impl (const BasicJsonType & j,
    Tuple & t,
    index_sequence< Idx... >  
    )
    -
    - -
    -
    - -

    ◆ get()

    - -
    -
    -
    -template<std::size_t N, typename IteratorType , enable_if_t< N==0, int > = 0>
    - - - - - - - - -
    auto nlohmann::detail::get (const nlohmann::detail::iteration_proxy_value< IteratorType > & i) -> decltype(i.key()) -
    -
    - -
    -
    - -

    ◆ get< typename ConstructibleArrayType::value_type >()

    - -
    -
    - - - - - - - -
    j template nlohmann::detail::get< typename ConstructibleArrayType::value_type > ()
    -
    - -
    -
    - -

    ◆ get_arithmetic_value()

    - -
    -
    -
    -template<typename BasicJsonType , typename ArithmeticType , enable_if_t< std::is_arithmetic< ArithmeticType >::value and not std::is_same< ArithmeticType, typename BasicJsonType::boolean_t >::value, int > = 0>
    - - - - - - - - - - - - - - - - - - -
    void nlohmann::detail::get_arithmetic_value (const BasicJsonType & j,
    ArithmeticType & val 
    )
    -
    - -
    -
    - -

    ◆ hash()

    - -
    -
    -
    -template<typename BasicJsonType >
    - - - - - - - - -
    std::size_t nlohmann::detail::hash (const BasicJsonType & j)
    -
    - -

    hash a JSON value

    -

    The hash function tries to rely on std::hash where possible. Furthermore, the type of the JSON value is taken into account to have different hash values for null, 0, 0U, and false, etc.

    -
    Template Parameters
    - - -
    BasicJsonTypebasic_json specialization
    -
    -
    -
    Parameters
    - - -
    jJSON value to hash
    -
    -
    -
    Returns
    hash value of j
    - -
    -
    - -

    ◆ input_adapter() [1/7]

    - -
    -
    -
    -template<typename CharT , typename std::enable_if< std::is_pointer< CharT >::value &&!std::is_array< CharT >::value &&std::is_integral< typename std::remove_pointer< CharT >::type >::value &&sizeof(typename std::remove_pointer< CharT >::type)==1, int >::type = 0>
    - - - - - - - - -
    contiguous_bytes_input_adapter nlohmann::detail::input_adapter (CharT b)
    -
    - -
    -
    - -

    ◆ input_adapter() [2/7]

    - -
    -
    -
    -template<typename ContainerType >
    - - - - - - - - -
    auto nlohmann::detail::input_adapter (const ContainerType & container) -> decltype(input_adapter(begin(container), end(container))) -
    -
    - -
    -
    - -

    ◆ input_adapter() [3/7]

    - -
    -
    -
    -template<typename IteratorType >
    - - - - - - - - - - - - - - - - - - -
    iterator_input_adapter_factory<IteratorType>::adapter_type nlohmann::detail::input_adapter (IteratorType first,
    IteratorType last 
    )
    -
    - -
    -
    - -

    ◆ input_adapter() [4/7]

    - -
    -
    - - - - - -
    - - - - - - - - -
    file_input_adapter nlohmann::detail::input_adapter (std::FILE * file)
    -
    -inline
    -
    - -
    -
    - -

    ◆ input_adapter() [5/7]

    - -
    -
    - - - - - -
    - - - - - - - - -
    input_stream_adapter nlohmann::detail::input_adapter (std::istream && stream)
    -
    -inline
    -
    - -
    -
    - -

    ◆ input_adapter() [6/7]

    - -
    -
    - - - - - -
    - - - - - - - - -
    input_stream_adapter nlohmann::detail::input_adapter (std::istream & stream)
    -
    -inline
    -
    - -
    -
    - -

    ◆ input_adapter() [7/7]

    - -
    -
    -
    -template<typename T , std::size_t N>
    - - - - - - - - -
    auto nlohmann::detail::input_adapter (T(&) array[N]) -> decltype(input_adapter(array, array + N)) -
    -
    - -
    -
    - -

    ◆ int_to_string()

    - -
    -
    -
    -template<typename string_type >
    - - - - - - - - - - - - - - - - - - -
    void nlohmann::detail::int_to_string (string_type & target,
    std::size_t value 
    )
    -
    - -
    -
    - -

    ◆ operator<()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    bool nlohmann::detail::operator< (const value_t lhs,
    const value_t rhs 
    )
    -
    -inlinenoexcept
    -
    - -

    comparison operator for JSON types

    -

    Returns an ordering that is similar to Python:

      -
    • order: null < boolean < number < object < array < string
    • -
    • furthermore, each type is not smaller than itself
    • -
    • discarded values are not comparable
    • -
    -
    Since
    version 1.0.0
    -

    Returns an ordering that is similar to Python:

      -
    • order: null < boolean < number < object < array < string < binary
    • -
    • furthermore, each type is not smaller than itself
    • -
    • discarded values are not comparable
    • -
    • binary is represented as a b"" string in python and directly comparable to a string; however, making a binary array directly comparable with a string would be surprising behavior in a JSON file.
    • -
    -
    Since
    version 1.0.0
    - -
    -
    - -

    ◆ to_chars()

    - -
    -
    -
    -template<typename FloatType >
    - - - - - - - - - - - - - - - - - - - - - - - - -
    JSON_HEDLEY_RETURNS_NON_NULL char * nlohmann::detail::to_chars (char * first,
    const char * last,
    FloatType value 
    )
    -
    - -

    generates a decimal representation of the floating-point number value in [first, last).

    -

    The format of the resulting decimal representation is similar to printf's g format. Returns an iterator pointing past-the-end of the decimal representation.

    -
    Note
    The input number must be finite, i.e. NaN's and Inf's are not supported.
    -
    -The buffer must be large enough.
    -
    -The result is NOT null-terminated.
    - -
    -
    - -

    ◆ to_json() [1/17]

    - -
    -
    -
    -template<typename BasicJsonType , typename CompatibleNumberIntegerType , enable_if_t< is_compatible_integer_type< typename BasicJsonType::number_integer_t, CompatibleNumberIntegerType >::value, int > = 0>
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    void nlohmann::detail::to_json (BasicJsonType & j,
    CompatibleNumberIntegerType val 
    )
    -
    -noexcept
    -
    - -
    -
    - -

    ◆ to_json() [2/17]

    - -
    -
    -
    -template<typename BasicJsonType , typename CompatibleNumberUnsignedType , enable_if_t< is_compatible_integer_type< typename BasicJsonType::number_unsigned_t, CompatibleNumberUnsignedType >::value, int > = 0>
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    void nlohmann::detail::to_json (BasicJsonType & j,
    CompatibleNumberUnsignedType val 
    )
    -
    -noexcept
    -
    - -
    -
    - -

    ◆ to_json() [3/17]

    - -
    -
    -
    -template<typename BasicJsonType , typename CompatibleArrayType , enable_if_t< is_compatible_array_type< BasicJsonType, CompatibleArrayType >::value and not is_compatible_object_type< BasicJsonType, CompatibleArrayType >::value and not is_compatible_string_type< BasicJsonType, CompatibleArrayType >::value and not is_basic_json< CompatibleArrayType >::value, int > = 0>
    - - - - - - - - - - - - - - - - - - -
    void nlohmann::detail::to_json (BasicJsonType & j,
    const CompatibleArrayType & arr 
    )
    -
    - -
    -
    - -

    ◆ to_json() [4/17]

    - -
    -
    -
    -template<typename BasicJsonType , typename CompatibleObjectType , enable_if_t< is_compatible_object_type< BasicJsonType, CompatibleObjectType >::value and not is_basic_json< CompatibleObjectType >::value, int > = 0>
    - - - - - - - - - - - - - - - - - - -
    void nlohmann::detail::to_json (BasicJsonType & j,
    const CompatibleObjectType & obj 
    )
    -
    - -
    -
    - -

    ◆ to_json() [5/17]

    - -
    -
    -
    -template<typename BasicJsonType , typename CompatibleString , enable_if_t< std::is_constructible< typename BasicJsonType::string_t, CompatibleString >::value, int > = 0>
    - - - - - - - - - - - - - - - - - - -
    void nlohmann::detail::to_json (BasicJsonType & j,
    const CompatibleString & s 
    )
    -
    - -
    -
    - -

    ◆ to_json() [6/17]

    - -
    -
    -
    -template<typename BasicJsonType , typename T1 , typename T2 , enable_if_t< std::is_constructible< BasicJsonType, T1 >::value &&std::is_constructible< BasicJsonType, T2 >::value, int > = 0>
    - - - - - - - - - - - - - - - - - - -
    void nlohmann::detail::to_json (BasicJsonType & j,
    const std::pair< T1, T2 > & p 
    )
    -
    - -
    -
    - -

    ◆ to_json() [7/17]

    - -
    -
    -
    -template<typename BasicJsonType , typename T , enable_if_t< std::is_convertible< T, BasicJsonType >::value, int > = 0>
    - - - - - - - - - - - - - - - - - - -
    void nlohmann::detail::to_json (BasicJsonType & j,
    const std::valarray< T > & arr 
    )
    -
    - -
    -
    - -

    ◆ to_json() [8/17]

    - -
    -
    -
    -template<typename BasicJsonType >
    - - - - - - - - - - - - - - - - - - -
    void nlohmann::detail::to_json (BasicJsonType & j,
    const std::vector< bool > & e 
    )
    -
    - -
    -
    - -

    ◆ to_json() [9/17]

    - -
    -
    -
    -template<typename BasicJsonType , typename T , enable_if_t< std::is_same< T, iteration_proxy_value< typename BasicJsonType::iterator >>::value, int > = 0>
    - - - - - - - - - - - - - - - - - - -
    void nlohmann::detail::to_json (BasicJsonType & j,
    const T & b 
    )
    -
    - -
    -
    - -

    ◆ to_json() [10/17]

    - -
    -
    -
    -template<typename BasicJsonType , typename T , std::size_t N, enable_if_t< not std::is_constructible< typename BasicJsonType::string_t, const T(&)[N]>::value, int > = 0>
    - - - - - - - - - - - - - - - - - - -
    void nlohmann::detail::to_json (BasicJsonType & j,
    const T(&) arr[N] 
    )
    -
    - -
    -
    - -

    ◆ to_json() [11/17]

    - -
    -
    -
    -template<typename BasicJsonType >
    - - - - - - - - - - - - - - - - - - -
    void nlohmann::detail::to_json (BasicJsonType & j,
    const typename BasicJsonType::binary_t & bin 
    )
    -
    - -
    -
    - -

    ◆ to_json() [12/17]

    - -
    -
    -
    -template<typename BasicJsonType , typename EnumType , enable_if_t< std::is_enum< EnumType >::value, int > = 0>
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    void nlohmann::detail::to_json (BasicJsonType & j,
    EnumType e 
    )
    -
    -noexcept
    -
    - -
    -
    - -

    ◆ to_json() [13/17]

    - -
    -
    -
    -template<typename BasicJsonType , typename FloatType , enable_if_t< std::is_floating_point< FloatType >::value, int > = 0>
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    void nlohmann::detail::to_json (BasicJsonType & j,
    FloatType val 
    )
    -
    -noexcept
    -
    - -
    -
    - -

    ◆ to_json() [14/17]

    - -
    -
    -
    -template<typename BasicJsonType , typename T , enable_if_t< std::is_same< T, typename BasicJsonType::boolean_t >::value, int > = 0>
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    void nlohmann::detail::to_json (BasicJsonType & j,
    b 
    )
    -
    -noexcept
    -
    - -
    -
    - -

    ◆ to_json() [15/17]

    - -
    -
    -
    -template<typename BasicJsonType >
    - - - - - - - - - - - - - - - - - - -
    void nlohmann::detail::to_json (BasicJsonType & j,
    typename BasicJsonType::array_t && arr 
    )
    -
    - -
    -
    - -

    ◆ to_json() [16/17]

    - -
    -
    -
    -template<typename BasicJsonType >
    - - - - - - - - - - - - - - - - - - -
    void nlohmann::detail::to_json (BasicJsonType & j,
    typename BasicJsonType::object_t && obj 
    )
    -
    - -
    -
    - -

    ◆ to_json() [17/17]

    - -
    -
    -
    -template<typename BasicJsonType >
    - - - - - - - - - - - - - - - - - - -
    void nlohmann::detail::to_json (BasicJsonType & j,
    typename BasicJsonType::string_t && s 
    )
    -
    - -
    -
    - -

    ◆ to_json_tuple_impl()

    - -
    -
    -
    -template<typename BasicJsonType , typename Tuple , std::size_t... Idx>
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void nlohmann::detail::to_json_tuple_impl (BasicJsonType & j,
    const Tuple & t,
    index_sequence< Idx... >  
    )
    -
    - -
    -
    - -

    ◆ void()

    - -
    -
    - - - - - - - -
    j template nlohmann::detail::void ()
    -
    - -
    -
    -
    - - - - diff --git a/help/html/namespacenlohmann_1_1detail_1_1dtoa__impl.html b/help/html/namespacenlohmann_1_1detail_1_1dtoa__impl.html deleted file mode 100644 index 4ce66c5..0000000 --- a/help/html/namespacenlohmann_1_1detail_1_1dtoa__impl.html +++ /dev/null @@ -1,616 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::dtoa_impl Namespace Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    nlohmann::detail::dtoa_impl Namespace Reference
    -
    -
    - -

    implements the Grisu2 algorithm for binary to decimal floating-point conversion. -More...

    - - - - - - - - -

    -Classes

    struct  boundaries
     
    struct  cached_power
     
    struct  diyfp
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Functions

    template<typename Target , typename Source >
    Target reinterpret_bits (const Source source)
     
    template<typename FloatType >
    boundaries compute_boundaries (FloatType value)
     
    cached_power get_cached_power_for_binary_exponent (int e)
     
    int find_largest_pow10 (const std::uint32_t n, std::uint32_t &pow10)
     
    void grisu2_round (char *buf, int len, std::uint64_t dist, std::uint64_t delta, std::uint64_t rest, std::uint64_t ten_k)
     
    void grisu2_digit_gen (char *buffer, int &length, int &decimal_exponent, diyfp M_minus, diyfp w, diyfp M_plus)
     
    void grisu2 (char *buf, int &len, int &decimal_exponent, diyfp m_minus, diyfp v, diyfp m_plus)
     
    template<typename FloatType >
    void grisu2 (char *buf, int &len, int &decimal_exponent, FloatType value)
     
    JSON_HEDLEY_RETURNS_NON_NULL char * append_exponent (char *buf, int e)
     appends a decimal representation of e to buf More...
     
    JSON_HEDLEY_RETURNS_NON_NULL char * format_buffer (char *buf, int len, int decimal_exponent, int min_exp, int max_exp)
     prettify v = buf * 10^decimal_exponent More...
     
    - - - - - -

    -Variables

    constexpr int kAlpha = -60
     
    constexpr int kGamma = -32
     
    -

    Detailed Description

    -

    implements the Grisu2 algorithm for binary to decimal floating-point conversion.

    -

    This implementation is a slightly modified version of the reference implementation which may be obtained from http://florian.loitsch.com/publications (bench.tar.gz).

    -

    The code is distributed under the MIT license, Copyright (c) 2009 Florian Loitsch.

    -

    For a detailed description of the algorithm see:

    -

    [1] Loitsch, "Printing Floating-Point Numbers Quickly and Accurately with - Integers", Proceedings of the ACM SIGPLAN 2010 Conference on Programming Language Design and Implementation, PLDI 2010 [2] Burger, Dybvig, "Printing Floating-Point Numbers Quickly and Accurately", Proceedings of the ACM SIGPLAN 1996 Conference on Programming Language Design and Implementation, PLDI 1996

    -

    Function Documentation

    - -

    ◆ append_exponent()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    JSON_HEDLEY_RETURNS_NON_NULL char * nlohmann::detail::dtoa_impl::append_exponent (char * buf,
    int e 
    )
    -
    -inline
    -
    - -

    appends a decimal representation of e to buf

    -
    Returns
    a pointer to the element following the exponent.
    -
    Precondition
    -1000 < e < 1000
    - -
    -
    - -

    ◆ compute_boundaries()

    - -
    -
    -
    -template<typename FloatType >
    - - - - - - - - -
    boundaries nlohmann::detail::dtoa_impl::compute_boundaries (FloatType value)
    -
    -

    Compute the (normalized) diyfp representing the input number 'value' and its boundaries.

    -
    Precondition
    value must be finite and positive
    - -
    -
    - -

    ◆ find_largest_pow10()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    int nlohmann::detail::dtoa_impl::find_largest_pow10 (const std::uint32_t n,
    std::uint32_t & pow10 
    )
    -
    -inline
    -
    -

    For n != 0, returns k, such that pow10 := 10^(k-1) <= n < 10^k. For n == 0, returns 1 and sets pow10 := 1.

    - -
    -
    - -

    ◆ format_buffer()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    JSON_HEDLEY_RETURNS_NON_NULL char * nlohmann::detail::dtoa_impl::format_buffer (char * buf,
    int len,
    int decimal_exponent,
    int min_exp,
    int max_exp 
    )
    -
    -inline
    -
    - -

    prettify v = buf * 10^decimal_exponent

    -

    If v is in the range [10^min_exp, 10^max_exp) it will be printed in fixed-point notation. Otherwise it will be printed in exponential notation.

    -
    Precondition
    min_exp < 0
    -
    -max_exp > 0
    - -
    -
    - -

    ◆ get_cached_power_for_binary_exponent()

    - -
    -
    - - - - - -
    - - - - - - - - -
    cached_power nlohmann::detail::dtoa_impl::get_cached_power_for_binary_exponent (int e)
    -
    -inline
    -
    -

    For a normalized diyfp w = f * 2^e, this function returns a (normalized) cached power-of-ten c = f_c * 2^e_c, such that the exponent of the product w * c satisfies (Definition 3.2 from [1])

     alpha <= e_c + e + q <= gamma.
    -
    -
    -
    - -

    ◆ grisu2() [1/2]

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void nlohmann::detail::dtoa_impl::grisu2 (char * buf,
    int & len,
    int & decimal_exponent,
    diyfp m_minus,
    diyfp v,
    diyfp m_plus 
    )
    -
    -inline
    -
    -

    v = buf * 10^decimal_exponent len is the length of the buffer (number of decimal digits) The buffer must be large enough, i.e. >= max_digits10.

    - -
    -
    - -

    ◆ grisu2() [2/2]

    - -
    -
    -
    -template<typename FloatType >
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void nlohmann::detail::dtoa_impl::grisu2 (char * buf,
    int & len,
    int & decimal_exponent,
    FloatType value 
    )
    -
    -

    v = buf * 10^decimal_exponent len is the length of the buffer (number of decimal digits) The buffer must be large enough, i.e. >= max_digits10.

    - -
    -
    - -

    ◆ grisu2_digit_gen()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void nlohmann::detail::dtoa_impl::grisu2_digit_gen (char * buffer,
    int & length,
    int & decimal_exponent,
    diyfp M_minus,
    diyfp w,
    diyfp M_plus 
    )
    -
    -inline
    -
    -

    Generates V = buffer * 10^decimal_exponent, such that M- <= V <= M+. M- and M+ must be normalized and share the same exponent -60 <= e <= -32.

    - -
    -
    - -

    ◆ grisu2_round()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void nlohmann::detail::dtoa_impl::grisu2_round (char * buf,
    int len,
    std::uint64_t dist,
    std::uint64_t delta,
    std::uint64_t rest,
    std::uint64_t ten_k 
    )
    -
    -inline
    -
    - -
    -
    - -

    ◆ reinterpret_bits()

    - -
    -
    -
    -template<typename Target , typename Source >
    - - - - - - - - -
    Target nlohmann::detail::dtoa_impl::reinterpret_bits (const Source source)
    -
    - -
    -
    -

    Variable Documentation

    - -

    ◆ kAlpha

    - -
    -
    - - - - - -
    - - - - -
    constexpr int nlohmann::detail::dtoa_impl::kAlpha = -60
    -
    -constexpr
    -
    - -
    -
    - -

    ◆ kGamma

    - -
    -
    - - - - - -
    - - - - -
    constexpr int nlohmann::detail::dtoa_impl::kGamma = -32
    -
    -constexpr
    -
    - -
    -
    -
    - - - - diff --git a/help/html/namespaces.html b/help/html/namespaces.html deleted file mode 100644 index f8557bc..0000000 --- a/help/html/namespaces.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - -CocoaTweet: Namespace List - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -
    -
    Namespace List
    -
    -
    -
    Here is a list of all namespaces with brief descriptions:
    -
    [detail level 123]
    - - - - - - - - - - - -
     NCocoaTweet
     NAPI
     NDirectMessages
     NFavorites
     NInterface
     NMedias
     NModel
     NStatuses
     NException
     NOAuth
     NUtil
    -
    -
    - - - - diff --git a/help/html/namespacestd.html b/help/html/namespacestd.html deleted file mode 100644 index ebf9d43..0000000 --- a/help/html/namespacestd.html +++ /dev/null @@ -1,141 +0,0 @@ - - - - - - - -CocoaTweet: std Namespace Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    - -
    -
    std Namespace Reference
    -
    -
    - - - - - - - - - - - -

    -Classes

    struct  hash< nlohmann::json >
     hash value for JSON objects More...
     
    struct  less<::nlohmann::detail::value_t >
     
    class  tuple_element< N, ::nlohmann::detail::iteration_proxy_value< IteratorType > >
     
    class  tuple_size<::nlohmann::detail::iteration_proxy_value< IteratorType > >
     
    - - - - - -

    -Functions

    template<>
    void swap< nlohmann::json > (nlohmann::json &j1, nlohmann::json &j2) noexcept(is_nothrow_move_constructible< nlohmann::json >::value and is_nothrow_move_assignable< nlohmann::json >::value)
     exchanges the values of two JSON objects More...
     
    -

    Function Documentation

    - -

    ◆ swap< nlohmann::json >()

    - -
    -
    -
    -template<>
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    void std::swap< nlohmann::json > (nlohmann::jsonj1,
    nlohmann::jsonj2 
    )
    -
    -inlinenoexcept
    -
    - -

    exchanges the values of two JSON objects

    -
    Since
    version 1.0.0
    - -
    -
    -
    - - - - diff --git a/help/html/namespaceupdate.html b/help/html/namespaceupdate.html deleted file mode 100644 index d01b084..0000000 --- a/help/html/namespaceupdate.html +++ /dev/null @@ -1,259 +0,0 @@ - - - - - - - -CocoaTweet: update Namespace Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    - -
    -
    update Namespace Reference
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -

    -Variables

     releases = json.loads(str(urllib.request.urlopen('https://api.github.com/repos/nlohmann/json/releases').read(), 'utf-8'))
     
    list release_url_map = []
     
     process = subprocess.Popen(['git', 'tag'], stdout=subprocess.PIPE)
     
     tags = set(filter(None, str(tags, 'utf-8').split("\n")))
     
    bool did_update = False
     
     mode
     
     o777
     
     exist_ok
     
     data = urllib.request.urlopen(url).read();
     
    bool has_json_fwd = False
     
    string json_fwd_url = 'https://github.com/nlohmann/json/raw/{}/include/nlohmann/json_fwd.hpp'.format(tag);
     
    -

    Variable Documentation

    - -

    ◆ data

    - -
    -
    - - - - -
    update.data = urllib.request.urlopen(url).read();
    -
    - -
    -
    - -

    ◆ did_update

    - -
    -
    - - - - -
    bool update.did_update = False
    -
    - -
    -
    - -

    ◆ exist_ok

    - -
    -
    - - - - -
    update.exist_ok
    -
    - -
    -
    - -

    ◆ has_json_fwd

    - -
    -
    - - - - -
    bool update.has_json_fwd = False
    -
    - -
    -
    - -

    ◆ json_fwd_url

    - -
    -
    - - - - -
    string update.json_fwd_url = 'https://github.com/nlohmann/json/raw/{}/include/nlohmann/json_fwd.hpp'.format(tag);
    -
    - -
    -
    - -

    ◆ mode

    - -
    -
    - - - - -
    update.mode
    -
    - -
    -
    - -

    ◆ o777

    - -
    -
    - - - - -
    update.o777
    -
    - -
    -
    - -

    ◆ process

    - -
    -
    - - - - -
    update.process = subprocess.Popen(['git', 'tag'], stdout=subprocess.PIPE)
    -
    - -
    -
    - -

    ◆ release_url_map

    - -
    -
    - - - - -
    list update.release_url_map = []
    -
    - -
    -
    - -

    ◆ releases

    - -
    -
    - - - - -
    update.releases = json.loads(str(urllib.request.urlopen('https://api.github.com/repos/nlohmann/json/releases').read(), 'utf-8'))
    -
    - -
    -
    - -

    ◆ tags

    - -
    -
    - - - - -
    update.tags = set(filter(None, str(tags, 'utf-8').split("\n")))
    -
    - -
    -
    -
    - - - - diff --git a/help/html/nav_f.png b/help/html/nav_f.png deleted file mode 100644 index 72a58a5..0000000 Binary files a/help/html/nav_f.png and /dev/null differ diff --git a/help/html/nav_g.png b/help/html/nav_g.png deleted file mode 100644 index 2093a23..0000000 Binary files a/help/html/nav_g.png and /dev/null differ diff --git a/help/html/nav_h.png b/help/html/nav_h.png deleted file mode 100644 index 33389b1..0000000 Binary files a/help/html/nav_h.png and /dev/null differ diff --git a/help/html/new_8cc.html b/help/html/new_8cc.html deleted file mode 100644 index fa07b9b..0000000 --- a/help/html/new_8cc.html +++ /dev/null @@ -1,119 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api/directMessage/new.cc File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    new.cc File Reference
    -
    -
    -
    #include <cocoatweet/api/directMessage/new.h>
    -#include <cocoatweet/util/util.h>
    -#include <string>
    -
    -Include dependency graph for new.cc:
    -
    -
    - - - - - - - - - - - - - - - - - - - -
    -
    - - - - - - - -

    -Namespaces

     CocoaTweet
     
     CocoaTweet::API
     
     CocoaTweet::API::DirectMessages
     
    -
    - - - - diff --git a/help/html/new_8cc__incl.map b/help/html/new_8cc__incl.map deleted file mode 100644 index ec1891a..0000000 --- a/help/html/new_8cc__incl.map +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/help/html/new_8cc__incl.md5 b/help/html/new_8cc__incl.md5 deleted file mode 100644 index 61c8206..0000000 --- a/help/html/new_8cc__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -2a0a8ae4a1a59ee6724f641845888c91 \ No newline at end of file diff --git a/help/html/new_8cc__incl.png b/help/html/new_8cc__incl.png deleted file mode 100644 index ffeda3b..0000000 Binary files a/help/html/new_8cc__incl.png and /dev/null differ diff --git a/help/html/new_8h.html b/help/html/new_8h.html deleted file mode 100644 index 7f62343..0000000 --- a/help/html/new_8h.html +++ /dev/null @@ -1,138 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api/directMessage/new.h File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    new.h File Reference
    -
    -
    -
    #include <cocoatweet/api/interface/httpPost.h>
    -#include <cocoatweet/api/model/tweet.h>
    -#include <vector>
    -#include <utility>
    -#include <memory>
    -#include "nlohmann/json.hpp"
    -
    -Include dependency graph for new.h:
    -
    -
    - - - - - - - - - - - - - - - - -
    -
    -This graph shows which files directly or indirectly include this file:
    -
    -
    - - - - - -
    -
    -

    Go to the source code of this file.

    - - - - - -

    -Classes

    class  CocoaTweet::API::DirectMessages::New
     class for using statuses/update endpoint More...
     
    - - - - - - - -

    -Namespaces

     CocoaTweet
     
     CocoaTweet::API
     
     CocoaTweet::API::DirectMessages
     
    -
    - - - - diff --git a/help/html/new_8h__dep__incl.map b/help/html/new_8h__dep__incl.map deleted file mode 100644 index 0493d6b..0000000 --- a/help/html/new_8h__dep__incl.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/help/html/new_8h__dep__incl.md5 b/help/html/new_8h__dep__incl.md5 deleted file mode 100644 index 4716723..0000000 --- a/help/html/new_8h__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -ad6782b05e1a07dd8c1cd3089cc12ef5 \ No newline at end of file diff --git a/help/html/new_8h__dep__incl.png b/help/html/new_8h__dep__incl.png deleted file mode 100644 index f2d5f90..0000000 Binary files a/help/html/new_8h__dep__incl.png and /dev/null differ diff --git a/help/html/new_8h__incl.map b/help/html/new_8h__incl.map deleted file mode 100644 index 946386c..0000000 --- a/help/html/new_8h__incl.map +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/help/html/new_8h__incl.md5 b/help/html/new_8h__incl.md5 deleted file mode 100644 index 029c7ea..0000000 --- a/help/html/new_8h__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -c2e7ae43740e66c3133a6197ee22d394 \ No newline at end of file diff --git a/help/html/new_8h__incl.png b/help/html/new_8h__incl.png deleted file mode 100644 index 322606b..0000000 Binary files a/help/html/new_8h__incl.png and /dev/null differ diff --git a/help/html/new_8h_source.html b/help/html/new_8h_source.html deleted file mode 100644 index c8812d2..0000000 --- a/help/html/new_8h_source.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api/directMessage/new.h Source File - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    new.h
    -
    -
    -Go to the documentation of this file.
    1 #ifndef COCOATWEET_API_DIRECTMESSAGE_NEW_H_
    -
    2 #define COCOATWEET_API_DIRECTMESSAGE_NEW_H_
    -
    3 
    - - -
    6 #include <vector>
    -
    7 #include <utility>
    -
    8 #include <memory>
    -
    9 #include "nlohmann/json.hpp"
    -
    10 
    - - -
    14 public:
    -
    15  New();
    -
    16  void recipient(const std::string& _id);
    -
    17  void message(const std::string& _message);
    -
    18 
    -
    22  void process(std::weak_ptr<CocoaTweet::OAuth::OAuth1> _oauth);
    -
    23 
    -
    24 private:
    -
    25  std::string status_;
    -
    26  nlohmann::json json_;
    -
    27 };
    -
    28 } // namespace CocoaTweet::API::DirectMessages
    -
    29 
    -
    30 #endif
    -
    -
    void recipient(const std::string &_id)
    Definition: new.cc:18
    -
    void message(const std::string &_message)
    Definition: new.cc:22
    -
    Definition: directMessage.cc:4
    -
    class for Send request with POST method
    Definition: httpPost.h:10
    -
    void process(std::weak_ptr< CocoaTweet::OAuth::OAuth1 > _oauth)
    process request for endpoint
    Definition: new.cc:26
    - - - -
    class for using statuses/update endpoint
    Definition: new.h:13
    - - - - diff --git a/help/html/oauth_8cc.html b/help/html/oauth_8cc.html deleted file mode 100644 index 6478318..0000000 --- a/help/html/oauth_8cc.html +++ /dev/null @@ -1,136 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/oauth/oauth.cc File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    oauth.cc File Reference
    -
    -
    -
    #include "oauth.h"
    -#include "cocoatweet/util/util.h"
    -#include <random>
    -#include <ctime>
    -#include <bitset>
    -#include <sstream>
    -#include <string>
    -#include <cstring>
    -#include <iterator>
    -#include <nlohmann/json.hpp>
    -#include <cocoatweet/exception/invalidParameterException.h>
    -#include <openssl/hmac.h>
    -#include <openssl/sha.h>
    -#include <openssl/buffer.h>
    -#include <curl/curl.h>
    -#include <iostream>
    -
    -Include dependency graph for oauth.cc:
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - - -

    -Namespaces

     CocoaTweet
     
     CocoaTweet::OAuth
     
    -
    - - - - diff --git a/help/html/oauth_8cc__incl.map b/help/html/oauth_8cc__incl.map deleted file mode 100644 index c26694e..0000000 --- a/help/html/oauth_8cc__incl.map +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/help/html/oauth_8cc__incl.md5 b/help/html/oauth_8cc__incl.md5 deleted file mode 100644 index 6dd1f95..0000000 --- a/help/html/oauth_8cc__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -efe1d5e2ee464d4fd5ba5fc55d51b551 \ No newline at end of file diff --git a/help/html/oauth_8cc__incl.png b/help/html/oauth_8cc__incl.png deleted file mode 100644 index 054b40a..0000000 Binary files a/help/html/oauth_8cc__incl.png and /dev/null differ diff --git a/help/html/oauth_8h.html b/help/html/oauth_8h.html deleted file mode 100644 index b26fddf..0000000 --- a/help/html/oauth_8h.html +++ /dev/null @@ -1,158 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/oauth/oauth.h File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    oauth.h File Reference
    -
    -
    -
    #include <string>
    -#include <map>
    -#include <memory>
    -#include "key.h"
    -
    -Include dependency graph for oauth.h:
    -
    -
    - - - - - - - -
    -
    -This graph shows which files directly or indirectly include this file:
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    -

    Go to the source code of this file.

    - - - - -

    -Classes

    class  CocoaTweet::OAuth::OAuth1
     
    - - - - - -

    -Namespaces

     CocoaTweet
     
     CocoaTweet::OAuth
     
    -
    - - - - diff --git a/help/html/oauth_8h__dep__incl.map b/help/html/oauth_8h__dep__incl.map deleted file mode 100644 index 2bf5e1f..0000000 --- a/help/html/oauth_8h__dep__incl.map +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/help/html/oauth_8h__dep__incl.md5 b/help/html/oauth_8h__dep__incl.md5 deleted file mode 100644 index 285e6ff..0000000 --- a/help/html/oauth_8h__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -9ff0d8c719274479289d95cf6b7c04d4 \ No newline at end of file diff --git a/help/html/oauth_8h__dep__incl.png b/help/html/oauth_8h__dep__incl.png deleted file mode 100644 index b9b6208..0000000 Binary files a/help/html/oauth_8h__dep__incl.png and /dev/null differ diff --git a/help/html/oauth_8h__incl.map b/help/html/oauth_8h__incl.map deleted file mode 100644 index e16d752..0000000 --- a/help/html/oauth_8h__incl.map +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/help/html/oauth_8h__incl.md5 b/help/html/oauth_8h__incl.md5 deleted file mode 100644 index c9df47b..0000000 --- a/help/html/oauth_8h__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -fade3cc2fbdf67f456ad61b3c848a264 \ No newline at end of file diff --git a/help/html/oauth_8h__incl.png b/help/html/oauth_8h__incl.png deleted file mode 100644 index c9c834e..0000000 Binary files a/help/html/oauth_8h__incl.png and /dev/null differ diff --git a/help/html/oauth_8h_source.html b/help/html/oauth_8h_source.html deleted file mode 100644 index 3e80356..0000000 --- a/help/html/oauth_8h_source.html +++ /dev/null @@ -1,145 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/oauth/oauth.h Source File - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    oauth.h
    -
    -
    -Go to the documentation of this file.
    1 #ifndef COCOATWEET_OAUTH_OAUTH_H_
    -
    2 #define COCOATWEET_OAUTH_OAUTH_H_
    -
    3 
    -
    4 #include <string>
    -
    5 #include <map>
    -
    6 #include <memory>
    -
    7 #include "key.h"
    -
    8 
    -
    9 namespace CocoaTweet::OAuth {
    -
    10 class OAuth1 {
    -
    11 public:
    -
    12  enum AuthType { OAuth, Bearer };
    -
    13 
    -
    14  OAuth1();
    -
    15  OAuth1(const Key _key);
    -
    16  std::map<std::string, std::string> signature(const std::map<std::string, std::string>& _param,
    -
    17  const std::string& _method,
    -
    18  const std::string& _url);
    -
    19 
    -
    20  const std::string& generateBearerToken();
    -
    21  const std::string calculateAuthHeader(std::map<std::string, std::string> _bodyParam,
    -
    22  const std::string& _method, const std::string& _url);
    -
    23 
    -
    24  const std::string nonce() const;
    -
    25  const std::string timestamp() const;
    -
    26  const std::string method() const;
    -
    27  const std::string version() const;
    -
    28  const Key key() const;
    -
    29  std::map<std::string, std::string> oauthParam() const;
    -
    30  std::string hmacSha1(std::string _key, std::string _data);
    -
    31  const std::string base64(const std::string& _raw);
    -
    32 
    -
    33 private:
    -
    34  AuthType authType_;
    -
    35  Key key_;
    -
    36  const std::string SIGNATURE_METHOD_ = "HMAC-SHA1";
    -
    37  const std::string OAUTH_VERSION_ = "1.0";
    -
    38  static size_t curlCallback_(char* _ptr, size_t _size, size_t _nmemb, std::string* _stream) {
    -
    39  int realsize = _size * _nmemb;
    -
    40  _stream->append(_ptr, realsize);
    -
    41  return realsize;
    -
    42  }
    -
    43 };
    -
    44 } // namespace CocoaTweet::OAuth
    -
    45 
    -
    46 #endif
    -
    -
    @ Bearer
    Definition: oauth.h:12
    -
    std::map< std::string, std::string > oauthParam() const
    Definition: oauth.cc:170
    -
    const std::string & generateBearerToken()
    Definition: oauth.cc:80
    -
    @ OAuth
    Definition: oauth.h:12
    -
    Definition: oauth.h:10
    -
    const std::string timestamp() const
    Definition: oauth.cc:154
    -
    std::map< std::string, std::string > signature(const std::map< std::string, std::string > &_param, const std::string &_method, const std::string &_url)
    Definition: oauth.cc:30
    -
    const std::string nonce() const
    Definition: oauth.cc:141
    -
    const Key key() const
    Definition: oauth.cc:166
    -
    Definition: key.h:8
    -
    const std::string version() const
    Definition: oauth.cc:162
    -
    std::string hmacSha1(std::string _key, std::string _data)
    Definition: oauth.cc:210
    - -
    const std::string calculateAuthHeader(std::map< std::string, std::string > _bodyParam, const std::string &_method, const std::string &_url)
    Definition: oauth.cc:49
    -
    OAuth1()
    Definition: oauth.cc:26
    -
    AuthType
    Definition: oauth.h:12
    -
    const std::string base64(const std::string &_raw)
    Definition: oauth.cc:180
    -
    const std::string method() const
    Definition: oauth.cc:158
    -
    Definition: key.cc:7
    - - - - diff --git a/help/html/open.png b/help/html/open.png deleted file mode 100644 index 30f75c7..0000000 Binary files a/help/html/open.png and /dev/null differ diff --git a/help/html/pages.html b/help/html/pages.html deleted file mode 100644 index bfec0f8..0000000 --- a/help/html/pages.html +++ /dev/null @@ -1,81 +0,0 @@ - - - - - - - -CocoaTweet: Related Pages - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -
    -
    Related Pages
    -
    -
    -
    Here is a list of all related documentation pages:
    - - -
     README
    -
    -
    - - - - diff --git a/help/html/rateLimitException_8h.html b/help/html/rateLimitException_8h.html deleted file mode 100644 index bb8b3e6..0000000 --- a/help/html/rateLimitException_8h.html +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/exception/rateLimitException.h File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    rateLimitException.h File Reference
    -
    -
    -
    -Include dependency graph for rateLimitException.h:
    -
    -
    - - - - - - -
    -
    -This graph shows which files directly or indirectly include this file:
    -
    -
    - - - - - -
    -
    -

    Go to the source code of this file.

    - - - - -

    -Classes

    class  CocoaTweet::Exception::RateLimitException
     
    - - - - - -

    -Namespaces

     CocoaTweet
     
     CocoaTweet::Exception
     
    -
    - - - - diff --git a/help/html/rateLimitException_8h__dep__incl.map b/help/html/rateLimitException_8h__dep__incl.map deleted file mode 100644 index 689c628..0000000 --- a/help/html/rateLimitException_8h__dep__incl.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/help/html/rateLimitException_8h__dep__incl.md5 b/help/html/rateLimitException_8h__dep__incl.md5 deleted file mode 100644 index 33b142b..0000000 --- a/help/html/rateLimitException_8h__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -1a4fc157f66d3e97ef08184a2d6be646 \ No newline at end of file diff --git a/help/html/rateLimitException_8h__dep__incl.png b/help/html/rateLimitException_8h__dep__incl.png deleted file mode 100644 index f3beb03..0000000 Binary files a/help/html/rateLimitException_8h__dep__incl.png and /dev/null differ diff --git a/help/html/rateLimitException_8h__incl.map b/help/html/rateLimitException_8h__incl.map deleted file mode 100644 index 23d5dd6..0000000 --- a/help/html/rateLimitException_8h__incl.map +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/help/html/rateLimitException_8h__incl.md5 b/help/html/rateLimitException_8h__incl.md5 deleted file mode 100644 index 609bf9a..0000000 --- a/help/html/rateLimitException_8h__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -c244970da28c065e1ef52c2fc43caf54 \ No newline at end of file diff --git a/help/html/rateLimitException_8h__incl.png b/help/html/rateLimitException_8h__incl.png deleted file mode 100644 index 6bb8a9e..0000000 Binary files a/help/html/rateLimitException_8h__incl.png and /dev/null differ diff --git a/help/html/rateLimitException_8h_source.html b/help/html/rateLimitException_8h_source.html deleted file mode 100644 index 00792ca..0000000 --- a/help/html/rateLimitException_8h_source.html +++ /dev/null @@ -1,97 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/exception/rateLimitException.h Source File - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    rateLimitException.h
    -
    -
    -Go to the documentation of this file.
    1 #ifndef COCOATWEET_EXCEPTION_RATELIMITEXCEPTION_H_
    -
    2 #define COCOATWEET_EXCEPTION_RATELIMITEXCEPTION_H_
    -
    3 
    - -
    5 
    -
    6 namespace CocoaTweet::Exception {
    -
    7 class RateLimitException final : public Exception {
    - -
    9 };
    -
    10 } // namespace CocoaTweet::Exception
    -
    11 
    -
    12 #endif
    -
    -
    Exception(const char *_msg)
    Definition: exception.h:10
    -
    Definition: rateLimitException.h:7
    -
    Definition: authenticateException.h:6
    -
    Definition: exception.h:8
    - - - - - diff --git a/help/html/retweet_8cc.html b/help/html/retweet_8cc.html deleted file mode 100644 index 919eb51..0000000 --- a/help/html/retweet_8cc.html +++ /dev/null @@ -1,112 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api/status/retweet.cc File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    retweet.cc File Reference
    -
    -
    -
    -Include dependency graph for retweet.cc:
    -
    -
    - - - - - - - - - - - - - - -
    -
    - - - - - - - -

    -Namespaces

     CocoaTweet
     
     CocoaTweet::API
     
     CocoaTweet::API::Statuses
     
    -
    - - - - diff --git a/help/html/retweet_8cc__incl.map b/help/html/retweet_8cc__incl.map deleted file mode 100644 index 11affb1..0000000 --- a/help/html/retweet_8cc__incl.map +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/help/html/retweet_8cc__incl.md5 b/help/html/retweet_8cc__incl.md5 deleted file mode 100644 index dc28c31..0000000 --- a/help/html/retweet_8cc__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -b6481fa81fdaf3dbf4224c5887f0b1a0 \ No newline at end of file diff --git a/help/html/retweet_8cc__incl.png b/help/html/retweet_8cc__incl.png deleted file mode 100644 index e48a0d4..0000000 Binary files a/help/html/retweet_8cc__incl.png and /dev/null differ diff --git a/help/html/retweet_8h.html b/help/html/retweet_8h.html deleted file mode 100644 index b1edeca..0000000 --- a/help/html/retweet_8h.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api/status/retweet.h File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    retweet.h File Reference
    -
    -
    -
    -Include dependency graph for retweet.h:
    -
    -
    - - - - - - - - - - - - - -
    -
    -This graph shows which files directly or indirectly include this file:
    -
    -
    - - - - - -
    -
    -

    Go to the source code of this file.

    - - - - -

    -Classes

    class  CocoaTweet::API::Statuses::Retweet
     
    - - - - - - - -

    -Namespaces

     CocoaTweet
     
     CocoaTweet::API
     
     CocoaTweet::API::Statuses
     
    -
    - - - - diff --git a/help/html/retweet_8h__dep__incl.map b/help/html/retweet_8h__dep__incl.map deleted file mode 100644 index 8fff304..0000000 --- a/help/html/retweet_8h__dep__incl.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/help/html/retweet_8h__dep__incl.md5 b/help/html/retweet_8h__dep__incl.md5 deleted file mode 100644 index bbba78e..0000000 --- a/help/html/retweet_8h__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -7ec7b2c5d919c1807054dce8ab09d5aa \ No newline at end of file diff --git a/help/html/retweet_8h__dep__incl.png b/help/html/retweet_8h__dep__incl.png deleted file mode 100644 index 0bf88aa..0000000 Binary files a/help/html/retweet_8h__dep__incl.png and /dev/null differ diff --git a/help/html/retweet_8h__incl.map b/help/html/retweet_8h__incl.map deleted file mode 100644 index fb045cc..0000000 --- a/help/html/retweet_8h__incl.map +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/help/html/retweet_8h__incl.md5 b/help/html/retweet_8h__incl.md5 deleted file mode 100644 index 35d5e8f..0000000 --- a/help/html/retweet_8h__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -2917ad6e60184ec08674a4213d373dff \ No newline at end of file diff --git a/help/html/retweet_8h__incl.png b/help/html/retweet_8h__incl.png deleted file mode 100644 index 5a8d5d2..0000000 Binary files a/help/html/retweet_8h__incl.png and /dev/null differ diff --git a/help/html/retweet_8h_source.html b/help/html/retweet_8h_source.html deleted file mode 100644 index 5f2f6dc..0000000 --- a/help/html/retweet_8h_source.html +++ /dev/null @@ -1,107 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api/status/retweet.h Source File - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    retweet.h
    -
    -
    -Go to the documentation of this file.
    1 #ifndef COCOATWEET_API_STATUS_RETWEET_H_
    -
    2 #define COCOATWEET_API_STATUS_RETWEET_H_
    -
    3 
    - - -
    6 
    - - -
    9 public:
    -
    10  Retweet();
    -
    11 
    -
    12  void id(const std::string& _id);
    -
    13 
    -
    14  CocoaTweet::API::Model::Tweet process(std::weak_ptr<CocoaTweet::OAuth::OAuth1> _oauth);
    -
    15 };
    -
    16 } // namespace CocoaTweet::API::Statuses
    -
    17 
    -
    18 #endif
    -
    -
    Definition: retweet.h:8
    -
    class for Send request with POST method
    Definition: httpPost.h:10
    -
    CocoaTweet::API::Model::Tweet process(std::weak_ptr< CocoaTweet::OAuth::OAuth1 > _oauth)
    Definition: retweet.cc:11
    -
    data class for tweet object
    Definition: tweet.h:10
    - -
    void id(const std::string &_id)
    Definition: retweet.cc:6
    -
    Retweet()
    Definition: retweet.cc:4
    - -
    Definition: destroy.cc:4
    - - - - diff --git a/help/html/search/all_0.html b/help/html/search/all_0.html deleted file mode 100644 index 26dd244..0000000 --- a/help/html/search/all_0.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/all_0.js b/help/html/search/all_0.js deleted file mode 100644 index 36f2491..0000000 --- a/help/html/search/all_0.js +++ /dev/null @@ -1,15 +0,0 @@ -var searchData= -[ - ['accesstoken_0',['accessToken',['../classCocoaTweet_1_1OAuth_1_1Key.html#a450cdbad7316645745fdb341b479c813',1,'CocoaTweet::OAuth::Key::accessToken(const std::string &_accessToken)'],['../classCocoaTweet_1_1OAuth_1_1Key.html#a480b1b4f1c03b3bdd7c1b59b5f8fc4d5',1,'CocoaTweet::OAuth::Key::accessToken() const']]], - ['accesstokensecret_1',['accessTokenSecret',['../classCocoaTweet_1_1OAuth_1_1Key.html#a0449a88724e7feca799bceaf0f1c1e78',1,'CocoaTweet::OAuth::Key::accessTokenSecret(const std::string &_accessTokenSecret)'],['../classCocoaTweet_1_1OAuth_1_1Key.html#aaf7813cff260ffd803eada11738a0b75',1,'CocoaTweet::OAuth::Key::accessTokenSecret() const']]], - ['add_5fexecutable_2',['add_executable',['../src_2CMakeLists_8txt.html#af71960b53f14f77bfd0be71515d791f1',1,'CMakeLists.txt']]], - ['add_5fsubdirectory_3',['add_subdirectory',['../src_2CMakeLists_8txt.html#a1a50f7d628d8c645b7ab7c46a26384da',1,'CMakeLists.txt']]], - ['api_4',['API',['../classCocoaTweet_1_1API_1_1API.html',1,'CocoaTweet::API::API'],['../classCocoaTweet_1_1API_1_1API.html#a28775a63dd897efa3fc410c9d82dedfd',1,'CocoaTweet::API::API::API()']]], - ['api_2ecc_5',['api.cc',['../api_8cc.html',1,'']]], - ['api_2eh_6',['api.h',['../api_8h.html',1,'']]], - ['attachmenturl_7',['attachmentUrl',['../structCocoaTweet_1_1API_1_1Statuses_1_1Status_1_1Options.html#a789c4e2479c44c8e4fc56af449abe6e1',1,'CocoaTweet::API::Statuses::Status::Options::attachmentUrl()'],['../classCocoaTweet_1_1API_1_1Statuses_1_1Update.html#a62a2c887a196e86e5522a6550ad54a64',1,'CocoaTweet::API::Statuses::Update::attachmentUrl()']]], - ['authenticateexception_8',['AuthenticateException',['../classCocoaTweet_1_1Exception_1_1AuthenticateException.html',1,'CocoaTweet::Exception']]], - ['authenticateexception_2eh_9',['authenticateException.h',['../authenticateException_8h.html',1,'']]], - ['authtype_10',['AuthType',['../classCocoaTweet_1_1OAuth_1_1OAuth1.html#ad6f15c279edf7725456d086b449eaeb5',1,'CocoaTweet::OAuth::OAuth1']]], - ['autopopulatereplymetadata_11',['autoPopulateReplyMetaData',['../structCocoaTweet_1_1API_1_1Statuses_1_1Status_1_1Options.html#a83f948512ee31537afa9e3c0112a9640',1,'CocoaTweet::API::Statuses::Status::Options::autoPopulateReplyMetaData()'],['../classCocoaTweet_1_1API_1_1Statuses_1_1Update.html#a77d4f41f814ce2dcfcf80b9151ac4623',1,'CocoaTweet::API::Statuses::Update::autoPopulateReplyMetaData()']]] -]; diff --git a/help/html/search/all_1.html b/help/html/search/all_1.html deleted file mode 100644 index 8eb215b..0000000 --- a/help/html/search/all_1.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/all_1.js b/help/html/search/all_1.js deleted file mode 100644 index ca8945d..0000000 --- a/help/html/search/all_1.js +++ /dev/null @@ -1,8 +0,0 @@ -var searchData= -[ - ['bannerurl_12',['bannerUrl',['../classCocoaTweet_1_1API_1_1Model_1_1User.html#a553a71f355bf2ecbde9cdcc89b6b9f60',1,'CocoaTweet::API::Model::User::bannerUrl(const std::string &_banner)'],['../classCocoaTweet_1_1API_1_1Model_1_1User.html#a1d5fca794e8915c88f1cfe2ab3d6bc7f',1,'CocoaTweet::API::Model::User::bannerUrl() const']]], - ['base64_13',['base64',['../classCocoaTweet_1_1OAuth_1_1OAuth1.html#aa389f10a1cafa5c26413bb28cdd27d3b',1,'CocoaTweet::OAuth::OAuth1']]], - ['bearer_14',['Bearer',['../classCocoaTweet_1_1OAuth_1_1OAuth1.html#ad6f15c279edf7725456d086b449eaeb5a272acfd711cf3918953dc1106475f506',1,'CocoaTweet::OAuth::OAuth1']]], - ['bearertoken_15',['bearerToken',['../classCocoaTweet_1_1OAuth_1_1Key.html#acba7820ea191e36f34c5d85bf72a87ed',1,'CocoaTweet::OAuth::Key::bearerToken(const std::string &_bearer)'],['../classCocoaTweet_1_1OAuth_1_1Key.html#ae8120fc4999689f34ec4daaa57129630',1,'CocoaTweet::OAuth::Key::bearerToken() const']]], - ['bodyparam_5f_16',['bodyParam_',['../classCocoaTweet_1_1API_1_1Interface_1_1HttpBase.html#a7c543dfa69524004df9e0fdcaa610313',1,'CocoaTweet::API::Interface::HttpBase']]] -]; diff --git a/help/html/search/all_10.html b/help/html/search/all_10.html deleted file mode 100644 index 6fd3a4a..0000000 --- a/help/html/search/all_10.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/all_10.js b/help/html/search/all_10.js deleted file mode 100644 index b189717..0000000 --- a/help/html/search/all_10.js +++ /dev/null @@ -1,13 +0,0 @@ -var searchData= -[ - ['readme_119',['README',['../md_README.html',1,'']]], - ['ratelimitexception_120',['RateLimitException',['../classCocoaTweet_1_1Exception_1_1RateLimitException.html',1,'CocoaTweet::Exception']]], - ['ratelimitexception_2eh_121',['rateLimitException.h',['../rateLimitException_8h.html',1,'']]], - ['readme_2emd_122',['README.md',['../README_8md.html',1,'']]], - ['recipient_123',['recipient',['../classCocoaTweet_1_1API_1_1DirectMessages_1_1New.html#afd95acae9607546a8ca37ea22f438139',1,'CocoaTweet::API::DirectMessages::New']]], - ['remain_124',['remain',['../classCocoaTweet_1_1API_1_1Model_1_1MediaStore.html#a2adf7192194944149c9662d66f9a6a42',1,'CocoaTweet::API::Model::MediaStore::remain(const unsigned int _remain)'],['../classCocoaTweet_1_1API_1_1Model_1_1MediaStore.html#a25d883e082c7a90f4bb96d84aa8b2830',1,'CocoaTweet::API::Model::MediaStore::remain() const']]], - ['replytostatusid_125',['replyToStatusId',['../structCocoaTweet_1_1API_1_1Statuses_1_1Status_1_1Options.html#a34f95b6dc6a9847e517cbf7d31ca9383',1,'CocoaTweet::API::Statuses::Status::Options::replyToStatusId()'],['../classCocoaTweet_1_1API_1_1Statuses_1_1Update.html#aea57ec43f8b4eaf31414bef9221d3dbc',1,'CocoaTweet::API::Statuses::Update::replyToStatusId()']]], - ['retweet_126',['Retweet',['../classCocoaTweet_1_1API_1_1Statuses_1_1Retweet.html',1,'CocoaTweet::API::Statuses::Retweet'],['../classCocoaTweet_1_1API_1_1Statuses_1_1Retweet.html#adf8c15760334a81b608388f64b79745f',1,'CocoaTweet::API::Statuses::Retweet::Retweet()'],['../classCocoaTweet_1_1API_1_1Statuses_1_1Status.html#afe60c4bb67d191b8ef989ea4236ffb5d',1,'CocoaTweet::API::Statuses::Status::retweet()']]], - ['retweet_2ecc_127',['retweet.cc',['../retweet_8cc.html',1,'']]], - ['retweet_2eh_128',['retweet.h',['../retweet_8h.html',1,'']]] -]; diff --git a/help/html/search/all_11.html b/help/html/search/all_11.html deleted file mode 100644 index f78343b..0000000 --- a/help/html/search/all_11.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/all_11.js b/help/html/search/all_11.js deleted file mode 100644 index cf12c3b..0000000 --- a/help/html/search/all_11.js +++ /dev/null @@ -1,12 +0,0 @@ -var searchData= -[ - ['screenname_129',['screenName',['../classCocoaTweet_1_1API_1_1Model_1_1User.html#ab186a3daf7ff7b26b4d880dc0b7f65e8',1,'CocoaTweet::API::Model::User::screenName(const std::string &_screen)'],['../classCocoaTweet_1_1API_1_1Model_1_1User.html#a5a7d1dc841740c1adc75d29f1c06d536',1,'CocoaTweet::API::Model::User::screenName() const'],['../classCocoaTweet_1_1API_1_1Statuses_1_1UserTimeline.html#a0351e221076b359bd181973bb99ec34c',1,'CocoaTweet::API::Statuses::UserTimeline::screenName()']]], - ['secret_130',['secret',['../classCocoaTweet_1_1OAuth_1_1Key.html#a48d94ebbd486ffabc10b0b5417182cdd',1,'CocoaTweet::OAuth::Key']]], - ['signature_131',['signature',['../classCocoaTweet_1_1OAuth_1_1OAuth1.html#a605a5ee2fc35869292234fa2c3dea420',1,'CocoaTweet::OAuth::OAuth1']]], - ['size_132',['size',['../classCocoaTweet_1_1API_1_1Model_1_1MediaStore.html#a7f9e922b93522ae810c487b8da7d772f',1,'CocoaTweet::API::Model::MediaStore::size(const unsigned int _size)'],['../classCocoaTweet_1_1API_1_1Model_1_1MediaStore.html#aab8defad4ab8eab424bdb831aa13ae9f',1,'CocoaTweet::API::Model::MediaStore::size() const']]], - ['source_133',['source',['../classCocoaTweet_1_1API_1_1Model_1_1Tweet.html#ad55c3f4c66e34de7e159ab9769745106',1,'CocoaTweet::API::Model::Tweet::source(const std::string _source)'],['../classCocoaTweet_1_1API_1_1Model_1_1Tweet.html#ade60f2ce9c6ead8b2327d64847b6d272',1,'CocoaTweet::API::Model::Tweet::source() const']]], - ['state_134',['state',['../classCocoaTweet_1_1API_1_1Model_1_1MediaStore.html#ad2ef76ab9b8b307c2abe3f80397adc1a',1,'CocoaTweet::API::Model::MediaStore::state(const std::string _state)'],['../classCocoaTweet_1_1API_1_1Model_1_1MediaStore.html#aa708ce16bce734d9f852d141c0450e33',1,'CocoaTweet::API::Model::MediaStore::state() const']]], - ['status_135',['Status',['../classCocoaTweet_1_1API_1_1Statuses_1_1Status.html',1,'CocoaTweet::API::Statuses::Status'],['../classCocoaTweet_1_1API_1_1Statuses_1_1Status.html#a4d0a2245d5b5d8fb88fd5415746491bf',1,'CocoaTweet::API::Statuses::Status::Status()=default'],['../classCocoaTweet_1_1API_1_1Statuses_1_1Status.html#a8b2e666ae6d3d6f7195f80c995f871c9',1,'CocoaTweet::API::Statuses::Status::Status(std::shared_ptr< CocoaTweet::OAuth::OAuth1 > _oauth)'],['../classCocoaTweet_1_1API_1_1API.html#a33328fef1c2ac0f634449d6c60742449',1,'CocoaTweet::API::API::status()'],['../classCocoaTweet_1_1API_1_1Statuses_1_1Update.html#a82a03eb9ed10d0235bc5f5876472359b',1,'CocoaTweet::API::Statuses::Update::status()']]], - ['status_2ecc_136',['status.cc',['../status_8cc.html',1,'']]], - ['status_2eh_137',['status.h',['../status_8h.html',1,'']]] -]; diff --git a/help/html/search/all_12.html b/help/html/search/all_12.html deleted file mode 100644 index dd9ff1d..0000000 --- a/help/html/search/all_12.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/all_12.js b/help/html/search/all_12.js deleted file mode 100644 index 9a41066..0000000 --- a/help/html/search/all_12.js +++ /dev/null @@ -1,17 +0,0 @@ -var searchData= -[ - ['text_138',['text',['../classCocoaTweet_1_1API_1_1Model_1_1Tweet.html#a596cda729c5b1565da0adbf02125acba',1,'CocoaTweet::API::Model::Tweet::text(const std::string _text)'],['../classCocoaTweet_1_1API_1_1Model_1_1Tweet.html#a46bd67b016af890ad85836e5c1aa6a12',1,'CocoaTweet::API::Model::Tweet::text() const']]], - ['timestamp_139',['timestamp',['../classCocoaTweet_1_1OAuth_1_1OAuth1.html#a8e52c044b277a6834ac6452d3552bff3',1,'CocoaTweet::OAuth::OAuth1']]], - ['tokeninvalidexception_140',['TokenInvalidException',['../classCocoaTweet_1_1Exception_1_1TokenInvalidException.html',1,'CocoaTweet::Exception']]], - ['tokeninvalidexception_2eh_141',['tokenInvalidException.h',['../tokenInvalidException_8h.html',1,'']]], - ['trimuser_142',['trimUser',['../structCocoaTweet_1_1API_1_1Statuses_1_1Status_1_1Options.html#a6b445d1b1122acf2057fb284bb0bcf52',1,'CocoaTweet::API::Statuses::Status::Options::trimUser()'],['../classCocoaTweet_1_1API_1_1Statuses_1_1Update.html#a52ee15455ae4e5330d73ba0f93c9fa6f',1,'CocoaTweet::API::Statuses::Update::trimUser()']]], - ['tweet_143',['Tweet',['../classCocoaTweet_1_1API_1_1Model_1_1Tweet.html',1,'CocoaTweet::API::Model::Tweet'],['../classCocoaTweet_1_1API_1_1Model_1_1Tweet.html#a76048fae79efd49eb2282f518e40c763',1,'CocoaTweet::API::Model::Tweet::Tweet()=default'],['../classCocoaTweet_1_1API_1_1Model_1_1Tweet.html#a5be21495e0296eb553eda9af2247a417',1,'CocoaTweet::API::Model::Tweet::Tweet(const Tweet &)=default'],['../classCocoaTweet_1_1API_1_1Model_1_1Tweet.html#a46c35c94e914a27109781529fc04b0ae',1,'CocoaTweet::API::Model::Tweet::Tweet(const std::string &_json)']]], - ['tweet_2ecc_144',['tweet.cc',['../tweet_8cc.html',1,'']]], - ['tweet_2eh_145',['tweet.h',['../tweet_8h.html',1,'']]], - ['tweetduplicateexception_146',['TweetDuplicateException',['../classCocoaTweet_1_1Exception_1_1TweetDuplicateException.html',1,'CocoaTweet::Exception']]], - ['tweetduplicateexception_2eh_147',['tweetDuplicateException.h',['../tweetDuplicateException_8h.html',1,'']]], - ['tweetnotfoundexception_148',['TweetNotFoundException',['../classCocoaTweet_1_1Exception_1_1TweetNotFoundException.html',1,'CocoaTweet::Exception']]], - ['tweetnotfoundexception_2eh_149',['tweetNotFoundException.h',['../tweetNotFoundException_8h.html',1,'']]], - ['tweettoolongexception_150',['TweetTooLongException',['../classCocoaTweet_1_1Exception_1_1TweetTooLongException.html',1,'CocoaTweet::Exception']]], - ['tweettoolongexception_2eh_151',['tweetTooLongException.h',['../tweetTooLongException_8h.html',1,'']]] -]; diff --git a/help/html/search/all_13.html b/help/html/search/all_13.html deleted file mode 100644 index 2611a10..0000000 --- a/help/html/search/all_13.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/all_13.js b/help/html/search/all_13.js deleted file mode 100644 index fb8b558..0000000 --- a/help/html/search/all_13.js +++ /dev/null @@ -1,25 +0,0 @@ -var searchData= -[ - ['unretweet_152',['Unretweet',['../classCocoaTweet_1_1API_1_1Statuses_1_1Unretweet.html',1,'CocoaTweet::API::Statuses::Unretweet'],['../classCocoaTweet_1_1API_1_1Statuses_1_1Unretweet.html#ac6169b5cd910d0ac03216b2f6e033b20',1,'CocoaTweet::API::Statuses::Unretweet::Unretweet()'],['../classCocoaTweet_1_1API_1_1Statuses_1_1Status.html#a0cbf69ab8281a5c054b03f4780c3996c',1,'CocoaTweet::API::Statuses::Status::unretweet()']]], - ['unretweet_2ecc_153',['unretweet.cc',['../unretweet_8cc.html',1,'']]], - ['unretweet_2eh_154',['unretweet.h',['../unretweet_8h.html',1,'']]], - ['unsupportedmediatypeexception_155',['UnsupportedMediaTypeException',['../classCocoaTweet_1_1Exception_1_1UnsupportedMediaTypeException.html',1,'CocoaTweet::Exception']]], - ['unsupportedmediatypeexception_2eh_156',['unsupportedMediaTypeException.h',['../unsupportedMediaTypeException_8h.html',1,'']]], - ['update_157',['Update',['../classCocoaTweet_1_1API_1_1Statuses_1_1Update.html',1,'CocoaTweet::API::Statuses::Update'],['../classCocoaTweet_1_1API_1_1Statuses_1_1Status.html#a8ff87af2b64b7c334a92fc07018a4701',1,'CocoaTweet::API::Statuses::Status::update(const std::string &_status) const'],['../classCocoaTweet_1_1API_1_1Statuses_1_1Status.html#a90f0b9e93c396e29cb5697095e2b7e64',1,'CocoaTweet::API::Statuses::Status::update(const std::string &_status, const Options _options) const'],['../classCocoaTweet_1_1API_1_1Statuses_1_1Status.html#aaec199e7aee81b4dc438e7fc0a8a3b66',1,'CocoaTweet::API::Statuses::Status::update(const std::string &_status, std::vector< std::string > _mediaId) const'],['../classCocoaTweet_1_1API_1_1Statuses_1_1Update.html#a79ba001f67640f34f9facdec885e48cd',1,'CocoaTweet::API::Statuses::Update::Update()']]], - ['update_2ecc_158',['update.cc',['../update_8cc.html',1,'']]], - ['update_2eh_159',['update.h',['../update_8h.html',1,'']]], - ['upload_160',['Upload',['../classCocoaTweet_1_1API_1_1Medias_1_1Upload.html',1,'CocoaTweet::API::Medias::Upload'],['../classCocoaTweet_1_1API_1_1Medias_1_1Upload.html#a8b641cae9515e32b9d919c96dd7ee9bb',1,'CocoaTweet::API::Medias::Upload::Upload()'],['../classCocoaTweet_1_1API_1_1Medias_1_1Media.html#aa91dfae811124ad118a93802fb3aec1d',1,'CocoaTweet::API::Medias::Media::upload()']]], - ['upload_2ecc_161',['upload.cc',['../upload_8cc.html',1,'']]], - ['upload_2eh_162',['upload.h',['../upload_8h.html',1,'']]], - ['url_163',['url',['../classCocoaTweet_1_1API_1_1Model_1_1User.html#a223e8111ca6b31a057a738444f5ca89e',1,'CocoaTweet::API::Model::User::url(const std::string &_url)'],['../classCocoaTweet_1_1API_1_1Model_1_1User.html#a3d9f5117be6a4929979b16e2371d2feb',1,'CocoaTweet::API::Model::User::url() const']]], - ['url_5f_164',['url_',['../classCocoaTweet_1_1API_1_1Interface_1_1HttpBase.html#a6511d018265ca90a5c675b375b8feee0',1,'CocoaTweet::API::Interface::HttpBase']]], - ['urlencode_165',['urlEncode',['../namespaceCocoaTweet_1_1Util.html#ac46dcd54bb4c11d0c2ce409545f10d4c',1,'CocoaTweet::Util']]], - ['user_166',['User',['../classCocoaTweet_1_1API_1_1Model_1_1User.html',1,'CocoaTweet::API::Model::User'],['../classCocoaTweet_1_1API_1_1Model_1_1Tweet.html#a42236611b51f3d15a561c5d67fa83fbc',1,'CocoaTweet::API::Model::Tweet::user(const CocoaTweet::API::Model::User _user)'],['../classCocoaTweet_1_1API_1_1Model_1_1Tweet.html#aa076951d2f3d005fcddcd0c046c798bb',1,'CocoaTweet::API::Model::Tweet::user() const'],['../classCocoaTweet_1_1API_1_1Model_1_1User.html#a47fc47345fdaa82bfe062f83b7e92c8e',1,'CocoaTweet::API::Model::User::User()=default'],['../classCocoaTweet_1_1API_1_1Model_1_1User.html#a03168506e73d4340e185f0febab052ac',1,'CocoaTweet::API::Model::User::User(const User &)=default'],['../classCocoaTweet_1_1API_1_1Model_1_1User.html#a92bd9e2c65f6effd68eca0441a8718b9',1,'CocoaTweet::API::Model::User::User(const std::string &_json)']]], - ['user_2ecc_167',['user.cc',['../user_8cc.html',1,'']]], - ['user_2eh_168',['user.h',['../user_8h.html',1,'']]], - ['usertimeline_169',['UserTimeline',['../classCocoaTweet_1_1API_1_1Statuses_1_1UserTimeline.html',1,'CocoaTweet::API::Statuses::UserTimeline'],['../classCocoaTweet_1_1API_1_1Statuses_1_1UserTimeline.html#a775cf10d0deeabc0d7676ea8deb6fc65',1,'CocoaTweet::API::Statuses::UserTimeline::UserTimeline()'],['../classCocoaTweet_1_1API_1_1Statuses_1_1Status.html#a646cdade651997556a0756a5eb892bd4',1,'CocoaTweet::API::Statuses::Status::userTimeline()']]], - ['usertimeline_2ecc_170',['userTimeline.cc',['../userTimeline_8cc.html',1,'']]], - ['usertimeline_2eh_171',['userTimeline.h',['../userTimeline_8h.html',1,'']]], - ['util_2ecc_172',['util.cc',['../util_8cc.html',1,'']]], - ['util_2eh_173',['util.h',['../util_8h.html',1,'']]] -]; diff --git a/help/html/search/all_14.html b/help/html/search/all_14.html deleted file mode 100644 index 72d12e9..0000000 --- a/help/html/search/all_14.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/all_14.js b/help/html/search/all_14.js deleted file mode 100644 index b24a1db..0000000 --- a/help/html/search/all_14.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['version_174',['version',['../classCocoaTweet_1_1OAuth_1_1OAuth1.html#ab8e90f4d24bf038419020d76a329c5b8',1,'CocoaTweet::OAuth::OAuth1']]] -]; diff --git a/help/html/search/all_15.html b/help/html/search/all_15.html deleted file mode 100644 index 767aec3..0000000 --- a/help/html/search/all_15.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/all_15.js b/help/html/search/all_15.js deleted file mode 100644 index 76413cf..0000000 --- a/help/html/search/all_15.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['what_175',['what',['../classCocoaTweet_1_1Exception_1_1Exception.html#a251aff23f9da55802be51d4fabadf59b',1,'CocoaTweet::Exception::Exception']]] -]; diff --git a/help/html/search/all_16.html b/help/html/search/all_16.html deleted file mode 100644 index 7bd7afe..0000000 --- a/help/html/search/all_16.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/all_16.js b/help/html/search/all_16.js deleted file mode 100644 index e0d0d1f..0000000 --- a/help/html/search/all_16.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['z_176',['z',['../CMakeLists_8txt.html#a976e76516b81c3e0f6f677d39beb977c',1,'CMakeLists.txt']]] -]; diff --git a/help/html/search/all_17.html b/help/html/search/all_17.html deleted file mode 100644 index 35702ec..0000000 --- a/help/html/search/all_17.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/all_17.js b/help/html/search/all_17.js deleted file mode 100644 index c961079..0000000 --- a/help/html/search/all_17.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['_7eexception_177',['~Exception',['../classCocoaTweet_1_1Exception_1_1Exception.html#a5a71f213ee8533c03530f74f4aa0756a',1,'CocoaTweet::Exception::Exception']]] -]; diff --git a/help/html/search/all_18.html b/help/html/search/all_18.html deleted file mode 100644 index 540cdb6..0000000 --- a/help/html/search/all_18.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/all_18.js b/help/html/search/all_18.js deleted file mode 100644 index 539b686..0000000 --- a/help/html/search/all_18.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['z_864',['z',['../CMakeCache_8txt.html#a25ed1bcb423b0b7200f485fc5ff71c8e',1,'z(): CMakeCache.txt'],['../CMakeLists_8txt.html#a976e76516b81c3e0f6f677d39beb977c',1,'z(): CMakeLists.txt']]] -]; diff --git a/help/html/search/all_19.html b/help/html/search/all_19.html deleted file mode 100644 index 14e13e7..0000000 --- a/help/html/search/all_19.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/all_19.js b/help/html/search/all_19.js deleted file mode 100644 index 8a85db0..0000000 --- a/help/html/search/all_19.js +++ /dev/null @@ -1,18 +0,0 @@ -var searchData= -[ - ['_7ebasic_5fjson_865',['~basic_json',['../classnlohmann_1_1basic__json.html#a7d35fcb7c72f755a30ae433e58083eca',1,'nlohmann::basic_json::~basic_json() noexcept'],['../classnlohmann_1_1basic__json.html#a7d35fcb7c72f755a30ae433e58083eca',1,'nlohmann::basic_json::~basic_json() noexcept']]], - ['_7ebinary_5freader_866',['~binary_reader',['../classnlohmann_1_1detail_1_1binary__reader.html#a18e0a63e22dbdad5f6964276b81b813a',1,'nlohmann::detail::binary_reader::~binary_reader()=default'],['../classnlohmann_1_1detail_1_1binary__reader.html#a18e0a63e22dbdad5f6964276b81b813a',1,'nlohmann::detail::binary_reader::~binary_reader()=default']]], - ['_7eexception_867',['~Exception',['../classCocoaTweet_1_1Exception_1_1Exception.html#a5a71f213ee8533c03530f74f4aa0756a',1,'CocoaTweet::Exception::Exception']]], - ['_7efile_5finput_5fadapter_868',['~file_input_adapter',['../classnlohmann_1_1detail_1_1file__input__adapter.html#af96552e4560be08b201e62a36e6b6189',1,'nlohmann::detail::file_input_adapter']]], - ['_7einput_5fadapter_5fprotocol_869',['~input_adapter_protocol',['../structnlohmann_1_1detail_1_1input__adapter__protocol.html#a92dac74def4ac5adacd0684088bd4082',1,'nlohmann::detail::input_adapter_protocol']]], - ['_7einput_5fbuffer_5fadapter_870',['~input_buffer_adapter',['../classnlohmann_1_1detail_1_1input__buffer__adapter.html#ac242b822b2f6772e5fc682ddb80cb066',1,'nlohmann::detail::input_buffer_adapter']]], - ['_7einput_5fstream_5fadapter_871',['~input_stream_adapter',['../classnlohmann_1_1detail_1_1input__stream__adapter.html#a2d71eb469267abd864f765481d1e823f',1,'nlohmann::detail::input_stream_adapter::~input_stream_adapter() override'],['../classnlohmann_1_1detail_1_1input__stream__adapter.html#a1d29416acc75b02bfaf251d9d8ef8f36',1,'nlohmann::detail::input_stream_adapter::~input_stream_adapter()']]], - ['_7ejson_5fref_872',['~json_ref',['../classnlohmann_1_1detail_1_1json__ref.html#a8bcd4cfcafe952ce5140f8cb35ebe2f6',1,'nlohmann::detail::json_ref::~json_ref()=default'],['../classnlohmann_1_1detail_1_1json__ref.html#a8bcd4cfcafe952ce5140f8cb35ebe2f6',1,'nlohmann::detail::json_ref::~json_ref()=default']]], - ['_7ejson_5fsax_873',['~json_sax',['../structnlohmann_1_1json__sax.html#af31bacfa81aa7818d8639d1da65c8eb5',1,'nlohmann::json_sax::~json_sax()=default'],['../structnlohmann_1_1json__sax.html#af31bacfa81aa7818d8639d1da65c8eb5',1,'nlohmann::json_sax::~json_sax()=default']]], - ['_7ejson_5fsax_5fdom_5fcallback_5fparser_874',['~json_sax_dom_callback_parser',['../classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#a54ffcdfb0a8c5c9a876cd003b404ef4b',1,'nlohmann::detail::json_sax_dom_callback_parser::~json_sax_dom_callback_parser()=default'],['../classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#a54ffcdfb0a8c5c9a876cd003b404ef4b',1,'nlohmann::detail::json_sax_dom_callback_parser::~json_sax_dom_callback_parser()=default']]], - ['_7ejson_5fsax_5fdom_5fparser_875',['~json_sax_dom_parser',['../classnlohmann_1_1detail_1_1json__sax__dom__parser.html#a4b93deb5c1d716dcfb33b3ed8a00ac4d',1,'nlohmann::detail::json_sax_dom_parser::~json_sax_dom_parser()=default'],['../classnlohmann_1_1detail_1_1json__sax__dom__parser.html#a4b93deb5c1d716dcfb33b3ed8a00ac4d',1,'nlohmann::detail::json_sax_dom_parser::~json_sax_dom_parser()=default']]], - ['_7elexer_876',['~lexer',['../classnlohmann_1_1detail_1_1lexer.html#a2f2ef6f5aca9a0c48fcfb1290f7b2b0d',1,'nlohmann::detail::lexer::~lexer()=default'],['../classnlohmann_1_1detail_1_1lexer.html#a2f2ef6f5aca9a0c48fcfb1290f7b2b0d',1,'nlohmann::detail::lexer::~lexer()=default']]], - ['_7enonesuch_877',['~nonesuch',['../structnlohmann_1_1detail_1_1nonesuch.html#a7b1119845860e548b67f1644a2084373',1,'nlohmann::detail::nonesuch::~nonesuch()=delete'],['../structnlohmann_1_1detail_1_1nonesuch.html#a7b1119845860e548b67f1644a2084373',1,'nlohmann::detail::nonesuch::~nonesuch()=delete']]], - ['_7eoutput_5fadapter_5fprotocol_878',['~output_adapter_protocol',['../structnlohmann_1_1detail_1_1output__adapter__protocol.html#ad71cdc057030f8a775a191face25061a',1,'nlohmann::detail::output_adapter_protocol::~output_adapter_protocol()=default'],['../structnlohmann_1_1detail_1_1output__adapter__protocol.html#ad71cdc057030f8a775a191face25061a',1,'nlohmann::detail::output_adapter_protocol::~output_adapter_protocol()=default']]], - ['_7eserializer_879',['~serializer',['../classnlohmann_1_1detail_1_1serializer.html#aa6c62b51cbebb185307df851dc0167f0',1,'nlohmann::detail::serializer::~serializer()=default'],['../classnlohmann_1_1detail_1_1serializer.html#aa6c62b51cbebb185307df851dc0167f0',1,'nlohmann::detail::serializer::~serializer()=default']]] -]; diff --git a/help/html/search/all_2.html b/help/html/search/all_2.html deleted file mode 100644 index b26d916..0000000 --- a/help/html/search/all_2.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/all_2.js b/help/html/search/all_2.js deleted file mode 100644 index 4f65b1b..0000000 --- a/help/html/search/all_2.js +++ /dev/null @@ -1,29 +0,0 @@ -var searchData= -[ - ['api_17',['API',['../namespaceCocoaTweet_1_1API.html',1,'CocoaTweet']]], - ['calculateauthheader_18',['calculateAuthHeader',['../classCocoaTweet_1_1OAuth_1_1OAuth1.html#a5954ac3bff9e6bfdd793808c9ac685fb',1,'CocoaTweet::OAuth::OAuth1']]], - ['cmake_5fminimum_5frequired_19',['cmake_minimum_required',['../CMakeLists_8txt.html#ac5041f8acc13608b40e8ef1e84beb40a',1,'CMakeLists.txt']]], - ['cmakelists_2etxt_20',['CMakeLists.txt',['../CMakeLists_8txt.html',1,'(Global Namespace)'],['../src_2CMakeLists_8txt.html',1,'(Global Namespace)'],['../src_2cocoatweet_2CMakeLists_8txt.html',1,'(Global Namespace)']]], - ['cocoatweet_21',['CocoaTweet',['../namespaceCocoaTweet.html',1,'']]], - ['common_22',['common',['../CMakeLists_8txt.html#ab073f774aac3d0d478f24fc923c505d5',1,'CMakeLists.txt']]], - ['consumerkey_23',['consumerKey',['../classCocoaTweet_1_1OAuth_1_1Key.html#a50981b84093f2062bf233b35c8db7db2',1,'CocoaTweet::OAuth::Key::consumerKey(const std::string &_consumerKey)'],['../classCocoaTweet_1_1OAuth_1_1Key.html#a562a039b051219a2439deb13bf5026e2',1,'CocoaTweet::OAuth::Key::consumerKey() const']]], - ['consumersecret_24',['consumerSecret',['../classCocoaTweet_1_1OAuth_1_1Key.html#a37903c4d7ac67260891e6a49d72b7f79',1,'CocoaTweet::OAuth::Key::consumerSecret(const std::string &_consumerSecret)'],['../classCocoaTweet_1_1OAuth_1_1Key.html#a02c8645e7643dbd2480bea48f298b836',1,'CocoaTweet::OAuth::Key::consumerSecret() const']]], - ['contenttype_5f_25',['contentType_',['../classCocoaTweet_1_1API_1_1Interface_1_1HttpBase.html#aa80a8d2b339e3eed6f9e031518f8193b',1,'CocoaTweet::API::Interface::HttpBase']]], - ['coord_26',['coord',['../structCocoaTweet_1_1API_1_1Statuses_1_1Status_1_1Options.html#ab24c15ece20c3aef129d2924fb21b3d0',1,'CocoaTweet::API::Statuses::Status::Options::coord()'],['../classCocoaTweet_1_1API_1_1Statuses_1_1Update.html#a75886f7953f8c82b644f3d09b9706726',1,'CocoaTweet::API::Statuses::Update::coord()']]], - ['create_27',['Create',['../classCocoaTweet_1_1API_1_1Favorites_1_1Create.html',1,'CocoaTweet::API::Favorites::Create'],['../classCocoaTweet_1_1API_1_1Favorites_1_1Create.html#a5fc5708f4d59a41d1cd52c4bbd751312',1,'CocoaTweet::API::Favorites::Create::Create()'],['../classCocoaTweet_1_1API_1_1Favorites_1_1Favorite.html#a9ee11a3e1e569b4399bd65c9c4814db3',1,'CocoaTweet::API::Favorites::Favorite::create()']]], - ['create_2ecc_28',['create.cc',['../create_8cc.html',1,'']]], - ['create_2eh_29',['create.h',['../create_8h.html',1,'']]], - ['created_30',['created',['../classCocoaTweet_1_1API_1_1Model_1_1User.html#adccf26772faeae9806d5fbad7a52a1fb',1,'CocoaTweet::API::Model::User']]], - ['createdat_31',['createdAt',['../classCocoaTweet_1_1API_1_1Model_1_1Tweet.html#ac6f9cf58a81ae0ffe573e6ed8c720e99',1,'CocoaTweet::API::Model::Tweet::createdAt(const std::string _at)'],['../classCocoaTweet_1_1API_1_1Model_1_1Tweet.html#a9dc100295f8bde796bb77ce00c10ed2e',1,'CocoaTweet::API::Model::Tweet::createdAt() const'],['../classCocoaTweet_1_1API_1_1Model_1_1User.html#aa650dceac23438825cb0cce590444153',1,'CocoaTweet::API::Model::User::createdAt()']]], - ['ctestcostdata_2etxt_32',['CTestCostData.txt',['../CTestCostData_8txt.html',1,'']]], - ['curlcallback_5f_33',['curlCallback_',['../classCocoaTweet_1_1API_1_1Interface_1_1HttpBase.html#a65e649cd380fc68d69aa8b575a20ab10',1,'CocoaTweet::API::Interface::HttpBase']]], - ['directmessages_34',['DirectMessages',['../namespaceCocoaTweet_1_1API_1_1DirectMessages.html',1,'CocoaTweet::API']]], - ['exception_35',['Exception',['../namespaceCocoaTweet_1_1Exception.html',1,'CocoaTweet']]], - ['favorites_36',['Favorites',['../namespaceCocoaTweet_1_1API_1_1Favorites.html',1,'CocoaTweet::API']]], - ['interface_37',['Interface',['../namespaceCocoaTweet_1_1API_1_1Interface.html',1,'CocoaTweet::API']]], - ['medias_38',['Medias',['../namespaceCocoaTweet_1_1API_1_1Medias.html',1,'CocoaTweet::API']]], - ['model_39',['Model',['../namespaceCocoaTweet_1_1API_1_1Model.html',1,'CocoaTweet::API']]], - ['oauth_40',['OAuth',['../namespaceCocoaTweet_1_1OAuth.html',1,'CocoaTweet']]], - ['statuses_41',['Statuses',['../namespaceCocoaTweet_1_1API_1_1Statuses.html',1,'CocoaTweet::API']]], - ['util_42',['Util',['../namespaceCocoaTweet_1_1Util.html',1,'CocoaTweet']]] -]; diff --git a/help/html/search/all_3.html b/help/html/search/all_3.html deleted file mode 100644 index b61b96f..0000000 --- a/help/html/search/all_3.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/all_3.js b/help/html/search/all_3.js deleted file mode 100644 index 513fb89..0000000 --- a/help/html/search/all_3.js +++ /dev/null @@ -1,11 +0,0 @@ -var searchData= -[ - ['description_43',['description',['../classCocoaTweet_1_1API_1_1Model_1_1User.html#aabc0a29e3d5da2c0b838e47c7e950ff9',1,'CocoaTweet::API::Model::User::description(const std::string &_description)'],['../classCocoaTweet_1_1API_1_1Model_1_1User.html#a7f1b6bc6d04e666e21025bfe6912a95a',1,'CocoaTweet::API::Model::User::description() const']]], - ['destroy_44',['Destroy',['../classCocoaTweet_1_1API_1_1Statuses_1_1Destroy.html',1,'CocoaTweet::API::Statuses::Destroy'],['../classCocoaTweet_1_1API_1_1Favorites_1_1Destroy.html',1,'CocoaTweet::API::Favorites::Destroy'],['../classCocoaTweet_1_1API_1_1Favorites_1_1Destroy.html#a6d9947c0e2a1e2248c0251bad9a116a2',1,'CocoaTweet::API::Favorites::Destroy::Destroy()'],['../classCocoaTweet_1_1API_1_1Statuses_1_1Destroy.html#a62640d2aeb5c0b3854d685131d0d9667',1,'CocoaTweet::API::Statuses::Destroy::Destroy()'],['../classCocoaTweet_1_1API_1_1Favorites_1_1Favorite.html#a25a8d38285d696e1af70b58904346baf',1,'CocoaTweet::API::Favorites::Favorite::destroy()'],['../classCocoaTweet_1_1API_1_1Statuses_1_1Status.html#a10148ce12df2fa7d185fd69d2907998a',1,'CocoaTweet::API::Statuses::Status::destroy()']]], - ['destroy_2ecc_45',['destroy.cc',['../favorite_2destroy_8cc.html',1,'(Global Namespace)'],['../status_2destroy_8cc.html',1,'(Global Namespace)']]], - ['destroy_2eh_46',['destroy.h',['../favorite_2destroy_8h.html',1,'(Global Namespace)'],['../status_2destroy_8h.html',1,'(Global Namespace)']]], - ['directmessage_47',['DirectMessage',['../classCocoaTweet_1_1API_1_1DirectMessages_1_1DirectMessage.html',1,'CocoaTweet::API::DirectMessages::DirectMessage'],['../classCocoaTweet_1_1API_1_1API.html#a6147067e5f15533f517fc712ad83d9eb',1,'CocoaTweet::API::API::directMessage()'],['../classCocoaTweet_1_1API_1_1DirectMessages_1_1DirectMessage.html#ab7d2d08f96e880ccb55e8ae5a2c3e466',1,'CocoaTweet::API::DirectMessages::DirectMessage::DirectMessage()=default'],['../classCocoaTweet_1_1API_1_1DirectMessages_1_1DirectMessage.html#a562ddb40463116c85379b6d62ca5c731',1,'CocoaTweet::API::DirectMessages::DirectMessage::DirectMessage(std::shared_ptr< CocoaTweet::OAuth::OAuth1 > _oauth)']]], - ['directmessage_2ecc_48',['directMessage.cc',['../directMessage_8cc.html',1,'']]], - ['directmessage_2eh_49',['directMessage.h',['../directMessage_8h.html',1,'']]], - ['displaycoord_50',['displayCoord',['../structCocoaTweet_1_1API_1_1Statuses_1_1Status_1_1Options.html#a388f9bed352d912db4ec44f8d8b794e8',1,'CocoaTweet::API::Statuses::Status::Options::displayCoord()'],['../classCocoaTweet_1_1API_1_1Statuses_1_1Update.html#a5fc4d92adf390299b1c6c5c3ed2ea681',1,'CocoaTweet::API::Statuses::Update::displayCoord()']]] -]; diff --git a/help/html/search/all_4.html b/help/html/search/all_4.html deleted file mode 100644 index 06de155..0000000 --- a/help/html/search/all_4.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/all_4.js b/help/html/search/all_4.js deleted file mode 100644 index 2353c1a..0000000 --- a/help/html/search/all_4.js +++ /dev/null @@ -1,10 +0,0 @@ -var searchData= -[ - ['elseif_51',['elseif',['../CMakeLists_8txt.html#aa4e8ce989b1f8229f5479534ee1ae8ac',1,'CMakeLists.txt']]], - ['enabledmcommands_52',['enableDMCommands',['../structCocoaTweet_1_1API_1_1Statuses_1_1Status_1_1Options.html#a3ca1dc7e59fd95384fdb602d262eea07',1,'CocoaTweet::API::Statuses::Status::Options::enableDMCommands()'],['../classCocoaTweet_1_1API_1_1Statuses_1_1Update.html#a84b9497dd94009d7cba1a63a73f5ef10',1,'CocoaTweet::API::Statuses::Update::enableDMCommands()']]], - ['exception_53',['Exception',['../classCocoaTweet_1_1Exception_1_1Exception.html',1,'CocoaTweet::Exception::Exception'],['../classCocoaTweet_1_1Exception_1_1Exception.html#a4e5f456b49449032d66b27bc5617f015',1,'CocoaTweet::Exception::Exception::Exception(const char *_msg)'],['../classCocoaTweet_1_1Exception_1_1Exception.html#a3f2f093321add79ec723c01c9a7d3bcc',1,'CocoaTweet::Exception::Exception::Exception(const std::string &_msg)']]], - ['exception_2eh_54',['exception.h',['../exception_8h.html',1,'']]], - ['excludereplyuserid_55',['excludeReplyUserId',['../structCocoaTweet_1_1API_1_1Statuses_1_1Status_1_1Options.html#a643d2eb27a56746b7c27cdc89cbf8b35',1,'CocoaTweet::API::Statuses::Status::Options::excludeReplyUserId()'],['../classCocoaTweet_1_1API_1_1Statuses_1_1Update.html#a0135aace9ec1f275548ca15be91a0d71',1,'CocoaTweet::API::Statuses::Update::excludeReplyUserId()']]], - ['expire_56',['expire',['../classCocoaTweet_1_1API_1_1Model_1_1MediaStore.html#a5465aa710a0c303b6e0a7757290336f5',1,'CocoaTweet::API::Model::MediaStore']]], - ['expires_57',['expires',['../classCocoaTweet_1_1API_1_1Model_1_1MediaStore.html#a6efeb93e3b55afc05ca73e4a6b297295',1,'CocoaTweet::API::Model::MediaStore']]] -]; diff --git a/help/html/search/all_5.html b/help/html/search/all_5.html deleted file mode 100644 index 2544c4e..0000000 --- a/help/html/search/all_5.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/all_5.js b/help/html/search/all_5.js deleted file mode 100644 index 1913bb8..0000000 --- a/help/html/search/all_5.js +++ /dev/null @@ -1,10 +0,0 @@ -var searchData= -[ - ['faildmcommands_58',['failDMCommands',['../structCocoaTweet_1_1API_1_1Statuses_1_1Status_1_1Options.html#a793d031d5b6050a4a059d6abdc55fe80',1,'CocoaTweet::API::Statuses::Status::Options::failDMCommands()'],['../classCocoaTweet_1_1API_1_1Statuses_1_1Update.html#ad3f189f00bbcc3ba72d812074195abd0',1,'CocoaTweet::API::Statuses::Update::failDMCommands()']]], - ['favorite_59',['Favorite',['../classCocoaTweet_1_1API_1_1Favorites_1_1Favorite.html',1,'CocoaTweet::API::Favorites::Favorite'],['../classCocoaTweet_1_1API_1_1Favorites_1_1Favorite.html#aa0ade9ca6fc634f73892e5a4f26de519',1,'CocoaTweet::API::Favorites::Favorite::Favorite()=default'],['../classCocoaTweet_1_1API_1_1Favorites_1_1Favorite.html#ae80051130fa5c755464b6f6b237f4854',1,'CocoaTweet::API::Favorites::Favorite::Favorite(std::shared_ptr< CocoaTweet::OAuth::OAuth1 > _oauth)'],['../classCocoaTweet_1_1API_1_1API.html#a397db8cf7af9a4a3a34bc64169c04039',1,'CocoaTweet::API::API::favorite()'],['../classCocoaTweet_1_1API_1_1Model_1_1User.html#a4877f4d0c48419f164e6b4607526401b',1,'CocoaTweet::API::Model::User::favorite(const long _favorite)'],['../classCocoaTweet_1_1API_1_1Model_1_1User.html#a3325d3cf119aff3524b1595881116198',1,'CocoaTweet::API::Model::User::favorite() const']]], - ['favorite_2ecc_60',['favorite.cc',['../favorite_8cc.html',1,'']]], - ['favorite_2eh_61',['favorite.h',['../favorite_8h.html',1,'']]], - ['follow_62',['follow',['../classCocoaTweet_1_1API_1_1Model_1_1User.html#a14228ee59169cb3bcc05d47848606682',1,'CocoaTweet::API::Model::User::follow(const long _follow)'],['../classCocoaTweet_1_1API_1_1Model_1_1User.html#aed8d4700e85197e3bd0025108144616a',1,'CocoaTweet::API::Model::User::follow() const']]], - ['follower_63',['follower',['../classCocoaTweet_1_1API_1_1Model_1_1User.html#a3e7d0d21bcdb6b315bd4ad1163119ea6',1,'CocoaTweet::API::Model::User::follower(const long _follower)'],['../classCocoaTweet_1_1API_1_1Model_1_1User.html#af88fdcc7c1a8fa3cbd9dfdd39bdcc43f',1,'CocoaTweet::API::Model::User::follower() const']]], - ['fromjsonfile_64',['fromJsonFile',['../classCocoaTweet_1_1OAuth_1_1Key.html#a936a436c45030782697f442979e2a675',1,'CocoaTweet::OAuth::Key']]] -]; diff --git a/help/html/search/all_6.html b/help/html/search/all_6.html deleted file mode 100644 index 43f14ea..0000000 --- a/help/html/search/all_6.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/all_6.js b/help/html/search/all_6.js deleted file mode 100644 index 1fa9e3f..0000000 --- a/help/html/search/all_6.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['generatebearertoken_65',['generateBearerToken',['../classCocoaTweet_1_1API_1_1API.html#ac9c6108521c9b9f312931a5e0be639ac',1,'CocoaTweet::API::API::generateBearerToken()'],['../classCocoaTweet_1_1OAuth_1_1OAuth1.html#a77d02fd343802f592bc12f8acfd5a176',1,'CocoaTweet::OAuth::OAuth1::generateBearerToken()']]], - ['groupinterface_66',['groupInterface',['../classCocoaTweet_1_1API_1_1groupInterface.html',1,'CocoaTweet::API']]], - ['groupinterface_2eh_67',['groupInterface.h',['../groupInterface_8h.html',1,'']]] -]; diff --git a/help/html/search/all_7.html b/help/html/search/all_7.html deleted file mode 100644 index af52f82..0000000 --- a/help/html/search/all_7.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/all_7.js b/help/html/search/all_7.js deleted file mode 100644 index 2e7e3ed..0000000 --- a/help/html/search/all_7.js +++ /dev/null @@ -1,12 +0,0 @@ -var searchData= -[ - ['hmacsha1_68',['hmacSha1',['../classCocoaTweet_1_1OAuth_1_1OAuth1.html#ae66ae62093d386bbb2763163acbcee03',1,'CocoaTweet::OAuth::OAuth1']]], - ['httpbase_69',['HttpBase',['../classCocoaTweet_1_1API_1_1Interface_1_1HttpBase.html',1,'CocoaTweet::API::Interface']]], - ['httpbase_2eh_70',['httpBase.h',['../httpBase_8h.html',1,'']]], - ['httpget_71',['HttpGet',['../classCocoaTweet_1_1API_1_1Interface_1_1HttpGet.html',1,'CocoaTweet::API::Interface']]], - ['httpget_2ecc_72',['httpGet.cc',['../httpGet_8cc.html',1,'']]], - ['httpget_2eh_73',['httpGet.h',['../httpGet_8h.html',1,'']]], - ['httppost_74',['HttpPost',['../classCocoaTweet_1_1API_1_1Interface_1_1HttpPost.html',1,'CocoaTweet::API::Interface']]], - ['httppost_2ecc_75',['httpPost.cc',['../httpPost_8cc.html',1,'']]], - ['httppost_2eh_76',['httpPost.h',['../httpPost_8h.html',1,'']]] -]; diff --git a/help/html/search/all_8.html b/help/html/search/all_8.html deleted file mode 100644 index cf2b5df..0000000 --- a/help/html/search/all_8.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/all_8.js b/help/html/search/all_8.js deleted file mode 100644 index 5e4b176..0000000 --- a/help/html/search/all_8.js +++ /dev/null @@ -1,8 +0,0 @@ -var searchData= -[ - ['icon_77',['icon',['../classCocoaTweet_1_1API_1_1Model_1_1User.html#a621754a163ceb6ee55223f436b70c9f2',1,'CocoaTweet::API::Model::User']]], - ['iconurl_78',['iconUrl',['../classCocoaTweet_1_1API_1_1Model_1_1User.html#ac0460cf49900f9b70c5f8512ba156c94',1,'CocoaTweet::API::Model::User']]], - ['id_79',['id',['../classCocoaTweet_1_1API_1_1Favorites_1_1Create.html#ae461add62e4c473035c901534a4e4464',1,'CocoaTweet::API::Favorites::Create::id()'],['../classCocoaTweet_1_1API_1_1Favorites_1_1Destroy.html#abf46f0833f4adb6dac06fa246284b072',1,'CocoaTweet::API::Favorites::Destroy::id()'],['../classCocoaTweet_1_1API_1_1Model_1_1MediaStore.html#af90c553ab3da134f17ce2952612d9f9d',1,'CocoaTweet::API::Model::MediaStore::id(const std::string _id)'],['../classCocoaTweet_1_1API_1_1Model_1_1MediaStore.html#ae723e47d9d4c9f51668a48da9c67bdc1',1,'CocoaTweet::API::Model::MediaStore::id() const'],['../classCocoaTweet_1_1API_1_1Model_1_1Tweet.html#ac3f9762b2a6a719005998ad31349a5c5',1,'CocoaTweet::API::Model::Tweet::id(const std::string _id)'],['../classCocoaTweet_1_1API_1_1Model_1_1Tweet.html#a88d500d3d20a41762dee9e401cafefc6',1,'CocoaTweet::API::Model::Tweet::id() const'],['../classCocoaTweet_1_1API_1_1Model_1_1User.html#ac276142393faa8c5341c583ef30bce19',1,'CocoaTweet::API::Model::User::id(const std::string &_id)'],['../classCocoaTweet_1_1API_1_1Model_1_1User.html#ac2e2826cc3c911892673a3fc1319e3a3',1,'CocoaTweet::API::Model::User::id() const'],['../classCocoaTweet_1_1API_1_1Statuses_1_1Destroy.html#a18207d9e58563cc4338d35d4979fbf34',1,'CocoaTweet::API::Statuses::Destroy::id()'],['../classCocoaTweet_1_1API_1_1Statuses_1_1Retweet.html#aa152712528b5fcf39d416a6955eb5858',1,'CocoaTweet::API::Statuses::Retweet::id()'],['../classCocoaTweet_1_1API_1_1Statuses_1_1Unretweet.html#a029fb710f5d4f1cbbec898696cce0379',1,'CocoaTweet::API::Statuses::Unretweet::id()']]], - ['invalidparameterexception_80',['InvalidParameterException',['../classCocoaTweet_1_1Exception_1_1InvalidParameterException.html',1,'CocoaTweet::Exception']]], - ['invalidparameterexception_2eh_81',['invalidParameterException.h',['../invalidParameterException_8h.html',1,'']]] -]; diff --git a/help/html/search/all_9.html b/help/html/search/all_9.html deleted file mode 100644 index 690785a..0000000 --- a/help/html/search/all_9.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/all_9.js b/help/html/search/all_9.js deleted file mode 100644 index 67e4eef..0000000 --- a/help/html/search/all_9.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['join_82',['join',['../namespaceCocoaTweet_1_1Util.html#a8786654a9f36ebcdc9a605e8e50bcc4c',1,'CocoaTweet::Util']]] -]; diff --git a/help/html/search/all_a.html b/help/html/search/all_a.html deleted file mode 100644 index f2f3d3a..0000000 --- a/help/html/search/all_a.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/all_a.js b/help/html/search/all_a.js deleted file mode 100644 index 633105e..0000000 --- a/help/html/search/all_a.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['key_83',['Key',['../classCocoaTweet_1_1OAuth_1_1Key.html',1,'CocoaTweet::OAuth::Key'],['../classCocoaTweet_1_1OAuth_1_1OAuth1.html#a9690d88c41c5ad2bf20ed420b8c23cb1',1,'CocoaTweet::OAuth::OAuth1::key()'],['../classCocoaTweet_1_1OAuth_1_1Key.html#a1b50c413556b8eb769e30694412c2f60',1,'CocoaTweet::OAuth::Key::Key()'],['../classCocoaTweet_1_1OAuth_1_1Key.html#ac172968b08edb93001714e95f8a67c6b',1,'CocoaTweet::OAuth::Key::Key(const std::string &_consumerKey, const std::string &_consumerSecret, const std::string &_accessToken, const std::string &_accessTokenSecret)'],['../classCocoaTweet_1_1OAuth_1_1Key.html#a8f647fee987042d2d3189d37b972e8ed',1,'CocoaTweet::OAuth::Key::Key(const std::string &_consumerKey, const std::string &_consumerSecret)']]], - ['key_2ecc_84',['key.cc',['../key_8cc.html',1,'']]], - ['key_2eh_85',['key.h',['../key_8h.html',1,'']]] -]; diff --git a/help/html/search/all_b.html b/help/html/search/all_b.html deleted file mode 100644 index 14f3403..0000000 --- a/help/html/search/all_b.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/all_b.js b/help/html/search/all_b.js deleted file mode 100644 index b553d9a..0000000 --- a/help/html/search/all_b.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['listed_86',['listed',['../classCocoaTweet_1_1API_1_1Model_1_1User.html#ab5720fbbd69cd0f161b2feef29830614',1,'CocoaTweet::API::Model::User::listed(const long _listed)'],['../classCocoaTweet_1_1API_1_1Model_1_1User.html#a9d62e25b8b0f6c10b3728ba9f78a8070',1,'CocoaTweet::API::Model::User::listed() const']]], - ['location_87',['location',['../classCocoaTweet_1_1API_1_1Model_1_1User.html#a2e7239000f9547921f1a4d507423ea25',1,'CocoaTweet::API::Model::User::location(const std::string &_location)'],['../classCocoaTweet_1_1API_1_1Model_1_1User.html#a1a14149acd2084480a8a8ee6c7094d20',1,'CocoaTweet::API::Model::User::location() const']]] -]; diff --git a/help/html/search/all_c.html b/help/html/search/all_c.html deleted file mode 100644 index da60ab8..0000000 --- a/help/html/search/all_c.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/all_c.js b/help/html/search/all_c.js deleted file mode 100644 index e5d4986..0000000 --- a/help/html/search/all_c.js +++ /dev/null @@ -1,16 +0,0 @@ -var searchData= -[ - ['main_88',['main',['../main_8cc.html#a8216c1645620cdb2f629cde3ac02ffef',1,'main.cc']]], - ['main_2ecc_89',['main.cc',['../main_8cc.html',1,'']]], - ['media_90',['Media',['../classCocoaTweet_1_1API_1_1Medias_1_1Media.html',1,'CocoaTweet::API::Medias::Media'],['../classCocoaTweet_1_1API_1_1Medias_1_1Media.html#a8aa7c237ea39987a00d860f1fcbb1833',1,'CocoaTweet::API::Medias::Media::Media()=default'],['../classCocoaTweet_1_1API_1_1Medias_1_1Media.html#aa43e1ce4f7950d43643b0c3fb9eef7d1',1,'CocoaTweet::API::Medias::Media::Media(std::shared_ptr< CocoaTweet::OAuth::OAuth1 > _oauth)'],['../classCocoaTweet_1_1API_1_1API.html#a2143e93436e088200f93ff8822d845ec',1,'CocoaTweet::API::API::media()'],['../classCocoaTweet_1_1API_1_1Medias_1_1Upload.html#ac1f706f8b1b71bec16a89eed8477c396',1,'CocoaTweet::API::Medias::Upload::media()']]], - ['media_2ecc_91',['media.cc',['../media_8cc.html',1,'']]], - ['media_2eh_92',['media.h',['../media_8h.html',1,'']]], - ['mediaid_93',['mediaId',['../classCocoaTweet_1_1API_1_1Medias_1_1Upload.html#a80b625aa820e75f220823d78a26b04c4',1,'CocoaTweet::API::Medias::Upload::mediaId()'],['../classCocoaTweet_1_1API_1_1Statuses_1_1Update.html#ab8ef38fef366262e0f2a1bff9dee3ec6',1,'CocoaTweet::API::Statuses::Update::mediaId()']]], - ['mediastore_94',['MediaStore',['../classCocoaTweet_1_1API_1_1Model_1_1MediaStore.html',1,'CocoaTweet::API::Model::MediaStore'],['../classCocoaTweet_1_1API_1_1Model_1_1MediaStore.html#a0e6a74f084a96486a07e044696880efc',1,'CocoaTweet::API::Model::MediaStore::MediaStore()=default'],['../classCocoaTweet_1_1API_1_1Model_1_1MediaStore.html#a6cbebe79b8e48fc5b9c7efeb99d36b2f',1,'CocoaTweet::API::Model::MediaStore::MediaStore(const MediaStore &)=default'],['../classCocoaTweet_1_1API_1_1Model_1_1MediaStore.html#acf876698bff69017e0dbb872c3fd31ca',1,'CocoaTweet::API::Model::MediaStore::MediaStore(const std::string &_json)']]], - ['mediastore_2ecc_95',['mediaStore.cc',['../mediaStore_8cc.html',1,'']]], - ['mediastore_2eh_96',['mediaStore.h',['../mediaStore_8h.html',1,'']]], - ['message_97',['message',['../classCocoaTweet_1_1API_1_1DirectMessages_1_1New.html#a5a66d60dbc7a1d7750e82b78d43c93ac',1,'CocoaTweet::API::DirectMessages::New']]], - ['messagecreate_98',['messageCreate',['../classCocoaTweet_1_1API_1_1DirectMessages_1_1DirectMessage.html#ab8962dff70ff28cb55c801f4a20c1cc2',1,'CocoaTweet::API::DirectMessages::DirectMessage']]], - ['method_99',['method',['../classCocoaTweet_1_1OAuth_1_1OAuth1.html#a798209f1805d15028258df55db1de681',1,'CocoaTweet::OAuth::OAuth1']]], - ['msg_5f_100',['msg_',['../classCocoaTweet_1_1Exception_1_1Exception.html#a979d1a34fc7ddc79572fea00e89cf7db',1,'CocoaTweet::Exception::Exception']]] -]; diff --git a/help/html/search/all_d.html b/help/html/search/all_d.html deleted file mode 100644 index bc376fe..0000000 --- a/help/html/search/all_d.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/all_d.js b/help/html/search/all_d.js deleted file mode 100644 index 60d9067..0000000 --- a/help/html/search/all_d.js +++ /dev/null @@ -1,10 +0,0 @@ -var searchData= -[ - ['name_101',['name',['../classCocoaTweet_1_1API_1_1Model_1_1User.html#a21053ed5d9439ebd41b1aee05a9ab077',1,'CocoaTweet::API::Model::User::name(const std::string &_name)'],['../classCocoaTweet_1_1API_1_1Model_1_1User.html#a8aa4c9f7a5edc2a262fe86a31a14eae9',1,'CocoaTweet::API::Model::User::name() const']]], - ['needed_102',['needed',['../CMakeLists_8txt.html#a00fba48fc95d7cf91486378c8d671c99',1,'CMakeLists.txt']]], - ['new_103',['New',['../classCocoaTweet_1_1API_1_1DirectMessages_1_1New.html',1,'CocoaTweet::API::DirectMessages::New'],['../classCocoaTweet_1_1API_1_1DirectMessages_1_1New.html#a417374d5ddcdbeb9e7596ee321fba4aa',1,'CocoaTweet::API::DirectMessages::New::New()']]], - ['new_2ecc_104',['new.cc',['../new_8cc.html',1,'']]], - ['new_2eh_105',['new.h',['../new_8h.html',1,'']]], - ['nonce_106',['nonce',['../classCocoaTweet_1_1OAuth_1_1OAuth1.html#abecce5bd7c075b0ea85933c17f399f69',1,'CocoaTweet::OAuth::OAuth1']]], - ['nosecret_107',['noSecret',['../classCocoaTweet_1_1OAuth_1_1Key.html#a0f2719582fae7ccb074e64f45083b273',1,'CocoaTweet::OAuth::Key']]] -]; diff --git a/help/html/search/all_e.html b/help/html/search/all_e.html deleted file mode 100644 index 2e3c74d..0000000 --- a/help/html/search/all_e.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/all_e.js b/help/html/search/all_e.js deleted file mode 100644 index 753158d..0000000 --- a/help/html/search/all_e.js +++ /dev/null @@ -1,11 +0,0 @@ -var searchData= -[ - ['o1_108',['O1',['../CMakeLists_8txt.html#a23ef90534a2fac3d2eec4950829a2abc',1,'CMakeLists.txt']]], - ['oauth_109',['OAuth',['../classCocoaTweet_1_1OAuth_1_1OAuth1.html#ad6f15c279edf7725456d086b449eaeb5af437ec77d729f192263c41e19c57f345',1,'CocoaTweet::OAuth::OAuth1']]], - ['oauth_2ecc_110',['oauth.cc',['../oauth_8cc.html',1,'']]], - ['oauth_2eh_111',['oauth.h',['../oauth_8h.html',1,'']]], - ['oauth1_112',['OAuth1',['../classCocoaTweet_1_1OAuth_1_1OAuth1.html',1,'CocoaTweet::OAuth::OAuth1'],['../classCocoaTweet_1_1OAuth_1_1OAuth1.html#a65db2966be0a556e21fe9fe6764d648d',1,'CocoaTweet::OAuth::OAuth1::OAuth1()'],['../classCocoaTweet_1_1OAuth_1_1OAuth1.html#a6398994361a2a240006c31f5f937d039',1,'CocoaTweet::OAuth::OAuth1::OAuth1(const Key _key)']]], - ['oauth_5f_113',['oauth_',['../classCocoaTweet_1_1API_1_1groupInterface.html#a71452bcc421ce246fd4f64d861ccbb97',1,'CocoaTweet::API::groupInterface::oauth_()'],['../classCocoaTweet_1_1API_1_1Interface_1_1HttpBase.html#ab0b8b76e12fdf34849fc1c8ee928a2ff',1,'CocoaTweet::API::Interface::HttpBase::oauth_()']]], - ['oauthparam_114',['oauthParam',['../classCocoaTweet_1_1OAuth_1_1OAuth1.html#a6e5e31c125e4d9279deb1eb47cfcb84a',1,'CocoaTweet::OAuth::OAuth1']]], - ['options_115',['Options',['../structCocoaTweet_1_1API_1_1Statuses_1_1Status_1_1Options.html',1,'CocoaTweet::API::Statuses::Status']]] -]; diff --git a/help/html/search/all_f.html b/help/html/search/all_f.html deleted file mode 100644 index 246f8ab..0000000 --- a/help/html/search/all_f.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/all_f.js b/help/html/search/all_f.js deleted file mode 100644 index d024322..0000000 --- a/help/html/search/all_f.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['parse_116',['parse',['../classCocoaTweet_1_1API_1_1Model_1_1MediaStore.html#abda07bde61f662a5a8664f6172daa204',1,'CocoaTweet::API::Model::MediaStore::parse()'],['../classCocoaTweet_1_1API_1_1Model_1_1Tweet.html#a71c2d26eb75289c9cfe3c5054a1baf65',1,'CocoaTweet::API::Model::Tweet::parse()'],['../classCocoaTweet_1_1API_1_1Model_1_1User.html#adef180dfb49b505b88c9b75113907b15',1,'CocoaTweet::API::Model::User::parse()']]], - ['process_117',['process',['../classCocoaTweet_1_1API_1_1DirectMessages_1_1New.html#a5a1b6b2885f2526a927746574744cb8c',1,'CocoaTweet::API::DirectMessages::New::process()'],['../classCocoaTweet_1_1API_1_1Favorites_1_1Create.html#adf39329935982455ffab03dc0bc28e3b',1,'CocoaTweet::API::Favorites::Create::process()'],['../classCocoaTweet_1_1API_1_1Favorites_1_1Destroy.html#a3bc14d9c674ece917e64cf94c091a296',1,'CocoaTweet::API::Favorites::Destroy::process()'],['../classCocoaTweet_1_1API_1_1Interface_1_1HttpBase.html#a680ff63af97568baf2587f20b7e1a8ec',1,'CocoaTweet::API::Interface::HttpBase::process()'],['../classCocoaTweet_1_1API_1_1Interface_1_1HttpGet.html#a3255bc6867830ff3632530e65c257ecc',1,'CocoaTweet::API::Interface::HttpGet::process()'],['../classCocoaTweet_1_1API_1_1Interface_1_1HttpPost.html#afc4040a8d1b0853585334751717d0662',1,'CocoaTweet::API::Interface::HttpPost::process()'],['../classCocoaTweet_1_1API_1_1Medias_1_1Upload.html#ad47c77a4086bdf4f74b1aaecc86bce14',1,'CocoaTweet::API::Medias::Upload::process()'],['../classCocoaTweet_1_1API_1_1Statuses_1_1Destroy.html#af36cb7e5b76a30ba7fae9700d95fc642',1,'CocoaTweet::API::Statuses::Destroy::process()'],['../classCocoaTweet_1_1API_1_1Statuses_1_1Retweet.html#a97749a3172d989fd90858811a4ea2e70',1,'CocoaTweet::API::Statuses::Retweet::process()'],['../classCocoaTweet_1_1API_1_1Statuses_1_1Unretweet.html#a28efd42659f837c15c08175a12e3222a',1,'CocoaTweet::API::Statuses::Unretweet::process()'],['../classCocoaTweet_1_1API_1_1Statuses_1_1Update.html#ad5732026f1a38df2b49f9f3bad9bdf85',1,'CocoaTweet::API::Statuses::Update::process()'],['../classCocoaTweet_1_1API_1_1Statuses_1_1UserTimeline.html#af59cefac376b86d8abb843f701598090',1,'CocoaTweet::API::Statuses::UserTimeline::process()']]], - ['protecteduser_118',['protectedUser',['../classCocoaTweet_1_1API_1_1Model_1_1User.html#a7b15c051d734de4362274d42798c9ebf',1,'CocoaTweet::API::Model::User::protectedUser(const bool _protected)'],['../classCocoaTweet_1_1API_1_1Model_1_1User.html#a8359ea99fa73fe3993b89e898666d0b5',1,'CocoaTweet::API::Model::User::protectedUser() const']]] -]; diff --git a/help/html/search/classes_0.html b/help/html/search/classes_0.html deleted file mode 100644 index f7e4c14..0000000 --- a/help/html/search/classes_0.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/classes_0.js b/help/html/search/classes_0.js deleted file mode 100644 index d26bb99..0000000 --- a/help/html/search/classes_0.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['api_178',['API',['../classCocoaTweet_1_1API_1_1API.html',1,'CocoaTweet::API']]], - ['authenticateexception_179',['AuthenticateException',['../classCocoaTweet_1_1Exception_1_1AuthenticateException.html',1,'CocoaTweet::Exception']]] -]; diff --git a/help/html/search/classes_1.html b/help/html/search/classes_1.html deleted file mode 100644 index c7ff4b3..0000000 --- a/help/html/search/classes_1.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/classes_1.js b/help/html/search/classes_1.js deleted file mode 100644 index 99ae954..0000000 --- a/help/html/search/classes_1.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['create_180',['Create',['../classCocoaTweet_1_1API_1_1Favorites_1_1Create.html',1,'CocoaTweet::API::Favorites']]] -]; diff --git a/help/html/search/classes_10.html b/help/html/search/classes_10.html deleted file mode 100644 index abf37f5..0000000 --- a/help/html/search/classes_10.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/classes_10.js b/help/html/search/classes_10.js deleted file mode 100644 index 1998e54..0000000 --- a/help/html/search/classes_10.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['ratelimitexception_1032',['RateLimitException',['../classCocoaTweet_1_1Exception_1_1RateLimitException.html',1,'CocoaTweet::Exception']]] -]; diff --git a/help/html/search/classes_11.html b/help/html/search/classes_11.html deleted file mode 100644 index 29283b0..0000000 --- a/help/html/search/classes_11.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/classes_11.js b/help/html/search/classes_11.js deleted file mode 100644 index 5982413..0000000 --- a/help/html/search/classes_11.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['serializer_1033',['serializer',['../classnlohmann_1_1detail_1_1serializer.html',1,'nlohmann::detail']]], - ['span_5finput_5fadapter_1034',['span_input_adapter',['../classnlohmann_1_1detail_1_1span__input__adapter.html',1,'nlohmann::detail']]], - ['static_5fconst_1035',['static_const',['../structnlohmann_1_1detail_1_1static__const.html',1,'nlohmann::detail']]], - ['status_1036',['Status',['../classCocoaTweet_1_1API_1_1Statuses_1_1Status.html',1,'CocoaTweet::API::Statuses']]] -]; diff --git a/help/html/search/classes_12.html b/help/html/search/classes_12.html deleted file mode 100644 index 5353e46..0000000 --- a/help/html/search/classes_12.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/classes_12.js b/help/html/search/classes_12.js deleted file mode 100644 index b7317bb..0000000 --- a/help/html/search/classes_12.js +++ /dev/null @@ -1,11 +0,0 @@ -var searchData= -[ - ['to_5fjson_5ffn_1037',['to_json_fn',['../structnlohmann_1_1detail_1_1to__json__fn.html',1,'nlohmann::detail']]], - ['tuple_5felement_3c_20n_2c_20_3a_3anlohmann_3a_3adetail_3a_3aiteration_5fproxy_5fvalue_3c_20iteratortype_20_3e_20_3e_1038',['tuple_element< N, ::nlohmann::detail::iteration_proxy_value< IteratorType > >',['../classstd_1_1tuple__element_3_01N_00_01_1_1nlohmann_1_1detail_1_1iteration__proxy__value_3_01IteratorType_01_4_01_4.html',1,'std']]], - ['tuple_5fsize_3c_3a_3anlohmann_3a_3adetail_3a_3aiteration_5fproxy_5fvalue_3c_20iteratortype_20_3e_20_3e_1039',['tuple_size<::nlohmann::detail::iteration_proxy_value< IteratorType > >',['../classstd_1_1tuple__size_3_1_1nlohmann_1_1detail_1_1iteration__proxy__value_3_01IteratorType_01_4_01_4.html',1,'std']]], - ['tweet_1040',['Tweet',['../classCocoaTweet_1_1API_1_1Model_1_1Tweet.html',1,'CocoaTweet::API::Model']]], - ['tweetduplicateexception_1041',['TweetDuplicateException',['../classCocoaTweet_1_1Exception_1_1TweetDuplicateException.html',1,'CocoaTweet::Exception']]], - ['tweetnotfoundexception_1042',['TweetNotFoundException',['../classCocoaTweet_1_1Exception_1_1TweetNotFoundException.html',1,'CocoaTweet::Exception']]], - ['tweettoolongexception_1043',['TweetTooLongException',['../classCocoaTweet_1_1Exception_1_1TweetTooLongException.html',1,'CocoaTweet::Exception']]], - ['type_5ferror_1044',['type_error',['../classnlohmann_1_1detail_1_1type__error.html',1,'nlohmann::detail']]] -]; diff --git a/help/html/search/classes_13.html b/help/html/search/classes_13.html deleted file mode 100644 index 94ea6cb..0000000 --- a/help/html/search/classes_13.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/classes_13.js b/help/html/search/classes_13.js deleted file mode 100644 index df30eb2..0000000 --- a/help/html/search/classes_13.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['update_1045',['Update',['../classCocoaTweet_1_1API_1_1Statuses_1_1Update.html',1,'CocoaTweet::API::Statuses']]], - ['upload_1046',['Upload',['../classCocoaTweet_1_1API_1_1Medias_1_1Upload.html',1,'CocoaTweet::API::Medias']]] -]; diff --git a/help/html/search/classes_14.html b/help/html/search/classes_14.html deleted file mode 100644 index 95e1e81..0000000 --- a/help/html/search/classes_14.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/classes_14.js b/help/html/search/classes_14.js deleted file mode 100644 index 196dcb5..0000000 --- a/help/html/search/classes_14.js +++ /dev/null @@ -1,8 +0,0 @@ -var searchData= -[ - ['wide_5fstring_5finput_5fadapter_1047',['wide_string_input_adapter',['../classnlohmann_1_1detail_1_1wide__string__input__adapter.html',1,'nlohmann::detail']]], - ['wide_5fstring_5finput_5fhelper_1048',['wide_string_input_helper',['../structnlohmann_1_1detail_1_1wide__string__input__helper.html',1,'nlohmann::detail']]], - ['wide_5fstring_5finput_5fhelper_3c_20baseinputadapter_2c_202_20_3e_1049',['wide_string_input_helper< BaseInputAdapter, 2 >',['../structnlohmann_1_1detail_1_1wide__string__input__helper_3_01BaseInputAdapter_00_012_01_4.html',1,'nlohmann::detail']]], - ['wide_5fstring_5finput_5fhelper_3c_20baseinputadapter_2c_204_20_3e_1050',['wide_string_input_helper< BaseInputAdapter, 4 >',['../structnlohmann_1_1detail_1_1wide__string__input__helper_3_01BaseInputAdapter_00_014_01_4.html',1,'nlohmann::detail']]], - ['wide_5fstring_5finput_5fhelper_3c_20widestringtype_2c_202_20_3e_1051',['wide_string_input_helper< WideStringType, 2 >',['../structnlohmann_1_1detail_1_1wide__string__input__helper_3_01WideStringType_00_012_01_4.html',1,'nlohmann::detail']]] -]; diff --git a/help/html/search/classes_2.html b/help/html/search/classes_2.html deleted file mode 100644 index 0d1e8a0..0000000 --- a/help/html/search/classes_2.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/classes_2.js b/help/html/search/classes_2.js deleted file mode 100644 index b4f1197..0000000 --- a/help/html/search/classes_2.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['destroy_181',['Destroy',['../classCocoaTweet_1_1API_1_1Statuses_1_1Destroy.html',1,'CocoaTweet::API::Statuses::Destroy'],['../classCocoaTweet_1_1API_1_1Favorites_1_1Destroy.html',1,'CocoaTweet::API::Favorites::Destroy']]], - ['directmessage_182',['DirectMessage',['../classCocoaTweet_1_1API_1_1DirectMessages_1_1DirectMessage.html',1,'CocoaTweet::API::DirectMessages']]] -]; diff --git a/help/html/search/classes_3.html b/help/html/search/classes_3.html deleted file mode 100644 index 2102545..0000000 --- a/help/html/search/classes_3.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/classes_3.js b/help/html/search/classes_3.js deleted file mode 100644 index fd7fec4..0000000 --- a/help/html/search/classes_3.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['exception_183',['Exception',['../classCocoaTweet_1_1Exception_1_1Exception.html',1,'CocoaTweet::Exception']]] -]; diff --git a/help/html/search/classes_4.html b/help/html/search/classes_4.html deleted file mode 100644 index 095ab59..0000000 --- a/help/html/search/classes_4.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/classes_4.js b/help/html/search/classes_4.js deleted file mode 100644 index c8bed85..0000000 --- a/help/html/search/classes_4.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['favorite_184',['Favorite',['../classCocoaTweet_1_1API_1_1Favorites_1_1Favorite.html',1,'CocoaTweet::API::Favorites']]] -]; diff --git a/help/html/search/classes_5.html b/help/html/search/classes_5.html deleted file mode 100644 index fc9cdc9..0000000 --- a/help/html/search/classes_5.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/classes_5.js b/help/html/search/classes_5.js deleted file mode 100644 index a6e0b55..0000000 --- a/help/html/search/classes_5.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['groupinterface_185',['groupInterface',['../classCocoaTweet_1_1API_1_1groupInterface.html',1,'CocoaTweet::API']]] -]; diff --git a/help/html/search/classes_6.html b/help/html/search/classes_6.html deleted file mode 100644 index 1ecfddd..0000000 --- a/help/html/search/classes_6.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/classes_6.js b/help/html/search/classes_6.js deleted file mode 100644 index 9ddea81..0000000 --- a/help/html/search/classes_6.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['httpbase_186',['HttpBase',['../classCocoaTweet_1_1API_1_1Interface_1_1HttpBase.html',1,'CocoaTweet::API::Interface']]], - ['httpget_187',['HttpGet',['../classCocoaTweet_1_1API_1_1Interface_1_1HttpGet.html',1,'CocoaTweet::API::Interface']]], - ['httppost_188',['HttpPost',['../classCocoaTweet_1_1API_1_1Interface_1_1HttpPost.html',1,'CocoaTweet::API::Interface']]] -]; diff --git a/help/html/search/classes_7.html b/help/html/search/classes_7.html deleted file mode 100644 index 0fc6fc3..0000000 --- a/help/html/search/classes_7.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/classes_7.js b/help/html/search/classes_7.js deleted file mode 100644 index 55414d2..0000000 --- a/help/html/search/classes_7.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['invalidparameterexception_189',['InvalidParameterException',['../classCocoaTweet_1_1Exception_1_1InvalidParameterException.html',1,'CocoaTweet::Exception']]] -]; diff --git a/help/html/search/classes_8.html b/help/html/search/classes_8.html deleted file mode 100644 index ac8af7d..0000000 --- a/help/html/search/classes_8.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/classes_8.js b/help/html/search/classes_8.js deleted file mode 100644 index aa4f585..0000000 --- a/help/html/search/classes_8.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['key_190',['Key',['../classCocoaTweet_1_1OAuth_1_1Key.html',1,'CocoaTweet::OAuth']]] -]; diff --git a/help/html/search/classes_9.html b/help/html/search/classes_9.html deleted file mode 100644 index 86cad04..0000000 --- a/help/html/search/classes_9.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/classes_9.js b/help/html/search/classes_9.js deleted file mode 100644 index f94cc6c..0000000 --- a/help/html/search/classes_9.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['media_191',['Media',['../classCocoaTweet_1_1API_1_1Medias_1_1Media.html',1,'CocoaTweet::API::Medias']]], - ['mediastore_192',['MediaStore',['../classCocoaTweet_1_1API_1_1Model_1_1MediaStore.html',1,'CocoaTweet::API::Model']]] -]; diff --git a/help/html/search/classes_a.html b/help/html/search/classes_a.html deleted file mode 100644 index 4201e97..0000000 --- a/help/html/search/classes_a.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/classes_a.js b/help/html/search/classes_a.js deleted file mode 100644 index 1f87944..0000000 --- a/help/html/search/classes_a.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['new_193',['New',['../classCocoaTweet_1_1API_1_1DirectMessages_1_1New.html',1,'CocoaTweet::API::DirectMessages']]] -]; diff --git a/help/html/search/classes_b.html b/help/html/search/classes_b.html deleted file mode 100644 index f88a578..0000000 --- a/help/html/search/classes_b.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/classes_b.js b/help/html/search/classes_b.js deleted file mode 100644 index b7f3355..0000000 --- a/help/html/search/classes_b.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['oauth1_194',['OAuth1',['../classCocoaTweet_1_1OAuth_1_1OAuth1.html',1,'CocoaTweet::OAuth']]], - ['options_195',['Options',['../structCocoaTweet_1_1API_1_1Statuses_1_1Status_1_1Options.html',1,'CocoaTweet::API::Statuses::Status']]] -]; diff --git a/help/html/search/classes_c.html b/help/html/search/classes_c.html deleted file mode 100644 index fa0cf4d..0000000 --- a/help/html/search/classes_c.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/classes_c.js b/help/html/search/classes_c.js deleted file mode 100644 index 82bbd76..0000000 --- a/help/html/search/classes_c.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['ratelimitexception_196',['RateLimitException',['../classCocoaTweet_1_1Exception_1_1RateLimitException.html',1,'CocoaTweet::Exception']]], - ['retweet_197',['Retweet',['../classCocoaTweet_1_1API_1_1Statuses_1_1Retweet.html',1,'CocoaTweet::API::Statuses']]] -]; diff --git a/help/html/search/classes_d.html b/help/html/search/classes_d.html deleted file mode 100644 index 0b6b137..0000000 --- a/help/html/search/classes_d.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/classes_d.js b/help/html/search/classes_d.js deleted file mode 100644 index 7a09257..0000000 --- a/help/html/search/classes_d.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['status_198',['Status',['../classCocoaTweet_1_1API_1_1Statuses_1_1Status.html',1,'CocoaTweet::API::Statuses']]] -]; diff --git a/help/html/search/classes_e.html b/help/html/search/classes_e.html deleted file mode 100644 index 2e42779..0000000 --- a/help/html/search/classes_e.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/classes_e.js b/help/html/search/classes_e.js deleted file mode 100644 index 3b3370a..0000000 --- a/help/html/search/classes_e.js +++ /dev/null @@ -1,8 +0,0 @@ -var searchData= -[ - ['tokeninvalidexception_199',['TokenInvalidException',['../classCocoaTweet_1_1Exception_1_1TokenInvalidException.html',1,'CocoaTweet::Exception']]], - ['tweet_200',['Tweet',['../classCocoaTweet_1_1API_1_1Model_1_1Tweet.html',1,'CocoaTweet::API::Model']]], - ['tweetduplicateexception_201',['TweetDuplicateException',['../classCocoaTweet_1_1Exception_1_1TweetDuplicateException.html',1,'CocoaTweet::Exception']]], - ['tweetnotfoundexception_202',['TweetNotFoundException',['../classCocoaTweet_1_1Exception_1_1TweetNotFoundException.html',1,'CocoaTweet::Exception']]], - ['tweettoolongexception_203',['TweetTooLongException',['../classCocoaTweet_1_1Exception_1_1TweetTooLongException.html',1,'CocoaTweet::Exception']]] -]; diff --git a/help/html/search/classes_f.html b/help/html/search/classes_f.html deleted file mode 100644 index e664ccd..0000000 --- a/help/html/search/classes_f.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/classes_f.js b/help/html/search/classes_f.js deleted file mode 100644 index 4678f9a..0000000 --- a/help/html/search/classes_f.js +++ /dev/null @@ -1,9 +0,0 @@ -var searchData= -[ - ['unretweet_204',['Unretweet',['../classCocoaTweet_1_1API_1_1Statuses_1_1Unretweet.html',1,'CocoaTweet::API::Statuses']]], - ['unsupportedmediatypeexception_205',['UnsupportedMediaTypeException',['../classCocoaTweet_1_1Exception_1_1UnsupportedMediaTypeException.html',1,'CocoaTweet::Exception']]], - ['update_206',['Update',['../classCocoaTweet_1_1API_1_1Statuses_1_1Update.html',1,'CocoaTweet::API::Statuses']]], - ['upload_207',['Upload',['../classCocoaTweet_1_1API_1_1Medias_1_1Upload.html',1,'CocoaTweet::API::Medias']]], - ['user_208',['User',['../classCocoaTweet_1_1API_1_1Model_1_1User.html',1,'CocoaTweet::API::Model']]], - ['usertimeline_209',['UserTimeline',['../classCocoaTweet_1_1API_1_1Statuses_1_1UserTimeline.html',1,'CocoaTweet::API::Statuses']]] -]; diff --git a/help/html/search/close.png b/help/html/search/close.png deleted file mode 100644 index 9342d3d..0000000 Binary files a/help/html/search/close.png and /dev/null differ diff --git a/help/html/search/defines_0.html b/help/html/search/defines_0.html deleted file mode 100644 index 2deb369..0000000 --- a/help/html/search/defines_0.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/defines_0.js b/help/html/search/defines_0.js deleted file mode 100644 index bec50a8..0000000 --- a/help/html/search/defines_0.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['boost_5ftest_5fdyn_5flink_231',['BOOST_TEST_DYN_LINK',['../test_2api_2model_2tweet_8cc.html#a139f00d2466d591f60b8d6a73c8273f1',1,'BOOST_TEST_DYN_LINK(): tweet.cc'],['../test_2oauth_2key_8cc.html#a139f00d2466d591f60b8d6a73c8273f1',1,'BOOST_TEST_DYN_LINK(): key.cc']]] -]; diff --git a/help/html/search/defines_1.html b/help/html/search/defines_1.html deleted file mode 100644 index e0d0b6d..0000000 --- a/help/html/search/defines_1.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/defines_1.js b/help/html/search/defines_1.js deleted file mode 100644 index 06a802c..0000000 --- a/help/html/search/defines_1.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['c_5fdialect_1630',['C_DIALECT',['../CMakeCCompilerId_8c.html#a07f8e5783674099cd7f5110e22a78cdb',1,'CMakeCCompilerId.c']]], - ['compiler_5fid_1631',['COMPILER_ID',['../CMakeCCompilerId_8c.html#a81dee0709ded976b2e0319239f72d174',1,'COMPILER_ID(): CMakeCCompilerId.c'],['../CMakeCXXCompilerId_8cpp.html#a81dee0709ded976b2e0319239f72d174',1,'COMPILER_ID(): CMakeCXXCompilerId.cpp']]], - ['cxx_5fstd_1632',['CXX_STD',['../CMakeCXXCompilerId_8cpp.html#a34cc889e576a1ae6c84ae9e0a851ba21',1,'CMakeCXXCompilerId.cpp']]] -]; diff --git a/help/html/search/defines_2.html b/help/html/search/defines_2.html deleted file mode 100644 index 707f942..0000000 --- a/help/html/search/defines_2.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/defines_2.js b/help/html/search/defines_2.js deleted file mode 100644 index 011a194..0000000 --- a/help/html/search/defines_2.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['dec_1633',['DEC',['../CMakeCCompilerId_8c.html#ad1280362da42492bbc11aa78cbf776ad',1,'DEC(): CMakeCCompilerId.c'],['../CMakeCXXCompilerId_8cpp.html#ad1280362da42492bbc11aa78cbf776ad',1,'DEC(): CMakeCXXCompilerId.cpp']]] -]; diff --git a/help/html/search/defines_3.html b/help/html/search/defines_3.html deleted file mode 100644 index f30be10..0000000 --- a/help/html/search/defines_3.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/defines_3.js b/help/html/search/defines_3.js deleted file mode 100644 index 100c29e..0000000 --- a/help/html/search/defines_3.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['hex_1634',['HEX',['../CMakeCCompilerId_8c.html#a46d5d95daa1bef867bd0179594310ed5',1,'HEX(): CMakeCCompilerId.c'],['../CMakeCXXCompilerId_8cpp.html#a46d5d95daa1bef867bd0179594310ed5',1,'HEX(): CMakeCXXCompilerId.cpp']]] -]; diff --git a/help/html/search/defines_4.html b/help/html/search/defines_4.html deleted file mode 100644 index 046ad4a..0000000 --- a/help/html/search/defines_4.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/defines_4.js b/help/html/search/defines_4.js deleted file mode 100644 index ba59696..0000000 --- a/help/html/search/defines_4.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['include_5fnlohmann_5fjson_5ffwd_5fhpp_5f_1635',['INCLUDE_NLOHMANN_JSON_FWD_HPP_',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#ae7fdc438c6d6cb1f17c4373bce5a802d',1,'INCLUDE_NLOHMANN_JSON_FWD_HPP_(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#ae7fdc438c6d6cb1f17c4373bce5a802d',1,'INCLUDE_NLOHMANN_JSON_FWD_HPP_(): json.hpp']]] -]; diff --git a/help/html/search/defines_5.html b/help/html/search/defines_5.html deleted file mode 100644 index 61ce555..0000000 --- a/help/html/search/defines_5.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/defines_5.js b/help/html/search/defines_5.js deleted file mode 100644 index 87fb393..0000000 --- a/help/html/search/defines_5.js +++ /dev/null @@ -1,132 +0,0 @@ -var searchData= -[ - ['json_5fassert_1636',['JSON_ASSERT',['../third_2nlohmann_2json_8hpp.html#a69f131cff49da1989667220173fbeae6',1,'json.hpp']]], - ['json_5fcatch_1637',['JSON_CATCH',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#a6954bec49ed2a2dfb938c1131c82740a',1,'JSON_CATCH(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#a6954bec49ed2a2dfb938c1131c82740a',1,'JSON_CATCH(): json.hpp']]], - ['json_5fexplicit_1638',['JSON_EXPLICIT',['../third_2nlohmann_2json_8hpp.html#aefed8cf27cadeea45f12c6f3db3ce774',1,'json.hpp']]], - ['json_5fhedley_5falways_5finline_1639',['JSON_HEDLEY_ALWAYS_INLINE',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#aa8811aa2a21030baad33c103cb04d322',1,'JSON_HEDLEY_ALWAYS_INLINE(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#aa8811aa2a21030baad33c103cb04d322',1,'JSON_HEDLEY_ALWAYS_INLINE(): json.hpp']]], - ['json_5fhedley_5farm_5fversion_5fcheck_1640',['JSON_HEDLEY_ARM_VERSION_CHECK',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#aec1d1b1e286d1610ff11dbb29bf3e8cf',1,'JSON_HEDLEY_ARM_VERSION_CHECK(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#aec1d1b1e286d1610ff11dbb29bf3e8cf',1,'JSON_HEDLEY_ARM_VERSION_CHECK(): json.hpp']]], - ['json_5fhedley_5farray_5fparam_1641',['JSON_HEDLEY_ARRAY_PARAM',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#a81c7e3b5b6811abfd89146ad33a93d8f',1,'JSON_HEDLEY_ARRAY_PARAM(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#a81c7e3b5b6811abfd89146ad33a93d8f',1,'JSON_HEDLEY_ARRAY_PARAM(): json.hpp']]], - ['json_5fhedley_5fassume_1642',['JSON_HEDLEY_ASSUME',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#a70d7244eea52c8bb5716545e54050bb5',1,'JSON_HEDLEY_ASSUME(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#a70d7244eea52c8bb5716545e54050bb5',1,'JSON_HEDLEY_ASSUME(): json.hpp']]], - ['json_5fhedley_5fbegin_5fc_5fdecls_1643',['JSON_HEDLEY_BEGIN_C_DECLS',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#ad43f9ae10083194afdfe88516ad876e7',1,'JSON_HEDLEY_BEGIN_C_DECLS(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#ad43f9ae10083194afdfe88516ad876e7',1,'JSON_HEDLEY_BEGIN_C_DECLS(): json.hpp']]], - ['json_5fhedley_5fc_5fdecl_1644',['JSON_HEDLEY_C_DECL',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#a378be9b66feb11153979c282c669b12e',1,'JSON_HEDLEY_C_DECL(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#a378be9b66feb11153979c282c669b12e',1,'JSON_HEDLEY_C_DECL(): json.hpp']]], - ['json_5fhedley_5fclang_5fhas_5fattribute_1645',['JSON_HEDLEY_CLANG_HAS_ATTRIBUTE',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#a940783ca9410ed9dbe4f7abf44a29394',1,'JSON_HEDLEY_CLANG_HAS_ATTRIBUTE(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#a940783ca9410ed9dbe4f7abf44a29394',1,'JSON_HEDLEY_CLANG_HAS_ATTRIBUTE(): json.hpp']]], - ['json_5fhedley_5fclang_5fhas_5fbuiltin_1646',['JSON_HEDLEY_CLANG_HAS_BUILTIN',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#a4500e349152e53a3a6f0ab95c6a4a840',1,'JSON_HEDLEY_CLANG_HAS_BUILTIN(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#a4500e349152e53a3a6f0ab95c6a4a840',1,'JSON_HEDLEY_CLANG_HAS_BUILTIN(): json.hpp']]], - ['json_5fhedley_5fclang_5fhas_5fcpp_5fattribute_1647',['JSON_HEDLEY_CLANG_HAS_CPP_ATTRIBUTE',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#a3ce7b30717e453922113c4f62e645e13',1,'JSON_HEDLEY_CLANG_HAS_CPP_ATTRIBUTE(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#a3ce7b30717e453922113c4f62e645e13',1,'JSON_HEDLEY_CLANG_HAS_CPP_ATTRIBUTE(): json.hpp']]], - ['json_5fhedley_5fclang_5fhas_5fdeclspec_5fattribute_1648',['JSON_HEDLEY_CLANG_HAS_DECLSPEC_ATTRIBUTE',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#afb4bf1280cd8738877e1f0f681a5d96d',1,'JSON_HEDLEY_CLANG_HAS_DECLSPEC_ATTRIBUTE(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#afb4bf1280cd8738877e1f0f681a5d96d',1,'JSON_HEDLEY_CLANG_HAS_DECLSPEC_ATTRIBUTE(): json.hpp']]], - ['json_5fhedley_5fclang_5fhas_5fextension_1649',['JSON_HEDLEY_CLANG_HAS_EXTENSION',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#a8fcc2d27e828fbd8d5ef88ba341e56c0',1,'JSON_HEDLEY_CLANG_HAS_EXTENSION(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#a8fcc2d27e828fbd8d5ef88ba341e56c0',1,'JSON_HEDLEY_CLANG_HAS_EXTENSION(): json.hpp']]], - ['json_5fhedley_5fclang_5fhas_5ffeature_1650',['JSON_HEDLEY_CLANG_HAS_FEATURE',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#a096be2083232d3a3ea9f3aeb25885f60',1,'JSON_HEDLEY_CLANG_HAS_FEATURE(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#a096be2083232d3a3ea9f3aeb25885f60',1,'JSON_HEDLEY_CLANG_HAS_FEATURE(): json.hpp']]], - ['json_5fhedley_5fclang_5fhas_5fwarning_1651',['JSON_HEDLEY_CLANG_HAS_WARNING',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#a6125ffd318b2d6698faad4175a6e7c56',1,'JSON_HEDLEY_CLANG_HAS_WARNING(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#a6125ffd318b2d6698faad4175a6e7c56',1,'JSON_HEDLEY_CLANG_HAS_WARNING(): json.hpp']]], - ['json_5fhedley_5fcompcert_5fversion_5fcheck_1652',['JSON_HEDLEY_COMPCERT_VERSION_CHECK',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#ad8f9aee7d709155d6745cb3f77c6ff0c',1,'JSON_HEDLEY_COMPCERT_VERSION_CHECK(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#ad8f9aee7d709155d6745cb3f77c6ff0c',1,'JSON_HEDLEY_COMPCERT_VERSION_CHECK(): json.hpp']]], - ['json_5fhedley_5fconcat_1653',['JSON_HEDLEY_CONCAT',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#a4ec16c2642fdc5876d8dbeab3445b313',1,'JSON_HEDLEY_CONCAT(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#a4ec16c2642fdc5876d8dbeab3445b313',1,'JSON_HEDLEY_CONCAT(): json.hpp']]], - ['json_5fhedley_5fconcat3_1654',['JSON_HEDLEY_CONCAT3',['../third_2nlohmann_2json_8hpp.html#ad10e2ad45ace3771e4d2a3807d33f64f',1,'json.hpp']]], - ['json_5fhedley_5fconcat3_5fex_1655',['JSON_HEDLEY_CONCAT3_EX',['../third_2nlohmann_2json_8hpp.html#a29b325cc7fac302f2488259237d30953',1,'json.hpp']]], - ['json_5fhedley_5fconcat_5fex_1656',['JSON_HEDLEY_CONCAT_EX',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#aee52531ff30270c04958309efa66a5da',1,'JSON_HEDLEY_CONCAT_EX(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#aee52531ff30270c04958309efa66a5da',1,'JSON_HEDLEY_CONCAT_EX(): json.hpp']]], - ['json_5fhedley_5fconst_1657',['JSON_HEDLEY_CONST',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#a0d17bf1a54fc45a04ced6d3aa86a96e3',1,'JSON_HEDLEY_CONST(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#a0d17bf1a54fc45a04ced6d3aa86a96e3',1,'JSON_HEDLEY_CONST(): json.hpp']]], - ['json_5fhedley_5fconst_5fcast_1658',['JSON_HEDLEY_CONST_CAST',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#ab849ba88a6f410da5a46a86f8565b381',1,'JSON_HEDLEY_CONST_CAST(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#ab849ba88a6f410da5a46a86f8565b381',1,'JSON_HEDLEY_CONST_CAST(): json.hpp']]], - ['json_5fhedley_5fconstexpr_1659',['JSON_HEDLEY_CONSTEXPR',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#ac317a48664e4099c22d33d8132bef97e',1,'JSON_HEDLEY_CONSTEXPR(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#ac317a48664e4099c22d33d8132bef97e',1,'JSON_HEDLEY_CONSTEXPR(): json.hpp']]], - ['json_5fhedley_5fcpp_5fcast_1660',['JSON_HEDLEY_CPP_CAST',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#a8c790866b16f58cbe0b3286a7a6238c3',1,'JSON_HEDLEY_CPP_CAST(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#a8c790866b16f58cbe0b3286a7a6238c3',1,'JSON_HEDLEY_CPP_CAST(): json.hpp']]], - ['json_5fhedley_5fcray_5fversion_5fcheck_1661',['JSON_HEDLEY_CRAY_VERSION_CHECK',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#a5d9ed879aa65e4db12a81ee95529c3e4',1,'JSON_HEDLEY_CRAY_VERSION_CHECK(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#a5d9ed879aa65e4db12a81ee95529c3e4',1,'JSON_HEDLEY_CRAY_VERSION_CHECK(): json.hpp']]], - ['json_5fhedley_5fdeprecated_1662',['JSON_HEDLEY_DEPRECATED',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#a0f2cbf281fa983a844b9279c697b7a0c',1,'JSON_HEDLEY_DEPRECATED(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#a0f2cbf281fa983a844b9279c697b7a0c',1,'JSON_HEDLEY_DEPRECATED(): json.hpp']]], - ['json_5fhedley_5fdeprecated_5ffor_1663',['JSON_HEDLEY_DEPRECATED_FOR',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#af0469b867b0ec3a1c4b229ce9d087620',1,'JSON_HEDLEY_DEPRECATED_FOR(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#af0469b867b0ec3a1c4b229ce9d087620',1,'JSON_HEDLEY_DEPRECATED_FOR(): json.hpp']]], - ['json_5fhedley_5fdiagnostic_5fdisable_5fcast_5fqual_1664',['JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#a8d412aa5d441b533afa439a89aa4a754',1,'JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#a8d412aa5d441b533afa439a89aa4a754',1,'JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL(): json.hpp']]], - ['json_5fhedley_5fdiagnostic_5fdisable_5fcpp98_5fcompat_5fwrap_5f_1665',['JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#a543a78d9931a92663e3b3fc552a390a4',1,'JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#a543a78d9931a92663e3b3fc552a390a4',1,'JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(): json.hpp']]], - ['json_5fhedley_5fdiagnostic_5fdisable_5fdeprecated_1666',['JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#afe5855242129fa5d1adf55227669a337',1,'JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#afe5855242129fa5d1adf55227669a337',1,'JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED(): json.hpp']]], - ['json_5fhedley_5fdiagnostic_5fdisable_5funknown_5fcpp_5fattributes_1667',['JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#ab6e5abd7e400c9a725278206ece33e16',1,'JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#ab6e5abd7e400c9a725278206ece33e16',1,'JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES(): json.hpp']]], - ['json_5fhedley_5fdiagnostic_5fdisable_5funknown_5fpragmas_1668',['JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#ab67745ae0065d536d8e67969db68d564',1,'JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#ab67745ae0065d536d8e67969db68d564',1,'JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS(): json.hpp']]], - ['json_5fhedley_5fdiagnostic_5fpop_1669',['JSON_HEDLEY_DIAGNOSTIC_POP',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#aeedd50a52e1ea565ceab84bb596ec07f',1,'JSON_HEDLEY_DIAGNOSTIC_POP(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#aeedd50a52e1ea565ceab84bb596ec07f',1,'JSON_HEDLEY_DIAGNOSTIC_POP(): json.hpp']]], - ['json_5fhedley_5fdiagnostic_5fpush_1670',['JSON_HEDLEY_DIAGNOSTIC_PUSH',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#a1850f57fcda72becebc7033a2e10e77b',1,'JSON_HEDLEY_DIAGNOSTIC_PUSH(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#a1850f57fcda72becebc7033a2e10e77b',1,'JSON_HEDLEY_DIAGNOSTIC_PUSH(): json.hpp']]], - ['json_5fhedley_5fdmc_5fversion_5fcheck_1671',['JSON_HEDLEY_DMC_VERSION_CHECK',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#af21c5dbd9df3b2e245ae547e2d940adc',1,'JSON_HEDLEY_DMC_VERSION_CHECK(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#af21c5dbd9df3b2e245ae547e2d940adc',1,'JSON_HEDLEY_DMC_VERSION_CHECK(): json.hpp']]], - ['json_5fhedley_5fempty_5fbases_1672',['JSON_HEDLEY_EMPTY_BASES',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#ae7a983344e78f37697c2688f1885f9e1',1,'JSON_HEDLEY_EMPTY_BASES(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#ae7a983344e78f37697c2688f1885f9e1',1,'JSON_HEDLEY_EMPTY_BASES(): json.hpp']]], - ['json_5fhedley_5femscripten_5fversion_5fcheck_1673',['JSON_HEDLEY_EMSCRIPTEN_VERSION_CHECK',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#a472a0656b154bb30cf6e8fb8a31b9209',1,'JSON_HEDLEY_EMSCRIPTEN_VERSION_CHECK(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#a472a0656b154bb30cf6e8fb8a31b9209',1,'JSON_HEDLEY_EMSCRIPTEN_VERSION_CHECK(): json.hpp']]], - ['json_5fhedley_5fend_5fc_5fdecls_1674',['JSON_HEDLEY_END_C_DECLS',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#aca2fc4b765ac5739d680153895b673fb',1,'JSON_HEDLEY_END_C_DECLS(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#aca2fc4b765ac5739d680153895b673fb',1,'JSON_HEDLEY_END_C_DECLS(): json.hpp']]], - ['json_5fhedley_5ffall_5fthrough_1675',['JSON_HEDLEY_FALL_THROUGH',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#a7056c44a5787e78720407fc97aefbd0f',1,'JSON_HEDLEY_FALL_THROUGH(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#a7056c44a5787e78720407fc97aefbd0f',1,'JSON_HEDLEY_FALL_THROUGH(): json.hpp']]], - ['json_5fhedley_5fflags_5fcast_1676',['JSON_HEDLEY_FLAGS_CAST',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#a701eddd8e14dbe617a9ca81b095e88fb',1,'JSON_HEDLEY_FLAGS_CAST(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#a701eddd8e14dbe617a9ca81b095e88fb',1,'JSON_HEDLEY_FLAGS_CAST(): json.hpp']]], - ['json_5fhedley_5fgcc_5fhas_5fattribute_1677',['JSON_HEDLEY_GCC_HAS_ATTRIBUTE',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#af33c67f65300eb91494f25bf583f5bd7',1,'JSON_HEDLEY_GCC_HAS_ATTRIBUTE(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#af33c67f65300eb91494f25bf583f5bd7',1,'JSON_HEDLEY_GCC_HAS_ATTRIBUTE(): json.hpp']]], - ['json_5fhedley_5fgcc_5fhas_5fbuiltin_1678',['JSON_HEDLEY_GCC_HAS_BUILTIN',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#aa210655ec7cc8387bef8ade74c3af647',1,'JSON_HEDLEY_GCC_HAS_BUILTIN(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#aa210655ec7cc8387bef8ade74c3af647',1,'JSON_HEDLEY_GCC_HAS_BUILTIN(): json.hpp']]], - ['json_5fhedley_5fgcc_5fhas_5fcpp_5fattribute_1679',['JSON_HEDLEY_GCC_HAS_CPP_ATTRIBUTE',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#aaa3c748298e83bf6a67b583b83233c11',1,'JSON_HEDLEY_GCC_HAS_CPP_ATTRIBUTE(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#aaa3c748298e83bf6a67b583b83233c11',1,'JSON_HEDLEY_GCC_HAS_CPP_ATTRIBUTE(): json.hpp']]], - ['json_5fhedley_5fgcc_5fhas_5fdeclspec_5fattribute_1680',['JSON_HEDLEY_GCC_HAS_DECLSPEC_ATTRIBUTE',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#a164e098f308804c3bada63613ad75dab',1,'JSON_HEDLEY_GCC_HAS_DECLSPEC_ATTRIBUTE(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#a164e098f308804c3bada63613ad75dab',1,'JSON_HEDLEY_GCC_HAS_DECLSPEC_ATTRIBUTE(): json.hpp']]], - ['json_5fhedley_5fgcc_5fhas_5fextension_1681',['JSON_HEDLEY_GCC_HAS_EXTENSION',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#af488159969a8b7154820cffe04bb4917',1,'JSON_HEDLEY_GCC_HAS_EXTENSION(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#af488159969a8b7154820cffe04bb4917',1,'JSON_HEDLEY_GCC_HAS_EXTENSION(): json.hpp']]], - ['json_5fhedley_5fgcc_5fhas_5ffeature_1682',['JSON_HEDLEY_GCC_HAS_FEATURE',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#ae9f353e2ea047111e419855144b06ab7',1,'JSON_HEDLEY_GCC_HAS_FEATURE(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#ae9f353e2ea047111e419855144b06ab7',1,'JSON_HEDLEY_GCC_HAS_FEATURE(): json.hpp']]], - ['json_5fhedley_5fgcc_5fhas_5fwarning_1683',['JSON_HEDLEY_GCC_HAS_WARNING',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#ab45544391bc41507efde58d48331dfc2',1,'JSON_HEDLEY_GCC_HAS_WARNING(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#ab45544391bc41507efde58d48331dfc2',1,'JSON_HEDLEY_GCC_HAS_WARNING(): json.hpp']]], - ['json_5fhedley_5fgcc_5fnot_5fclang_5fversion_5fcheck_1684',['JSON_HEDLEY_GCC_NOT_CLANG_VERSION_CHECK',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#af3737b675cbb70bcdfdaca78c2bc7d4a',1,'JSON_HEDLEY_GCC_NOT_CLANG_VERSION_CHECK(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#af3737b675cbb70bcdfdaca78c2bc7d4a',1,'JSON_HEDLEY_GCC_NOT_CLANG_VERSION_CHECK(): json.hpp']]], - ['json_5fhedley_5fgcc_5fversion_5fcheck_1685',['JSON_HEDLEY_GCC_VERSION_CHECK',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#aaf82a065634719d57994ef5876e208ff',1,'JSON_HEDLEY_GCC_VERSION_CHECK(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#aaf82a065634719d57994ef5876e208ff',1,'JSON_HEDLEY_GCC_VERSION_CHECK(): json.hpp']]], - ['json_5fhedley_5fgnuc_5fhas_5fattribute_1686',['JSON_HEDLEY_GNUC_HAS_ATTRIBUTE',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#afdf01f41465021815bb6fc4d8c1839fd',1,'JSON_HEDLEY_GNUC_HAS_ATTRIBUTE(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#afdf01f41465021815bb6fc4d8c1839fd',1,'JSON_HEDLEY_GNUC_HAS_ATTRIBUTE(): json.hpp']]], - ['json_5fhedley_5fgnuc_5fhas_5fbuiltin_1687',['JSON_HEDLEY_GNUC_HAS_BUILTIN',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#a92764b738f44272e1b18c3ef1403c894',1,'JSON_HEDLEY_GNUC_HAS_BUILTIN(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#a92764b738f44272e1b18c3ef1403c894',1,'JSON_HEDLEY_GNUC_HAS_BUILTIN(): json.hpp']]], - ['json_5fhedley_5fgnuc_5fhas_5fcpp_5fattribute_1688',['JSON_HEDLEY_GNUC_HAS_CPP_ATTRIBUTE',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#a938dadb6cadaaaccf72990d09be5dc0a',1,'JSON_HEDLEY_GNUC_HAS_CPP_ATTRIBUTE(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#a938dadb6cadaaaccf72990d09be5dc0a',1,'JSON_HEDLEY_GNUC_HAS_CPP_ATTRIBUTE(): json.hpp']]], - ['json_5fhedley_5fgnuc_5fhas_5fdeclspec_5fattribute_1689',['JSON_HEDLEY_GNUC_HAS_DECLSPEC_ATTRIBUTE',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#a005d6f0dbab6f7152e43fb85fc4f4990',1,'JSON_HEDLEY_GNUC_HAS_DECLSPEC_ATTRIBUTE(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#a005d6f0dbab6f7152e43fb85fc4f4990',1,'JSON_HEDLEY_GNUC_HAS_DECLSPEC_ATTRIBUTE(): json.hpp']]], - ['json_5fhedley_5fgnuc_5fhas_5fextension_1690',['JSON_HEDLEY_GNUC_HAS_EXTENSION',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#a2417cc05952936574c0a6ed96d73d8e2',1,'JSON_HEDLEY_GNUC_HAS_EXTENSION(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#a2417cc05952936574c0a6ed96d73d8e2',1,'JSON_HEDLEY_GNUC_HAS_EXTENSION(): json.hpp']]], - ['json_5fhedley_5fgnuc_5fhas_5ffeature_1691',['JSON_HEDLEY_GNUC_HAS_FEATURE',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#ad5dab327c783036962c7d921a4144676',1,'JSON_HEDLEY_GNUC_HAS_FEATURE(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#ad5dab327c783036962c7d921a4144676',1,'JSON_HEDLEY_GNUC_HAS_FEATURE(): json.hpp']]], - ['json_5fhedley_5fgnuc_5fhas_5fwarning_1692',['JSON_HEDLEY_GNUC_HAS_WARNING',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#a8afa30449fac8b5069e62f26421d4148',1,'JSON_HEDLEY_GNUC_HAS_WARNING(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#a8afa30449fac8b5069e62f26421d4148',1,'JSON_HEDLEY_GNUC_HAS_WARNING(): json.hpp']]], - ['json_5fhedley_5fgnuc_5fversion_5fcheck_1693',['JSON_HEDLEY_GNUC_VERSION_CHECK',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#a074e795380699252f28c9526ca83e586',1,'JSON_HEDLEY_GNUC_VERSION_CHECK(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#a074e795380699252f28c9526ca83e586',1,'JSON_HEDLEY_GNUC_VERSION_CHECK(): json.hpp']]], - ['json_5fhedley_5fhas_5fattribute_1694',['JSON_HEDLEY_HAS_ATTRIBUTE',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#af41dc3300eaa6e5e6a976730d160a268',1,'JSON_HEDLEY_HAS_ATTRIBUTE(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#af41dc3300eaa6e5e6a976730d160a268',1,'JSON_HEDLEY_HAS_ATTRIBUTE(): json.hpp']]], - ['json_5fhedley_5fhas_5fbuiltin_1695',['JSON_HEDLEY_HAS_BUILTIN',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#acf8ab10ce06ffe6f54840b555b15121c',1,'JSON_HEDLEY_HAS_BUILTIN(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#acf8ab10ce06ffe6f54840b555b15121c',1,'JSON_HEDLEY_HAS_BUILTIN(): json.hpp']]], - ['json_5fhedley_5fhas_5fcpp_5fattribute_1696',['JSON_HEDLEY_HAS_CPP_ATTRIBUTE',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#a2c4e6a04293aaf333a31698dea661b3b',1,'JSON_HEDLEY_HAS_CPP_ATTRIBUTE(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#a2c4e6a04293aaf333a31698dea661b3b',1,'JSON_HEDLEY_HAS_CPP_ATTRIBUTE(): json.hpp']]], - ['json_5fhedley_5fhas_5fcpp_5fattribute_5fns_1697',['JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#ad5b94be3095ea0549561c1bc951c5998',1,'JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#ad5b94be3095ea0549561c1bc951c5998',1,'JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS(): json.hpp']]], - ['json_5fhedley_5fhas_5fdeclspec_5fattribute_1698',['JSON_HEDLEY_HAS_DECLSPEC_ATTRIBUTE',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#ac256365345e803d24cbd9651d3cb0274',1,'JSON_HEDLEY_HAS_DECLSPEC_ATTRIBUTE(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#ac256365345e803d24cbd9651d3cb0274',1,'JSON_HEDLEY_HAS_DECLSPEC_ATTRIBUTE(): json.hpp']]], - ['json_5fhedley_5fhas_5fextension_1699',['JSON_HEDLEY_HAS_EXTENSION',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#a320bfe79028a67cd5873f917bc5418dd',1,'JSON_HEDLEY_HAS_EXTENSION(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#a320bfe79028a67cd5873f917bc5418dd',1,'JSON_HEDLEY_HAS_EXTENSION(): json.hpp']]], - ['json_5fhedley_5fhas_5ffeature_1700',['JSON_HEDLEY_HAS_FEATURE',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#a752eb648bbfc7bcd8a4624c43f520412',1,'JSON_HEDLEY_HAS_FEATURE(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#a752eb648bbfc7bcd8a4624c43f520412',1,'JSON_HEDLEY_HAS_FEATURE(): json.hpp']]], - ['json_5fhedley_5fhas_5fwarning_1701',['JSON_HEDLEY_HAS_WARNING',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#a472922971d1cd7308a4402042bdafe34',1,'JSON_HEDLEY_HAS_WARNING(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#a472922971d1cd7308a4402042bdafe34',1,'JSON_HEDLEY_HAS_WARNING(): json.hpp']]], - ['json_5fhedley_5fiar_5fversion_5fcheck_1702',['JSON_HEDLEY_IAR_VERSION_CHECK',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#a8788394855e9b5a1cc32327db5a613cb',1,'JSON_HEDLEY_IAR_VERSION_CHECK(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#a8788394855e9b5a1cc32327db5a613cb',1,'JSON_HEDLEY_IAR_VERSION_CHECK(): json.hpp']]], - ['json_5fhedley_5fibm_5fversion_5fcheck_1703',['JSON_HEDLEY_IBM_VERSION_CHECK',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#a66ec7d7c320280d6e75cb3634048cd49',1,'JSON_HEDLEY_IBM_VERSION_CHECK(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#a66ec7d7c320280d6e75cb3634048cd49',1,'JSON_HEDLEY_IBM_VERSION_CHECK(): json.hpp']]], - ['json_5fhedley_5fimport_1704',['JSON_HEDLEY_IMPORT',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#a29c62e19dfa10fb48bf3aa877c4af21c',1,'JSON_HEDLEY_IMPORT(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#a29c62e19dfa10fb48bf3aa877c4af21c',1,'JSON_HEDLEY_IMPORT(): json.hpp']]], - ['json_5fhedley_5finline_1705',['JSON_HEDLEY_INLINE',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#af943d68414c7fe0fdfab7e772fa628a8',1,'JSON_HEDLEY_INLINE(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#af943d68414c7fe0fdfab7e772fa628a8',1,'JSON_HEDLEY_INLINE(): json.hpp']]], - ['json_5fhedley_5fintel_5fversion_5fcheck_1706',['JSON_HEDLEY_INTEL_VERSION_CHECK',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#ae51b1abb6876168df25d3f36fa335c94',1,'JSON_HEDLEY_INTEL_VERSION_CHECK(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#ae51b1abb6876168df25d3f36fa335c94',1,'JSON_HEDLEY_INTEL_VERSION_CHECK(): json.hpp']]], - ['json_5fhedley_5fis_5fconstant_1707',['JSON_HEDLEY_IS_CONSTANT',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#a37617841d58aa4d88d0efee4db57ee18',1,'JSON_HEDLEY_IS_CONSTANT(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#a37617841d58aa4d88d0efee4db57ee18',1,'JSON_HEDLEY_IS_CONSTANT(): json.hpp']]], - ['json_5fhedley_5flikely_1708',['JSON_HEDLEY_LIKELY',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#a355f2770653ff7bdd5c74b204b5a3ad0',1,'JSON_HEDLEY_LIKELY(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#a355f2770653ff7bdd5c74b204b5a3ad0',1,'JSON_HEDLEY_LIKELY(): json.hpp']]], - ['json_5fhedley_5fmalloc_1709',['JSON_HEDLEY_MALLOC',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#a521367b4e81907450a7ea0bf28028b01',1,'JSON_HEDLEY_MALLOC(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#a521367b4e81907450a7ea0bf28028b01',1,'JSON_HEDLEY_MALLOC(): json.hpp']]], - ['json_5fhedley_5fmessage_1710',['JSON_HEDLEY_MESSAGE',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#a8419c2b65d28686932087c587eb19157',1,'JSON_HEDLEY_MESSAGE(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#a8419c2b65d28686932087c587eb19157',1,'JSON_HEDLEY_MESSAGE(): json.hpp']]], - ['json_5fhedley_5fmsvc_5fversion_5fcheck_1711',['JSON_HEDLEY_MSVC_VERSION_CHECK',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#ac3dc0b5b04f307fc875f9470c0cc841f',1,'JSON_HEDLEY_MSVC_VERSION_CHECK(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#ac3dc0b5b04f307fc875f9470c0cc841f',1,'JSON_HEDLEY_MSVC_VERSION_CHECK(): json.hpp']]], - ['json_5fhedley_5fnever_5finline_1712',['JSON_HEDLEY_NEVER_INLINE',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#aa400dd54d50fd20d7e931e2f08ee6374',1,'JSON_HEDLEY_NEVER_INLINE(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#aa400dd54d50fd20d7e931e2f08ee6374',1,'JSON_HEDLEY_NEVER_INLINE(): json.hpp']]], - ['json_5fhedley_5fno_5fescape_1713',['JSON_HEDLEY_NO_ESCAPE',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#a9a8fe3009f53d14ac4b48600a2606fc1',1,'JSON_HEDLEY_NO_ESCAPE(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#a9a8fe3009f53d14ac4b48600a2606fc1',1,'JSON_HEDLEY_NO_ESCAPE(): json.hpp']]], - ['json_5fhedley_5fno_5freturn_1714',['JSON_HEDLEY_NO_RETURN',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#a82747e7a15c5cecf1223dbc4eb7a1c6b',1,'JSON_HEDLEY_NO_RETURN(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#a82747e7a15c5cecf1223dbc4eb7a1c6b',1,'JSON_HEDLEY_NO_RETURN(): json.hpp']]], - ['json_5fhedley_5fno_5fthrow_1715',['JSON_HEDLEY_NO_THROW',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#a99bb53bea18285e3d2ae4385c6c75434',1,'JSON_HEDLEY_NO_THROW(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#a99bb53bea18285e3d2ae4385c6c75434',1,'JSON_HEDLEY_NO_THROW(): json.hpp']]], - ['json_5fhedley_5fnon_5fnull_1716',['JSON_HEDLEY_NON_NULL',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#a5338981b5ad9027c9e54b1c5597f4344',1,'JSON_HEDLEY_NON_NULL(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#a5338981b5ad9027c9e54b1c5597f4344',1,'JSON_HEDLEY_NON_NULL(): json.hpp']]], - ['json_5fhedley_5fnull_1717',['JSON_HEDLEY_NULL',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#a06449cfb74f25f075a8ea334542f1c65',1,'JSON_HEDLEY_NULL(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#a06449cfb74f25f075a8ea334542f1c65',1,'JSON_HEDLEY_NULL(): json.hpp']]], - ['json_5fhedley_5fpelles_5fversion_5fcheck_1718',['JSON_HEDLEY_PELLES_VERSION_CHECK',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#a21937c8e7c79a1bef6695691c733e29f',1,'JSON_HEDLEY_PELLES_VERSION_CHECK(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#a21937c8e7c79a1bef6695691c733e29f',1,'JSON_HEDLEY_PELLES_VERSION_CHECK(): json.hpp']]], - ['json_5fhedley_5fpgi_5fversion_5fcheck_1719',['JSON_HEDLEY_PGI_VERSION_CHECK',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#a009a77cb8a9fd33aafff173bb945128d',1,'JSON_HEDLEY_PGI_VERSION_CHECK(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#a009a77cb8a9fd33aafff173bb945128d',1,'JSON_HEDLEY_PGI_VERSION_CHECK(): json.hpp']]], - ['json_5fhedley_5fpragma_1720',['JSON_HEDLEY_PRAGMA',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#aeb6e382f24fc5453621ae258b72e8775',1,'JSON_HEDLEY_PRAGMA(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#aeb6e382f24fc5453621ae258b72e8775',1,'JSON_HEDLEY_PRAGMA(): json.hpp']]], - ['json_5fhedley_5fpredict_1721',['JSON_HEDLEY_PREDICT',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#a34846d0797b38c1971baee08736dae69',1,'JSON_HEDLEY_PREDICT(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#a34846d0797b38c1971baee08736dae69',1,'JSON_HEDLEY_PREDICT(): json.hpp']]], - ['json_5fhedley_5fpredict_5ffalse_1722',['JSON_HEDLEY_PREDICT_FALSE',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#aec5597506417346f8f1c4d1f08c7719f',1,'JSON_HEDLEY_PREDICT_FALSE(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#aec5597506417346f8f1c4d1f08c7719f',1,'JSON_HEDLEY_PREDICT_FALSE(): json.hpp']]], - ['json_5fhedley_5fpredict_5ftrue_1723',['JSON_HEDLEY_PREDICT_TRUE',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#adb569cea2c5a17c33734f27e8fef2473',1,'JSON_HEDLEY_PREDICT_TRUE(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#adb569cea2c5a17c33734f27e8fef2473',1,'JSON_HEDLEY_PREDICT_TRUE(): json.hpp']]], - ['json_5fhedley_5fprintf_5fformat_1724',['JSON_HEDLEY_PRINTF_FORMAT',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#a2e17831d69746d3ee8ad4796e96975a2',1,'JSON_HEDLEY_PRINTF_FORMAT(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#a2e17831d69746d3ee8ad4796e96975a2',1,'JSON_HEDLEY_PRINTF_FORMAT(): json.hpp']]], - ['json_5fhedley_5fprivate_1725',['JSON_HEDLEY_PRIVATE',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#a034c879888858092ec101e8d02be67c2',1,'JSON_HEDLEY_PRIVATE(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#a034c879888858092ec101e8d02be67c2',1,'JSON_HEDLEY_PRIVATE(): json.hpp']]], - ['json_5fhedley_5fpublic_1726',['JSON_HEDLEY_PUBLIC',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#aa1588f4ea4e7819b5b6e66f07865737f',1,'JSON_HEDLEY_PUBLIC(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#aa1588f4ea4e7819b5b6e66f07865737f',1,'JSON_HEDLEY_PUBLIC(): json.hpp']]], - ['json_5fhedley_5fpure_1727',['JSON_HEDLEY_PURE',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#af5c84b7d1a43361bdc14cc6941078000',1,'JSON_HEDLEY_PURE(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#af5c84b7d1a43361bdc14cc6941078000',1,'JSON_HEDLEY_PURE(): json.hpp']]], - ['json_5fhedley_5freinterpret_5fcast_1728',['JSON_HEDLEY_REINTERPRET_CAST',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#a86dd11af75e3f25f5be26cf3c779ba79',1,'JSON_HEDLEY_REINTERPRET_CAST(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#a86dd11af75e3f25f5be26cf3c779ba79',1,'JSON_HEDLEY_REINTERPRET_CAST(): json.hpp']]], - ['json_5fhedley_5frequire_1729',['JSON_HEDLEY_REQUIRE',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#acbc72fa9390d5e8b7592a81384dfabf3',1,'JSON_HEDLEY_REQUIRE(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#acbc72fa9390d5e8b7592a81384dfabf3',1,'JSON_HEDLEY_REQUIRE(): json.hpp']]], - ['json_5fhedley_5frequire_5fconstexpr_1730',['JSON_HEDLEY_REQUIRE_CONSTEXPR',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#a1136ab0d872379bb18d0839893bede67',1,'JSON_HEDLEY_REQUIRE_CONSTEXPR(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#a1136ab0d872379bb18d0839893bede67',1,'JSON_HEDLEY_REQUIRE_CONSTEXPR(): json.hpp']]], - ['json_5fhedley_5frequire_5fmsg_1731',['JSON_HEDLEY_REQUIRE_MSG',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#a7106fb230747163b5b16121eb6a42b23',1,'JSON_HEDLEY_REQUIRE_MSG(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#a7106fb230747163b5b16121eb6a42b23',1,'JSON_HEDLEY_REQUIRE_MSG(): json.hpp']]], - ['json_5fhedley_5frestrict_1732',['JSON_HEDLEY_RESTRICT',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#ad4979e5bc2f252ff6e367fc254ab4e85',1,'JSON_HEDLEY_RESTRICT(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#ad4979e5bc2f252ff6e367fc254ab4e85',1,'JSON_HEDLEY_RESTRICT(): json.hpp']]], - ['json_5fhedley_5freturns_5fnon_5fnull_1733',['JSON_HEDLEY_RETURNS_NON_NULL',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#a5f2aaec3b681d0a72f7d6e90b70cdcd1',1,'JSON_HEDLEY_RETURNS_NON_NULL(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#a5f2aaec3b681d0a72f7d6e90b70cdcd1',1,'JSON_HEDLEY_RETURNS_NON_NULL(): json.hpp']]], - ['json_5fhedley_5fsentinel_1734',['JSON_HEDLEY_SENTINEL',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#afe58497d56cda5e4cbf2d33be1bdd91e',1,'JSON_HEDLEY_SENTINEL(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#afe58497d56cda5e4cbf2d33be1bdd91e',1,'JSON_HEDLEY_SENTINEL(): json.hpp']]], - ['json_5fhedley_5fstatic_5fassert_1735',['JSON_HEDLEY_STATIC_ASSERT',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#a04269935c66fe5a9b6c33fa36037d215',1,'JSON_HEDLEY_STATIC_ASSERT(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#a04269935c66fe5a9b6c33fa36037d215',1,'JSON_HEDLEY_STATIC_ASSERT(): json.hpp']]], - ['json_5fhedley_5fstatic_5fcast_1736',['JSON_HEDLEY_STATIC_CAST',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#a2edb8d037ad5cbac818c86aca317226a',1,'JSON_HEDLEY_STATIC_CAST(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#a2edb8d037ad5cbac818c86aca317226a',1,'JSON_HEDLEY_STATIC_CAST(): json.hpp']]], - ['json_5fhedley_5fstringify_1737',['JSON_HEDLEY_STRINGIFY',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#a9b2aefadecfe77306599a08b0d8147ca',1,'JSON_HEDLEY_STRINGIFY(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#a9b2aefadecfe77306599a08b0d8147ca',1,'JSON_HEDLEY_STRINGIFY(): json.hpp']]], - ['json_5fhedley_5fstringify_5fex_1738',['JSON_HEDLEY_STRINGIFY_EX',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#a8b50e69690eed3a7e11797b1122b4302',1,'JSON_HEDLEY_STRINGIFY_EX(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#a8b50e69690eed3a7e11797b1122b4302',1,'JSON_HEDLEY_STRINGIFY_EX(): json.hpp']]], - ['json_5fhedley_5fsunpro_5fversion_5fcheck_1739',['JSON_HEDLEY_SUNPRO_VERSION_CHECK',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#a4b6d318de76d6d23850ec1a588bdeffa',1,'JSON_HEDLEY_SUNPRO_VERSION_CHECK(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#a4b6d318de76d6d23850ec1a588bdeffa',1,'JSON_HEDLEY_SUNPRO_VERSION_CHECK(): json.hpp']]], - ['json_5fhedley_5fti_5farmcl_5fversion_5fcheck_1740',['JSON_HEDLEY_TI_ARMCL_VERSION_CHECK',['../third_2nlohmann_2json_8hpp.html#abbff24b90b5e9f8b586ee0b334baa636',1,'json.hpp']]], - ['json_5fhedley_5fti_5fcl2000_5fversion_5fcheck_1741',['JSON_HEDLEY_TI_CL2000_VERSION_CHECK',['../third_2nlohmann_2json_8hpp.html#a1ff3757a45a2cb0c54f78722fd7dc47c',1,'json.hpp']]], - ['json_5fhedley_5fti_5fcl430_5fversion_5fcheck_1742',['JSON_HEDLEY_TI_CL430_VERSION_CHECK',['../third_2nlohmann_2json_8hpp.html#a0c4b607b1dda665174dcd4c6cfe6ce95',1,'json.hpp']]], - ['json_5fhedley_5fti_5fcl6x_5fversion_5fcheck_1743',['JSON_HEDLEY_TI_CL6X_VERSION_CHECK',['../third_2nlohmann_2json_8hpp.html#a138095ac760d2964c84f562b23332101',1,'json.hpp']]], - ['json_5fhedley_5fti_5fcl7x_5fversion_5fcheck_1744',['JSON_HEDLEY_TI_CL7X_VERSION_CHECK',['../third_2nlohmann_2json_8hpp.html#a6198db3ff6fc72b1fa798229fd025229',1,'json.hpp']]], - ['json_5fhedley_5fti_5fclpru_5fversion_5fcheck_1745',['JSON_HEDLEY_TI_CLPRU_VERSION_CHECK',['../third_2nlohmann_2json_8hpp.html#aab50c0bc1673dde3c1cf4e3b131e97ad',1,'json.hpp']]], - ['json_5fhedley_5fti_5fversion_5fcheck_1746',['JSON_HEDLEY_TI_VERSION_CHECK',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#a3d620ef5f95be933b3d8e24d4fc5b6d5',1,'JSON_HEDLEY_TI_VERSION_CHECK(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#a3d620ef5f95be933b3d8e24d4fc5b6d5',1,'JSON_HEDLEY_TI_VERSION_CHECK(): json.hpp']]], - ['json_5fhedley_5ftinyc_5fversion_5fcheck_1747',['JSON_HEDLEY_TINYC_VERSION_CHECK',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#a38192f48e8c6ee0018a988d54e97cacf',1,'JSON_HEDLEY_TINYC_VERSION_CHECK(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#a38192f48e8c6ee0018a988d54e97cacf',1,'JSON_HEDLEY_TINYC_VERSION_CHECK(): json.hpp']]], - ['json_5fhedley_5funavailable_1748',['JSON_HEDLEY_UNAVAILABLE',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#a681fd0533fbc24394f3322b6f4a60c4f',1,'JSON_HEDLEY_UNAVAILABLE(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#a681fd0533fbc24394f3322b6f4a60c4f',1,'JSON_HEDLEY_UNAVAILABLE(): json.hpp']]], - ['json_5fhedley_5funlikely_1749',['JSON_HEDLEY_UNLIKELY',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd',1,'JSON_HEDLEY_UNLIKELY(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd',1,'JSON_HEDLEY_UNLIKELY(): json.hpp']]], - ['json_5fhedley_5funpredictable_1750',['JSON_HEDLEY_UNPREDICTABLE',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#a26967eb7395562701e450cec045dda15',1,'JSON_HEDLEY_UNPREDICTABLE(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#a26967eb7395562701e450cec045dda15',1,'JSON_HEDLEY_UNPREDICTABLE(): json.hpp']]], - ['json_5fhedley_5funreachable_1751',['JSON_HEDLEY_UNREACHABLE',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#a2d5705bd7bd14855c3ef5b98305c5fb4',1,'JSON_HEDLEY_UNREACHABLE(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#a2d5705bd7bd14855c3ef5b98305c5fb4',1,'JSON_HEDLEY_UNREACHABLE(): json.hpp']]], - ['json_5fhedley_5funreachable_5freturn_1752',['JSON_HEDLEY_UNREACHABLE_RETURN',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#a06401b258ef03263f2aec48029dc8b03',1,'JSON_HEDLEY_UNREACHABLE_RETURN(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#a06401b258ef03263f2aec48029dc8b03',1,'JSON_HEDLEY_UNREACHABLE_RETURN(): json.hpp']]], - ['json_5fhedley_5fversion_1753',['JSON_HEDLEY_VERSION',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#ae4654024695783bdf7cbd900f0e0634a',1,'JSON_HEDLEY_VERSION(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#ae4654024695783bdf7cbd900f0e0634a',1,'JSON_HEDLEY_VERSION(): json.hpp']]], - ['json_5fhedley_5fversion_5fdecode_5fmajor_1754',['JSON_HEDLEY_VERSION_DECODE_MAJOR',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#a50f81c80525d6fbce743d5d28b53ff73',1,'JSON_HEDLEY_VERSION_DECODE_MAJOR(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#a50f81c80525d6fbce743d5d28b53ff73',1,'JSON_HEDLEY_VERSION_DECODE_MAJOR(): json.hpp']]], - ['json_5fhedley_5fversion_5fdecode_5fminor_1755',['JSON_HEDLEY_VERSION_DECODE_MINOR',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#ae55f01749c4cc564b20b0f2650f10519',1,'JSON_HEDLEY_VERSION_DECODE_MINOR(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#ae55f01749c4cc564b20b0f2650f10519',1,'JSON_HEDLEY_VERSION_DECODE_MINOR(): json.hpp']]], - ['json_5fhedley_5fversion_5fdecode_5frevision_1756',['JSON_HEDLEY_VERSION_DECODE_REVISION',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#a2d04cc47c899e9addd019e0e7d1ebdbb',1,'JSON_HEDLEY_VERSION_DECODE_REVISION(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#a2d04cc47c899e9addd019e0e7d1ebdbb',1,'JSON_HEDLEY_VERSION_DECODE_REVISION(): json.hpp']]], - ['json_5fhedley_5fversion_5fencode_1757',['JSON_HEDLEY_VERSION_ENCODE',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#aa1da535c59b21f70e5967b66473543f0',1,'JSON_HEDLEY_VERSION_ENCODE(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#aa1da535c59b21f70e5967b66473543f0',1,'JSON_HEDLEY_VERSION_ENCODE(): json.hpp']]], - ['json_5fhedley_5fwarn_5funused_5fresult_1758',['JSON_HEDLEY_WARN_UNUSED_RESULT',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#a28d7e3b2d26bd5b8a3806da3db7dea03',1,'JSON_HEDLEY_WARN_UNUSED_RESULT(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#a28d7e3b2d26bd5b8a3806da3db7dea03',1,'JSON_HEDLEY_WARN_UNUSED_RESULT(): json.hpp']]], - ['json_5fhedley_5fwarn_5funused_5fresult_5fmsg_1759',['JSON_HEDLEY_WARN_UNUSED_RESULT_MSG',['../third_2nlohmann_2json_8hpp.html#adfb98ffe9adf238a5ba1670738c0f387',1,'json.hpp']]], - ['json_5fhedley_5fwarning_1760',['JSON_HEDLEY_WARNING',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#a5563e5b0fbc2a9b525830081404d9208',1,'JSON_HEDLEY_WARNING(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#a5563e5b0fbc2a9b525830081404d9208',1,'JSON_HEDLEY_WARNING(): json.hpp']]], - ['json_5finternal_5fcatch_1761',['JSON_INTERNAL_CATCH',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#a5478b7564e65634cc69432ed3cb6490e',1,'JSON_INTERNAL_CATCH(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#a5478b7564e65634cc69432ed3cb6490e',1,'JSON_INTERNAL_CATCH(): json.hpp']]], - ['json_5fthrow_1762',['JSON_THROW',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f',1,'JSON_THROW(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f',1,'JSON_THROW(): json.hpp']]], - ['json_5ftry_1763',['JSON_TRY',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#a985d3b82445302c57257f6432f261fe9',1,'JSON_TRY(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#a985d3b82445302c57257f6432f261fe9',1,'JSON_TRY(): json.hpp']]], - ['json_5fuse_5fimplicit_5fconversions_1764',['JSON_USE_IMPLICIT_CONVERSIONS',['../third_2nlohmann_2json_8hpp.html#a24c96ca7fc59096c30b32339a953f97d',1,'json.hpp']]] -]; diff --git a/help/html/search/defines_6.html b/help/html/search/defines_6.html deleted file mode 100644 index 7496307..0000000 --- a/help/html/search/defines_6.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/defines_6.js b/help/html/search/defines_6.js deleted file mode 100644 index 92f013d..0000000 --- a/help/html/search/defines_6.js +++ /dev/null @@ -1,79 +0,0 @@ -var searchData= -[ - ['nlohmann_5fbasic_5fjson_5ftpl_1765',['NLOHMANN_BASIC_JSON_TPL',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#a80b7254e63f199a1f656f07ae551f632',1,'NLOHMANN_BASIC_JSON_TPL(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#a80b7254e63f199a1f656f07ae551f632',1,'NLOHMANN_BASIC_JSON_TPL(): json.hpp']]], - ['nlohmann_5fbasic_5fjson_5ftpl_5fdeclaration_1766',['NLOHMANN_BASIC_JSON_TPL_DECLARATION',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#a0643bd74c2dc6f0e4e420b8190ea8f0f',1,'NLOHMANN_BASIC_JSON_TPL_DECLARATION(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#a0643bd74c2dc6f0e4e420b8190ea8f0f',1,'NLOHMANN_BASIC_JSON_TPL_DECLARATION(): json.hpp']]], - ['nlohmann_5fdefine_5ftype_5fintrusive_1767',['NLOHMANN_DEFINE_TYPE_INTRUSIVE',['../third_2nlohmann_2json_8hpp.html#ad22f878b4987246e5a4f4f258228e775',1,'json.hpp']]], - ['nlohmann_5fdefine_5ftype_5fnon_5fintrusive_1768',['NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE',['../third_2nlohmann_2json_8hpp.html#a5767c8967df840d48dc01b0cf810a882',1,'json.hpp']]], - ['nlohmann_5fjson_5fexpand_1769',['NLOHMANN_JSON_EXPAND',['../third_2nlohmann_2json_8hpp.html#af62f70922a57ffa728d579d3c7963bf5',1,'json.hpp']]], - ['nlohmann_5fjson_5ffrom_1770',['NLOHMANN_JSON_FROM',['../third_2nlohmann_2json_8hpp.html#a8d18979cc7c33deda994e0caacf9e5e0',1,'json.hpp']]], - ['nlohmann_5fjson_5fget_5fmacro_1771',['NLOHMANN_JSON_GET_MACRO',['../third_2nlohmann_2json_8hpp.html#afc0845ecb0987d16963a81f34bb0d94d',1,'json.hpp']]], - ['nlohmann_5fjson_5fpaste_1772',['NLOHMANN_JSON_PASTE',['../third_2nlohmann_2json_8hpp.html#a9495fb0e6d683bfa654ed646495b408a',1,'json.hpp']]], - ['nlohmann_5fjson_5fpaste10_1773',['NLOHMANN_JSON_PASTE10',['../third_2nlohmann_2json_8hpp.html#add270ee96fa3a6ffb454db30084db2e0',1,'json.hpp']]], - ['nlohmann_5fjson_5fpaste11_1774',['NLOHMANN_JSON_PASTE11',['../third_2nlohmann_2json_8hpp.html#a98dd3b9b615ae85290d286ae863cde54',1,'json.hpp']]], - ['nlohmann_5fjson_5fpaste12_1775',['NLOHMANN_JSON_PASTE12',['../third_2nlohmann_2json_8hpp.html#a58a04525435cdf51110639ee089ed012',1,'json.hpp']]], - ['nlohmann_5fjson_5fpaste13_1776',['NLOHMANN_JSON_PASTE13',['../third_2nlohmann_2json_8hpp.html#aa88bff73660c72539ddf13e42ebbe227',1,'json.hpp']]], - ['nlohmann_5fjson_5fpaste14_1777',['NLOHMANN_JSON_PASTE14',['../third_2nlohmann_2json_8hpp.html#a8f25d249f0af16eaac3b8444bd79e66b',1,'json.hpp']]], - ['nlohmann_5fjson_5fpaste15_1778',['NLOHMANN_JSON_PASTE15',['../third_2nlohmann_2json_8hpp.html#a90005c47b51e2bc57bb86d089429bd1c',1,'json.hpp']]], - ['nlohmann_5fjson_5fpaste16_1779',['NLOHMANN_JSON_PASTE16',['../third_2nlohmann_2json_8hpp.html#aed0149d0e2dae927ae5a845556cfaab6',1,'json.hpp']]], - ['nlohmann_5fjson_5fpaste17_1780',['NLOHMANN_JSON_PASTE17',['../third_2nlohmann_2json_8hpp.html#a425f5b0501e323903d0452227d83b764',1,'json.hpp']]], - ['nlohmann_5fjson_5fpaste18_1781',['NLOHMANN_JSON_PASTE18',['../third_2nlohmann_2json_8hpp.html#af39a0f63c596c5b4dd001aa0b1c4a76c',1,'json.hpp']]], - ['nlohmann_5fjson_5fpaste19_1782',['NLOHMANN_JSON_PASTE19',['../third_2nlohmann_2json_8hpp.html#a7f0c430594f42a2409ff2474722133c5',1,'json.hpp']]], - ['nlohmann_5fjson_5fpaste2_1783',['NLOHMANN_JSON_PASTE2',['../third_2nlohmann_2json_8hpp.html#a682c9966e923aa4fa0193b278b1edd2a',1,'json.hpp']]], - ['nlohmann_5fjson_5fpaste20_1784',['NLOHMANN_JSON_PASTE20',['../third_2nlohmann_2json_8hpp.html#a30507458068a8b4b2fb270712915783d',1,'json.hpp']]], - ['nlohmann_5fjson_5fpaste21_1785',['NLOHMANN_JSON_PASTE21',['../third_2nlohmann_2json_8hpp.html#ae63341f0ec1f867e557805655afc4103',1,'json.hpp']]], - ['nlohmann_5fjson_5fpaste22_1786',['NLOHMANN_JSON_PASTE22',['../third_2nlohmann_2json_8hpp.html#a3120ded0ea577721fd71e3591657c577',1,'json.hpp']]], - ['nlohmann_5fjson_5fpaste23_1787',['NLOHMANN_JSON_PASTE23',['../third_2nlohmann_2json_8hpp.html#ac848d6f3e9ae4bae4f0638fcb5ab996f',1,'json.hpp']]], - ['nlohmann_5fjson_5fpaste24_1788',['NLOHMANN_JSON_PASTE24',['../third_2nlohmann_2json_8hpp.html#adfe12412820ef1409359615c41440345',1,'json.hpp']]], - ['nlohmann_5fjson_5fpaste25_1789',['NLOHMANN_JSON_PASTE25',['../third_2nlohmann_2json_8hpp.html#a33416940d4a62a583f03b0ff2375400e',1,'json.hpp']]], - ['nlohmann_5fjson_5fpaste26_1790',['NLOHMANN_JSON_PASTE26',['../third_2nlohmann_2json_8hpp.html#a866beb938b64216218cd062e18602eb9',1,'json.hpp']]], - ['nlohmann_5fjson_5fpaste27_1791',['NLOHMANN_JSON_PASTE27',['../third_2nlohmann_2json_8hpp.html#a95b9c0445b989761a5ca49cf7e5b0f21',1,'json.hpp']]], - ['nlohmann_5fjson_5fpaste28_1792',['NLOHMANN_JSON_PASTE28',['../third_2nlohmann_2json_8hpp.html#a58f402f503add069cbb5824130b63a50',1,'json.hpp']]], - ['nlohmann_5fjson_5fpaste29_1793',['NLOHMANN_JSON_PASTE29',['../third_2nlohmann_2json_8hpp.html#a3f6cfd0610cc977f34e910266945f200',1,'json.hpp']]], - ['nlohmann_5fjson_5fpaste3_1794',['NLOHMANN_JSON_PASTE3',['../third_2nlohmann_2json_8hpp.html#aaed4e77f612a9644d47c23508fb11f52',1,'json.hpp']]], - ['nlohmann_5fjson_5fpaste30_1795',['NLOHMANN_JSON_PASTE30',['../third_2nlohmann_2json_8hpp.html#a5091052b859b2a814db1ed8f6ed6a2a2',1,'json.hpp']]], - ['nlohmann_5fjson_5fpaste31_1796',['NLOHMANN_JSON_PASTE31',['../third_2nlohmann_2json_8hpp.html#ae4992f39bb2ab8bd14e62c11598b2ae5',1,'json.hpp']]], - ['nlohmann_5fjson_5fpaste32_1797',['NLOHMANN_JSON_PASTE32',['../third_2nlohmann_2json_8hpp.html#af0f98920ec61e99028f7fdef8e920595',1,'json.hpp']]], - ['nlohmann_5fjson_5fpaste33_1798',['NLOHMANN_JSON_PASTE33',['../third_2nlohmann_2json_8hpp.html#ab4071130e08cb0863d4e3487fa79cda1',1,'json.hpp']]], - ['nlohmann_5fjson_5fpaste34_1799',['NLOHMANN_JSON_PASTE34',['../third_2nlohmann_2json_8hpp.html#a358ebb5dee01b8ed59bc28f815bc6d93',1,'json.hpp']]], - ['nlohmann_5fjson_5fpaste35_1800',['NLOHMANN_JSON_PASTE35',['../third_2nlohmann_2json_8hpp.html#aeeea2b876c2a636481b3ae5ef11a19dc',1,'json.hpp']]], - ['nlohmann_5fjson_5fpaste36_1801',['NLOHMANN_JSON_PASTE36',['../third_2nlohmann_2json_8hpp.html#a33ac48776f95a68576c40217395bf48d',1,'json.hpp']]], - ['nlohmann_5fjson_5fpaste37_1802',['NLOHMANN_JSON_PASTE37',['../third_2nlohmann_2json_8hpp.html#a07deda8156c4854e92eb65fcc082901b',1,'json.hpp']]], - ['nlohmann_5fjson_5fpaste38_1803',['NLOHMANN_JSON_PASTE38',['../third_2nlohmann_2json_8hpp.html#a977ee5f6587abac33244336ebd969d8f',1,'json.hpp']]], - ['nlohmann_5fjson_5fpaste39_1804',['NLOHMANN_JSON_PASTE39',['../third_2nlohmann_2json_8hpp.html#af227f94449238a7a4773364559b7e293',1,'json.hpp']]], - ['nlohmann_5fjson_5fpaste4_1805',['NLOHMANN_JSON_PASTE4',['../third_2nlohmann_2json_8hpp.html#a5349ab2d8aea839cdd9d127f1228bd28',1,'json.hpp']]], - ['nlohmann_5fjson_5fpaste40_1806',['NLOHMANN_JSON_PASTE40',['../third_2nlohmann_2json_8hpp.html#a93c6c888c43aec21adfc7ffdc92cf7d0',1,'json.hpp']]], - ['nlohmann_5fjson_5fpaste41_1807',['NLOHMANN_JSON_PASTE41',['../third_2nlohmann_2json_8hpp.html#a18e393011cc564dc6b0f1d15b8c84e05',1,'json.hpp']]], - ['nlohmann_5fjson_5fpaste42_1808',['NLOHMANN_JSON_PASTE42',['../third_2nlohmann_2json_8hpp.html#a95e4a1508b5f7887c6158bc1c8421214',1,'json.hpp']]], - ['nlohmann_5fjson_5fpaste43_1809',['NLOHMANN_JSON_PASTE43',['../third_2nlohmann_2json_8hpp.html#a92d3147a1b6ee178d6645f087b0092a2',1,'json.hpp']]], - ['nlohmann_5fjson_5fpaste44_1810',['NLOHMANN_JSON_PASTE44',['../third_2nlohmann_2json_8hpp.html#a0a88431676c1c0dd23152f6398c85b47',1,'json.hpp']]], - ['nlohmann_5fjson_5fpaste45_1811',['NLOHMANN_JSON_PASTE45',['../third_2nlohmann_2json_8hpp.html#a690c86f3a6798a8f228c23e353fa1f4c',1,'json.hpp']]], - ['nlohmann_5fjson_5fpaste46_1812',['NLOHMANN_JSON_PASTE46',['../third_2nlohmann_2json_8hpp.html#a2b608f54c6ad7eb116db8ac32d662e59',1,'json.hpp']]], - ['nlohmann_5fjson_5fpaste47_1813',['NLOHMANN_JSON_PASTE47',['../third_2nlohmann_2json_8hpp.html#acb41a7b4ef92bdebd48fff958a07ba73',1,'json.hpp']]], - ['nlohmann_5fjson_5fpaste48_1814',['NLOHMANN_JSON_PASTE48',['../third_2nlohmann_2json_8hpp.html#abba715e3b79d43cd3edfc327964af993',1,'json.hpp']]], - ['nlohmann_5fjson_5fpaste49_1815',['NLOHMANN_JSON_PASTE49',['../third_2nlohmann_2json_8hpp.html#ae194fe1cdd80019af57b88d7a07be858',1,'json.hpp']]], - ['nlohmann_5fjson_5fpaste5_1816',['NLOHMANN_JSON_PASTE5',['../third_2nlohmann_2json_8hpp.html#a49c543dca7e9b9844991dad31328fb06',1,'json.hpp']]], - ['nlohmann_5fjson_5fpaste50_1817',['NLOHMANN_JSON_PASTE50',['../third_2nlohmann_2json_8hpp.html#a019bc7ba256120287abe9297d8220f8d',1,'json.hpp']]], - ['nlohmann_5fjson_5fpaste51_1818',['NLOHMANN_JSON_PASTE51',['../third_2nlohmann_2json_8hpp.html#a4f8f97d2fbb1d02cb9e14253db29afc5',1,'json.hpp']]], - ['nlohmann_5fjson_5fpaste52_1819',['NLOHMANN_JSON_PASTE52',['../third_2nlohmann_2json_8hpp.html#a6e5309c4debd7b1ca036bd78a45da83d',1,'json.hpp']]], - ['nlohmann_5fjson_5fpaste53_1820',['NLOHMANN_JSON_PASTE53',['../third_2nlohmann_2json_8hpp.html#a8305e64563937a0421af09a573184a15',1,'json.hpp']]], - ['nlohmann_5fjson_5fpaste54_1821',['NLOHMANN_JSON_PASTE54',['../third_2nlohmann_2json_8hpp.html#ac436de6daea01cb2256bd87717a820f6',1,'json.hpp']]], - ['nlohmann_5fjson_5fpaste55_1822',['NLOHMANN_JSON_PASTE55',['../third_2nlohmann_2json_8hpp.html#abce6d2ddf2ea1e5ad59066d0fc5278e4',1,'json.hpp']]], - ['nlohmann_5fjson_5fpaste56_1823',['NLOHMANN_JSON_PASTE56',['../third_2nlohmann_2json_8hpp.html#a48a0da09ac90252022f6864cfa3d9448',1,'json.hpp']]], - ['nlohmann_5fjson_5fpaste57_1824',['NLOHMANN_JSON_PASTE57',['../third_2nlohmann_2json_8hpp.html#a768d6ebcd60776a1a90a20ee96cc92c9',1,'json.hpp']]], - ['nlohmann_5fjson_5fpaste58_1825',['NLOHMANN_JSON_PASTE58',['../third_2nlohmann_2json_8hpp.html#a3fdc9b5e6d3c8ae21a13950f89e1380a',1,'json.hpp']]], - ['nlohmann_5fjson_5fpaste59_1826',['NLOHMANN_JSON_PASTE59',['../third_2nlohmann_2json_8hpp.html#a72d13fe9cacdfa68533b8e46b06c8edc',1,'json.hpp']]], - ['nlohmann_5fjson_5fpaste6_1827',['NLOHMANN_JSON_PASTE6',['../third_2nlohmann_2json_8hpp.html#a6da6cf565af6a4a786b484019dce2fd3',1,'json.hpp']]], - ['nlohmann_5fjson_5fpaste60_1828',['NLOHMANN_JSON_PASTE60',['../third_2nlohmann_2json_8hpp.html#aaa4d92bb3eee9252b5e7e3c94331e89e',1,'json.hpp']]], - ['nlohmann_5fjson_5fpaste61_1829',['NLOHMANN_JSON_PASTE61',['../third_2nlohmann_2json_8hpp.html#ad40518144e6777220fd044e3823d5709',1,'json.hpp']]], - ['nlohmann_5fjson_5fpaste62_1830',['NLOHMANN_JSON_PASTE62',['../third_2nlohmann_2json_8hpp.html#a2058eaa857e2b8409234212297c30b5c',1,'json.hpp']]], - ['nlohmann_5fjson_5fpaste63_1831',['NLOHMANN_JSON_PASTE63',['../third_2nlohmann_2json_8hpp.html#a20df787f375192fed2b9529178f4e003',1,'json.hpp']]], - ['nlohmann_5fjson_5fpaste64_1832',['NLOHMANN_JSON_PASTE64',['../third_2nlohmann_2json_8hpp.html#a8fee48568bba4163bcc0ffd2a556d5cf',1,'json.hpp']]], - ['nlohmann_5fjson_5fpaste7_1833',['NLOHMANN_JSON_PASTE7',['../third_2nlohmann_2json_8hpp.html#ab3cf0b823706b94a78c0611209df5044',1,'json.hpp']]], - ['nlohmann_5fjson_5fpaste8_1834',['NLOHMANN_JSON_PASTE8',['../third_2nlohmann_2json_8hpp.html#a931a0b268897bdd26521ac3152ddba5b',1,'json.hpp']]], - ['nlohmann_5fjson_5fpaste9_1835',['NLOHMANN_JSON_PASTE9',['../third_2nlohmann_2json_8hpp.html#aed2ec7e247cd50f8f9941ca3fe6f2a2a',1,'json.hpp']]], - ['nlohmann_5fjson_5fserialize_5fenum_1836',['NLOHMANN_JSON_SERIALIZE_ENUM',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#a4c5d399dfa9252e70f876756f3f49084',1,'NLOHMANN_JSON_SERIALIZE_ENUM(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#a4c5d399dfa9252e70f876756f3f49084',1,'NLOHMANN_JSON_SERIALIZE_ENUM(): json.hpp']]], - ['nlohmann_5fjson_5fto_1837',['NLOHMANN_JSON_TO',['../third_2nlohmann_2json_8hpp.html#a32c518e9a43fb0389fccb41e5c6f63a9',1,'json.hpp']]], - ['nlohmann_5fjson_5fversion_5fmajor_1838',['NLOHMANN_JSON_VERSION_MAJOR',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#a7c94253db90041af11dd946a49f0f8a4',1,'NLOHMANN_JSON_VERSION_MAJOR(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#a7c94253db90041af11dd946a49f0f8a4',1,'NLOHMANN_JSON_VERSION_MAJOR(): json.hpp']]], - ['nlohmann_5fjson_5fversion_5fminor_1839',['NLOHMANN_JSON_VERSION_MINOR',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#ab5ca1e164894d78d3276d2e5fe58c5e3',1,'NLOHMANN_JSON_VERSION_MINOR(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#ab5ca1e164894d78d3276d2e5fe58c5e3',1,'NLOHMANN_JSON_VERSION_MINOR(): json.hpp']]], - ['nlohmann_5fjson_5fversion_5fpatch_1840',['NLOHMANN_JSON_VERSION_PATCH',['../build_2__deps_2json-src_2include_2nlohmann_2json_8hpp.html#a307e0238ebc35e99ea45c68823eb83eb',1,'NLOHMANN_JSON_VERSION_PATCH(): json.hpp'],['../third_2nlohmann_2json_8hpp.html#a307e0238ebc35e99ea45c68823eb83eb',1,'NLOHMANN_JSON_VERSION_PATCH(): json.hpp']]] -]; diff --git a/help/html/search/defines_7.html b/help/html/search/defines_7.html deleted file mode 100644 index 049c0cf..0000000 --- a/help/html/search/defines_7.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/defines_7.js b/help/html/search/defines_7.js deleted file mode 100644 index 54ed3a9..0000000 --- a/help/html/search/defines_7.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['platform_5fid_1841',['PLATFORM_ID',['../CMakeCCompilerId_8c.html#adbc5372f40838899018fadbc89bd588b',1,'PLATFORM_ID(): CMakeCCompilerId.c'],['../CMakeCXXCompilerId_8cpp.html#adbc5372f40838899018fadbc89bd588b',1,'PLATFORM_ID(): CMakeCXXCompilerId.cpp']]] -]; diff --git a/help/html/search/defines_8.html b/help/html/search/defines_8.html deleted file mode 100644 index a952d6c..0000000 --- a/help/html/search/defines_8.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/defines_8.js b/help/html/search/defines_8.js deleted file mode 100644 index 134acee..0000000 --- a/help/html/search/defines_8.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['stringify_1842',['STRINGIFY',['../CMakeCCompilerId_8c.html#a43e1cad902b6477bec893cb6430bd6c8',1,'STRINGIFY(): CMakeCCompilerId.c'],['../CMakeCXXCompilerId_8cpp.html#a43e1cad902b6477bec893cb6430bd6c8',1,'STRINGIFY(): CMakeCXXCompilerId.cpp']]], - ['stringify_5fhelper_1843',['STRINGIFY_HELPER',['../CMakeCCompilerId_8c.html#a2ae9b72bb13abaabfcf2ee0ba7d3fa1d',1,'STRINGIFY_HELPER(): CMakeCCompilerId.c'],['../CMakeCXXCompilerId_8cpp.html#a2ae9b72bb13abaabfcf2ee0ba7d3fa1d',1,'STRINGIFY_HELPER(): CMakeCXXCompilerId.cpp']]] -]; diff --git a/help/html/search/enums_0.html b/help/html/search/enums_0.html deleted file mode 100644 index 9669700..0000000 --- a/help/html/search/enums_0.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/enums_0.js b/help/html/search/enums_0.js deleted file mode 100644 index d1b8b9a..0000000 --- a/help/html/search/enums_0.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['authtype_380',['AuthType',['../classCocoaTweet_1_1OAuth_1_1OAuth1.html#ad6f15c279edf7725456d086b449eaeb5',1,'CocoaTweet::OAuth::OAuth1']]] -]; diff --git a/help/html/search/enums_1.html b/help/html/search/enums_1.html deleted file mode 100644 index dfec174..0000000 --- a/help/html/search/enums_1.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/enums_1.js b/help/html/search/enums_1.js deleted file mode 100644 index c95d355..0000000 --- a/help/html/search/enums_1.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['error_5fhandler_5ft_1558',['error_handler_t',['../namespacenlohmann_1_1detail.html#a5a76b60b26dc8c47256a996d18d967df',1,'nlohmann::detail::error_handler_t()'],['../namespacenlohmann_1_1detail.html#a5a76b60b26dc8c47256a996d18d967df',1,'nlohmann::detail::error_handler_t()']]] -]; diff --git a/help/html/search/enums_2.html b/help/html/search/enums_2.html deleted file mode 100644 index db70c36..0000000 --- a/help/html/search/enums_2.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/enums_2.js b/help/html/search/enums_2.js deleted file mode 100644 index c63e154..0000000 --- a/help/html/search/enums_2.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['input_5fformat_5ft_1559',['input_format_t',['../namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40',1,'nlohmann::detail::input_format_t()'],['../namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40',1,'nlohmann::detail::input_format_t()']]] -]; diff --git a/help/html/search/enums_3.html b/help/html/search/enums_3.html deleted file mode 100644 index fb7ec17..0000000 --- a/help/html/search/enums_3.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/enums_3.js b/help/html/search/enums_3.js deleted file mode 100644 index fddaa20..0000000 --- a/help/html/search/enums_3.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['parse_5fevent_5ft_1560',['parse_event_t',['../classnlohmann_1_1detail_1_1parser.html#a37ac88c864dda495f72cb62776b0bebe',1,'nlohmann::detail::parser::parse_event_t()'],['../namespacenlohmann_1_1detail.html#a2fb6dae6578e06ae73ca0d7cc8512b1a',1,'nlohmann::detail::parse_event_t()']]] -]; diff --git a/help/html/search/enums_4.html b/help/html/search/enums_4.html deleted file mode 100644 index b8b51ef..0000000 --- a/help/html/search/enums_4.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/enums_4.js b/help/html/search/enums_4.js deleted file mode 100644 index 3629230..0000000 --- a/help/html/search/enums_4.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['token_5ftype_1561',['token_type',['../classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098',1,'nlohmann::detail::lexer::token_type()'],['../classnlohmann_1_1detail_1_1lexer__base.html#aa3538cce439a2de6c7893e627b38c454',1,'nlohmann::detail::lexer_base::token_type()']]] -]; diff --git a/help/html/search/enums_5.html b/help/html/search/enums_5.html deleted file mode 100644 index d39b033..0000000 --- a/help/html/search/enums_5.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/enums_5.js b/help/html/search/enums_5.js deleted file mode 100644 index c10e803..0000000 --- a/help/html/search/enums_5.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['value_5ft_1562',['value_t',['../namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985',1,'nlohmann::detail::value_t()'],['../namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985',1,'nlohmann::detail::value_t()']]] -]; diff --git a/help/html/search/enumvalues_0.html b/help/html/search/enumvalues_0.html deleted file mode 100644 index 9286248..0000000 --- a/help/html/search/enumvalues_0.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/enumvalues_0.js b/help/html/search/enumvalues_0.js deleted file mode 100644 index 8970498..0000000 --- a/help/html/search/enumvalues_0.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['bearer_381',['Bearer',['../classCocoaTweet_1_1OAuth_1_1OAuth1.html#ad6f15c279edf7725456d086b449eaeb5a272acfd711cf3918953dc1106475f506',1,'CocoaTweet::OAuth::OAuth1']]] -]; diff --git a/help/html/search/enumvalues_1.html b/help/html/search/enumvalues_1.html deleted file mode 100644 index e22a79f..0000000 --- a/help/html/search/enumvalues_1.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/enumvalues_1.js b/help/html/search/enumvalues_1.js deleted file mode 100644 index 2db4f91..0000000 --- a/help/html/search/enumvalues_1.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['oauth_382',['OAuth',['../classCocoaTweet_1_1OAuth_1_1OAuth1.html#ad6f15c279edf7725456d086b449eaeb5af437ec77d729f192263c41e19c57f345',1,'CocoaTweet::OAuth::OAuth1']]] -]; diff --git a/help/html/search/enumvalues_10.html b/help/html/search/enumvalues_10.html deleted file mode 100644 index 7107c3d..0000000 --- a/help/html/search/enumvalues_10.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/enumvalues_10.js b/help/html/search/enumvalues_10.js deleted file mode 100644 index 549a26c..0000000 --- a/help/html/search/enumvalues_10.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['ubjson_1600',['ubjson',['../namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40a4537f20910e85437f6d07701864084e8',1,'nlohmann::detail::ubjson()'],['../namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40a4537f20910e85437f6d07701864084e8',1,'nlohmann::detail::ubjson()'],['../namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40a4537f20910e85437f6d07701864084e8',1,'nlohmann::detail::ubjson()'],['../namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40a4537f20910e85437f6d07701864084e8',1,'nlohmann::detail::ubjson()']]], - ['uninitialized_1601',['uninitialized',['../classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098a42dd1a73d072bb6bf3f494f22b15db8e',1,'nlohmann::detail::lexer::uninitialized()'],['../classnlohmann_1_1detail_1_1lexer__base.html#aa3538cce439a2de6c7893e627b38c454a42dd1a73d072bb6bf3f494f22b15db8e',1,'nlohmann::detail::lexer_base::uninitialized()']]] -]; diff --git a/help/html/search/enumvalues_11.html b/help/html/search/enumvalues_11.html deleted file mode 100644 index aab485d..0000000 --- a/help/html/search/enumvalues_11.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/enumvalues_11.js b/help/html/search/enumvalues_11.js deleted file mode 100644 index 04a35ab..0000000 --- a/help/html/search/enumvalues_11.js +++ /dev/null @@ -1,9 +0,0 @@ -var searchData= -[ - ['value_1602',['value',['../classnlohmann_1_1detail_1_1parser.html#a37ac88c864dda495f72cb62776b0bebea2063c1608d6e0baf80249c42e2be5804',1,'nlohmann::detail::parser::value()'],['../namespacenlohmann_1_1detail.html#a2fb6dae6578e06ae73ca0d7cc8512b1aa2063c1608d6e0baf80249c42e2be5804',1,'nlohmann::detail::value()']]], - ['value_5ffloat_1603',['value_float',['../classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098a0d2671a6f81efb91e77f6ac3bdb11443',1,'nlohmann::detail::lexer::value_float()'],['../classnlohmann_1_1detail_1_1lexer__base.html#aa3538cce439a2de6c7893e627b38c454a0d2671a6f81efb91e77f6ac3bdb11443',1,'nlohmann::detail::lexer_base::value_float()']]], - ['value_5finteger_1604',['value_integer',['../classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098a5064b6655d88a50ae16665cf7751c0ee',1,'nlohmann::detail::lexer::value_integer()'],['../classnlohmann_1_1detail_1_1lexer__base.html#aa3538cce439a2de6c7893e627b38c454a5064b6655d88a50ae16665cf7751c0ee',1,'nlohmann::detail::lexer_base::value_integer()']]], - ['value_5fseparator_1605',['value_separator',['../classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098a745373036100d7392ad62c617cab59af',1,'nlohmann::detail::lexer::value_separator()'],['../classnlohmann_1_1detail_1_1lexer__base.html#aa3538cce439a2de6c7893e627b38c454a745373036100d7392ad62c617cab59af',1,'nlohmann::detail::lexer_base::value_separator()']]], - ['value_5fstring_1606',['value_string',['../classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098a2b490e8bf366b4cbe3ebd99b26ce15ce',1,'nlohmann::detail::lexer::value_string()'],['../classnlohmann_1_1detail_1_1lexer__base.html#aa3538cce439a2de6c7893e627b38c454a2b490e8bf366b4cbe3ebd99b26ce15ce',1,'nlohmann::detail::lexer_base::value_string()']]], - ['value_5funsigned_1607',['value_unsigned',['../classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098aaf1f040fcd2f674d2e5893d7a731078f',1,'nlohmann::detail::lexer::value_unsigned()'],['../classnlohmann_1_1detail_1_1lexer__base.html#aa3538cce439a2de6c7893e627b38c454aaf1f040fcd2f674d2e5893d7a731078f',1,'nlohmann::detail::lexer_base::value_unsigned()']]] -]; diff --git a/help/html/search/enumvalues_2.html b/help/html/search/enumvalues_2.html deleted file mode 100644 index 01a77bf..0000000 --- a/help/html/search/enumvalues_2.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/enumvalues_2.js b/help/html/search/enumvalues_2.js deleted file mode 100644 index 5aeabab..0000000 --- a/help/html/search/enumvalues_2.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['init_227',['INIT',['../classCocoaTweet_1_1API_1_1Medias_1_1Upload.html#a44f9ec628e89320e9cc3aa9dd223060eaf1a129ea03e557ce45013271bd9b0f23',1,'CocoaTweet::API::Medias::Upload']]] -]; diff --git a/help/html/search/enumvalues_3.html b/help/html/search/enumvalues_3.html deleted file mode 100644 index 4e761d6..0000000 --- a/help/html/search/enumvalues_3.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/enumvalues_3.js b/help/html/search/enumvalues_3.js deleted file mode 100644 index 1844cf6..0000000 --- a/help/html/search/enumvalues_3.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['discarded_1573',['discarded',['../namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a94708897ec9db8647dfe695714c98e46',1,'nlohmann::detail::discarded()'],['../namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a94708897ec9db8647dfe695714c98e46',1,'nlohmann::detail::discarded()'],['../namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a94708897ec9db8647dfe695714c98e46',1,'nlohmann::detail::discarded()'],['../namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a94708897ec9db8647dfe695714c98e46',1,'nlohmann::detail::discarded()']]] -]; diff --git a/help/html/search/enumvalues_4.html b/help/html/search/enumvalues_4.html deleted file mode 100644 index e2977a0..0000000 --- a/help/html/search/enumvalues_4.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/enumvalues_4.js b/help/html/search/enumvalues_4.js deleted file mode 100644 index e540dcf..0000000 --- a/help/html/search/enumvalues_4.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['end_5farray_1574',['end_array',['../classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098a2f3e68e7f111a1e5c7728742b3ca2b7f',1,'nlohmann::detail::lexer::end_array()'],['../classnlohmann_1_1detail_1_1lexer__base.html#aa3538cce439a2de6c7893e627b38c454a2f3e68e7f111a1e5c7728742b3ca2b7f',1,'nlohmann::detail::lexer_base::end_array()']]], - ['end_5fobject_1575',['end_object',['../classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098a7d5b4427866814de4d8f132721d59c87',1,'nlohmann::detail::lexer::end_object()'],['../classnlohmann_1_1detail_1_1lexer__base.html#aa3538cce439a2de6c7893e627b38c454a7d5b4427866814de4d8f132721d59c87',1,'nlohmann::detail::lexer_base::end_object()']]], - ['end_5fof_5finput_1576',['end_of_input',['../classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098aca11f56dd477c09e06583dbdcda0985f',1,'nlohmann::detail::lexer::end_of_input()'],['../classnlohmann_1_1detail_1_1lexer__base.html#aa3538cce439a2de6c7893e627b38c454aca11f56dd477c09e06583dbdcda0985f',1,'nlohmann::detail::lexer_base::end_of_input()']]], - ['error_1577',['error',['../namespacenlohmann_1_1detail.html#a58bb1ef1a9ad287a9cfaf1855784d9acacb5e100e5a9a3e7f6d1fd97512215282',1,'nlohmann::detail']]] -]; diff --git a/help/html/search/enumvalues_5.html b/help/html/search/enumvalues_5.html deleted file mode 100644 index eabdd4b..0000000 --- a/help/html/search/enumvalues_5.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/enumvalues_5.js b/help/html/search/enumvalues_5.js deleted file mode 100644 index b2f095d..0000000 --- a/help/html/search/enumvalues_5.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['finalize_1578',['FINALIZE',['../classCocoaTweet_1_1API_1_1Medias_1_1Upload.html#a44f9ec628e89320e9cc3aa9dd223060eababb71c4f7b4e204fd2cff6fe84566a4',1,'CocoaTweet::API::Medias::Upload']]] -]; diff --git a/help/html/search/enumvalues_6.html b/help/html/search/enumvalues_6.html deleted file mode 100644 index 2476491..0000000 --- a/help/html/search/enumvalues_6.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/enumvalues_6.js b/help/html/search/enumvalues_6.js deleted file mode 100644 index 5d67906..0000000 --- a/help/html/search/enumvalues_6.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['ignore_1579',['ignore',['../namespacenlohmann_1_1detail.html#a5a76b60b26dc8c47256a996d18d967dfa567bc1d268f135496de3d5b946b691f3',1,'nlohmann::detail::ignore()'],['../namespacenlohmann_1_1detail.html#a5a76b60b26dc8c47256a996d18d967dfa567bc1d268f135496de3d5b946b691f3',1,'nlohmann::detail::ignore()'],['../namespacenlohmann_1_1detail.html#a58bb1ef1a9ad287a9cfaf1855784d9aca567bc1d268f135496de3d5b946b691f3',1,'nlohmann::detail::ignore()'],['../namespacenlohmann_1_1detail.html#a5a76b60b26dc8c47256a996d18d967dfa567bc1d268f135496de3d5b946b691f3',1,'nlohmann::detail::ignore()'],['../namespacenlohmann_1_1detail.html#a5a76b60b26dc8c47256a996d18d967dfa567bc1d268f135496de3d5b946b691f3',1,'nlohmann::detail::ignore()']]], - ['init_1580',['INIT',['../classCocoaTweet_1_1API_1_1Medias_1_1Upload.html#a44f9ec628e89320e9cc3aa9dd223060eaf1a129ea03e557ce45013271bd9b0f23',1,'CocoaTweet::API::Medias::Upload']]] -]; diff --git a/help/html/search/enumvalues_7.html b/help/html/search/enumvalues_7.html deleted file mode 100644 index 5d5ce7e..0000000 --- a/help/html/search/enumvalues_7.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/enumvalues_7.js b/help/html/search/enumvalues_7.js deleted file mode 100644 index 9f343b0..0000000 --- a/help/html/search/enumvalues_7.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['json_1581',['json',['../namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40a466deec76ecdf5fca6d38571f6324d54',1,'nlohmann::detail::json()'],['../namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40a466deec76ecdf5fca6d38571f6324d54',1,'nlohmann::detail::json()'],['../namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40a466deec76ecdf5fca6d38571f6324d54',1,'nlohmann::detail::json()'],['../namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40a466deec76ecdf5fca6d38571f6324d54',1,'nlohmann::detail::json()']]] -]; diff --git a/help/html/search/enumvalues_8.html b/help/html/search/enumvalues_8.html deleted file mode 100644 index be088de..0000000 --- a/help/html/search/enumvalues_8.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/enumvalues_8.js b/help/html/search/enumvalues_8.js deleted file mode 100644 index eee01e8..0000000 --- a/help/html/search/enumvalues_8.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['key_1582',['key',['../classnlohmann_1_1detail_1_1parser.html#a37ac88c864dda495f72cb62776b0bebea3c6e0b8a9c15224a8228b9a98ca1531d',1,'nlohmann::detail::parser::key()'],['../namespacenlohmann_1_1detail.html#a2fb6dae6578e06ae73ca0d7cc8512b1aa3c6e0b8a9c15224a8228b9a98ca1531d',1,'nlohmann::detail::key()']]] -]; diff --git a/help/html/search/enumvalues_9.html b/help/html/search/enumvalues_9.html deleted file mode 100644 index b521e09..0000000 --- a/help/html/search/enumvalues_9.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/enumvalues_9.js b/help/html/search/enumvalues_9.js deleted file mode 100644 index ea76fd3..0000000 --- a/help/html/search/enumvalues_9.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['literal_5ffalse_1583',['literal_false',['../classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098afab1694b1b3937a079f4625fe0b6108b',1,'nlohmann::detail::lexer::literal_false()'],['../classnlohmann_1_1detail_1_1lexer__base.html#aa3538cce439a2de6c7893e627b38c454afab1694b1b3937a079f4625fe0b6108b',1,'nlohmann::detail::lexer_base::literal_false()']]], - ['literal_5fnull_1584',['literal_null',['../classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098ab7ae4c0e46d86f884677768160b26e9e',1,'nlohmann::detail::lexer::literal_null()'],['../classnlohmann_1_1detail_1_1lexer__base.html#aa3538cce439a2de6c7893e627b38c454ab7ae4c0e46d86f884677768160b26e9e',1,'nlohmann::detail::lexer_base::literal_null()']]], - ['literal_5for_5fvalue_1585',['literal_or_value',['../classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098ad2a8e6f6721cccec0b466301dd9495a5',1,'nlohmann::detail::lexer::literal_or_value()'],['../classnlohmann_1_1detail_1_1lexer__base.html#aa3538cce439a2de6c7893e627b38c454ad2a8e6f6721cccec0b466301dd9495a5',1,'nlohmann::detail::lexer_base::literal_or_value()']]], - ['literal_5ftrue_1586',['literal_true',['../classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098a85cc1a37b0aaa52de40e72f0ed4e0c0d',1,'nlohmann::detail::lexer::literal_true()'],['../classnlohmann_1_1detail_1_1lexer__base.html#aa3538cce439a2de6c7893e627b38c454a85cc1a37b0aaa52de40e72f0ed4e0c0d',1,'nlohmann::detail::lexer_base::literal_true()']]] -]; diff --git a/help/html/search/enumvalues_a.html b/help/html/search/enumvalues_a.html deleted file mode 100644 index ea34216..0000000 --- a/help/html/search/enumvalues_a.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/enumvalues_a.js b/help/html/search/enumvalues_a.js deleted file mode 100644 index 246b0d4..0000000 --- a/help/html/search/enumvalues_a.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['msgpack_1587',['msgpack',['../namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40ac40d516627022a54003ac2b74a82688a',1,'nlohmann::detail::msgpack()'],['../namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40ac40d516627022a54003ac2b74a82688a',1,'nlohmann::detail::msgpack()'],['../namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40ac40d516627022a54003ac2b74a82688a',1,'nlohmann::detail::msgpack()'],['../namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40ac40d516627022a54003ac2b74a82688a',1,'nlohmann::detail::msgpack()']]] -]; diff --git a/help/html/search/enumvalues_b.html b/help/html/search/enumvalues_b.html deleted file mode 100644 index 0bb27ce..0000000 --- a/help/html/search/enumvalues_b.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/enumvalues_b.js b/help/html/search/enumvalues_b.js deleted file mode 100644 index f41bde3..0000000 --- a/help/html/search/enumvalues_b.js +++ /dev/null @@ -1,8 +0,0 @@ -var searchData= -[ - ['name_5fseparator_1588',['name_separator',['../classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098acc3c64f8ae08c00de1b33f19a4d2913a',1,'nlohmann::detail::lexer::name_separator()'],['../classnlohmann_1_1detail_1_1lexer__base.html#aa3538cce439a2de6c7893e627b38c454acc3c64f8ae08c00de1b33f19a4d2913a',1,'nlohmann::detail::lexer_base::name_separator()']]], - ['null_1589',['null',['../namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a37a6259cc0c1dae299a7866489dff0bd',1,'nlohmann::detail::null()'],['../namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a37a6259cc0c1dae299a7866489dff0bd',1,'nlohmann::detail::null()'],['../namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a37a6259cc0c1dae299a7866489dff0bd',1,'nlohmann::detail::null()'],['../namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a37a6259cc0c1dae299a7866489dff0bd',1,'nlohmann::detail::null()']]], - ['number_5ffloat_1590',['number_float',['../namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ad9966ecb59667235a57b4b999a649eef',1,'nlohmann::detail::number_float()'],['../namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ad9966ecb59667235a57b4b999a649eef',1,'nlohmann::detail::number_float()'],['../namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ad9966ecb59667235a57b4b999a649eef',1,'nlohmann::detail::number_float()'],['../namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ad9966ecb59667235a57b4b999a649eef',1,'nlohmann::detail::number_float()']]], - ['number_5finteger_1591',['number_integer',['../namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a5763da164f8659d94a56e29df64b4bcc',1,'nlohmann::detail::number_integer()'],['../namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a5763da164f8659d94a56e29df64b4bcc',1,'nlohmann::detail::number_integer()'],['../namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a5763da164f8659d94a56e29df64b4bcc',1,'nlohmann::detail::number_integer()'],['../namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a5763da164f8659d94a56e29df64b4bcc',1,'nlohmann::detail::number_integer()']]], - ['number_5funsigned_1592',['number_unsigned',['../namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985adce7cc8ec29055c4158828921f2f265e',1,'nlohmann::detail::number_unsigned()'],['../namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985adce7cc8ec29055c4158828921f2f265e',1,'nlohmann::detail::number_unsigned()'],['../namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985adce7cc8ec29055c4158828921f2f265e',1,'nlohmann::detail::number_unsigned()'],['../namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985adce7cc8ec29055c4158828921f2f265e',1,'nlohmann::detail::number_unsigned()']]] -]; diff --git a/help/html/search/enumvalues_c.html b/help/html/search/enumvalues_c.html deleted file mode 100644 index 1ee90d9..0000000 --- a/help/html/search/enumvalues_c.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/enumvalues_c.js b/help/html/search/enumvalues_c.js deleted file mode 100644 index a56c5f8..0000000 --- a/help/html/search/enumvalues_c.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['object_1593',['object',['../namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666',1,'nlohmann::detail::object()'],['../namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666',1,'nlohmann::detail::object()'],['../namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666',1,'nlohmann::detail::object()'],['../namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666',1,'nlohmann::detail::object()']]], - ['object_5fend_1594',['object_end',['../classnlohmann_1_1detail_1_1parser.html#a37ac88c864dda495f72cb62776b0bebeaf63e2a2468a37aa4f394fcc3bcb8249c',1,'nlohmann::detail::parser::object_end()'],['../namespacenlohmann_1_1detail.html#a2fb6dae6578e06ae73ca0d7cc8512b1aaf63e2a2468a37aa4f394fcc3bcb8249c',1,'nlohmann::detail::object_end()']]], - ['object_5fstart_1595',['object_start',['../classnlohmann_1_1detail_1_1parser.html#a37ac88c864dda495f72cb62776b0bebeae73f17027cb0acbb537f29d0a6944b26',1,'nlohmann::detail::parser::object_start()'],['../namespacenlohmann_1_1detail.html#a2fb6dae6578e06ae73ca0d7cc8512b1aae73f17027cb0acbb537f29d0a6944b26',1,'nlohmann::detail::object_start()']]] -]; diff --git a/help/html/search/enumvalues_d.html b/help/html/search/enumvalues_d.html deleted file mode 100644 index e1b3b48..0000000 --- a/help/html/search/enumvalues_d.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/enumvalues_d.js b/help/html/search/enumvalues_d.js deleted file mode 100644 index 84a0dbf..0000000 --- a/help/html/search/enumvalues_d.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['parse_5ferror_1596',['parse_error',['../classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098a456e19aeafa334241c7ff3f589547f9d',1,'nlohmann::detail::lexer::parse_error()'],['../classnlohmann_1_1detail_1_1lexer__base.html#aa3538cce439a2de6c7893e627b38c454a456e19aeafa334241c7ff3f589547f9d',1,'nlohmann::detail::lexer_base::parse_error()']]] -]; diff --git a/help/html/search/enumvalues_e.html b/help/html/search/enumvalues_e.html deleted file mode 100644 index c5d3197..0000000 --- a/help/html/search/enumvalues_e.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/enumvalues_e.js b/help/html/search/enumvalues_e.js deleted file mode 100644 index 655694c..0000000 --- a/help/html/search/enumvalues_e.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['replace_1597',['replace',['../namespacenlohmann_1_1detail.html#a5a76b60b26dc8c47256a996d18d967dfa9dde360102c103867bd2f45872f1129c',1,'nlohmann::detail::replace()'],['../namespacenlohmann_1_1detail.html#a5a76b60b26dc8c47256a996d18d967dfa9dde360102c103867bd2f45872f1129c',1,'nlohmann::detail::replace()'],['../namespacenlohmann_1_1detail.html#a5a76b60b26dc8c47256a996d18d967dfa9dde360102c103867bd2f45872f1129c',1,'nlohmann::detail::replace()'],['../namespacenlohmann_1_1detail.html#a5a76b60b26dc8c47256a996d18d967dfa9dde360102c103867bd2f45872f1129c',1,'nlohmann::detail::replace()']]] -]; diff --git a/help/html/search/enumvalues_f.html b/help/html/search/enumvalues_f.html deleted file mode 100644 index 5de961d..0000000 --- a/help/html/search/enumvalues_f.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/enumvalues_f.js b/help/html/search/enumvalues_f.js deleted file mode 100644 index 8aabce1..0000000 --- a/help/html/search/enumvalues_f.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['strict_1598',['strict',['../namespacenlohmann_1_1detail.html#a5a76b60b26dc8c47256a996d18d967dfa2133fd717402a7966ee88d06f9e0b792',1,'nlohmann::detail::strict()'],['../namespacenlohmann_1_1detail.html#a5a76b60b26dc8c47256a996d18d967dfa2133fd717402a7966ee88d06f9e0b792',1,'nlohmann::detail::strict()'],['../namespacenlohmann_1_1detail.html#a5a76b60b26dc8c47256a996d18d967dfa2133fd717402a7966ee88d06f9e0b792',1,'nlohmann::detail::strict()'],['../namespacenlohmann_1_1detail.html#a5a76b60b26dc8c47256a996d18d967dfa2133fd717402a7966ee88d06f9e0b792',1,'nlohmann::detail::strict()']]], - ['string_1599',['string',['../namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ab45cffe084dd3d20d928bee85e7b0f21',1,'nlohmann::detail::string()'],['../namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ab45cffe084dd3d20d928bee85e7b0f21',1,'nlohmann::detail::string()'],['../namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ab45cffe084dd3d20d928bee85e7b0f21',1,'nlohmann::detail::string()'],['../namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ab45cffe084dd3d20d928bee85e7b0f21',1,'nlohmann::detail::string()']]] -]; diff --git a/help/html/search/files_0.html b/help/html/search/files_0.html deleted file mode 100644 index 737608e..0000000 --- a/help/html/search/files_0.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/files_0.js b/help/html/search/files_0.js deleted file mode 100644 index d7ad2da..0000000 --- a/help/html/search/files_0.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['api_2ecc_221',['api.cc',['../api_8cc.html',1,'']]], - ['api_2eh_222',['api.h',['../api_8h.html',1,'']]], - ['authenticateexception_2eh_223',['authenticateException.h',['../authenticateException_8h.html',1,'']]] -]; diff --git a/help/html/search/files_1.html b/help/html/search/files_1.html deleted file mode 100644 index f27a62d..0000000 --- a/help/html/search/files_1.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/files_1.js b/help/html/search/files_1.js deleted file mode 100644 index e7f4df0..0000000 --- a/help/html/search/files_1.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['cmakelists_2etxt_224',['CMakeLists.txt',['../CMakeLists_8txt.html',1,'(Global Namespace)'],['../src_2CMakeLists_8txt.html',1,'(Global Namespace)'],['../src_2cocoatweet_2CMakeLists_8txt.html',1,'(Global Namespace)']]], - ['create_2ecc_225',['create.cc',['../create_8cc.html',1,'']]], - ['create_2eh_226',['create.h',['../create_8h.html',1,'']]], - ['ctestcostdata_2etxt_227',['CTestCostData.txt',['../CTestCostData_8txt.html',1,'']]] -]; diff --git a/help/html/search/files_2.html b/help/html/search/files_2.html deleted file mode 100644 index a45066e..0000000 --- a/help/html/search/files_2.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/files_2.js b/help/html/search/files_2.js deleted file mode 100644 index 89ac403..0000000 --- a/help/html/search/files_2.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['destroy_2ecc_228',['destroy.cc',['../favorite_2destroy_8cc.html',1,'(Global Namespace)'],['../status_2destroy_8cc.html',1,'(Global Namespace)']]], - ['destroy_2eh_229',['destroy.h',['../favorite_2destroy_8h.html',1,'(Global Namespace)'],['../status_2destroy_8h.html',1,'(Global Namespace)']]], - ['directmessage_2ecc_230',['directMessage.cc',['../directMessage_8cc.html',1,'']]], - ['directmessage_2eh_231',['directMessage.h',['../directMessage_8h.html',1,'']]] -]; diff --git a/help/html/search/files_3.html b/help/html/search/files_3.html deleted file mode 100644 index 1076bc5..0000000 --- a/help/html/search/files_3.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/files_3.js b/help/html/search/files_3.js deleted file mode 100644 index d7f71e2..0000000 --- a/help/html/search/files_3.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['exception_2eh_232',['exception.h',['../exception_8h.html',1,'']]] -]; diff --git a/help/html/search/files_4.html b/help/html/search/files_4.html deleted file mode 100644 index e5cd7f4..0000000 --- a/help/html/search/files_4.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/files_4.js b/help/html/search/files_4.js deleted file mode 100644 index d9bf73f..0000000 --- a/help/html/search/files_4.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['favorite_2ecc_233',['favorite.cc',['../favorite_8cc.html',1,'']]], - ['favorite_2eh_234',['favorite.h',['../favorite_8h.html',1,'']]] -]; diff --git a/help/html/search/files_5.html b/help/html/search/files_5.html deleted file mode 100644 index 2cc480f..0000000 --- a/help/html/search/files_5.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/files_5.js b/help/html/search/files_5.js deleted file mode 100644 index 7a78c1d..0000000 --- a/help/html/search/files_5.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['groupinterface_2eh_235',['groupInterface.h',['../groupInterface_8h.html',1,'']]] -]; diff --git a/help/html/search/files_6.html b/help/html/search/files_6.html deleted file mode 100644 index 6510245..0000000 --- a/help/html/search/files_6.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/files_6.js b/help/html/search/files_6.js deleted file mode 100644 index 549a174..0000000 --- a/help/html/search/files_6.js +++ /dev/null @@ -1,8 +0,0 @@ -var searchData= -[ - ['httpbase_2eh_236',['httpBase.h',['../httpBase_8h.html',1,'']]], - ['httpget_2ecc_237',['httpGet.cc',['../httpGet_8cc.html',1,'']]], - ['httpget_2eh_238',['httpGet.h',['../httpGet_8h.html',1,'']]], - ['httppost_2ecc_239',['httpPost.cc',['../httpPost_8cc.html',1,'']]], - ['httppost_2eh_240',['httpPost.h',['../httpPost_8h.html',1,'']]] -]; diff --git a/help/html/search/files_7.html b/help/html/search/files_7.html deleted file mode 100644 index 819f7b8..0000000 --- a/help/html/search/files_7.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/files_7.js b/help/html/search/files_7.js deleted file mode 100644 index bfd9fe0..0000000 --- a/help/html/search/files_7.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['invalidparameterexception_2eh_241',['invalidParameterException.h',['../invalidParameterException_8h.html',1,'']]] -]; diff --git a/help/html/search/files_8.html b/help/html/search/files_8.html deleted file mode 100644 index fa1a27f..0000000 --- a/help/html/search/files_8.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/files_8.js b/help/html/search/files_8.js deleted file mode 100644 index bfcf0ab..0000000 --- a/help/html/search/files_8.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['key_2ecc_242',['key.cc',['../key_8cc.html',1,'']]], - ['key_2eh_243',['key.h',['../key_8h.html',1,'']]] -]; diff --git a/help/html/search/files_9.html b/help/html/search/files_9.html deleted file mode 100644 index 3af3e47..0000000 --- a/help/html/search/files_9.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/files_9.js b/help/html/search/files_9.js deleted file mode 100644 index 742783b..0000000 --- a/help/html/search/files_9.js +++ /dev/null @@ -1,8 +0,0 @@ -var searchData= -[ - ['main_2ecc_244',['main.cc',['../main_8cc.html',1,'']]], - ['media_2ecc_245',['media.cc',['../media_8cc.html',1,'']]], - ['media_2eh_246',['media.h',['../media_8h.html',1,'']]], - ['mediastore_2ecc_247',['mediaStore.cc',['../mediaStore_8cc.html',1,'']]], - ['mediastore_2eh_248',['mediaStore.h',['../mediaStore_8h.html',1,'']]] -]; diff --git a/help/html/search/files_a.html b/help/html/search/files_a.html deleted file mode 100644 index 17f65ad..0000000 --- a/help/html/search/files_a.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/files_a.js b/help/html/search/files_a.js deleted file mode 100644 index 136fc43..0000000 --- a/help/html/search/files_a.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['new_2ecc_249',['new.cc',['../new_8cc.html',1,'']]], - ['new_2eh_250',['new.h',['../new_8h.html',1,'']]] -]; diff --git a/help/html/search/files_b.html b/help/html/search/files_b.html deleted file mode 100644 index aaa7731..0000000 --- a/help/html/search/files_b.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/files_b.js b/help/html/search/files_b.js deleted file mode 100644 index c01a61f..0000000 --- a/help/html/search/files_b.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['oauth_2ecc_251',['oauth.cc',['../oauth_8cc.html',1,'']]], - ['oauth_2eh_252',['oauth.h',['../oauth_8h.html',1,'']]] -]; diff --git a/help/html/search/files_c.html b/help/html/search/files_c.html deleted file mode 100644 index 79e7963..0000000 --- a/help/html/search/files_c.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/files_c.js b/help/html/search/files_c.js deleted file mode 100644 index 95c03d4..0000000 --- a/help/html/search/files_c.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['ratelimitexception_2eh_253',['rateLimitException.h',['../rateLimitException_8h.html',1,'']]], - ['readme_2emd_254',['README.md',['../README_8md.html',1,'']]], - ['retweet_2ecc_255',['retweet.cc',['../retweet_8cc.html',1,'']]], - ['retweet_2eh_256',['retweet.h',['../retweet_8h.html',1,'']]] -]; diff --git a/help/html/search/files_d.html b/help/html/search/files_d.html deleted file mode 100644 index 94b2ff2..0000000 --- a/help/html/search/files_d.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/files_d.js b/help/html/search/files_d.js deleted file mode 100644 index 28df993..0000000 --- a/help/html/search/files_d.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['status_2ecc_257',['status.cc',['../status_8cc.html',1,'']]], - ['status_2eh_258',['status.h',['../status_8h.html',1,'']]] -]; diff --git a/help/html/search/files_e.html b/help/html/search/files_e.html deleted file mode 100644 index cb205ad..0000000 --- a/help/html/search/files_e.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/files_e.js b/help/html/search/files_e.js deleted file mode 100644 index f163301..0000000 --- a/help/html/search/files_e.js +++ /dev/null @@ -1,9 +0,0 @@ -var searchData= -[ - ['tokeninvalidexception_2eh_259',['tokenInvalidException.h',['../tokenInvalidException_8h.html',1,'']]], - ['tweet_2ecc_260',['tweet.cc',['../tweet_8cc.html',1,'']]], - ['tweet_2eh_261',['tweet.h',['../tweet_8h.html',1,'']]], - ['tweetduplicateexception_2eh_262',['tweetDuplicateException.h',['../tweetDuplicateException_8h.html',1,'']]], - ['tweetnotfoundexception_2eh_263',['tweetNotFoundException.h',['../tweetNotFoundException_8h.html',1,'']]], - ['tweettoolongexception_2eh_264',['tweetTooLongException.h',['../tweetTooLongException_8h.html',1,'']]] -]; diff --git a/help/html/search/files_f.html b/help/html/search/files_f.html deleted file mode 100644 index 90cf7fd..0000000 --- a/help/html/search/files_f.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/files_f.js b/help/html/search/files_f.js deleted file mode 100644 index 172a302..0000000 --- a/help/html/search/files_f.js +++ /dev/null @@ -1,16 +0,0 @@ -var searchData= -[ - ['unretweet_2ecc_265',['unretweet.cc',['../unretweet_8cc.html',1,'']]], - ['unretweet_2eh_266',['unretweet.h',['../unretweet_8h.html',1,'']]], - ['unsupportedmediatypeexception_2eh_267',['unsupportedMediaTypeException.h',['../unsupportedMediaTypeException_8h.html',1,'']]], - ['update_2ecc_268',['update.cc',['../update_8cc.html',1,'']]], - ['update_2eh_269',['update.h',['../update_8h.html',1,'']]], - ['upload_2ecc_270',['upload.cc',['../upload_8cc.html',1,'']]], - ['upload_2eh_271',['upload.h',['../upload_8h.html',1,'']]], - ['user_2ecc_272',['user.cc',['../user_8cc.html',1,'']]], - ['user_2eh_273',['user.h',['../user_8h.html',1,'']]], - ['usertimeline_2ecc_274',['userTimeline.cc',['../userTimeline_8cc.html',1,'']]], - ['usertimeline_2eh_275',['userTimeline.h',['../userTimeline_8h.html',1,'']]], - ['util_2ecc_276',['util.cc',['../util_8cc.html',1,'']]], - ['util_2eh_277',['util.h',['../util_8h.html',1,'']]] -]; diff --git a/help/html/search/functions_0.html b/help/html/search/functions_0.html deleted file mode 100644 index e17c711..0000000 --- a/help/html/search/functions_0.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/functions_0.js b/help/html/search/functions_0.js deleted file mode 100644 index 918d055..0000000 --- a/help/html/search/functions_0.js +++ /dev/null @@ -1,10 +0,0 @@ -var searchData= -[ - ['accesstoken_278',['accessToken',['../classCocoaTweet_1_1OAuth_1_1Key.html#a450cdbad7316645745fdb341b479c813',1,'CocoaTweet::OAuth::Key::accessToken(const std::string &_accessToken)'],['../classCocoaTweet_1_1OAuth_1_1Key.html#a480b1b4f1c03b3bdd7c1b59b5f8fc4d5',1,'CocoaTweet::OAuth::Key::accessToken() const']]], - ['accesstokensecret_279',['accessTokenSecret',['../classCocoaTweet_1_1OAuth_1_1Key.html#a0449a88724e7feca799bceaf0f1c1e78',1,'CocoaTweet::OAuth::Key::accessTokenSecret(const std::string &_accessTokenSecret)'],['../classCocoaTweet_1_1OAuth_1_1Key.html#aaf7813cff260ffd803eada11738a0b75',1,'CocoaTweet::OAuth::Key::accessTokenSecret() const']]], - ['add_5fexecutable_280',['add_executable',['../src_2CMakeLists_8txt.html#af71960b53f14f77bfd0be71515d791f1',1,'CMakeLists.txt']]], - ['add_5fsubdirectory_281',['add_subdirectory',['../src_2CMakeLists_8txt.html#a1a50f7d628d8c645b7ab7c46a26384da',1,'CMakeLists.txt']]], - ['api_282',['API',['../classCocoaTweet_1_1API_1_1API.html#a28775a63dd897efa3fc410c9d82dedfd',1,'CocoaTweet::API::API']]], - ['attachmenturl_283',['attachmentUrl',['../classCocoaTweet_1_1API_1_1Statuses_1_1Update.html#a62a2c887a196e86e5522a6550ad54a64',1,'CocoaTweet::API::Statuses::Update']]], - ['autopopulatereplymetadata_284',['autoPopulateReplyMetaData',['../classCocoaTweet_1_1API_1_1Statuses_1_1Update.html#a77d4f41f814ce2dcfcf80b9151ac4623',1,'CocoaTweet::API::Statuses::Update']]] -]; diff --git a/help/html/search/functions_1.html b/help/html/search/functions_1.html deleted file mode 100644 index 0ddac0a..0000000 --- a/help/html/search/functions_1.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/functions_1.js b/help/html/search/functions_1.js deleted file mode 100644 index 9656574..0000000 --- a/help/html/search/functions_1.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['bannerurl_285',['bannerUrl',['../classCocoaTweet_1_1API_1_1Model_1_1User.html#a553a71f355bf2ecbde9cdcc89b6b9f60',1,'CocoaTweet::API::Model::User::bannerUrl(const std::string &_banner)'],['../classCocoaTweet_1_1API_1_1Model_1_1User.html#a1d5fca794e8915c88f1cfe2ab3d6bc7f',1,'CocoaTweet::API::Model::User::bannerUrl() const']]], - ['base64_286',['base64',['../classCocoaTweet_1_1OAuth_1_1OAuth1.html#aa389f10a1cafa5c26413bb28cdd27d3b',1,'CocoaTweet::OAuth::OAuth1']]], - ['bearertoken_287',['bearerToken',['../classCocoaTweet_1_1OAuth_1_1Key.html#acba7820ea191e36f34c5d85bf72a87ed',1,'CocoaTweet::OAuth::Key::bearerToken(const std::string &_bearer)'],['../classCocoaTweet_1_1OAuth_1_1Key.html#ae8120fc4999689f34ec4daaa57129630',1,'CocoaTweet::OAuth::Key::bearerToken() const']]] -]; diff --git a/help/html/search/functions_10.html b/help/html/search/functions_10.html deleted file mode 100644 index 09422e1..0000000 --- a/help/html/search/functions_10.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/functions_10.js b/help/html/search/functions_10.js deleted file mode 100644 index d275788..0000000 --- a/help/html/search/functions_10.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['recipient_337',['recipient',['../classCocoaTweet_1_1API_1_1DirectMessages_1_1New.html#afd95acae9607546a8ca37ea22f438139',1,'CocoaTweet::API::DirectMessages::New']]], - ['remain_338',['remain',['../classCocoaTweet_1_1API_1_1Model_1_1MediaStore.html#a2adf7192194944149c9662d66f9a6a42',1,'CocoaTweet::API::Model::MediaStore::remain(const unsigned int _remain)'],['../classCocoaTweet_1_1API_1_1Model_1_1MediaStore.html#a25d883e082c7a90f4bb96d84aa8b2830',1,'CocoaTweet::API::Model::MediaStore::remain() const']]], - ['replytostatusid_339',['replyToStatusId',['../classCocoaTweet_1_1API_1_1Statuses_1_1Update.html#aea57ec43f8b4eaf31414bef9221d3dbc',1,'CocoaTweet::API::Statuses::Update']]], - ['retweet_340',['Retweet',['../classCocoaTweet_1_1API_1_1Statuses_1_1Retweet.html#adf8c15760334a81b608388f64b79745f',1,'CocoaTweet::API::Statuses::Retweet::Retweet()'],['../classCocoaTweet_1_1API_1_1Statuses_1_1Status.html#afe60c4bb67d191b8ef989ea4236ffb5d',1,'CocoaTweet::API::Statuses::Status::retweet()']]] -]; diff --git a/help/html/search/functions_11.html b/help/html/search/functions_11.html deleted file mode 100644 index 1cde7b4..0000000 --- a/help/html/search/functions_11.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/functions_11.js b/help/html/search/functions_11.js deleted file mode 100644 index 26dcbcb..0000000 --- a/help/html/search/functions_11.js +++ /dev/null @@ -1,10 +0,0 @@ -var searchData= -[ - ['screenname_341',['screenName',['../classCocoaTweet_1_1API_1_1Model_1_1User.html#ab186a3daf7ff7b26b4d880dc0b7f65e8',1,'CocoaTweet::API::Model::User::screenName(const std::string &_screen)'],['../classCocoaTweet_1_1API_1_1Model_1_1User.html#a5a7d1dc841740c1adc75d29f1c06d536',1,'CocoaTweet::API::Model::User::screenName() const'],['../classCocoaTweet_1_1API_1_1Statuses_1_1UserTimeline.html#a0351e221076b359bd181973bb99ec34c',1,'CocoaTweet::API::Statuses::UserTimeline::screenName()']]], - ['secret_342',['secret',['../classCocoaTweet_1_1OAuth_1_1Key.html#a48d94ebbd486ffabc10b0b5417182cdd',1,'CocoaTweet::OAuth::Key']]], - ['signature_343',['signature',['../classCocoaTweet_1_1OAuth_1_1OAuth1.html#a605a5ee2fc35869292234fa2c3dea420',1,'CocoaTweet::OAuth::OAuth1']]], - ['size_344',['size',['../classCocoaTweet_1_1API_1_1Model_1_1MediaStore.html#a7f9e922b93522ae810c487b8da7d772f',1,'CocoaTweet::API::Model::MediaStore::size(const unsigned int _size)'],['../classCocoaTweet_1_1API_1_1Model_1_1MediaStore.html#aab8defad4ab8eab424bdb831aa13ae9f',1,'CocoaTweet::API::Model::MediaStore::size() const']]], - ['source_345',['source',['../classCocoaTweet_1_1API_1_1Model_1_1Tweet.html#ad55c3f4c66e34de7e159ab9769745106',1,'CocoaTweet::API::Model::Tweet::source(const std::string _source)'],['../classCocoaTweet_1_1API_1_1Model_1_1Tweet.html#ade60f2ce9c6ead8b2327d64847b6d272',1,'CocoaTweet::API::Model::Tweet::source() const']]], - ['state_346',['state',['../classCocoaTweet_1_1API_1_1Model_1_1MediaStore.html#ad2ef76ab9b8b307c2abe3f80397adc1a',1,'CocoaTweet::API::Model::MediaStore::state(const std::string _state)'],['../classCocoaTweet_1_1API_1_1Model_1_1MediaStore.html#aa708ce16bce734d9f852d141c0450e33',1,'CocoaTweet::API::Model::MediaStore::state() const']]], - ['status_347',['Status',['../classCocoaTweet_1_1API_1_1Statuses_1_1Status.html#a4d0a2245d5b5d8fb88fd5415746491bf',1,'CocoaTweet::API::Statuses::Status::Status()=default'],['../classCocoaTweet_1_1API_1_1Statuses_1_1Status.html#a8b2e666ae6d3d6f7195f80c995f871c9',1,'CocoaTweet::API::Statuses::Status::Status(std::shared_ptr< CocoaTweet::OAuth::OAuth1 > _oauth)'],['../classCocoaTweet_1_1API_1_1API.html#a33328fef1c2ac0f634449d6c60742449',1,'CocoaTweet::API::API::status()'],['../classCocoaTweet_1_1API_1_1Statuses_1_1Update.html#a82a03eb9ed10d0235bc5f5876472359b',1,'CocoaTweet::API::Statuses::Update::status()']]] -]; diff --git a/help/html/search/functions_12.html b/help/html/search/functions_12.html deleted file mode 100644 index 48e5915..0000000 --- a/help/html/search/functions_12.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/functions_12.js b/help/html/search/functions_12.js deleted file mode 100644 index 86dc770..0000000 --- a/help/html/search/functions_12.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['text_348',['text',['../classCocoaTweet_1_1API_1_1Model_1_1Tweet.html#a596cda729c5b1565da0adbf02125acba',1,'CocoaTweet::API::Model::Tweet::text(const std::string _text)'],['../classCocoaTweet_1_1API_1_1Model_1_1Tweet.html#a46bd67b016af890ad85836e5c1aa6a12',1,'CocoaTweet::API::Model::Tweet::text() const']]], - ['timestamp_349',['timestamp',['../classCocoaTweet_1_1OAuth_1_1OAuth1.html#a8e52c044b277a6834ac6452d3552bff3',1,'CocoaTweet::OAuth::OAuth1']]], - ['trimuser_350',['trimUser',['../classCocoaTweet_1_1API_1_1Statuses_1_1Update.html#a52ee15455ae4e5330d73ba0f93c9fa6f',1,'CocoaTweet::API::Statuses::Update']]], - ['tweet_351',['Tweet',['../classCocoaTweet_1_1API_1_1Model_1_1Tweet.html#a76048fae79efd49eb2282f518e40c763',1,'CocoaTweet::API::Model::Tweet::Tweet()=default'],['../classCocoaTweet_1_1API_1_1Model_1_1Tweet.html#a5be21495e0296eb553eda9af2247a417',1,'CocoaTweet::API::Model::Tweet::Tweet(const Tweet &)=default'],['../classCocoaTweet_1_1API_1_1Model_1_1Tweet.html#a46c35c94e914a27109781529fc04b0ae',1,'CocoaTweet::API::Model::Tweet::Tweet(const std::string &_json)']]] -]; diff --git a/help/html/search/functions_13.html b/help/html/search/functions_13.html deleted file mode 100644 index f1fc553..0000000 --- a/help/html/search/functions_13.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/functions_13.js b/help/html/search/functions_13.js deleted file mode 100644 index f94c353..0000000 --- a/help/html/search/functions_13.js +++ /dev/null @@ -1,10 +0,0 @@ -var searchData= -[ - ['unretweet_352',['Unretweet',['../classCocoaTweet_1_1API_1_1Statuses_1_1Unretweet.html#ac6169b5cd910d0ac03216b2f6e033b20',1,'CocoaTweet::API::Statuses::Unretweet::Unretweet()'],['../classCocoaTweet_1_1API_1_1Statuses_1_1Status.html#a0cbf69ab8281a5c054b03f4780c3996c',1,'CocoaTweet::API::Statuses::Status::unretweet()']]], - ['update_353',['update',['../classCocoaTweet_1_1API_1_1Statuses_1_1Status.html#a8ff87af2b64b7c334a92fc07018a4701',1,'CocoaTweet::API::Statuses::Status::update(const std::string &_status) const'],['../classCocoaTweet_1_1API_1_1Statuses_1_1Status.html#a90f0b9e93c396e29cb5697095e2b7e64',1,'CocoaTweet::API::Statuses::Status::update(const std::string &_status, const Options _options) const'],['../classCocoaTweet_1_1API_1_1Statuses_1_1Status.html#aaec199e7aee81b4dc438e7fc0a8a3b66',1,'CocoaTweet::API::Statuses::Status::update(const std::string &_status, std::vector< std::string > _mediaId) const'],['../classCocoaTweet_1_1API_1_1Statuses_1_1Update.html#a79ba001f67640f34f9facdec885e48cd',1,'CocoaTweet::API::Statuses::Update::Update()']]], - ['upload_354',['Upload',['../classCocoaTweet_1_1API_1_1Medias_1_1Upload.html#a8b641cae9515e32b9d919c96dd7ee9bb',1,'CocoaTweet::API::Medias::Upload::Upload()'],['../classCocoaTweet_1_1API_1_1Medias_1_1Media.html#aa91dfae811124ad118a93802fb3aec1d',1,'CocoaTweet::API::Medias::Media::upload()']]], - ['url_355',['url',['../classCocoaTweet_1_1API_1_1Model_1_1User.html#a223e8111ca6b31a057a738444f5ca89e',1,'CocoaTweet::API::Model::User::url(const std::string &_url)'],['../classCocoaTweet_1_1API_1_1Model_1_1User.html#a3d9f5117be6a4929979b16e2371d2feb',1,'CocoaTweet::API::Model::User::url() const']]], - ['urlencode_356',['urlEncode',['../namespaceCocoaTweet_1_1Util.html#ac46dcd54bb4c11d0c2ce409545f10d4c',1,'CocoaTweet::Util']]], - ['user_357',['user',['../classCocoaTweet_1_1API_1_1Model_1_1Tweet.html#a42236611b51f3d15a561c5d67fa83fbc',1,'CocoaTweet::API::Model::Tweet::user(const CocoaTweet::API::Model::User _user)'],['../classCocoaTweet_1_1API_1_1Model_1_1Tweet.html#aa076951d2f3d005fcddcd0c046c798bb',1,'CocoaTweet::API::Model::Tweet::user() const'],['../classCocoaTweet_1_1API_1_1Model_1_1User.html#a47fc47345fdaa82bfe062f83b7e92c8e',1,'CocoaTweet::API::Model::User::User()=default'],['../classCocoaTweet_1_1API_1_1Model_1_1User.html#a03168506e73d4340e185f0febab052ac',1,'CocoaTweet::API::Model::User::User(const User &)=default'],['../classCocoaTweet_1_1API_1_1Model_1_1User.html#a92bd9e2c65f6effd68eca0441a8718b9',1,'CocoaTweet::API::Model::User::User(const std::string &_json)']]], - ['usertimeline_358',['UserTimeline',['../classCocoaTweet_1_1API_1_1Statuses_1_1UserTimeline.html#a775cf10d0deeabc0d7676ea8deb6fc65',1,'CocoaTweet::API::Statuses::UserTimeline::UserTimeline()'],['../classCocoaTweet_1_1API_1_1Statuses_1_1Status.html#a646cdade651997556a0756a5eb892bd4',1,'CocoaTweet::API::Statuses::Status::userTimeline()']]] -]; diff --git a/help/html/search/functions_14.html b/help/html/search/functions_14.html deleted file mode 100644 index 0302cd9..0000000 --- a/help/html/search/functions_14.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/functions_14.js b/help/html/search/functions_14.js deleted file mode 100644 index 633b7b2..0000000 --- a/help/html/search/functions_14.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['version_359',['version',['../classCocoaTweet_1_1OAuth_1_1OAuth1.html#ab8e90f4d24bf038419020d76a329c5b8',1,'CocoaTweet::OAuth::OAuth1']]] -]; diff --git a/help/html/search/functions_15.html b/help/html/search/functions_15.html deleted file mode 100644 index 18cf76b..0000000 --- a/help/html/search/functions_15.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/functions_15.js b/help/html/search/functions_15.js deleted file mode 100644 index 2a2aa28..0000000 --- a/help/html/search/functions_15.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['what_360',['what',['../classCocoaTweet_1_1Exception_1_1Exception.html#a251aff23f9da55802be51d4fabadf59b',1,'CocoaTweet::Exception::Exception']]] -]; diff --git a/help/html/search/functions_16.html b/help/html/search/functions_16.html deleted file mode 100644 index 9182391..0000000 --- a/help/html/search/functions_16.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/functions_16.js b/help/html/search/functions_16.js deleted file mode 100644 index f245f71..0000000 --- a/help/html/search/functions_16.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['_7eexception_361',['~Exception',['../classCocoaTweet_1_1Exception_1_1Exception.html#a5a71f213ee8533c03530f74f4aa0756a',1,'CocoaTweet::Exception::Exception']]] -]; diff --git a/help/html/search/functions_2.html b/help/html/search/functions_2.html deleted file mode 100644 index 2737c5a..0000000 --- a/help/html/search/functions_2.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/functions_2.js b/help/html/search/functions_2.js deleted file mode 100644 index 0043bf2..0000000 --- a/help/html/search/functions_2.js +++ /dev/null @@ -1,12 +0,0 @@ -var searchData= -[ - ['calculateauthheader_288',['calculateAuthHeader',['../classCocoaTweet_1_1OAuth_1_1OAuth1.html#a5954ac3bff9e6bfdd793808c9ac685fb',1,'CocoaTweet::OAuth::OAuth1']]], - ['cmake_5fminimum_5frequired_289',['cmake_minimum_required',['../CMakeLists_8txt.html#ac5041f8acc13608b40e8ef1e84beb40a',1,'CMakeLists.txt']]], - ['consumerkey_290',['consumerKey',['../classCocoaTweet_1_1OAuth_1_1Key.html#a50981b84093f2062bf233b35c8db7db2',1,'CocoaTweet::OAuth::Key::consumerKey(const std::string &_consumerKey)'],['../classCocoaTweet_1_1OAuth_1_1Key.html#a562a039b051219a2439deb13bf5026e2',1,'CocoaTweet::OAuth::Key::consumerKey() const']]], - ['consumersecret_291',['consumerSecret',['../classCocoaTweet_1_1OAuth_1_1Key.html#a37903c4d7ac67260891e6a49d72b7f79',1,'CocoaTweet::OAuth::Key::consumerSecret(const std::string &_consumerSecret)'],['../classCocoaTweet_1_1OAuth_1_1Key.html#a02c8645e7643dbd2480bea48f298b836',1,'CocoaTweet::OAuth::Key::consumerSecret() const']]], - ['coord_292',['coord',['../classCocoaTweet_1_1API_1_1Statuses_1_1Update.html#a75886f7953f8c82b644f3d09b9706726',1,'CocoaTweet::API::Statuses::Update']]], - ['create_293',['Create',['../classCocoaTweet_1_1API_1_1Favorites_1_1Create.html#a5fc5708f4d59a41d1cd52c4bbd751312',1,'CocoaTweet::API::Favorites::Create::Create()'],['../classCocoaTweet_1_1API_1_1Favorites_1_1Favorite.html#a9ee11a3e1e569b4399bd65c9c4814db3',1,'CocoaTweet::API::Favorites::Favorite::create()']]], - ['created_294',['created',['../classCocoaTweet_1_1API_1_1Model_1_1User.html#adccf26772faeae9806d5fbad7a52a1fb',1,'CocoaTweet::API::Model::User']]], - ['createdat_295',['createdAt',['../classCocoaTweet_1_1API_1_1Model_1_1Tweet.html#ac6f9cf58a81ae0ffe573e6ed8c720e99',1,'CocoaTweet::API::Model::Tweet::createdAt(const std::string _at)'],['../classCocoaTweet_1_1API_1_1Model_1_1Tweet.html#a9dc100295f8bde796bb77ce00c10ed2e',1,'CocoaTweet::API::Model::Tweet::createdAt() const'],['../classCocoaTweet_1_1API_1_1Model_1_1User.html#aa650dceac23438825cb0cce590444153',1,'CocoaTweet::API::Model::User::createdAt()']]], - ['curlcallback_5f_296',['curlCallback_',['../classCocoaTweet_1_1API_1_1Interface_1_1HttpBase.html#a65e649cd380fc68d69aa8b575a20ab10',1,'CocoaTweet::API::Interface::HttpBase']]] -]; diff --git a/help/html/search/functions_3.html b/help/html/search/functions_3.html deleted file mode 100644 index 6da86e7..0000000 --- a/help/html/search/functions_3.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/functions_3.js b/help/html/search/functions_3.js deleted file mode 100644 index 09639c9..0000000 --- a/help/html/search/functions_3.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['description_297',['description',['../classCocoaTweet_1_1API_1_1Model_1_1User.html#aabc0a29e3d5da2c0b838e47c7e950ff9',1,'CocoaTweet::API::Model::User::description(const std::string &_description)'],['../classCocoaTweet_1_1API_1_1Model_1_1User.html#a7f1b6bc6d04e666e21025bfe6912a95a',1,'CocoaTweet::API::Model::User::description() const']]], - ['destroy_298',['Destroy',['../classCocoaTweet_1_1API_1_1Favorites_1_1Destroy.html#a6d9947c0e2a1e2248c0251bad9a116a2',1,'CocoaTweet::API::Favorites::Destroy::Destroy()'],['../classCocoaTweet_1_1API_1_1Statuses_1_1Destroy.html#a62640d2aeb5c0b3854d685131d0d9667',1,'CocoaTweet::API::Statuses::Destroy::Destroy()'],['../classCocoaTweet_1_1API_1_1Favorites_1_1Favorite.html#a25a8d38285d696e1af70b58904346baf',1,'CocoaTweet::API::Favorites::Favorite::destroy()'],['../classCocoaTweet_1_1API_1_1Statuses_1_1Status.html#a10148ce12df2fa7d185fd69d2907998a',1,'CocoaTweet::API::Statuses::Status::destroy()']]], - ['directmessage_299',['directMessage',['../classCocoaTweet_1_1API_1_1API.html#a6147067e5f15533f517fc712ad83d9eb',1,'CocoaTweet::API::API::directMessage()'],['../classCocoaTweet_1_1API_1_1DirectMessages_1_1DirectMessage.html#ab7d2d08f96e880ccb55e8ae5a2c3e466',1,'CocoaTweet::API::DirectMessages::DirectMessage::DirectMessage()=default'],['../classCocoaTweet_1_1API_1_1DirectMessages_1_1DirectMessage.html#a562ddb40463116c85379b6d62ca5c731',1,'CocoaTweet::API::DirectMessages::DirectMessage::DirectMessage(std::shared_ptr< CocoaTweet::OAuth::OAuth1 > _oauth)']]], - ['displaycoord_300',['displayCoord',['../classCocoaTweet_1_1API_1_1Statuses_1_1Update.html#a5fc4d92adf390299b1c6c5c3ed2ea681',1,'CocoaTweet::API::Statuses::Update']]] -]; diff --git a/help/html/search/functions_4.html b/help/html/search/functions_4.html deleted file mode 100644 index 911304e..0000000 --- a/help/html/search/functions_4.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/functions_4.js b/help/html/search/functions_4.js deleted file mode 100644 index abac53b..0000000 --- a/help/html/search/functions_4.js +++ /dev/null @@ -1,9 +0,0 @@ -var searchData= -[ - ['elseif_301',['elseif',['../CMakeLists_8txt.html#aa4e8ce989b1f8229f5479534ee1ae8ac',1,'CMakeLists.txt']]], - ['enabledmcommands_302',['enableDMCommands',['../classCocoaTweet_1_1API_1_1Statuses_1_1Update.html#a84b9497dd94009d7cba1a63a73f5ef10',1,'CocoaTweet::API::Statuses::Update']]], - ['exception_303',['Exception',['../classCocoaTweet_1_1Exception_1_1Exception.html#a4e5f456b49449032d66b27bc5617f015',1,'CocoaTweet::Exception::Exception::Exception(const char *_msg)'],['../classCocoaTweet_1_1Exception_1_1Exception.html#a3f2f093321add79ec723c01c9a7d3bcc',1,'CocoaTweet::Exception::Exception::Exception(const std::string &_msg)']]], - ['excludereplyuserid_304',['excludeReplyUserId',['../classCocoaTweet_1_1API_1_1Statuses_1_1Update.html#a0135aace9ec1f275548ca15be91a0d71',1,'CocoaTweet::API::Statuses::Update']]], - ['expire_305',['expire',['../classCocoaTweet_1_1API_1_1Model_1_1MediaStore.html#a5465aa710a0c303b6e0a7757290336f5',1,'CocoaTweet::API::Model::MediaStore']]], - ['expires_306',['expires',['../classCocoaTweet_1_1API_1_1Model_1_1MediaStore.html#a6efeb93e3b55afc05ca73e4a6b297295',1,'CocoaTweet::API::Model::MediaStore']]] -]; diff --git a/help/html/search/functions_5.html b/help/html/search/functions_5.html deleted file mode 100644 index 61b920d..0000000 --- a/help/html/search/functions_5.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/functions_5.js b/help/html/search/functions_5.js deleted file mode 100644 index b5a01c6..0000000 --- a/help/html/search/functions_5.js +++ /dev/null @@ -1,8 +0,0 @@ -var searchData= -[ - ['faildmcommands_307',['failDMCommands',['../classCocoaTweet_1_1API_1_1Statuses_1_1Update.html#ad3f189f00bbcc3ba72d812074195abd0',1,'CocoaTweet::API::Statuses::Update']]], - ['favorite_308',['Favorite',['../classCocoaTweet_1_1API_1_1Favorites_1_1Favorite.html#aa0ade9ca6fc634f73892e5a4f26de519',1,'CocoaTweet::API::Favorites::Favorite::Favorite()=default'],['../classCocoaTweet_1_1API_1_1Favorites_1_1Favorite.html#ae80051130fa5c755464b6f6b237f4854',1,'CocoaTweet::API::Favorites::Favorite::Favorite(std::shared_ptr< CocoaTweet::OAuth::OAuth1 > _oauth)'],['../classCocoaTweet_1_1API_1_1API.html#a397db8cf7af9a4a3a34bc64169c04039',1,'CocoaTweet::API::API::favorite()'],['../classCocoaTweet_1_1API_1_1Model_1_1User.html#a4877f4d0c48419f164e6b4607526401b',1,'CocoaTweet::API::Model::User::favorite(const long _favorite)'],['../classCocoaTweet_1_1API_1_1Model_1_1User.html#a3325d3cf119aff3524b1595881116198',1,'CocoaTweet::API::Model::User::favorite() const']]], - ['follow_309',['follow',['../classCocoaTweet_1_1API_1_1Model_1_1User.html#a14228ee59169cb3bcc05d47848606682',1,'CocoaTweet::API::Model::User::follow(const long _follow)'],['../classCocoaTweet_1_1API_1_1Model_1_1User.html#aed8d4700e85197e3bd0025108144616a',1,'CocoaTweet::API::Model::User::follow() const']]], - ['follower_310',['follower',['../classCocoaTweet_1_1API_1_1Model_1_1User.html#a3e7d0d21bcdb6b315bd4ad1163119ea6',1,'CocoaTweet::API::Model::User::follower(const long _follower)'],['../classCocoaTweet_1_1API_1_1Model_1_1User.html#af88fdcc7c1a8fa3cbd9dfdd39bdcc43f',1,'CocoaTweet::API::Model::User::follower() const']]], - ['fromjsonfile_311',['fromJsonFile',['../classCocoaTweet_1_1OAuth_1_1Key.html#a936a436c45030782697f442979e2a675',1,'CocoaTweet::OAuth::Key']]] -]; diff --git a/help/html/search/functions_6.html b/help/html/search/functions_6.html deleted file mode 100644 index dc70a4a..0000000 --- a/help/html/search/functions_6.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/functions_6.js b/help/html/search/functions_6.js deleted file mode 100644 index 7397650..0000000 --- a/help/html/search/functions_6.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['generatebearertoken_312',['generateBearerToken',['../classCocoaTweet_1_1API_1_1API.html#ac9c6108521c9b9f312931a5e0be639ac',1,'CocoaTweet::API::API::generateBearerToken()'],['../classCocoaTweet_1_1OAuth_1_1OAuth1.html#a77d02fd343802f592bc12f8acfd5a176',1,'CocoaTweet::OAuth::OAuth1::generateBearerToken()']]] -]; diff --git a/help/html/search/functions_7.html b/help/html/search/functions_7.html deleted file mode 100644 index 7de3106..0000000 --- a/help/html/search/functions_7.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/functions_7.js b/help/html/search/functions_7.js deleted file mode 100644 index b455495..0000000 --- a/help/html/search/functions_7.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['hmacsha1_313',['hmacSha1',['../classCocoaTweet_1_1OAuth_1_1OAuth1.html#ae66ae62093d386bbb2763163acbcee03',1,'CocoaTweet::OAuth::OAuth1']]] -]; diff --git a/help/html/search/functions_8.html b/help/html/search/functions_8.html deleted file mode 100644 index 7422be2..0000000 --- a/help/html/search/functions_8.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/functions_8.js b/help/html/search/functions_8.js deleted file mode 100644 index ec9d5b8..0000000 --- a/help/html/search/functions_8.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['icon_314',['icon',['../classCocoaTweet_1_1API_1_1Model_1_1User.html#a621754a163ceb6ee55223f436b70c9f2',1,'CocoaTweet::API::Model::User']]], - ['iconurl_315',['iconUrl',['../classCocoaTweet_1_1API_1_1Model_1_1User.html#ac0460cf49900f9b70c5f8512ba156c94',1,'CocoaTweet::API::Model::User']]], - ['id_316',['id',['../classCocoaTweet_1_1API_1_1Favorites_1_1Create.html#ae461add62e4c473035c901534a4e4464',1,'CocoaTweet::API::Favorites::Create::id()'],['../classCocoaTweet_1_1API_1_1Favorites_1_1Destroy.html#abf46f0833f4adb6dac06fa246284b072',1,'CocoaTweet::API::Favorites::Destroy::id()'],['../classCocoaTweet_1_1API_1_1Model_1_1MediaStore.html#af90c553ab3da134f17ce2952612d9f9d',1,'CocoaTweet::API::Model::MediaStore::id(const std::string _id)'],['../classCocoaTweet_1_1API_1_1Model_1_1MediaStore.html#ae723e47d9d4c9f51668a48da9c67bdc1',1,'CocoaTweet::API::Model::MediaStore::id() const'],['../classCocoaTweet_1_1API_1_1Model_1_1Tweet.html#ac3f9762b2a6a719005998ad31349a5c5',1,'CocoaTweet::API::Model::Tweet::id(const std::string _id)'],['../classCocoaTweet_1_1API_1_1Model_1_1Tweet.html#a88d500d3d20a41762dee9e401cafefc6',1,'CocoaTweet::API::Model::Tweet::id() const'],['../classCocoaTweet_1_1API_1_1Model_1_1User.html#ac276142393faa8c5341c583ef30bce19',1,'CocoaTweet::API::Model::User::id(const std::string &_id)'],['../classCocoaTweet_1_1API_1_1Model_1_1User.html#ac2e2826cc3c911892673a3fc1319e3a3',1,'CocoaTweet::API::Model::User::id() const'],['../classCocoaTweet_1_1API_1_1Statuses_1_1Destroy.html#a18207d9e58563cc4338d35d4979fbf34',1,'CocoaTweet::API::Statuses::Destroy::id()'],['../classCocoaTweet_1_1API_1_1Statuses_1_1Retweet.html#aa152712528b5fcf39d416a6955eb5858',1,'CocoaTweet::API::Statuses::Retweet::id()'],['../classCocoaTweet_1_1API_1_1Statuses_1_1Unretweet.html#a029fb710f5d4f1cbbec898696cce0379',1,'CocoaTweet::API::Statuses::Unretweet::id()']]] -]; diff --git a/help/html/search/functions_9.html b/help/html/search/functions_9.html deleted file mode 100644 index befd4fa..0000000 --- a/help/html/search/functions_9.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/functions_9.js b/help/html/search/functions_9.js deleted file mode 100644 index 35ec5e9..0000000 --- a/help/html/search/functions_9.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['join_317',['join',['../namespaceCocoaTweet_1_1Util.html#a8786654a9f36ebcdc9a605e8e50bcc4c',1,'CocoaTweet::Util']]] -]; diff --git a/help/html/search/functions_a.html b/help/html/search/functions_a.html deleted file mode 100644 index a81e963..0000000 --- a/help/html/search/functions_a.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/functions_a.js b/help/html/search/functions_a.js deleted file mode 100644 index 753379e..0000000 --- a/help/html/search/functions_a.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['key_318',['key',['../classCocoaTweet_1_1OAuth_1_1OAuth1.html#a9690d88c41c5ad2bf20ed420b8c23cb1',1,'CocoaTweet::OAuth::OAuth1::key()'],['../classCocoaTweet_1_1OAuth_1_1Key.html#a1b50c413556b8eb769e30694412c2f60',1,'CocoaTweet::OAuth::Key::Key()'],['../classCocoaTweet_1_1OAuth_1_1Key.html#ac172968b08edb93001714e95f8a67c6b',1,'CocoaTweet::OAuth::Key::Key(const std::string &_consumerKey, const std::string &_consumerSecret, const std::string &_accessToken, const std::string &_accessTokenSecret)'],['../classCocoaTweet_1_1OAuth_1_1Key.html#a8f647fee987042d2d3189d37b972e8ed',1,'CocoaTweet::OAuth::Key::Key(const std::string &_consumerKey, const std::string &_consumerSecret)']]] -]; diff --git a/help/html/search/functions_b.html b/help/html/search/functions_b.html deleted file mode 100644 index 345265d..0000000 --- a/help/html/search/functions_b.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/functions_b.js b/help/html/search/functions_b.js deleted file mode 100644 index 78e139b..0000000 --- a/help/html/search/functions_b.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['listed_319',['listed',['../classCocoaTweet_1_1API_1_1Model_1_1User.html#ab5720fbbd69cd0f161b2feef29830614',1,'CocoaTweet::API::Model::User::listed(const long _listed)'],['../classCocoaTweet_1_1API_1_1Model_1_1User.html#a9d62e25b8b0f6c10b3728ba9f78a8070',1,'CocoaTweet::API::Model::User::listed() const']]], - ['location_320',['location',['../classCocoaTweet_1_1API_1_1Model_1_1User.html#a2e7239000f9547921f1a4d507423ea25',1,'CocoaTweet::API::Model::User::location(const std::string &_location)'],['../classCocoaTweet_1_1API_1_1Model_1_1User.html#a1a14149acd2084480a8a8ee6c7094d20',1,'CocoaTweet::API::Model::User::location() const']]] -]; diff --git a/help/html/search/functions_c.html b/help/html/search/functions_c.html deleted file mode 100644 index 858bfd6..0000000 --- a/help/html/search/functions_c.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/functions_c.js b/help/html/search/functions_c.js deleted file mode 100644 index ef9be13..0000000 --- a/help/html/search/functions_c.js +++ /dev/null @@ -1,10 +0,0 @@ -var searchData= -[ - ['main_321',['main',['../main_8cc.html#a8216c1645620cdb2f629cde3ac02ffef',1,'main.cc']]], - ['media_322',['Media',['../classCocoaTweet_1_1API_1_1Medias_1_1Media.html#a8aa7c237ea39987a00d860f1fcbb1833',1,'CocoaTweet::API::Medias::Media::Media()=default'],['../classCocoaTweet_1_1API_1_1Medias_1_1Media.html#aa43e1ce4f7950d43643b0c3fb9eef7d1',1,'CocoaTweet::API::Medias::Media::Media(std::shared_ptr< CocoaTweet::OAuth::OAuth1 > _oauth)'],['../classCocoaTweet_1_1API_1_1API.html#a2143e93436e088200f93ff8822d845ec',1,'CocoaTweet::API::API::media()'],['../classCocoaTweet_1_1API_1_1Medias_1_1Upload.html#ac1f706f8b1b71bec16a89eed8477c396',1,'CocoaTweet::API::Medias::Upload::media()']]], - ['mediaid_323',['mediaId',['../classCocoaTweet_1_1API_1_1Medias_1_1Upload.html#a80b625aa820e75f220823d78a26b04c4',1,'CocoaTweet::API::Medias::Upload::mediaId()'],['../classCocoaTweet_1_1API_1_1Statuses_1_1Update.html#ab8ef38fef366262e0f2a1bff9dee3ec6',1,'CocoaTweet::API::Statuses::Update::mediaId()']]], - ['mediastore_324',['MediaStore',['../classCocoaTweet_1_1API_1_1Model_1_1MediaStore.html#a0e6a74f084a96486a07e044696880efc',1,'CocoaTweet::API::Model::MediaStore::MediaStore()=default'],['../classCocoaTweet_1_1API_1_1Model_1_1MediaStore.html#a6cbebe79b8e48fc5b9c7efeb99d36b2f',1,'CocoaTweet::API::Model::MediaStore::MediaStore(const MediaStore &)=default'],['../classCocoaTweet_1_1API_1_1Model_1_1MediaStore.html#acf876698bff69017e0dbb872c3fd31ca',1,'CocoaTweet::API::Model::MediaStore::MediaStore(const std::string &_json)']]], - ['message_325',['message',['../classCocoaTweet_1_1API_1_1DirectMessages_1_1New.html#a5a66d60dbc7a1d7750e82b78d43c93ac',1,'CocoaTweet::API::DirectMessages::New']]], - ['messagecreate_326',['messageCreate',['../classCocoaTweet_1_1API_1_1DirectMessages_1_1DirectMessage.html#ab8962dff70ff28cb55c801f4a20c1cc2',1,'CocoaTweet::API::DirectMessages::DirectMessage']]], - ['method_327',['method',['../classCocoaTweet_1_1OAuth_1_1OAuth1.html#a798209f1805d15028258df55db1de681',1,'CocoaTweet::OAuth::OAuth1']]] -]; diff --git a/help/html/search/functions_d.html b/help/html/search/functions_d.html deleted file mode 100644 index 2f09f51..0000000 --- a/help/html/search/functions_d.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/functions_d.js b/help/html/search/functions_d.js deleted file mode 100644 index c718b9c..0000000 --- a/help/html/search/functions_d.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['name_328',['name',['../classCocoaTweet_1_1API_1_1Model_1_1User.html#a21053ed5d9439ebd41b1aee05a9ab077',1,'CocoaTweet::API::Model::User::name(const std::string &_name)'],['../classCocoaTweet_1_1API_1_1Model_1_1User.html#a8aa4c9f7a5edc2a262fe86a31a14eae9',1,'CocoaTweet::API::Model::User::name() const']]], - ['new_329',['New',['../classCocoaTweet_1_1API_1_1DirectMessages_1_1New.html#a417374d5ddcdbeb9e7596ee321fba4aa',1,'CocoaTweet::API::DirectMessages::New']]], - ['nonce_330',['nonce',['../classCocoaTweet_1_1OAuth_1_1OAuth1.html#abecce5bd7c075b0ea85933c17f399f69',1,'CocoaTweet::OAuth::OAuth1']]], - ['nosecret_331',['noSecret',['../classCocoaTweet_1_1OAuth_1_1Key.html#a0f2719582fae7ccb074e64f45083b273',1,'CocoaTweet::OAuth::Key']]] -]; diff --git a/help/html/search/functions_e.html b/help/html/search/functions_e.html deleted file mode 100644 index ee5afa6..0000000 --- a/help/html/search/functions_e.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/functions_e.js b/help/html/search/functions_e.js deleted file mode 100644 index 07cb73a..0000000 --- a/help/html/search/functions_e.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['oauth1_332',['OAuth1',['../classCocoaTweet_1_1OAuth_1_1OAuth1.html#a65db2966be0a556e21fe9fe6764d648d',1,'CocoaTweet::OAuth::OAuth1::OAuth1()'],['../classCocoaTweet_1_1OAuth_1_1OAuth1.html#a6398994361a2a240006c31f5f937d039',1,'CocoaTweet::OAuth::OAuth1::OAuth1(const Key _key)']]], - ['oauthparam_333',['oauthParam',['../classCocoaTweet_1_1OAuth_1_1OAuth1.html#a6e5e31c125e4d9279deb1eb47cfcb84a',1,'CocoaTweet::OAuth::OAuth1']]] -]; diff --git a/help/html/search/functions_f.html b/help/html/search/functions_f.html deleted file mode 100644 index f17c412..0000000 --- a/help/html/search/functions_f.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/functions_f.js b/help/html/search/functions_f.js deleted file mode 100644 index 6923f29..0000000 --- a/help/html/search/functions_f.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['parse_334',['parse',['../classCocoaTweet_1_1API_1_1Model_1_1MediaStore.html#abda07bde61f662a5a8664f6172daa204',1,'CocoaTweet::API::Model::MediaStore::parse()'],['../classCocoaTweet_1_1API_1_1Model_1_1Tweet.html#a71c2d26eb75289c9cfe3c5054a1baf65',1,'CocoaTweet::API::Model::Tweet::parse()'],['../classCocoaTweet_1_1API_1_1Model_1_1User.html#adef180dfb49b505b88c9b75113907b15',1,'CocoaTweet::API::Model::User::parse()']]], - ['process_335',['process',['../classCocoaTweet_1_1API_1_1DirectMessages_1_1New.html#a5a1b6b2885f2526a927746574744cb8c',1,'CocoaTweet::API::DirectMessages::New::process()'],['../classCocoaTweet_1_1API_1_1Favorites_1_1Create.html#adf39329935982455ffab03dc0bc28e3b',1,'CocoaTweet::API::Favorites::Create::process()'],['../classCocoaTweet_1_1API_1_1Favorites_1_1Destroy.html#a3bc14d9c674ece917e64cf94c091a296',1,'CocoaTweet::API::Favorites::Destroy::process()'],['../classCocoaTweet_1_1API_1_1Interface_1_1HttpBase.html#a680ff63af97568baf2587f20b7e1a8ec',1,'CocoaTweet::API::Interface::HttpBase::process()'],['../classCocoaTweet_1_1API_1_1Interface_1_1HttpGet.html#a3255bc6867830ff3632530e65c257ecc',1,'CocoaTweet::API::Interface::HttpGet::process()'],['../classCocoaTweet_1_1API_1_1Interface_1_1HttpPost.html#afc4040a8d1b0853585334751717d0662',1,'CocoaTweet::API::Interface::HttpPost::process()'],['../classCocoaTweet_1_1API_1_1Medias_1_1Upload.html#ad47c77a4086bdf4f74b1aaecc86bce14',1,'CocoaTweet::API::Medias::Upload::process()'],['../classCocoaTweet_1_1API_1_1Statuses_1_1Destroy.html#af36cb7e5b76a30ba7fae9700d95fc642',1,'CocoaTweet::API::Statuses::Destroy::process()'],['../classCocoaTweet_1_1API_1_1Statuses_1_1Retweet.html#a97749a3172d989fd90858811a4ea2e70',1,'CocoaTweet::API::Statuses::Retweet::process()'],['../classCocoaTweet_1_1API_1_1Statuses_1_1Unretweet.html#a28efd42659f837c15c08175a12e3222a',1,'CocoaTweet::API::Statuses::Unretweet::process()'],['../classCocoaTweet_1_1API_1_1Statuses_1_1Update.html#ad5732026f1a38df2b49f9f3bad9bdf85',1,'CocoaTweet::API::Statuses::Update::process()'],['../classCocoaTweet_1_1API_1_1Statuses_1_1UserTimeline.html#af59cefac376b86d8abb843f701598090',1,'CocoaTweet::API::Statuses::UserTimeline::process()']]], - ['protecteduser_336',['protectedUser',['../classCocoaTweet_1_1API_1_1Model_1_1User.html#a7b15c051d734de4362274d42798c9ebf',1,'CocoaTweet::API::Model::User::protectedUser(const bool _protected)'],['../classCocoaTweet_1_1API_1_1Model_1_1User.html#a8359ea99fa73fe3993b89e898666d0b5',1,'CocoaTweet::API::Model::User::protectedUser() const']]] -]; diff --git a/help/html/search/mag_sel.png b/help/html/search/mag_sel.png deleted file mode 100644 index 39c0ed5..0000000 Binary files a/help/html/search/mag_sel.png and /dev/null differ diff --git a/help/html/search/namespaces_0.html b/help/html/search/namespaces_0.html deleted file mode 100644 index 76996d1..0000000 --- a/help/html/search/namespaces_0.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/namespaces_0.js b/help/html/search/namespaces_0.js deleted file mode 100644 index de5e586..0000000 --- a/help/html/search/namespaces_0.js +++ /dev/null @@ -1,14 +0,0 @@ -var searchData= -[ - ['api_210',['API',['../namespaceCocoaTweet_1_1API.html',1,'CocoaTweet']]], - ['cocoatweet_211',['CocoaTweet',['../namespaceCocoaTweet.html',1,'']]], - ['directmessages_212',['DirectMessages',['../namespaceCocoaTweet_1_1API_1_1DirectMessages.html',1,'CocoaTweet::API']]], - ['exception_213',['Exception',['../namespaceCocoaTweet_1_1Exception.html',1,'CocoaTweet']]], - ['favorites_214',['Favorites',['../namespaceCocoaTweet_1_1API_1_1Favorites.html',1,'CocoaTweet::API']]], - ['interface_215',['Interface',['../namespaceCocoaTweet_1_1API_1_1Interface.html',1,'CocoaTweet::API']]], - ['medias_216',['Medias',['../namespaceCocoaTweet_1_1API_1_1Medias.html',1,'CocoaTweet::API']]], - ['model_217',['Model',['../namespaceCocoaTweet_1_1API_1_1Model.html',1,'CocoaTweet::API']]], - ['oauth_218',['OAuth',['../namespaceCocoaTweet_1_1OAuth.html',1,'CocoaTweet']]], - ['statuses_219',['Statuses',['../namespaceCocoaTweet_1_1API_1_1Statuses.html',1,'CocoaTweet::API']]], - ['util_220',['Util',['../namespaceCocoaTweet_1_1Util.html',1,'CocoaTweet']]] -]; diff --git a/help/html/search/namespaces_1.html b/help/html/search/namespaces_1.html deleted file mode 100644 index c69e366..0000000 --- a/help/html/search/namespaces_1.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/namespaces_1.js b/help/html/search/namespaces_1.js deleted file mode 100644 index 8f043f9..0000000 --- a/help/html/search/namespaces_1.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['detail_1062',['detail',['../namespacenlohmann_1_1detail.html',1,'nlohmann']]], - ['dtoa_5fimpl_1063',['dtoa_impl',['../namespacenlohmann_1_1detail_1_1dtoa__impl.html',1,'nlohmann::detail']]], - ['nlohmann_1064',['nlohmann',['../namespacenlohmann.html',1,'']]] -]; diff --git a/help/html/search/namespaces_2.html b/help/html/search/namespaces_2.html deleted file mode 100644 index aa97821..0000000 --- a/help/html/search/namespaces_2.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/namespaces_2.js b/help/html/search/namespaces_2.js deleted file mode 100644 index 15fc885..0000000 --- a/help/html/search/namespaces_2.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['std_1065',['std',['../namespacestd.html',1,'']]] -]; diff --git a/help/html/search/namespaces_3.html b/help/html/search/namespaces_3.html deleted file mode 100644 index 45ca599..0000000 --- a/help/html/search/namespaces_3.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/namespaces_3.js b/help/html/search/namespaces_3.js deleted file mode 100644 index 29bd6c8..0000000 --- a/help/html/search/namespaces_3.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['update_1066',['update',['../namespaceupdate.html',1,'']]] -]; diff --git a/help/html/search/nomatches.html b/help/html/search/nomatches.html deleted file mode 100644 index 4377320..0000000 --- a/help/html/search/nomatches.html +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - -
    -
    No Matches
    -
    - - diff --git a/help/html/search/pages_0.html b/help/html/search/pages_0.html deleted file mode 100644 index 9a6a29a..0000000 --- a/help/html/search/pages_0.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/pages_0.js b/help/html/search/pages_0.js deleted file mode 100644 index 1a0d87d..0000000 --- a/help/html/search/pages_0.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['readme_383',['README',['../md_README.html',1,'']]] -]; diff --git a/help/html/search/pages_1.html b/help/html/search/pages_1.html deleted file mode 100644 index 132ee03..0000000 --- a/help/html/search/pages_1.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/pages_1.js b/help/html/search/pages_1.js deleted file mode 100644 index eeda4c6..0000000 --- a/help/html/search/pages_1.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['deprecated_20list_1845',['Deprecated List',['../deprecated.html',1,'']]] -]; diff --git a/help/html/search/pages_2.html b/help/html/search/pages_2.html deleted file mode 100644 index 6109d47..0000000 --- a/help/html/search/pages_2.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/pages_2.js b/help/html/search/pages_2.js deleted file mode 100644 index 782900e..0000000 --- a/help/html/search/pages_2.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['release_2dtracking_20repository_20for_20nlohmann_2fjson_1846',['Release-tracking repository for nlohmann/json',['../md_build__deps_json-src_README.html',1,'']]] -]; diff --git a/help/html/search/related_0.html b/help/html/search/related_0.html deleted file mode 100644 index bbe15fa..0000000 --- a/help/html/search/related_0.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/related_0.js b/help/html/search/related_0.js deleted file mode 100644 index a61098c..0000000 --- a/help/html/search/related_0.js +++ /dev/null @@ -1,9 +0,0 @@ -var searchData= -[ - ['binary_5freader_1608',['binary_reader',['../classnlohmann_1_1basic__json.html#a3226693341c251507fec5d6f4fa5ce79',1,'nlohmann::basic_json']]], - ['binary_5fwriter_1609',['binary_writer',['../classnlohmann_1_1basic__json.html#a69d491bbda88ade6d3c7a2b11309e8bf',1,'nlohmann::basic_json']]], - ['iter_5fimpl_1610',['iter_impl',['../classnlohmann_1_1basic__json.html#a842e5c7ca096025c18b11e715d3401f4',1,'nlohmann::basic_json']]], - ['json_5fsax_5fdom_5fcallback_5fparser_1611',['json_sax_dom_callback_parser',['../classnlohmann_1_1basic__json.html#a95574da8d12905ea99dc348934c837da',1,'nlohmann::basic_json']]], - ['json_5fsax_5fdom_5fparser_1612',['json_sax_dom_parser',['../classnlohmann_1_1basic__json.html#a47aabb1eceae32e8a6e8e7f0ff34be60',1,'nlohmann::basic_json']]], - ['parser_1613',['parser',['../classnlohmann_1_1basic__json.html#ac8f3125911eb018ef4ab00d879487baf',1,'nlohmann::basic_json']]] -]; diff --git a/help/html/search/related_1.html b/help/html/search/related_1.html deleted file mode 100644 index 024707b..0000000 --- a/help/html/search/related_1.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/related_1.js b/help/html/search/related_1.js deleted file mode 100644 index b326e1c..0000000 --- a/help/html/search/related_1.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['basic_5fjson_1614',['basic_json',['../classnlohmann_1_1json__pointer.html#a069a4f73a702f4c2bc0d14ca1565a7b0',1,'nlohmann::json_pointer']]] -]; diff --git a/help/html/search/related_2.html b/help/html/search/related_2.html deleted file mode 100644 index b2390d4..0000000 --- a/help/html/search/related_2.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/related_2.js b/help/html/search/related_2.js deleted file mode 100644 index 46fd787..0000000 --- a/help/html/search/related_2.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['external_5fconstructor_1615',['external_constructor',['../classnlohmann_1_1basic__json.html#a6275ed57bae6866cdf5db5370a7ad47c',1,'nlohmann::basic_json::external_constructor()'],['../classnlohmann_1_1basic__json.html#a3b6ff4868cdf4db1db051059046282de',1,'nlohmann::basic_json::external_constructor()']]] -]; diff --git a/help/html/search/related_3.html b/help/html/search/related_3.html deleted file mode 100644 index 4ebe764..0000000 --- a/help/html/search/related_3.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/related_3.js b/help/html/search/related_3.js deleted file mode 100644 index c86e280..0000000 --- a/help/html/search/related_3.js +++ /dev/null @@ -1,14 +0,0 @@ -var searchData= -[ - ['operator_21_3d_1616',['operator!=',['../classnlohmann_1_1json__pointer.html#a6779edcf28e6f018a3bbb29c0b4b5e1e',1,'nlohmann::json_pointer::operator!=()'],['../classnlohmann_1_1basic__json.html#a6e2e21da48f5d9471716cd868a068327',1,'nlohmann::basic_json::operator!=()'],['../classnlohmann_1_1basic__json.html#afefc38fc08bdb7a9a7474b5ab4a1140f',1,'nlohmann::basic_json::operator!=()'],['../classnlohmann_1_1basic__json.html#ab0e886db6e9fa91ff9fd853333fed05b',1,'nlohmann::basic_json::operator!=()'],['../classnlohmann_1_1json__pointer.html#a6779edcf28e6f018a3bbb29c0b4b5e1e',1,'nlohmann::json_pointer::operator!=()'],['../classnlohmann_1_1basic__json.html#a6e2e21da48f5d9471716cd868a068327',1,'nlohmann::basic_json::operator!=()'],['../classnlohmann_1_1basic__json.html#afefc38fc08bdb7a9a7474b5ab4a1140f',1,'nlohmann::basic_json::operator!=()'],['../classnlohmann_1_1basic__json.html#ab0e886db6e9fa91ff9fd853333fed05b',1,'nlohmann::basic_json::operator!=()']]], - ['operator_2b_1617',['operator+',['../classnlohmann_1_1detail_1_1iter__impl.html#a94108d1a7563e103534f23eb5c1ee175',1,'nlohmann::detail::iter_impl::operator+()'],['../classnlohmann_1_1detail_1_1iter__impl.html#a94108d1a7563e103534f23eb5c1ee175',1,'nlohmann::detail::iter_impl::operator+()']]], - ['operator_2d_1618',['operator-',['../classnlohmann_1_1detail_1_1primitive__iterator__t.html#a86a249e92a5274dec7ea20e52b0cc878',1,'nlohmann::detail::primitive_iterator_t::operator-()'],['../classnlohmann_1_1detail_1_1primitive__iterator__t.html#a86a249e92a5274dec7ea20e52b0cc878',1,'nlohmann::detail::primitive_iterator_t::operator-()']]], - ['operator_2f_1619',['operator/',['../classnlohmann_1_1json__pointer.html#a90a11fe6c7f37b1746a3ff9cb24b0d53',1,'nlohmann::json_pointer::operator/()'],['../classnlohmann_1_1json__pointer.html#a926c9065dbed1bedc17857a813f7a46f',1,'nlohmann::json_pointer::operator/()'],['../classnlohmann_1_1json__pointer.html#a9f6bc6f4d4668b4e9a19d8b8ac29da4f',1,'nlohmann::json_pointer::operator/()'],['../classnlohmann_1_1json__pointer.html#a90a11fe6c7f37b1746a3ff9cb24b0d53',1,'nlohmann::json_pointer::operator/()'],['../classnlohmann_1_1json__pointer.html#a926c9065dbed1bedc17857a813f7a46f',1,'nlohmann::json_pointer::operator/()'],['../classnlohmann_1_1json__pointer.html#af5a4bc4f82113c271c9a0cd4d3b5f31c',1,'nlohmann::json_pointer::operator/()']]], - ['operator_3c_1620',['operator<',['../classnlohmann_1_1detail_1_1primitive__iterator__t.html#a6b032074795534fe7144a4f1c86ead2f',1,'nlohmann::detail::primitive_iterator_t::operator<()'],['../classnlohmann_1_1basic__json.html#aacd442b66140c764c594ac8ad7dfd5b3',1,'nlohmann::basic_json::operator<()'],['../classnlohmann_1_1basic__json.html#a7999ee3a69a4979d92e98ab1e88c8759',1,'nlohmann::basic_json::operator<()'],['../classnlohmann_1_1basic__json.html#abed3e9b4ab75f5bcbd3cd20f5af5cdab',1,'nlohmann::basic_json::operator<()'],['../classnlohmann_1_1detail_1_1primitive__iterator__t.html#a6b032074795534fe7144a4f1c86ead2f',1,'nlohmann::detail::primitive_iterator_t::operator<()'],['../classnlohmann_1_1basic__json.html#aacd442b66140c764c594ac8ad7dfd5b3',1,'nlohmann::basic_json::operator<()'],['../classnlohmann_1_1basic__json.html#a7999ee3a69a4979d92e98ab1e88c8759',1,'nlohmann::basic_json::operator<()'],['../classnlohmann_1_1basic__json.html#abed3e9b4ab75f5bcbd3cd20f5af5cdab',1,'nlohmann::basic_json::operator<()']]], - ['operator_3c_3c_1621',['operator<<',['../classnlohmann_1_1basic__json.html#a5e34c5435e557d0bf666bd7311211405',1,'nlohmann::basic_json::operator<<()'],['../classnlohmann_1_1basic__json.html#a60ca396028b8d9714c6e10efbf475af6',1,'nlohmann::basic_json::operator<<()'],['../classnlohmann_1_1basic__json.html#a5e34c5435e557d0bf666bd7311211405',1,'nlohmann::basic_json::operator<<()'],['../classnlohmann_1_1basic__json.html#a60ca396028b8d9714c6e10efbf475af6',1,'nlohmann::basic_json::operator<<()']]], - ['operator_3c_3d_1622',['operator<=',['../classnlohmann_1_1basic__json.html#a5c8bb5200f5eac10d31e26be46e5b1ac',1,'nlohmann::basic_json::operator<=()'],['../classnlohmann_1_1basic__json.html#a7e368211047f725f333696aefdf39ffd',1,'nlohmann::basic_json::operator<=()'],['../classnlohmann_1_1basic__json.html#ad73f88f70fe5acfa521750a8cd710026',1,'nlohmann::basic_json::operator<=()'],['../classnlohmann_1_1basic__json.html#a5c8bb5200f5eac10d31e26be46e5b1ac',1,'nlohmann::basic_json::operator<=()'],['../classnlohmann_1_1basic__json.html#a7e368211047f725f333696aefdf39ffd',1,'nlohmann::basic_json::operator<=()'],['../classnlohmann_1_1basic__json.html#ad73f88f70fe5acfa521750a8cd710026',1,'nlohmann::basic_json::operator<=()']]], - ['operator_3d_3d_1623',['operator==',['../classnlohmann_1_1detail_1_1primitive__iterator__t.html#af58da4713ea9010912f3da6b22aeee51',1,'nlohmann::detail::primitive_iterator_t::operator==()'],['../classnlohmann_1_1json__pointer.html#a4667ef558c8c3f8a646bfda0c6654653',1,'nlohmann::json_pointer::operator==()'],['../classnlohmann_1_1basic__json.html#a122640e7e2db1814fc7bbb3c122ec76e',1,'nlohmann::basic_json::operator==()'],['../classnlohmann_1_1basic__json.html#aba21440ea1aff44f718285ed7d6d20d9',1,'nlohmann::basic_json::operator==()'],['../classnlohmann_1_1basic__json.html#aef302e3ae215e46e5035d0e4fdf47235',1,'nlohmann::basic_json::operator==()'],['../classnlohmann_1_1detail_1_1primitive__iterator__t.html#af58da4713ea9010912f3da6b22aeee51',1,'nlohmann::detail::primitive_iterator_t::operator==()'],['../classnlohmann_1_1json__pointer.html#a4667ef558c8c3f8a646bfda0c6654653',1,'nlohmann::json_pointer::operator==()'],['../classnlohmann_1_1basic__json.html#a122640e7e2db1814fc7bbb3c122ec76e',1,'nlohmann::basic_json::operator==()'],['../classnlohmann_1_1basic__json.html#aba21440ea1aff44f718285ed7d6d20d9',1,'nlohmann::basic_json::operator==()'],['../classnlohmann_1_1basic__json.html#aef302e3ae215e46e5035d0e4fdf47235',1,'nlohmann::basic_json::operator==()']]], - ['operator_3e_1624',['operator>',['../classnlohmann_1_1basic__json.html#a87db51b6b936fb2ea293cdbc8702dcb8',1,'nlohmann::basic_json::operator>()'],['../classnlohmann_1_1basic__json.html#a412895af9a582869a4d369a64fb1b6d6',1,'nlohmann::basic_json::operator>()'],['../classnlohmann_1_1basic__json.html#a124c319566198d9f092c5bebea46ce77',1,'nlohmann::basic_json::operator>()'],['../classnlohmann_1_1basic__json.html#a87db51b6b936fb2ea293cdbc8702dcb8',1,'nlohmann::basic_json::operator>()'],['../classnlohmann_1_1basic__json.html#a412895af9a582869a4d369a64fb1b6d6',1,'nlohmann::basic_json::operator>()'],['../classnlohmann_1_1basic__json.html#a124c319566198d9f092c5bebea46ce77',1,'nlohmann::basic_json::operator>()']]], - ['operator_3e_3d_1625',['operator>=',['../classnlohmann_1_1basic__json.html#a74a943800c7f103d0990d7eef82c6453',1,'nlohmann::basic_json::operator>=()'],['../classnlohmann_1_1basic__json.html#a68e3a92b3d9be1faa05c92d096299189',1,'nlohmann::basic_json::operator>=()'],['../classnlohmann_1_1basic__json.html#a5ee0e3e8afc7cbd932d6ed66418fa80a',1,'nlohmann::basic_json::operator>=()'],['../classnlohmann_1_1basic__json.html#a74a943800c7f103d0990d7eef82c6453',1,'nlohmann::basic_json::operator>=()'],['../classnlohmann_1_1basic__json.html#a68e3a92b3d9be1faa05c92d096299189',1,'nlohmann::basic_json::operator>=()'],['../classnlohmann_1_1basic__json.html#a5ee0e3e8afc7cbd932d6ed66418fa80a',1,'nlohmann::basic_json::operator>=()']]], - ['operator_3e_3e_1626',['operator>>',['../classnlohmann_1_1basic__json.html#a34d6a60dd99e9f33b8273a1c8db5669b',1,'nlohmann::basic_json::operator>>()'],['../classnlohmann_1_1basic__json.html#aaf363408931d76472ded14017e59c9e8',1,'nlohmann::basic_json::operator>>()'],['../classnlohmann_1_1basic__json.html#a34d6a60dd99e9f33b8273a1c8db5669b',1,'nlohmann::basic_json::operator>>()'],['../classnlohmann_1_1basic__json.html#aaf363408931d76472ded14017e59c9e8',1,'nlohmann::basic_json::operator>>()']]] -]; diff --git a/help/html/search/related_4.html b/help/html/search/related_4.html deleted file mode 100644 index 0190ee4..0000000 --- a/help/html/search/related_4.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/related_4.js b/help/html/search/related_4.js deleted file mode 100644 index cf9b1b3..0000000 --- a/help/html/search/related_4.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['swap_1627',['swap',['../classnlohmann_1_1basic__json.html#aee0ae36cbfb0336832ebc0374c3c7679',1,'nlohmann::basic_json']]] -]; diff --git a/help/html/search/related_5.html b/help/html/search/related_5.html deleted file mode 100644 index dac3a38..0000000 --- a/help/html/search/related_5.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/related_5.js b/help/html/search/related_5.js deleted file mode 100644 index e8fe244..0000000 --- a/help/html/search/related_5.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['wide_5fstring_5finput_5fhelper_1628',['wide_string_input_helper',['../classnlohmann_1_1detail_1_1iterator__input__adapter.html#ab86106ba230f1542b94dcd96e6ab3221',1,'nlohmann::detail::iterator_input_adapter']]] -]; diff --git a/help/html/search/search.css b/help/html/search/search.css deleted file mode 100644 index 3cf9df9..0000000 --- a/help/html/search/search.css +++ /dev/null @@ -1,271 +0,0 @@ -/*---------------- Search Box */ - -#FSearchBox { - float: left; -} - -#MSearchBox { - white-space : nowrap; - float: none; - margin-top: 8px; - right: 0px; - width: 170px; - height: 24px; - z-index: 102; -} - -#MSearchBox .left -{ - display:block; - position:absolute; - left:10px; - width:20px; - height:19px; - background:url('search_l.png') no-repeat; - background-position:right; -} - -#MSearchSelect { - display:block; - position:absolute; - width:20px; - height:19px; -} - -.left #MSearchSelect { - left:4px; -} - -.right #MSearchSelect { - right:5px; -} - -#MSearchField { - display:block; - position:absolute; - height:19px; - background:url('search_m.png') repeat-x; - border:none; - width:115px; - margin-left:20px; - padding-left:4px; - color: #909090; - outline: none; - font: 9pt Arial, Verdana, sans-serif; - -webkit-border-radius: 0px; -} - -#FSearchBox #MSearchField { - margin-left:15px; -} - -#MSearchBox .right { - display:block; - position:absolute; - right:10px; - top:8px; - width:20px; - height:19px; - background:url('search_r.png') no-repeat; - background-position:left; -} - -#MSearchClose { - display: none; - position: absolute; - top: 4px; - background : none; - border: none; - margin: 0px 4px 0px 0px; - padding: 0px 0px; - outline: none; -} - -.left #MSearchClose { - left: 6px; -} - -.right #MSearchClose { - right: 2px; -} - -.MSearchBoxActive #MSearchField { - color: #000000; -} - -/*---------------- Search filter selection */ - -#MSearchSelectWindow { - display: none; - position: absolute; - left: 0; top: 0; - border: 1px solid #90A5CE; - background-color: #F9FAFC; - z-index: 10001; - padding-top: 4px; - padding-bottom: 4px; - -moz-border-radius: 4px; - -webkit-border-top-left-radius: 4px; - -webkit-border-top-right-radius: 4px; - -webkit-border-bottom-left-radius: 4px; - -webkit-border-bottom-right-radius: 4px; - -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); -} - -.SelectItem { - font: 8pt Arial, Verdana, sans-serif; - padding-left: 2px; - padding-right: 12px; - border: 0px; -} - -span.SelectionMark { - margin-right: 4px; - font-family: monospace; - outline-style: none; - text-decoration: none; -} - -a.SelectItem { - display: block; - outline-style: none; - color: #000000; - text-decoration: none; - padding-left: 6px; - padding-right: 12px; -} - -a.SelectItem:focus, -a.SelectItem:active { - color: #000000; - outline-style: none; - text-decoration: none; -} - -a.SelectItem:hover { - color: #FFFFFF; - background-color: #3D578C; - outline-style: none; - text-decoration: none; - cursor: pointer; - display: block; -} - -/*---------------- Search results window */ - -iframe#MSearchResults { - width: 60ex; - height: 15em; -} - -#MSearchResultsWindow { - display: none; - position: absolute; - left: 0; top: 0; - border: 1px solid #000; - background-color: #EEF1F7; - z-index:10000; -} - -/* ----------------------------------- */ - - -#SRIndex { - clear:both; - padding-bottom: 15px; -} - -.SREntry { - font-size: 10pt; - padding-left: 1ex; -} - -.SRPage .SREntry { - font-size: 8pt; - padding: 1px 5px; -} - -body.SRPage { - margin: 5px 2px; -} - -.SRChildren { - padding-left: 3ex; padding-bottom: .5em -} - -.SRPage .SRChildren { - display: none; -} - -.SRSymbol { - font-weight: bold; - color: #425E97; - font-family: Arial, Verdana, sans-serif; - text-decoration: none; - outline: none; -} - -a.SRScope { - display: block; - color: #425E97; - font-family: Arial, Verdana, sans-serif; - text-decoration: none; - outline: none; -} - -a.SRSymbol:focus, a.SRSymbol:active, -a.SRScope:focus, a.SRScope:active { - text-decoration: underline; -} - -span.SRScope { - padding-left: 4px; -} - -.SRPage .SRStatus { - padding: 2px 5px; - font-size: 8pt; - font-style: italic; -} - -.SRResult { - display: none; -} - -DIV.searchresults { - margin-left: 10px; - margin-right: 10px; -} - -/*---------------- External search page results */ - -.searchresult { - background-color: #F0F3F8; -} - -.pages b { - color: white; - padding: 5px 5px 3px 5px; - background-image: url("../tab_a.png"); - background-repeat: repeat-x; - text-shadow: 0 1px 1px #000000; -} - -.pages { - line-height: 17px; - margin-left: 4px; - text-decoration: none; -} - -.hl { - font-weight: bold; -} - -#searchresults { - margin-bottom: 20px; -} - -.searchpages { - margin-top: 10px; -} - diff --git a/help/html/search/search.js b/help/html/search/search.js deleted file mode 100644 index a554ab9..0000000 --- a/help/html/search/search.js +++ /dev/null @@ -1,814 +0,0 @@ -/* - @licstart The following is the entire license notice for the - JavaScript code in this file. - - Copyright (C) 1997-2017 by Dimitri van Heesch - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - - @licend The above is the entire license notice - for the JavaScript code in this file - */ -function convertToId(search) -{ - var result = ''; - for (i=0;i do a search - { - this.Search(); - } - } - - this.OnSearchSelectKey = function(evt) - { - var e = (evt) ? evt : window.event; // for IE - if (e.keyCode==40 && this.searchIndex0) // Up - { - this.searchIndex--; - this.OnSelectItem(this.searchIndex); - } - else if (e.keyCode==13 || e.keyCode==27) - { - this.OnSelectItem(this.searchIndex); - this.CloseSelectionWindow(); - this.DOMSearchField().focus(); - } - return false; - } - - // --------- Actions - - // Closes the results window. - this.CloseResultsWindow = function() - { - this.DOMPopupSearchResultsWindow().style.display = 'none'; - this.DOMSearchClose().style.display = 'none'; - this.Activate(false); - } - - this.CloseSelectionWindow = function() - { - this.DOMSearchSelectWindow().style.display = 'none'; - } - - // Performs a search. - this.Search = function() - { - this.keyTimeout = 0; - - // strip leading whitespace - var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); - - var code = searchValue.toLowerCase().charCodeAt(0); - var idxChar = searchValue.substr(0, 1).toLowerCase(); - if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair - { - idxChar = searchValue.substr(0, 2); - } - - var resultsPage; - var resultsPageWithSearch; - var hasResultsPage; - - var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); - if (idx!=-1) - { - var hexCode=idx.toString(16); - resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + '.html'; - resultsPageWithSearch = resultsPage+'?'+escape(searchValue); - hasResultsPage = true; - } - else // nothing available for this search term - { - resultsPage = this.resultsPath + '/nomatches.html'; - resultsPageWithSearch = resultsPage; - hasResultsPage = false; - } - - window.frames.MSearchResults.location = resultsPageWithSearch; - var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); - - if (domPopupSearchResultsWindow.style.display!='block') - { - var domSearchBox = this.DOMSearchBox(); - this.DOMSearchClose().style.display = 'inline'; - if (this.insideFrame) - { - var domPopupSearchResults = this.DOMPopupSearchResults(); - domPopupSearchResultsWindow.style.position = 'relative'; - domPopupSearchResultsWindow.style.display = 'block'; - var width = document.body.clientWidth - 8; // the -8 is for IE :-( - domPopupSearchResultsWindow.style.width = width + 'px'; - domPopupSearchResults.style.width = width + 'px'; - } - else - { - var domPopupSearchResults = this.DOMPopupSearchResults(); - var left = getXPos(domSearchBox) + 150; // domSearchBox.offsetWidth; - var top = getYPos(domSearchBox) + 20; // domSearchBox.offsetHeight + 1; - domPopupSearchResultsWindow.style.display = 'block'; - left -= domPopupSearchResults.offsetWidth; - domPopupSearchResultsWindow.style.top = top + 'px'; - domPopupSearchResultsWindow.style.left = left + 'px'; - } - } - - this.lastSearchValue = searchValue; - this.lastResultsPage = resultsPage; - } - - // -------- Activation Functions - - // Activates or deactivates the search panel, resetting things to - // their default values if necessary. - this.Activate = function(isActive) - { - if (isActive || // open it - this.DOMPopupSearchResultsWindow().style.display == 'block' - ) - { - this.DOMSearchBox().className = 'MSearchBoxActive'; - - var searchField = this.DOMSearchField(); - - if (searchField.value == this.searchLabel) // clear "Search" term upon entry - { - searchField.value = ''; - this.searchActive = true; - } - } - else if (!isActive) // directly remove the panel - { - this.DOMSearchBox().className = 'MSearchBoxInactive'; - this.DOMSearchField().value = this.searchLabel; - this.searchActive = false; - this.lastSearchValue = '' - this.lastResultsPage = ''; - } - } -} - -// ----------------------------------------------------------------------- - -// The class that handles everything on the search results page. -function SearchResults(name) -{ - // The number of matches from the last run of . - this.lastMatchCount = 0; - this.lastKey = 0; - this.repeatOn = false; - - // Toggles the visibility of the passed element ID. - this.FindChildElement = function(id) - { - var parentElement = document.getElementById(id); - var element = parentElement.firstChild; - - while (element && element!=parentElement) - { - if (element.nodeName == 'DIV' && element.className == 'SRChildren') - { - return element; - } - - if (element.nodeName == 'DIV' && element.hasChildNodes()) - { - element = element.firstChild; - } - else if (element.nextSibling) - { - element = element.nextSibling; - } - else - { - do - { - element = element.parentNode; - } - while (element && element!=parentElement && !element.nextSibling); - - if (element && element!=parentElement) - { - element = element.nextSibling; - } - } - } - } - - this.Toggle = function(id) - { - var element = this.FindChildElement(id); - if (element) - { - if (element.style.display == 'block') - { - element.style.display = 'none'; - } - else - { - element.style.display = 'block'; - } - } - } - - // Searches for the passed string. If there is no parameter, - // it takes it from the URL query. - // - // Always returns true, since other documents may try to call it - // and that may or may not be possible. - this.Search = function(search) - { - if (!search) // get search word from URL - { - search = window.location.search; - search = search.substring(1); // Remove the leading '?' - search = unescape(search); - } - - search = search.replace(/^ +/, ""); // strip leading spaces - search = search.replace(/ +$/, ""); // strip trailing spaces - search = search.toLowerCase(); - search = convertToId(search); - - var resultRows = document.getElementsByTagName("div"); - var matches = 0; - - var i = 0; - while (i < resultRows.length) - { - var row = resultRows.item(i); - if (row.className == "SRResult") - { - var rowMatchName = row.id.toLowerCase(); - rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' - - if (search.length<=rowMatchName.length && - rowMatchName.substr(0, search.length)==search) - { - row.style.display = 'block'; - matches++; - } - else - { - row.style.display = 'none'; - } - } - i++; - } - document.getElementById("Searching").style.display='none'; - if (matches == 0) // no results - { - document.getElementById("NoMatches").style.display='block'; - } - else // at least one result - { - document.getElementById("NoMatches").style.display='none'; - } - this.lastMatchCount = matches; - return true; - } - - // return the first item with index index or higher that is visible - this.NavNext = function(index) - { - var focusItem; - while (1) - { - var focusName = 'Item'+index; - focusItem = document.getElementById(focusName); - if (focusItem && focusItem.parentNode.parentNode.style.display=='block') - { - break; - } - else if (!focusItem) // last element - { - break; - } - focusItem=null; - index++; - } - return focusItem; - } - - this.NavPrev = function(index) - { - var focusItem; - while (1) - { - var focusName = 'Item'+index; - focusItem = document.getElementById(focusName); - if (focusItem && focusItem.parentNode.parentNode.style.display=='block') - { - break; - } - else if (!focusItem) // last element - { - break; - } - focusItem=null; - index--; - } - return focusItem; - } - - this.ProcessKeys = function(e) - { - if (e.type == "keydown") - { - this.repeatOn = false; - this.lastKey = e.keyCode; - } - else if (e.type == "keypress") - { - if (!this.repeatOn) - { - if (this.lastKey) this.repeatOn = true; - return false; // ignore first keypress after keydown - } - } - else if (e.type == "keyup") - { - this.lastKey = 0; - this.repeatOn = false; - } - return this.lastKey!=0; - } - - this.Nav = function(evt,itemIndex) - { - var e = (evt) ? evt : window.event; // for IE - if (e.keyCode==13) return true; - if (!this.ProcessKeys(e)) return false; - - if (this.lastKey==38) // Up - { - var newIndex = itemIndex-1; - var focusItem = this.NavPrev(newIndex); - if (focusItem) - { - var child = this.FindChildElement(focusItem.parentNode.parentNode.id); - if (child && child.style.display == 'block') // children visible - { - var n=0; - var tmpElem; - while (1) // search for last child - { - tmpElem = document.getElementById('Item'+newIndex+'_c'+n); - if (tmpElem) - { - focusItem = tmpElem; - } - else // found it! - { - break; - } - n++; - } - } - } - if (focusItem) - { - focusItem.focus(); - } - else // return focus to search field - { - parent.document.getElementById("MSearchField").focus(); - } - } - else if (this.lastKey==40) // Down - { - var newIndex = itemIndex+1; - var focusItem; - var item = document.getElementById('Item'+itemIndex); - var elem = this.FindChildElement(item.parentNode.parentNode.id); - if (elem && elem.style.display == 'block') // children visible - { - focusItem = document.getElementById('Item'+itemIndex+'_c0'); - } - if (!focusItem) focusItem = this.NavNext(newIndex); - if (focusItem) focusItem.focus(); - } - else if (this.lastKey==39) // Right - { - var item = document.getElementById('Item'+itemIndex); - var elem = this.FindChildElement(item.parentNode.parentNode.id); - if (elem) elem.style.display = 'block'; - } - else if (this.lastKey==37) // Left - { - var item = document.getElementById('Item'+itemIndex); - var elem = this.FindChildElement(item.parentNode.parentNode.id); - if (elem) elem.style.display = 'none'; - } - else if (this.lastKey==27) // Escape - { - parent.searchBox.CloseResultsWindow(); - parent.document.getElementById("MSearchField").focus(); - } - else if (this.lastKey==13) // Enter - { - return true; - } - return false; - } - - this.NavChild = function(evt,itemIndex,childIndex) - { - var e = (evt) ? evt : window.event; // for IE - if (e.keyCode==13) return true; - if (!this.ProcessKeys(e)) return false; - - if (this.lastKey==38) // Up - { - if (childIndex>0) - { - var newIndex = childIndex-1; - document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); - } - else // already at first child, jump to parent - { - document.getElementById('Item'+itemIndex).focus(); - } - } - else if (this.lastKey==40) // Down - { - var newIndex = childIndex+1; - var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); - if (!elem) // last child, jump to parent next parent - { - elem = this.NavNext(itemIndex+1); - } - if (elem) - { - elem.focus(); - } - } - else if (this.lastKey==27) // Escape - { - parent.searchBox.CloseResultsWindow(); - parent.document.getElementById("MSearchField").focus(); - } - else if (this.lastKey==13) // Enter - { - return true; - } - return false; - } -} - -function setKeyActions(elem,action) -{ - elem.setAttribute('onkeydown',action); - elem.setAttribute('onkeypress',action); - elem.setAttribute('onkeyup',action); -} - -function setClassAttr(elem,attr) -{ - elem.setAttribute('class',attr); - elem.setAttribute('className',attr); -} - -function createResults() -{ - var results = document.getElementById("SRResults"); - for (var e=0; e - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/typedefs_0.js b/help/html/search/typedefs_0.js deleted file mode 100644 index 801ce79..0000000 --- a/help/html/search/typedefs_0.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['adapter_5ftype_1464',['adapter_type',['../structnlohmann_1_1detail_1_1iterator__input__adapter__factory.html#a264935c57ca29dfb5153ade55266d1fa',1,'nlohmann::detail::iterator_input_adapter_factory::adapter_type()'],['../structnlohmann_1_1detail_1_1iterator__input__adapter__factory_3_01IteratorType_00_01enable__if__0e86378a778d78dd2284e92dc30f4902.html#ae9fc94b1b95c5d4afd1ab3f9ccb93c1a',1,'nlohmann::detail::iterator_input_adapter_factory< IteratorType, enable_if_t< is_iterator_of_multibyte< IteratorType >::value > >::adapter_type()']]], - ['allocator_5ftype_1465',['allocator_type',['../classnlohmann_1_1basic__json.html#a69388a77648e83007af1295aaf350c0f',1,'nlohmann::basic_json::allocator_type()'],['../classnlohmann_1_1basic__json.html#a69388a77648e83007af1295aaf350c0f',1,'nlohmann::basic_json::allocator_type()']]], - ['array_5ft_1466',['array_t',['../classnlohmann_1_1basic__json.html#a69524b1f8f42c0a81b86cee3fc54e034',1,'nlohmann::basic_json::array_t()'],['../classnlohmann_1_1basic__json.html#a69524b1f8f42c0a81b86cee3fc54e034',1,'nlohmann::basic_json::array_t()']]] -]; diff --git a/help/html/search/typedefs_1.html b/help/html/search/typedefs_1.html deleted file mode 100644 index 9b8bf72..0000000 --- a/help/html/search/typedefs_1.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/typedefs_1.js b/help/html/search/typedefs_1.js deleted file mode 100644 index f950731..0000000 --- a/help/html/search/typedefs_1.js +++ /dev/null @@ -1,9 +0,0 @@ -var searchData= -[ - ['base_5fadapter_5ftype_1467',['base_adapter_type',['../structnlohmann_1_1detail_1_1iterator__input__adapter__factory_3_01IteratorType_00_01enable__if__0e86378a778d78dd2284e92dc30f4902.html#afd0218fc0657b5e04ab81ccc9dcda03d',1,'nlohmann::detail::iterator_input_adapter_factory< IteratorType, enable_if_t< is_iterator_of_multibyte< IteratorType >::value > >']]], - ['base_5fiterator_1468',['base_iterator',['../classnlohmann_1_1detail_1_1json__reverse__iterator.html#a6b2ef1d632fe49bfcc22fbd1abd62395',1,'nlohmann::detail::json_reverse_iterator::base_iterator()'],['../classnlohmann_1_1detail_1_1json__reverse__iterator.html#a6b2ef1d632fe49bfcc22fbd1abd62395',1,'nlohmann::detail::json_reverse_iterator::base_iterator()']]], - ['binary_5ffunction_5ft_1469',['binary_function_t',['../namespacenlohmann_1_1detail.html#a4948bef216c2594dae7921d9c4045455',1,'nlohmann::detail']]], - ['binary_5ft_1470',['binary_t',['../structnlohmann_1_1json__sax.html#a0ef406ba81eef08aadf4a9ef48d742bd',1,'nlohmann::json_sax::binary_t()'],['../classnlohmann_1_1detail_1_1json__sax__dom__parser.html#a188c267325965fdbe487ce68ab5496aa',1,'nlohmann::detail::json_sax_dom_parser::binary_t()'],['../classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#a5af8493f830eeb1a79c69fc39ed54ef8',1,'nlohmann::detail::json_sax_dom_callback_parser::binary_t()'],['../classnlohmann_1_1detail_1_1json__sax__acceptor.html#a56346d95ee4e539eaded2e6826fecf66',1,'nlohmann::detail::json_sax_acceptor::binary_t()'],['../classnlohmann_1_1basic__json.html#acbf51bc13484009ed204bd78a498355e',1,'nlohmann::basic_json::binary_t()']]], - ['boolean_5ffunction_5ft_1471',['boolean_function_t',['../namespacenlohmann_1_1detail.html#a45ec87326503b8884b664a9ef23a6c99',1,'nlohmann::detail']]], - ['boolean_5ft_1472',['boolean_t',['../classnlohmann_1_1basic__json.html#a8cc04e22d7ef18efd2d34bc04eb6a1b2',1,'nlohmann::basic_json::boolean_t()'],['../classnlohmann_1_1basic__json.html#a8cc04e22d7ef18efd2d34bc04eb6a1b2',1,'nlohmann::basic_json::boolean_t()']]] -]; diff --git a/help/html/search/typedefs_10.html b/help/html/search/typedefs_10.html deleted file mode 100644 index bbfbcf0..0000000 --- a/help/html/search/typedefs_10.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/typedefs_10.js b/help/html/search/typedefs_10.js deleted file mode 100644 index 93dae0f..0000000 --- a/help/html/search/typedefs_10.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['to_5fjson_5ffunction_1547',['to_json_function',['../namespacenlohmann_1_1detail.html#af846b6cf2f926009ff3a7a61495ca383',1,'nlohmann::detail']]], - ['token_5ftype_1548',['token_type',['../classnlohmann_1_1detail_1_1lexer.html#a8107491251b16d94167fcd32ac4ff303',1,'nlohmann::detail::lexer']]], - ['type_1549',['type',['../structnlohmann_1_1detail_1_1index__sequence.html#a3c14c4ab277de72b166806193ff4fa10',1,'nlohmann::detail::index_sequence::type()'],['../structnlohmann_1_1detail_1_1make__void.html#a8961e24ae3b2cb65ec47d1ce805d94e4',1,'nlohmann::detail::make_void::type()'],['../structnlohmann_1_1detail_1_1detector.html#a0cd69423587748bf3d3d702cc7b7c2ce',1,'nlohmann::detail::detector::type()'],['../structnlohmann_1_1detail_1_1detector_3_01Default_00_01void__t_3_01Op_3_01Args_8_8_8_01_4_01_4_00_01Op_00_01Args_8_8_8_01_4.html#a5afd6a40e94dde21d120ac646468c495',1,'nlohmann::detail::detector< Default, void_t< Op< Args... > >, Op, Args... >::type()'],['../classstd_1_1tuple__element_3_01N_00_01_1_1nlohmann_1_1detail_1_1iteration__proxy__value_3_01IteratorType_01_4_01_4.html#ace1dfdb74841c2f58c064a50598188fd',1,'std::tuple_element< N, ::nlohmann::detail::iteration_proxy_value< IteratorType > >::type()'],['../structnlohmann_1_1detail_1_1index__sequence.html#a3c14c4ab277de72b166806193ff4fa10',1,'nlohmann::detail::index_sequence::type()'],['../structnlohmann_1_1detail_1_1make__void.html#a8961e24ae3b2cb65ec47d1ce805d94e4',1,'nlohmann::detail::make_void::type()'],['../structnlohmann_1_1detail_1_1detector.html#a0cd69423587748bf3d3d702cc7b7c2ce',1,'nlohmann::detail::detector::type()'],['../structnlohmann_1_1detail_1_1detector_3_01Default_00_01void__t_3_01Op_3_01Args_8_8_8_01_4_01_4_00_01Op_00_01Args_8_8_8_01_4.html#a5afd6a40e94dde21d120ac646468c495',1,'nlohmann::detail::detector< Default, void_t< Op< Args... > >, Op, Args... >::type()'],['../classstd_1_1tuple__element_3_01N_00_01_1_1nlohmann_1_1detail_1_1iteration__proxy__value_3_01IteratorType_01_4_01_4.html#ace1dfdb74841c2f58c064a50598188fd',1,'std::tuple_element< N, ::nlohmann::detail::iteration_proxy_value< IteratorType > >::type()']]], - ['type_5ferror_1550',['type_error',['../classnlohmann_1_1basic__json.html#a79473de577bb3f28ef0aa6e9f1571b52',1,'nlohmann::basic_json::type_error()'],['../classnlohmann_1_1basic__json.html#a79473de577bb3f28ef0aa6e9f1571b52',1,'nlohmann::basic_json::type_error()']]] -]; diff --git a/help/html/search/typedefs_11.html b/help/html/search/typedefs_11.html deleted file mode 100644 index 98de1ae..0000000 --- a/help/html/search/typedefs_11.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/typedefs_11.js b/help/html/search/typedefs_11.js deleted file mode 100644 index 751d698..0000000 --- a/help/html/search/typedefs_11.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['uncvref_5ft_1551',['uncvref_t',['../namespacenlohmann_1_1detail.html#a53a082eedad9f4729fcd8fed552a21f7',1,'nlohmann::detail']]] -]; diff --git a/help/html/search/typedefs_12.html b/help/html/search/typedefs_12.html deleted file mode 100644 index 40ed347..0000000 --- a/help/html/search/typedefs_12.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/typedefs_12.js b/help/html/search/typedefs_12.js deleted file mode 100644 index 4a1c9e7..0000000 --- a/help/html/search/typedefs_12.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['value_5ft_1552',['value_t',['../structnlohmann_1_1detail_1_1detector.html#a5a132aab543d1706e2439268faf8d487',1,'nlohmann::detail::detector::value_t()'],['../structnlohmann_1_1detail_1_1detector_3_01Default_00_01void__t_3_01Op_3_01Args_8_8_8_01_4_01_4_00_01Op_00_01Args_8_8_8_01_4.html#ab748f9f00bb31bee4978a033589f8c85',1,'nlohmann::detail::detector< Default, void_t< Op< Args... > >, Op, Args... >::value_t()'],['../classnlohmann_1_1basic__json.html#a4e43b685789a169bca7e69b3104c86d1',1,'nlohmann::basic_json::value_t()'],['../structnlohmann_1_1detail_1_1detector.html#a5a132aab543d1706e2439268faf8d487',1,'nlohmann::detail::detector::value_t()'],['../structnlohmann_1_1detail_1_1detector_3_01Default_00_01void__t_3_01Op_3_01Args_8_8_8_01_4_01_4_00_01Op_00_01Args_8_8_8_01_4.html#ab748f9f00bb31bee4978a033589f8c85',1,'nlohmann::detail::detector< Default, void_t< Op< Args... > >, Op, Args... >::value_t()'],['../classnlohmann_1_1basic__json.html#a4e43b685789a169bca7e69b3104c86d1',1,'nlohmann::basic_json::value_t()']]], - ['value_5ftype_1553',['value_type',['../structnlohmann_1_1detail_1_1index__sequence.html#a2eca43d08fc1eb68bd5fa75b6714d21d',1,'nlohmann::detail::index_sequence::value_type()'],['../structnlohmann_1_1detail_1_1iterator__types_3_01It_00_01void__t_3_01typename_01It_1_1difference_d2be8685966c97e00e99d4fd2366dc0b.html#ac70fcab4cacd8b386c3f2b056885e15e',1,'nlohmann::detail::iterator_types< It, void_t< typename It::difference_type, typename It::value_type, typename It::pointer, typename It::reference, typename It::iterator_category > >::value_type()'],['../structnlohmann_1_1detail_1_1iterator__traits_3_01T_01_5_00_01enable__if__t_3_01std_1_1is__object_3_01T_01_4_1_1value_01_4_01_4.html#a443e6a62f5fb2c545fc71c751b98ca8d',1,'nlohmann::detail::iterator_traits< T *, enable_if_t< std::is_object< T >::value > >::value_type()'],['../classnlohmann_1_1detail_1_1iteration__proxy__value.html#a5e90a5810cc1bb6c1000eabbfdfe7b9e',1,'nlohmann::detail::iteration_proxy_value::value_type()'],['../classnlohmann_1_1detail_1_1iter__impl.html#ab35586a44f2222272c5346baa3013f67',1,'nlohmann::detail::iter_impl::value_type()'],['../classnlohmann_1_1detail_1_1json__ref.html#a78d76cf288141049568c0d670ed670ef',1,'nlohmann::detail::json_ref::value_type()'],['../classnlohmann_1_1basic__json.html#a3913219f58349e9be2cb8cc6ddfb3abf',1,'nlohmann::basic_json::value_type()'],['../structnlohmann_1_1detail_1_1index__sequence.html#a2eca43d08fc1eb68bd5fa75b6714d21d',1,'nlohmann::detail::index_sequence::value_type()'],['../structnlohmann_1_1detail_1_1iterator__types_3_01It_00_01void__t_3_01typename_01It_1_1difference_d2be8685966c97e00e99d4fd2366dc0b.html#ac70fcab4cacd8b386c3f2b056885e15e',1,'nlohmann::detail::iterator_types< It, void_t< typename It::difference_type, typename It::value_type, typename It::pointer, typename It::reference, typename It::iterator_category > >::value_type()'],['../structnlohmann_1_1detail_1_1iterator__traits_3_01T_01_5_00_01enable__if__t_3_01std_1_1is__object_3_01T_01_4_1_1value_01_4_01_4.html#a443e6a62f5fb2c545fc71c751b98ca8d',1,'nlohmann::detail::iterator_traits< T *, enable_if_t< std::is_object< T >::value > >::value_type()'],['../classnlohmann_1_1detail_1_1iteration__proxy__value.html#a5e90a5810cc1bb6c1000eabbfdfe7b9e',1,'nlohmann::detail::iteration_proxy_value::value_type()'],['../structnlohmann_1_1detail_1_1is__iterator__of__multibyte.html#a830339a3ad86d82d32a67f9c180523b1',1,'nlohmann::detail::is_iterator_of_multibyte::value_type()'],['../classnlohmann_1_1detail_1_1iter__impl.html#ab35586a44f2222272c5346baa3013f67',1,'nlohmann::detail::iter_impl::value_type()'],['../classnlohmann_1_1detail_1_1json__ref.html#a78d76cf288141049568c0d670ed670ef',1,'nlohmann::detail::json_ref::value_type()'],['../classnlohmann_1_1basic__json.html#a3913219f58349e9be2cb8cc6ddfb3abf',1,'nlohmann::basic_json::value_type()']]], - ['value_5ftype_5ft_1554',['value_type_t',['../namespacenlohmann_1_1detail.html#af91beae90c2fb0f931079b3d50a343bc',1,'nlohmann::detail']]], - ['void_5ft_1555',['void_t',['../namespacenlohmann_1_1detail.html#a92a167c49c6697b6ffe4f79492c705e5',1,'nlohmann::detail']]] -]; diff --git a/help/html/search/typedefs_2.html b/help/html/search/typedefs_2.html deleted file mode 100644 index d18982f..0000000 --- a/help/html/search/typedefs_2.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/typedefs_2.js b/help/html/search/typedefs_2.js deleted file mode 100644 index 315c3d2..0000000 --- a/help/html/search/typedefs_2.js +++ /dev/null @@ -1,13 +0,0 @@ -var searchData= -[ - ['cbor_5ftag_5fhandler_5ft_1473',['cbor_tag_handler_t',['../classnlohmann_1_1basic__json.html#a229d672056243afb8f97ccf1b9df6ff7',1,'nlohmann::basic_json']]], - ['char_5ftype_1474',['char_type',['../classnlohmann_1_1detail_1_1file__input__adapter.html#ac853c96c60f93dc97433dacd98179f35',1,'nlohmann::detail::file_input_adapter::char_type()'],['../classnlohmann_1_1detail_1_1input__stream__adapter.html#a72f0713587f6bb3f3fbaae7d34c0ca39',1,'nlohmann::detail::input_stream_adapter::char_type()'],['../classnlohmann_1_1detail_1_1iterator__input__adapter.html#a7cc60e68767005322ab4b692c9dff283',1,'nlohmann::detail::iterator_input_adapter::char_type()'],['../classnlohmann_1_1detail_1_1wide__string__input__adapter.html#a23f9f805d22525294c8fccbea13309ac',1,'nlohmann::detail::wide_string_input_adapter::char_type()'],['../structnlohmann_1_1detail_1_1iterator__input__adapter__factory.html#a1439c0eda85f5f67199374d3254b8f2a',1,'nlohmann::detail::iterator_input_adapter_factory::char_type()'],['../structnlohmann_1_1detail_1_1iterator__input__adapter__factory_3_01IteratorType_00_01enable__if__0e86378a778d78dd2284e92dc30f4902.html#aff521be1855964b6ec371eed2ca2590f',1,'nlohmann::detail::iterator_input_adapter_factory< IteratorType, enable_if_t< is_iterator_of_multibyte< IteratorType >::value > >::char_type()']]], - ['compatiblelimits_1475',['CompatibleLimits',['../structnlohmann_1_1detail_1_1is__compatible__integer__type__impl_3_01RealIntegerType_00_01Compati3a04243716e8bda67d1ff2aead18da88.html#a002983b5c7c0f72b89d2151a6b39627d',1,'nlohmann::detail::is_compatible_integer_type_impl< RealIntegerType, CompatibleNumberIntegerType, enable_if_t< std::is_integral< RealIntegerType >::value and std::is_integral< CompatibleNumberIntegerType >::value and not std::is_same< bool, CompatibleNumberIntegerType >::value > >::CompatibleLimits()'],['../structnlohmann_1_1detail_1_1is__compatible__integer__type__impl_3_01RealIntegerType_00_01Compatie5920c849e839ebb9f8c57349c900796.html#a24d97696ca33fba8096e452b1901a8e6',1,'nlohmann::detail::is_compatible_integer_type_impl< RealIntegerType, CompatibleNumberIntegerType, enable_if_t< std::is_integral< RealIntegerType >::value &&std::is_integral< CompatibleNumberIntegerType >::value &&!std::is_same< bool, CompatibleNumberIntegerType >::value > >::CompatibleLimits()']]], - ['const_5fiterator_1476',['const_iterator',['../classnlohmann_1_1basic__json.html#a7a09a580613f00c73015c19e5e7c44ba',1,'nlohmann::basic_json::const_iterator()'],['../classnlohmann_1_1basic__json.html#a7a09a580613f00c73015c19e5e7c44ba',1,'nlohmann::basic_json::const_iterator()']]], - ['const_5fpointer_1477',['const_pointer',['../classnlohmann_1_1basic__json.html#a2c77adc1436dd4c62960d2679e4befee',1,'nlohmann::basic_json::const_pointer()'],['../classnlohmann_1_1basic__json.html#a2c77adc1436dd4c62960d2679e4befee',1,'nlohmann::basic_json::const_pointer()']]], - ['const_5freference_1478',['const_reference',['../classnlohmann_1_1basic__json.html#ae83ab5539e404c901ab216aafc9dc6d9',1,'nlohmann::basic_json::const_reference()'],['../classnlohmann_1_1basic__json.html#ae83ab5539e404c901ab216aafc9dc6d9',1,'nlohmann::basic_json::const_reference()']]], - ['const_5freverse_5fiterator_1479',['const_reverse_iterator',['../classnlohmann_1_1basic__json.html#a59564ce7bf7dad8be7d4d8184be05d91',1,'nlohmann::basic_json::const_reverse_iterator()'],['../classnlohmann_1_1basic__json.html#a59564ce7bf7dad8be7d4d8184be05d91',1,'nlohmann::basic_json::const_reverse_iterator()']]], - ['container_1480',['Container',['../structnlohmann_1_1ordered__map.html#a0cabe346c38a4f1ab1b8a396fbd2bbe2',1,'nlohmann::ordered_map']]], - ['container_5ftype_1481',['container_type',['../classnlohmann_1_1byte__container__with__subtype.html#a4d27e8633c5a5e3b49dd4ccb06515713',1,'nlohmann::byte_container_with_subtype']]], - ['contiguous_5fbytes_5finput_5fadapter_1482',['contiguous_bytes_input_adapter',['../namespacenlohmann_1_1detail.html#abc51edd46a1d1a0ff06a19f08ceff563',1,'nlohmann::detail']]] -]; diff --git a/help/html/search/typedefs_3.html b/help/html/search/typedefs_3.html deleted file mode 100644 index 8941740..0000000 --- a/help/html/search/typedefs_3.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/typedefs_3.js b/help/html/search/typedefs_3.js deleted file mode 100644 index 505b5dc..0000000 --- a/help/html/search/typedefs_3.js +++ /dev/null @@ -1,8 +0,0 @@ -var searchData= -[ - ['detected_5for_1483',['detected_or',['../namespacenlohmann_1_1detail.html#a240ce21919ab08e8a6cb3a5cfa412bce',1,'nlohmann::detail']]], - ['detected_5for_5ft_1484',['detected_or_t',['../namespacenlohmann_1_1detail.html#a7ac5b8ef0363101275a2827b3b117dcf',1,'nlohmann::detail']]], - ['detected_5ft_1485',['detected_t',['../namespacenlohmann_1_1detail.html#a37e97a32d0b94ce5f745427e4e40204d',1,'nlohmann::detail']]], - ['difference_5ftype_1486',['difference_type',['../structnlohmann_1_1detail_1_1iterator__types_3_01It_00_01void__t_3_01typename_01It_1_1difference_d2be8685966c97e00e99d4fd2366dc0b.html#a1ce16c1c8c1d6a195f5a3d3ad31820f0',1,'nlohmann::detail::iterator_types< It, void_t< typename It::difference_type, typename It::value_type, typename It::pointer, typename It::reference, typename It::iterator_category > >::difference_type()'],['../structnlohmann_1_1detail_1_1iterator__traits_3_01T_01_5_00_01enable__if__t_3_01std_1_1is__object_3_01T_01_4_1_1value_01_4_01_4.html#ae7be99eb434f5b5f34692874c272b759',1,'nlohmann::detail::iterator_traits< T *, enable_if_t< std::is_object< T >::value > >::difference_type()'],['../classnlohmann_1_1detail_1_1iteration__proxy__value.html#ada6b4e6d55d8ed7ac79e49a03e9d1fe2',1,'nlohmann::detail::iteration_proxy_value::difference_type()'],['../classnlohmann_1_1detail_1_1iter__impl.html#a2f7ea9f7022850809c60fc3263775840',1,'nlohmann::detail::iter_impl::difference_type()'],['../classnlohmann_1_1detail_1_1json__reverse__iterator.html#a9ab55987c05ec6427ad36082e351cc45',1,'nlohmann::detail::json_reverse_iterator::difference_type()'],['../classnlohmann_1_1basic__json.html#a9b7596a400a85e2dd7ab22f62df8a340',1,'nlohmann::basic_json::difference_type()'],['../structnlohmann_1_1detail_1_1iterator__types_3_01It_00_01void__t_3_01typename_01It_1_1difference_d2be8685966c97e00e99d4fd2366dc0b.html#a1ce16c1c8c1d6a195f5a3d3ad31820f0',1,'nlohmann::detail::iterator_types< It, void_t< typename It::difference_type, typename It::value_type, typename It::pointer, typename It::reference, typename It::iterator_category > >::difference_type()'],['../structnlohmann_1_1detail_1_1iterator__traits_3_01T_01_5_00_01enable__if__t_3_01std_1_1is__object_3_01T_01_4_1_1value_01_4_01_4.html#ae7be99eb434f5b5f34692874c272b759',1,'nlohmann::detail::iterator_traits< T *, enable_if_t< std::is_object< T >::value > >::difference_type()'],['../classnlohmann_1_1detail_1_1iteration__proxy__value.html#ada6b4e6d55d8ed7ac79e49a03e9d1fe2',1,'nlohmann::detail::iteration_proxy_value::difference_type()'],['../classnlohmann_1_1detail_1_1iter__impl.html#a2f7ea9f7022850809c60fc3263775840',1,'nlohmann::detail::iter_impl::difference_type()'],['../classnlohmann_1_1detail_1_1json__reverse__iterator.html#a9ab55987c05ec6427ad36082e351cc45',1,'nlohmann::detail::json_reverse_iterator::difference_type()'],['../classnlohmann_1_1basic__json.html#a9b7596a400a85e2dd7ab22f62df8a340',1,'nlohmann::basic_json::difference_type()']]], - ['difference_5ftype_5ft_1487',['difference_type_t',['../namespacenlohmann_1_1detail.html#a3603b59a17d1c5e15050743b847992f2',1,'nlohmann::detail']]] -]; diff --git a/help/html/search/typedefs_4.html b/help/html/search/typedefs_4.html deleted file mode 100644 index 933bd3b..0000000 --- a/help/html/search/typedefs_4.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/typedefs_4.js b/help/html/search/typedefs_4.js deleted file mode 100644 index 365655d..0000000 --- a/help/html/search/typedefs_4.js +++ /dev/null @@ -1,8 +0,0 @@ -var searchData= -[ - ['enable_5fif_5ft_1488',['enable_if_t',['../namespacenlohmann_1_1detail.html#a02bcbc878bee413f25b985ada771aa9c',1,'nlohmann::detail']]], - ['end_5farray_5ffunction_5ft_1489',['end_array_function_t',['../namespacenlohmann_1_1detail.html#aec53c029383b34a72182210e58fadb79',1,'nlohmann::detail']]], - ['end_5fobject_5ffunction_5ft_1490',['end_object_function_t',['../namespacenlohmann_1_1detail.html#af52d6d2521c386998ae940d118182ebc',1,'nlohmann::detail']]], - ['error_5fhandler_5ft_1491',['error_handler_t',['../classnlohmann_1_1basic__json.html#a05b1719e15d24c47f4fce69888967d1e',1,'nlohmann::basic_json::error_handler_t()'],['../classnlohmann_1_1basic__json.html#a05b1719e15d24c47f4fce69888967d1e',1,'nlohmann::basic_json::error_handler_t()']]], - ['exception_1492',['exception',['../classnlohmann_1_1basic__json.html#ac00185487a16455dfdd53884f678040d',1,'nlohmann::basic_json::exception()'],['../classnlohmann_1_1basic__json.html#ac00185487a16455dfdd53884f678040d',1,'nlohmann::basic_json::exception()']]] -]; diff --git a/help/html/search/typedefs_5.html b/help/html/search/typedefs_5.html deleted file mode 100644 index 7712e6f..0000000 --- a/help/html/search/typedefs_5.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/typedefs_5.js b/help/html/search/typedefs_5.js deleted file mode 100644 index 042cca4..0000000 --- a/help/html/search/typedefs_5.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['from_5fjson_5ffunction_1493',['from_json_function',['../namespacenlohmann_1_1detail.html#a1711ee5cef66a0523055c8d9f024f322',1,'nlohmann::detail']]] -]; diff --git a/help/html/search/typedefs_6.html b/help/html/search/typedefs_6.html deleted file mode 100644 index 25aa6dd..0000000 --- a/help/html/search/typedefs_6.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/typedefs_6.js b/help/html/search/typedefs_6.js deleted file mode 100644 index e8cb105..0000000 --- a/help/html/search/typedefs_6.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['get_5ftemplate_5ffunction_1494',['get_template_function',['../namespacenlohmann_1_1detail.html#ab4d22cdb6521ee3508db496dea66711e',1,'nlohmann::detail']]] -]; diff --git a/help/html/search/typedefs_7.html b/help/html/search/typedefs_7.html deleted file mode 100644 index 6cb2dde..0000000 --- a/help/html/search/typedefs_7.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/typedefs_7.js b/help/html/search/typedefs_7.js deleted file mode 100644 index 014b86d..0000000 --- a/help/html/search/typedefs_7.js +++ /dev/null @@ -1,16 +0,0 @@ -var searchData= -[ - ['index_5fsequence_5ffor_1495',['index_sequence_for',['../namespacenlohmann_1_1detail.html#a24800493c6ec02ce033dcbb47b7fd28e',1,'nlohmann::detail']]], - ['initializer_5flist_5ft_1496',['initializer_list_t',['../classnlohmann_1_1basic__json.html#ae8b2251872b6a3a9b04147d2ffa5a839',1,'nlohmann::basic_json::initializer_list_t()'],['../classnlohmann_1_1basic__json.html#ae8b2251872b6a3a9b04147d2ffa5a839',1,'nlohmann::basic_json::initializer_list_t()']]], - ['input_5fadapter_5ft_1497',['input_adapter_t',['../namespacenlohmann_1_1detail.html#ae132f8cd5bb24c5e9b40ad0eafedf1c2',1,'nlohmann::detail']]], - ['input_5fformat_5ft_1498',['input_format_t',['../classnlohmann_1_1basic__json.html#a6cefa2384f912265e090f7a34c99703d',1,'nlohmann::basic_json::input_format_t()'],['../classnlohmann_1_1basic__json.html#a6cefa2384f912265e090f7a34c99703d',1,'nlohmann::basic_json::input_format_t()']]], - ['invalid_5fiterator_1499',['invalid_iterator',['../classnlohmann_1_1basic__json.html#a5e6b5db267db5a283e770296f9e410a0',1,'nlohmann::basic_json::invalid_iterator()'],['../classnlohmann_1_1basic__json.html#a5e6b5db267db5a283e770296f9e410a0',1,'nlohmann::basic_json::invalid_iterator()']]], - ['is_5fdetected_1500',['is_detected',['../namespacenlohmann_1_1detail.html#a9135fcf616d6ac6e231a86e0a055ac44',1,'nlohmann::detail']]], - ['is_5fdetected_5fconvertible_1501',['is_detected_convertible',['../namespacenlohmann_1_1detail.html#a5262e531c46e357b33007060f294673b',1,'nlohmann::detail']]], - ['is_5fdetected_5fexact_1502',['is_detected_exact',['../namespacenlohmann_1_1detail.html#a7542b4dbac07817fd4849ecfa4619def',1,'nlohmann::detail']]], - ['iterator_1503',['iterator',['../classnlohmann_1_1basic__json.html#aa3ab6c99db6584c47624c29037f9f14d',1,'nlohmann::basic_json::iterator()'],['../classnlohmann_1_1basic__json.html#aa3ab6c99db6584c47624c29037f9f14d',1,'nlohmann::basic_json::iterator()']]], - ['iterator_5fcategory_1504',['iterator_category',['../structnlohmann_1_1detail_1_1iterator__types_3_01It_00_01void__t_3_01typename_01It_1_1difference_d2be8685966c97e00e99d4fd2366dc0b.html#aaaafbcd0573ec9cfc5d19411950dc1ac',1,'nlohmann::detail::iterator_types< It, void_t< typename It::difference_type, typename It::value_type, typename It::pointer, typename It::reference, typename It::iterator_category > >::iterator_category()'],['../structnlohmann_1_1detail_1_1iterator__traits_3_01T_01_5_00_01enable__if__t_3_01std_1_1is__object_3_01T_01_4_1_1value_01_4_01_4.html#a9b043cfe0fdfb3e9665428fb2be9cea1',1,'nlohmann::detail::iterator_traits< T *, enable_if_t< std::is_object< T >::value > >::iterator_category()'],['../classnlohmann_1_1detail_1_1iteration__proxy__value.html#a1ab8c44e3772c03651b5ad07216043cf',1,'nlohmann::detail::iteration_proxy_value::iterator_category()'],['../classnlohmann_1_1detail_1_1iter__impl.html#ad9e091f5c70b34b5b1abc1ab15fd9106',1,'nlohmann::detail::iter_impl::iterator_category()'],['../structnlohmann_1_1detail_1_1iterator__types_3_01It_00_01void__t_3_01typename_01It_1_1difference_d2be8685966c97e00e99d4fd2366dc0b.html#aaaafbcd0573ec9cfc5d19411950dc1ac',1,'nlohmann::detail::iterator_types< It, void_t< typename It::difference_type, typename It::value_type, typename It::pointer, typename It::reference, typename It::iterator_category > >::iterator_category()'],['../structnlohmann_1_1detail_1_1iterator__traits_3_01T_01_5_00_01enable__if__t_3_01std_1_1is__object_3_01T_01_4_1_1value_01_4_01_4.html#a9b043cfe0fdfb3e9665428fb2be9cea1',1,'nlohmann::detail::iterator_traits< T *, enable_if_t< std::is_object< T >::value > >::iterator_category()'],['../classnlohmann_1_1detail_1_1iteration__proxy__value.html#a1ab8c44e3772c03651b5ad07216043cf',1,'nlohmann::detail::iteration_proxy_value::iterator_category()'],['../classnlohmann_1_1detail_1_1iter__impl.html#ad9e091f5c70b34b5b1abc1ab15fd9106',1,'nlohmann::detail::iter_impl::iterator_category()']]], - ['iterator_5fcategory_5ft_1505',['iterator_category_t',['../namespacenlohmann_1_1detail.html#ad22d2aa3aab018050ae519f6754366e1',1,'nlohmann::detail']]], - ['iterator_5ft_1506',['iterator_t',['../namespacenlohmann_1_1detail.html#a9ff93db146174305bce1bc4c54703e11',1,'nlohmann::detail']]], - ['iterator_5ftype_1507',['iterator_type',['../structnlohmann_1_1detail_1_1iterator__input__adapter__factory.html#a37663ca283012236415d53145da1a0f9',1,'nlohmann::detail::iterator_input_adapter_factory::iterator_type()'],['../structnlohmann_1_1detail_1_1iterator__input__adapter__factory_3_01IteratorType_00_01enable__if__0e86378a778d78dd2284e92dc30f4902.html#a1c42a47cd6cd71146cf2851d76165610',1,'nlohmann::detail::iterator_input_adapter_factory< IteratorType, enable_if_t< is_iterator_of_multibyte< IteratorType >::value > >::iterator_type()']]] -]; diff --git a/help/html/search/typedefs_8.html b/help/html/search/typedefs_8.html deleted file mode 100644 index 52ab5aa..0000000 --- a/help/html/search/typedefs_8.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/typedefs_8.js b/help/html/search/typedefs_8.js deleted file mode 100644 index b65ffd0..0000000 --- a/help/html/search/typedefs_8.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['json_1508',['json',['../namespacenlohmann.html#a9cc9a3033850a092f791d86854d117fc',1,'nlohmann']]], - ['json_5fpointer_1509',['json_pointer',['../classnlohmann_1_1basic__json.html#a352187a5ebf3cde865be1b833c18f208',1,'nlohmann::basic_json::json_pointer()'],['../classnlohmann_1_1basic__json.html#a352187a5ebf3cde865be1b833c18f208',1,'nlohmann::basic_json::json_pointer()']]], - ['json_5fsax_5ft_1510',['json_sax_t',['../classnlohmann_1_1basic__json.html#af229d341abc5e2525a8ca4dc247533e1',1,'nlohmann::basic_json::json_sax_t()'],['../classnlohmann_1_1basic__json.html#af229d341abc5e2525a8ca4dc247533e1',1,'nlohmann::basic_json::json_sax_t()']]], - ['json_5fserializer_1511',['json_serializer',['../classnlohmann_1_1basic__json.html#ac81dd868670cb7d0d895426aacf0e06a',1,'nlohmann::basic_json::json_serializer()'],['../classnlohmann_1_1basic__json.html#ac81dd868670cb7d0d895426aacf0e06a',1,'nlohmann::basic_json::json_serializer()']]] -]; diff --git a/help/html/search/typedefs_9.html b/help/html/search/typedefs_9.html deleted file mode 100644 index 7b6dd85..0000000 --- a/help/html/search/typedefs_9.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/typedefs_9.js b/help/html/search/typedefs_9.js deleted file mode 100644 index 2a8be62..0000000 --- a/help/html/search/typedefs_9.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['key_5ffunction_5ft_1512',['key_function_t',['../namespacenlohmann_1_1detail.html#a44869ca9f422b260625d78e4e8121559',1,'nlohmann::detail']]], - ['key_5ftype_1513',['key_type',['../structnlohmann_1_1ordered__map.html#a57095c6ed403f02e1bc2c240a13c9ed8',1,'nlohmann::ordered_map']]], - ['key_5ftype_5ft_1514',['key_type_t',['../namespacenlohmann_1_1detail.html#a66dfe39f03b05d6b7265a0ff748d64ef',1,'nlohmann::detail']]] -]; diff --git a/help/html/search/typedefs_a.html b/help/html/search/typedefs_a.html deleted file mode 100644 index ba5e668..0000000 --- a/help/html/search/typedefs_a.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/typedefs_a.js b/help/html/search/typedefs_a.js deleted file mode 100644 index 11e0b1b..0000000 --- a/help/html/search/typedefs_a.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['mapped_5ftype_1515',['mapped_type',['../structnlohmann_1_1ordered__map.html#a1c9c1509ee714a9814b45a8030c84ec7',1,'nlohmann::ordered_map']]], - ['mapped_5ftype_5ft_1516',['mapped_type_t',['../namespacenlohmann_1_1detail.html#a9c1795c148875722f8482d39e0eb9364',1,'nlohmann::detail']]] -]; diff --git a/help/html/search/typedefs_b.html b/help/html/search/typedefs_b.html deleted file mode 100644 index 9b59855..0000000 --- a/help/html/search/typedefs_b.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/typedefs_b.js b/help/html/search/typedefs_b.js deleted file mode 100644 index 6a07064..0000000 --- a/help/html/search/typedefs_b.js +++ /dev/null @@ -1,10 +0,0 @@ -var searchData= -[ - ['null_5ffunction_5ft_1517',['null_function_t',['../namespacenlohmann_1_1detail.html#ac1b4e524746bf8b790b2b776048b93c4',1,'nlohmann::detail']]], - ['number_5ffloat_5ffunction_5ft_1518',['number_float_function_t',['../namespacenlohmann_1_1detail.html#ad42df56e913abe26ed556e0e92f386f4',1,'nlohmann::detail']]], - ['number_5ffloat_5ft_1519',['number_float_t',['../structnlohmann_1_1json__sax.html#a390c209bffd8c4800c8f3076dc465a20',1,'nlohmann::json_sax::number_float_t()'],['../classnlohmann_1_1detail_1_1json__sax__dom__parser.html#ad8da3aad0147b18b3cb76868480300fe',1,'nlohmann::detail::json_sax_dom_parser::number_float_t()'],['../classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#a914ea0555cea5290449fb791ae41c655',1,'nlohmann::detail::json_sax_dom_callback_parser::number_float_t()'],['../classnlohmann_1_1detail_1_1json__sax__acceptor.html#a5502f483fc60a1bcd73e0e46b6ab36e4',1,'nlohmann::detail::json_sax_acceptor::number_float_t()'],['../classnlohmann_1_1basic__json.html#ade1eb06e9fc3ff2ba1efd709b94b401d',1,'nlohmann::basic_json::number_float_t()'],['../structnlohmann_1_1json__sax.html#a390c209bffd8c4800c8f3076dc465a20',1,'nlohmann::json_sax::number_float_t()'],['../classnlohmann_1_1detail_1_1json__sax__dom__parser.html#ad8da3aad0147b18b3cb76868480300fe',1,'nlohmann::detail::json_sax_dom_parser::number_float_t()'],['../classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#a914ea0555cea5290449fb791ae41c655',1,'nlohmann::detail::json_sax_dom_callback_parser::number_float_t()'],['../classnlohmann_1_1detail_1_1json__sax__acceptor.html#a5502f483fc60a1bcd73e0e46b6ab36e4',1,'nlohmann::detail::json_sax_acceptor::number_float_t()'],['../classnlohmann_1_1basic__json.html#ade1eb06e9fc3ff2ba1efd709b94b401d',1,'nlohmann::basic_json::number_float_t()']]], - ['number_5finteger_5ffunction_5ft_1520',['number_integer_function_t',['../namespacenlohmann_1_1detail.html#a4a3e14a011b9ea1ff849fc6d2411e6a0',1,'nlohmann::detail']]], - ['number_5finteger_5ft_1521',['number_integer_t',['../structnlohmann_1_1json__sax.html#a0cef30121f02b7fee85e9708148ea0aa',1,'nlohmann::json_sax::number_integer_t()'],['../classnlohmann_1_1detail_1_1json__sax__dom__parser.html#a3d5cd67d179aa7422ce90e54984a441e',1,'nlohmann::detail::json_sax_dom_parser::number_integer_t()'],['../classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#a3ba8fc7a8d83c5b0eeb3b543ad844b8d',1,'nlohmann::detail::json_sax_dom_callback_parser::number_integer_t()'],['../classnlohmann_1_1detail_1_1json__sax__acceptor.html#a41876b17c0e8bdb55580eaf5e4e2ded8',1,'nlohmann::detail::json_sax_acceptor::number_integer_t()'],['../classnlohmann_1_1basic__json.html#ab227d71ad47b6ed6a3acae52dedbb49d',1,'nlohmann::basic_json::number_integer_t()'],['../structnlohmann_1_1json__sax.html#a0cef30121f02b7fee85e9708148ea0aa',1,'nlohmann::json_sax::number_integer_t()'],['../classnlohmann_1_1detail_1_1json__sax__dom__parser.html#a3d5cd67d179aa7422ce90e54984a441e',1,'nlohmann::detail::json_sax_dom_parser::number_integer_t()'],['../classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#a3ba8fc7a8d83c5b0eeb3b543ad844b8d',1,'nlohmann::detail::json_sax_dom_callback_parser::number_integer_t()'],['../classnlohmann_1_1detail_1_1json__sax__acceptor.html#a41876b17c0e8bdb55580eaf5e4e2ded8',1,'nlohmann::detail::json_sax_acceptor::number_integer_t()'],['../classnlohmann_1_1basic__json.html#ab227d71ad47b6ed6a3acae52dedbb49d',1,'nlohmann::basic_json::number_integer_t()']]], - ['number_5funsigned_5ffunction_5ft_1522',['number_unsigned_function_t',['../namespacenlohmann_1_1detail.html#a74da7b17bda76f65d276feb18209c913',1,'nlohmann::detail']]], - ['number_5funsigned_5ft_1523',['number_unsigned_t',['../structnlohmann_1_1json__sax.html#a32028cc056ae0f43aaae331cdbbbf856',1,'nlohmann::json_sax::number_unsigned_t()'],['../classnlohmann_1_1detail_1_1json__sax__dom__parser.html#a90f19b272530a479db81db11be2ea15c',1,'nlohmann::detail::json_sax_dom_parser::number_unsigned_t()'],['../classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#a2406c5125f7128fb9c01921df2903001',1,'nlohmann::detail::json_sax_dom_callback_parser::number_unsigned_t()'],['../classnlohmann_1_1detail_1_1json__sax__acceptor.html#ae07454608ea6f3cfb765f95e3c850043',1,'nlohmann::detail::json_sax_acceptor::number_unsigned_t()'],['../classnlohmann_1_1basic__json.html#a440094de5ef4e119b2771b549b33da70',1,'nlohmann::basic_json::number_unsigned_t()'],['../structnlohmann_1_1json__sax.html#a32028cc056ae0f43aaae331cdbbbf856',1,'nlohmann::json_sax::number_unsigned_t()'],['../classnlohmann_1_1detail_1_1json__sax__dom__parser.html#a90f19b272530a479db81db11be2ea15c',1,'nlohmann::detail::json_sax_dom_parser::number_unsigned_t()'],['../classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#a2406c5125f7128fb9c01921df2903001',1,'nlohmann::detail::json_sax_dom_callback_parser::number_unsigned_t()'],['../classnlohmann_1_1detail_1_1json__sax__acceptor.html#ae07454608ea6f3cfb765f95e3c850043',1,'nlohmann::detail::json_sax_acceptor::number_unsigned_t()'],['../classnlohmann_1_1basic__json.html#a440094de5ef4e119b2771b549b33da70',1,'nlohmann::basic_json::number_unsigned_t()']]] -]; diff --git a/help/html/search/typedefs_c.html b/help/html/search/typedefs_c.html deleted file mode 100644 index 1924d70..0000000 --- a/help/html/search/typedefs_c.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/typedefs_c.js b/help/html/search/typedefs_c.js deleted file mode 100644 index 6a04c48..0000000 --- a/help/html/search/typedefs_c.js +++ /dev/null @@ -1,9 +0,0 @@ -var searchData= -[ - ['object_5fcomparator_5ft_1524',['object_comparator_t',['../classnlohmann_1_1basic__json.html#af17b737bac7ddaa05c1b6205b1e025c6',1,'nlohmann::basic_json::object_comparator_t()'],['../classnlohmann_1_1basic__json.html#af17b737bac7ddaa05c1b6205b1e025c6',1,'nlohmann::basic_json::object_comparator_t()']]], - ['object_5ft_1525',['object_t',['../structnlohmann_1_1detail_1_1is__compatible__object__type__impl_3_01BasicJsonType_00_01Compatible0bd988932da161d60568f9b7198a50d2.html#a551e9ee372c1b24b632e6b668c231a62',1,'nlohmann::detail::is_compatible_object_type_impl< BasicJsonType, CompatibleObjectType, enable_if_t< is_detected< mapped_type_t, CompatibleObjectType >::value and is_detected< key_type_t, CompatibleObjectType >::value > >::object_t()'],['../structnlohmann_1_1detail_1_1is__constructible__object__type__impl_3_01BasicJsonType_00_01Construb7f96efbcfd2606ccb5c84a830a60036.html#a6f458a63276ef62d60f4b93de03aa020',1,'nlohmann::detail::is_constructible_object_type_impl< BasicJsonType, ConstructibleObjectType, enable_if_t< is_detected< mapped_type_t, ConstructibleObjectType >::value and is_detected< key_type_t, ConstructibleObjectType >::value > >::object_t()'],['../classnlohmann_1_1basic__json.html#a949272bf6af5eb8eab9675505422f5b3',1,'nlohmann::basic_json::object_t()'],['../structnlohmann_1_1detail_1_1is__compatible__object__type__impl_3_01BasicJsonType_00_01Compatible1dd1bd23ba0e4ce33237aa702f8058a9.html#ab019855b17c1a0cb16fda6731f338afc',1,'nlohmann::detail::is_compatible_object_type_impl< BasicJsonType, CompatibleObjectType, enable_if_t< is_detected< mapped_type_t, CompatibleObjectType >::value &&is_detected< key_type_t, CompatibleObjectType >::value > >::object_t()'],['../structnlohmann_1_1detail_1_1is__constructible__object__type__impl_3_01BasicJsonType_00_01Construa4d1e16800f2c4963485512ecf18377c.html#ae335fdc59d1b0d79e52a808b71b11c67',1,'nlohmann::detail::is_constructible_object_type_impl< BasicJsonType, ConstructibleObjectType, enable_if_t< is_detected< mapped_type_t, ConstructibleObjectType >::value &&is_detected< key_type_t, ConstructibleObjectType >::value > >::object_t()'],['../classnlohmann_1_1basic__json.html#a949272bf6af5eb8eab9675505422f5b3',1,'nlohmann::basic_json::object_t()']]], - ['ordered_5fjson_1526',['ordered_json',['../namespacenlohmann.html#ad53cef358adfa7f07cea23eb1e28b9ea',1,'nlohmann']]], - ['other_5ferror_1527',['other_error',['../classnlohmann_1_1basic__json.html#a48d5c5750a7f3164653bd8d3e1e8c893',1,'nlohmann::basic_json::other_error()'],['../classnlohmann_1_1basic__json.html#a48d5c5750a7f3164653bd8d3e1e8c893',1,'nlohmann::basic_json::other_error()']]], - ['out_5fof_5frange_1528',['out_of_range',['../classnlohmann_1_1basic__json.html#a2e8fc803a09152f3174470ea2375b383',1,'nlohmann::basic_json::out_of_range()'],['../classnlohmann_1_1basic__json.html#a2e8fc803a09152f3174470ea2375b383',1,'nlohmann::basic_json::out_of_range()']]], - ['output_5fadapter_5ft_1529',['output_adapter_t',['../namespacenlohmann_1_1detail.html#a9b680ddfb58f27eb53a67229447fc556',1,'nlohmann::detail']]] -]; diff --git a/help/html/search/typedefs_d.html b/help/html/search/typedefs_d.html deleted file mode 100644 index 1b48087..0000000 --- a/help/html/search/typedefs_d.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/typedefs_d.js b/help/html/search/typedefs_d.js deleted file mode 100644 index 9d7637e..0000000 --- a/help/html/search/typedefs_d.js +++ /dev/null @@ -1,9 +0,0 @@ -var searchData= -[ - ['parse_5ferror_1530',['parse_error',['../classnlohmann_1_1basic__json.html#a3b1a24eaf07f81ee9cbf01e29cf8fb59',1,'nlohmann::basic_json::parse_error()'],['../classnlohmann_1_1basic__json.html#a3b1a24eaf07f81ee9cbf01e29cf8fb59',1,'nlohmann::basic_json::parse_error()']]], - ['parse_5ferror_5ffunction_5ft_1531',['parse_error_function_t',['../namespacenlohmann_1_1detail.html#a264d4d58bc1fd82bcc7bf6bf73d6acad',1,'nlohmann::detail']]], - ['parse_5fevent_5ft_1532',['parse_event_t',['../classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#aac6d706967b2ecc2510e172577d8550b',1,'nlohmann::detail::json_sax_dom_callback_parser::parse_event_t()'],['../classnlohmann_1_1basic__json.html#a4a4d5958eb47ab75530a3d5c68f6b88f',1,'nlohmann::basic_json::parse_event_t()'],['../classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#aac6d706967b2ecc2510e172577d8550b',1,'nlohmann::detail::json_sax_dom_callback_parser::parse_event_t()'],['../classnlohmann_1_1basic__json.html#a5d8fbc60f29db1c02fa8ce0828fcdc1d',1,'nlohmann::basic_json::parse_event_t()']]], - ['parser_5fcallback_5ft_1533',['parser_callback_t',['../classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#a4f636086fa8e7cf26c35c8afd50903ce',1,'nlohmann::detail::json_sax_dom_callback_parser::parser_callback_t()'],['../classnlohmann_1_1detail_1_1parser.html#ad250ad4f2b4af4a497e727c963162ff1',1,'nlohmann::detail::parser::parser_callback_t()'],['../classnlohmann_1_1basic__json.html#a678b77584754c6fe7d957d0c7cfee999',1,'nlohmann::basic_json::parser_callback_t()'],['../classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#a4f636086fa8e7cf26c35c8afd50903ce',1,'nlohmann::detail::json_sax_dom_callback_parser::parser_callback_t()'],['../classnlohmann_1_1basic__json.html#a87cd77e74fd386d93f26ad04bd01b6a5',1,'nlohmann::basic_json::parser_callback_t()'],['../namespacenlohmann_1_1detail.html#a9980144ad77e50ae944d1fe797ceec08',1,'nlohmann::detail::parser_callback_t()']]], - ['pointer_1534',['pointer',['../structnlohmann_1_1detail_1_1iterator__types_3_01It_00_01void__t_3_01typename_01It_1_1difference_d2be8685966c97e00e99d4fd2366dc0b.html#aacaf73dc959b7c2119c15e53b5ce00a3',1,'nlohmann::detail::iterator_types< It, void_t< typename It::difference_type, typename It::value_type, typename It::pointer, typename It::reference, typename It::iterator_category > >::pointer()'],['../structnlohmann_1_1detail_1_1iterator__traits_3_01T_01_5_00_01enable__if__t_3_01std_1_1is__object_3_01T_01_4_1_1value_01_4_01_4.html#a33ee9a1beb8ee099f989fd4af15178a5',1,'nlohmann::detail::iterator_traits< T *, enable_if_t< std::is_object< T >::value > >::pointer()'],['../classnlohmann_1_1detail_1_1iteration__proxy__value.html#a44c64feee85b8e7164a05310e6418a4b',1,'nlohmann::detail::iteration_proxy_value::pointer()'],['../classnlohmann_1_1detail_1_1iter__impl.html#a69e52f890ce8c556fd68ce109e24b360',1,'nlohmann::detail::iter_impl::pointer()'],['../classnlohmann_1_1basic__json.html#a4ac83a20750a2bfacbf9d30f3e51c3bb',1,'nlohmann::basic_json::pointer()'],['../structnlohmann_1_1detail_1_1iterator__types_3_01It_00_01void__t_3_01typename_01It_1_1difference_d2be8685966c97e00e99d4fd2366dc0b.html#aacaf73dc959b7c2119c15e53b5ce00a3',1,'nlohmann::detail::iterator_types< It, void_t< typename It::difference_type, typename It::value_type, typename It::pointer, typename It::reference, typename It::iterator_category > >::pointer()'],['../structnlohmann_1_1detail_1_1iterator__traits_3_01T_01_5_00_01enable__if__t_3_01std_1_1is__object_3_01T_01_4_1_1value_01_4_01_4.html#a33ee9a1beb8ee099f989fd4af15178a5',1,'nlohmann::detail::iterator_traits< T *, enable_if_t< std::is_object< T >::value > >::pointer()'],['../classnlohmann_1_1detail_1_1iteration__proxy__value.html#a44c64feee85b8e7164a05310e6418a4b',1,'nlohmann::detail::iteration_proxy_value::pointer()'],['../classnlohmann_1_1detail_1_1iter__impl.html#a69e52f890ce8c556fd68ce109e24b360',1,'nlohmann::detail::iter_impl::pointer()'],['../classnlohmann_1_1basic__json.html#a4ac83a20750a2bfacbf9d30f3e51c3bb',1,'nlohmann::basic_json::pointer()']]], - ['pointer_5ft_1535',['pointer_t',['../namespacenlohmann_1_1detail.html#a26dc71e2dd9336587e56062178f9abce',1,'nlohmann::detail']]] -]; diff --git a/help/html/search/typedefs_e.html b/help/html/search/typedefs_e.html deleted file mode 100644 index fed948d..0000000 --- a/help/html/search/typedefs_e.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/typedefs_e.js b/help/html/search/typedefs_e.js deleted file mode 100644 index c3bb4a7..0000000 --- a/help/html/search/typedefs_e.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['reallimits_1536',['RealLimits',['../structnlohmann_1_1detail_1_1is__compatible__integer__type__impl_3_01RealIntegerType_00_01Compati3a04243716e8bda67d1ff2aead18da88.html#a0e9f2586c4de25750563770c9388ab9f',1,'nlohmann::detail::is_compatible_integer_type_impl< RealIntegerType, CompatibleNumberIntegerType, enable_if_t< std::is_integral< RealIntegerType >::value and std::is_integral< CompatibleNumberIntegerType >::value and not std::is_same< bool, CompatibleNumberIntegerType >::value > >::RealLimits()'],['../structnlohmann_1_1detail_1_1is__compatible__integer__type__impl_3_01RealIntegerType_00_01Compatie5920c849e839ebb9f8c57349c900796.html#ab267aabfe36c5b9c305c5e5faf06ea36',1,'nlohmann::detail::is_compatible_integer_type_impl< RealIntegerType, CompatibleNumberIntegerType, enable_if_t< std::is_integral< RealIntegerType >::value &&std::is_integral< CompatibleNumberIntegerType >::value &&!std::is_same< bool, CompatibleNumberIntegerType >::value > >::RealLimits()']]], - ['reference_1537',['reference',['../structnlohmann_1_1detail_1_1iterator__types_3_01It_00_01void__t_3_01typename_01It_1_1difference_d2be8685966c97e00e99d4fd2366dc0b.html#a5e82d2d8dabd022b8ff916f2e83a82f2',1,'nlohmann::detail::iterator_types< It, void_t< typename It::difference_type, typename It::value_type, typename It::pointer, typename It::reference, typename It::iterator_category > >::reference()'],['../structnlohmann_1_1detail_1_1iterator__traits_3_01T_01_5_00_01enable__if__t_3_01std_1_1is__object_3_01T_01_4_1_1value_01_4_01_4.html#a0809c5949d22f08a993231d2fdf285f0',1,'nlohmann::detail::iterator_traits< T *, enable_if_t< std::is_object< T >::value > >::reference()'],['../classnlohmann_1_1detail_1_1iteration__proxy__value.html#a5bc7d3133daab5ec4797f3132e093af8',1,'nlohmann::detail::iteration_proxy_value::reference()'],['../classnlohmann_1_1detail_1_1iter__impl.html#a5be8001be099c6b82310f4d387b953ce',1,'nlohmann::detail::iter_impl::reference()'],['../classnlohmann_1_1detail_1_1json__reverse__iterator.html#a42f51a69bac7b2aebb613b2164e457f1',1,'nlohmann::detail::json_reverse_iterator::reference()'],['../classnlohmann_1_1basic__json.html#af11372ea846fedea8b2098dba7323831',1,'nlohmann::basic_json::reference()'],['../structnlohmann_1_1detail_1_1iterator__types_3_01It_00_01void__t_3_01typename_01It_1_1difference_d2be8685966c97e00e99d4fd2366dc0b.html#a5e82d2d8dabd022b8ff916f2e83a82f2',1,'nlohmann::detail::iterator_types< It, void_t< typename It::difference_type, typename It::value_type, typename It::pointer, typename It::reference, typename It::iterator_category > >::reference()'],['../structnlohmann_1_1detail_1_1iterator__traits_3_01T_01_5_00_01enable__if__t_3_01std_1_1is__object_3_01T_01_4_1_1value_01_4_01_4.html#a0809c5949d22f08a993231d2fdf285f0',1,'nlohmann::detail::iterator_traits< T *, enable_if_t< std::is_object< T >::value > >::reference()'],['../classnlohmann_1_1detail_1_1iteration__proxy__value.html#a5bc7d3133daab5ec4797f3132e093af8',1,'nlohmann::detail::iteration_proxy_value::reference()'],['../classnlohmann_1_1detail_1_1iter__impl.html#a5be8001be099c6b82310f4d387b953ce',1,'nlohmann::detail::iter_impl::reference()'],['../classnlohmann_1_1detail_1_1json__reverse__iterator.html#a42f51a69bac7b2aebb613b2164e457f1',1,'nlohmann::detail::json_reverse_iterator::reference()'],['../classnlohmann_1_1basic__json.html#af11372ea846fedea8b2098dba7323831',1,'nlohmann::basic_json::reference()']]], - ['reference_5ft_1538',['reference_t',['../namespacenlohmann_1_1detail.html#a082bdafd3b4c61d9d1e92b35b8f75ee3',1,'nlohmann::detail']]], - ['reverse_5fiterator_1539',['reverse_iterator',['../classnlohmann_1_1basic__json.html#a0d2df32b8689b776dd3b0865f1362f40',1,'nlohmann::basic_json::reverse_iterator()'],['../classnlohmann_1_1basic__json.html#a0d2df32b8689b776dd3b0865f1362f40',1,'nlohmann::basic_json::reverse_iterator()']]] -]; diff --git a/help/html/search/typedefs_f.html b/help/html/search/typedefs_f.html deleted file mode 100644 index fe33f52..0000000 --- a/help/html/search/typedefs_f.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/typedefs_f.js b/help/html/search/typedefs_f.js deleted file mode 100644 index a243768..0000000 --- a/help/html/search/typedefs_f.js +++ /dev/null @@ -1,10 +0,0 @@ -var searchData= -[ - ['serializer_1540',['serializer',['../structnlohmann_1_1detail_1_1has__from__json_3_01BasicJsonType_00_01T_00_01enable__if__t_3_01not_5e786a91cad76ed1c14f425887b41640.html#ab17cea1be422b8985fc19942809560ed',1,'nlohmann::detail::has_from_json< BasicJsonType, T, enable_if_t< not is_basic_json< T >::value > >::serializer()'],['../structnlohmann_1_1detail_1_1has__non__default__from__json_3_01BasicJsonType_00_01T_00_01enable__a9e4562f31f7ed523e6e0f675606b0f2.html#a610272ed924122e0c46d158ecdfe6faf',1,'nlohmann::detail::has_non_default_from_json< BasicJsonType, T, enable_if_t< not is_basic_json< T >::value > >::serializer()'],['../structnlohmann_1_1detail_1_1has__to__json_3_01BasicJsonType_00_01T_00_01enable__if__t_3_01not_01737900a749c335e922e2f74e2face5e4.html#a479098e9480e0adb30fb3fe3586a8005',1,'nlohmann::detail::has_to_json< BasicJsonType, T, enable_if_t< not is_basic_json< T >::value > >::serializer()'],['../structnlohmann_1_1detail_1_1has__from__json_3_01BasicJsonType_00_01T_00_01enable__if__t_3_01_9is3ee028c64c76c768be45996bb13fc9c5.html#ac0718a48961f28e32604e1b16c6f2e8d',1,'nlohmann::detail::has_from_json< BasicJsonType, T, enable_if_t< !is_basic_json< T >::value > >::serializer()'],['../structnlohmann_1_1detail_1_1has__non__default__from__json_3_01BasicJsonType_00_01T_00_01enable__b7a8cd863889b54d1139b207b4233111.html#a4bcee5e52902d3011df08cf0233e5e10',1,'nlohmann::detail::has_non_default_from_json< BasicJsonType, T, enable_if_t< !is_basic_json< T >::value > >::serializer()'],['../structnlohmann_1_1detail_1_1has__to__json_3_01BasicJsonType_00_01T_00_01enable__if__t_3_01_9is__4a8838c1c30336126696a126041e661c.html#a7af8dd95a01e7ca32f10075c9934b107',1,'nlohmann::detail::has_to_json< BasicJsonType, T, enable_if_t< !is_basic_json< T >::value > >::serializer()']]], - ['size_5ftype_1541',['size_type',['../classnlohmann_1_1basic__json.html#a9eaf1dcc25d6e7bd204f72877cef254b',1,'nlohmann::basic_json::size_type()'],['../classnlohmann_1_1basic__json.html#a9eaf1dcc25d6e7bd204f72877cef254b',1,'nlohmann::basic_json::size_type()']]], - ['start_5farray_5ffunction_5ft_1542',['start_array_function_t',['../namespacenlohmann_1_1detail.html#a80273cecc45765d7b2826ec931fbffdd',1,'nlohmann::detail']]], - ['start_5fobject_5ffunction_5ft_1543',['start_object_function_t',['../namespacenlohmann_1_1detail.html#a5fff1e6dcaabd367d9b1109a5682f9d4',1,'nlohmann::detail']]], - ['string_5ffunction_5ft_1544',['string_function_t',['../namespacenlohmann_1_1detail.html#a27c3fc3bd42ac406f763184aa8ae4cb0',1,'nlohmann::detail']]], - ['string_5ft_1545',['string_t',['../structnlohmann_1_1json__sax.html#ae01977a9f3c5b3667b7a2929ed91061e',1,'nlohmann::json_sax::string_t()'],['../classnlohmann_1_1detail_1_1json__sax__dom__parser.html#afd4d961ab2a6b01cbe6e840f7fb90cdc',1,'nlohmann::detail::json_sax_dom_parser::string_t()'],['../classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#a00e7d95d82d5d8a43421526a42a8eabc',1,'nlohmann::detail::json_sax_dom_callback_parser::string_t()'],['../classnlohmann_1_1detail_1_1json__sax__acceptor.html#a3a8078bbf865ec355106f6048241609a',1,'nlohmann::detail::json_sax_acceptor::string_t()'],['../classnlohmann_1_1basic__json.html#a561057a2cc70397ad0ab890745d1d7c7',1,'nlohmann::basic_json::string_t()'],['../structnlohmann_1_1json__sax.html#ae01977a9f3c5b3667b7a2929ed91061e',1,'nlohmann::json_sax::string_t()'],['../classnlohmann_1_1detail_1_1json__sax__dom__parser.html#afd4d961ab2a6b01cbe6e840f7fb90cdc',1,'nlohmann::detail::json_sax_dom_parser::string_t()'],['../classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#a00e7d95d82d5d8a43421526a42a8eabc',1,'nlohmann::detail::json_sax_dom_callback_parser::string_t()'],['../classnlohmann_1_1detail_1_1json__sax__acceptor.html#a3a8078bbf865ec355106f6048241609a',1,'nlohmann::detail::json_sax_acceptor::string_t()'],['../classnlohmann_1_1basic__json.html#a561057a2cc70397ad0ab890745d1d7c7',1,'nlohmann::basic_json::string_t()']]], - ['string_5ftype_1546',['string_type',['../classnlohmann_1_1detail_1_1iteration__proxy__value.html#a1fc63b88a585fa39942007aab69a74e6',1,'nlohmann::detail::iteration_proxy_value::string_type()'],['../classnlohmann_1_1detail_1_1iteration__proxy__value.html#a1fc63b88a585fa39942007aab69a74e6',1,'nlohmann::detail::iteration_proxy_value::string_type()']]] -]; diff --git a/help/html/search/variables_0.html b/help/html/search/variables_0.html deleted file mode 100644 index bf3eba5..0000000 --- a/help/html/search/variables_0.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/variables_0.js b/help/html/search/variables_0.js deleted file mode 100644 index 1aa9916..0000000 --- a/help/html/search/variables_0.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['attachmenturl_362',['attachmentUrl',['../structCocoaTweet_1_1API_1_1Statuses_1_1Status_1_1Options.html#a789c4e2479c44c8e4fc56af449abe6e1',1,'CocoaTweet::API::Statuses::Status::Options']]], - ['autopopulatereplymetadata_363',['autoPopulateReplyMetaData',['../structCocoaTweet_1_1API_1_1Statuses_1_1Status_1_1Options.html#a83f948512ee31537afa9e3c0112a9640',1,'CocoaTweet::API::Statuses::Status::Options']]] -]; diff --git a/help/html/search/variables_1.html b/help/html/search/variables_1.html deleted file mode 100644 index 49fe59a..0000000 --- a/help/html/search/variables_1.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/variables_1.js b/help/html/search/variables_1.js deleted file mode 100644 index d2f5d36..0000000 --- a/help/html/search/variables_1.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['bodyparam_5f_364',['bodyParam_',['../classCocoaTweet_1_1API_1_1Interface_1_1HttpBase.html#a7c543dfa69524004df9e0fdcaa610313',1,'CocoaTweet::API::Interface::HttpBase']]] -]; diff --git a/help/html/search/variables_10.html b/help/html/search/variables_10.html deleted file mode 100644 index 92982ac..0000000 --- a/help/html/search/variables_10.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/variables_10.js b/help/html/search/variables_10.js deleted file mode 100644 index 0f7ae9d..0000000 --- a/help/html/search/variables_10.js +++ /dev/null @@ -1,10 +0,0 @@ -var searchData= -[ - ['pc_5fcurl_5fstatic_5fldflags_5fother_1442',['PC_CURL_STATIC_LDFLAGS_OTHER',['../CMakeCache_8txt.html#ae8f3a758c2659887457867b81576121c',1,'CMakeCache.txt']]], - ['pc_5fcurl_5fstatic_5flibdir_1443',['PC_CURL_STATIC_LIBDIR',['../CMakeCache_8txt.html#adecc9734e7e753e0e7566fdf8f2a7536',1,'CMakeCache.txt']]], - ['pc_5fcurl_5fstatic_5flibrary_5fdirs_1444',['PC_CURL_STATIC_LIBRARY_DIRS',['../CMakeCache_8txt.html#a55da53f5975196488f1e9d80a5472f87',1,'CMakeCache.txt']]], - ['plus_1445',['plus',['../structnlohmann_1_1detail_1_1dtoa__impl_1_1boundaries.html#a3321ae2816a6ec5250a0d8e29f798232',1,'nlohmann::detail::dtoa_impl::boundaries']]], - ['primitive_5fiterator_1446',['primitive_iterator',['../structnlohmann_1_1detail_1_1internal__iterator.html#a2b3bb45f968210e42c282017eeeb63a8',1,'nlohmann::detail::internal_iterator']]], - ['process_1447',['process',['../namespaceupdate.html#a710e35d158d724f4876c57e053c8bc59',1,'update']]], - ['psl_1448',['psl',['../CMakeCache_8txt.html#ad449267e94b2d832e9ad096c56501cb1',1,'psl(): CMakeCache.txt'],['../CMakeCache_8txt.html#ade898837857cc56d460d72e910377ab9',1,'PSL(): CMakeCache.txt']]] -]; diff --git a/help/html/search/variables_11.html b/help/html/search/variables_11.html deleted file mode 100644 index 94f1a8c..0000000 --- a/help/html/search/variables_11.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/variables_11.js b/help/html/search/variables_11.js deleted file mode 100644 index 71c05c6..0000000 --- a/help/html/search/variables_11.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['release_5furl_5fmap_1449',['release_url_map',['../namespaceupdate.html#a804bde1b41351694c87f1fab13996804',1,'update']]], - ['releases_1450',['releases',['../namespaceupdate.html#a46f1ee5c71e332f7b74ad63b4747e8b0',1,'update']]], - ['relro_1451',['relro',['../CMakeCache_8txt.html#ac4b1996a97fb871e246369489329f88d',1,'CMakeCache.txt']]], - ['rtmp_1452',['rtmp',['../CMakeCache_8txt.html#aad43116d29f4ccf0536b42799f5078ed',1,'CMakeCache.txt']]] -]; diff --git a/help/html/search/variables_12.html b/help/html/search/variables_12.html deleted file mode 100644 index 61c013a..0000000 --- a/help/html/search/variables_12.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/variables_12.js b/help/html/search/variables_12.js deleted file mode 100644 index b78dfd1..0000000 --- a/help/html/search/variables_12.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['spnego_1453',['SPNEGO',['../CMakeCache_8txt.html#a85b5f853e9a23c510897ec6bab24f969',1,'CMakeCache.txt']]], - ['srp_1454',['SRP',['../CMakeCache_8txt.html#a260c65e0836df5a36d626d48aba37001',1,'CMakeCache.txt']]], - ['ssh_1455',['ssh',['../CMakeCache_8txt.html#abf14e1b1d509c2bf908eb0cf8414144a',1,'CMakeCache.txt']]], - ['ssl_1456',['ssl',['../CMakeCache_8txt.html#abb1c2a54408d504d582d683faa4cb0ce',1,'CMakeCache.txt']]] -]; diff --git a/help/html/search/variables_13.html b/help/html/search/variables_13.html deleted file mode 100644 index 87b7ca6..0000000 --- a/help/html/search/variables_13.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/variables_13.js b/help/html/search/variables_13.js deleted file mode 100644 index c727e9f..0000000 --- a/help/html/search/variables_13.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['tags_1457',['tags',['../namespaceupdate.html#ae0d567f2ca0123a75e28869892569812',1,'update']]] -]; diff --git a/help/html/search/variables_14.html b/help/html/search/variables_14.html deleted file mode 100644 index 874fe59..0000000 --- a/help/html/search/variables_14.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/variables_14.js b/help/html/search/variables_14.js deleted file mode 100644 index 82eb863..0000000 --- a/help/html/search/variables_14.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['unixsockets_1458',['UnixSockets',['../CMakeCache_8txt.html#a4351b985e81a9678fdf06faa6da97253',1,'CMakeCache.txt']]], - ['url_5f_1459',['url_',['../classCocoaTweet_1_1API_1_1Interface_1_1HttpPost.html#aa3b3ddd1983cdf5aef8c938675b00674',1,'CocoaTweet::API::Interface::HttpPost']]] -]; diff --git a/help/html/search/variables_15.html b/help/html/search/variables_15.html deleted file mode 100644 index 3ca8799..0000000 --- a/help/html/search/variables_15.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/variables_15.js b/help/html/search/variables_15.js deleted file mode 100644 index f68b27c..0000000 --- a/help/html/search/variables_15.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['value_1460',['value',['../structnlohmann_1_1detail_1_1static__const.html#a6bb7ab2ddd6abc41fb4ffb7c6dfa237e',1,'nlohmann::detail::static_const::value()'],['../structnlohmann_1_1detail_1_1has__from__json_3_01BasicJsonType_00_01T_00_01enable__if__t_3_01not_5e786a91cad76ed1c14f425887b41640.html#afb638d592883301228bcad21d83bf4aa',1,'nlohmann::detail::has_from_json< BasicJsonType, T, enable_if_t< not is_basic_json< T >::value > >::value()'],['../structnlohmann_1_1detail_1_1has__non__default__from__json_3_01BasicJsonType_00_01T_00_01enable__a9e4562f31f7ed523e6e0f675606b0f2.html#a1494ac5fed1163aab4a89208ff04ee85',1,'nlohmann::detail::has_non_default_from_json< BasicJsonType, T, enable_if_t< not is_basic_json< T >::value > >::value()'],['../structnlohmann_1_1detail_1_1has__to__json_3_01BasicJsonType_00_01T_00_01enable__if__t_3_01not_01737900a749c335e922e2f74e2face5e4.html#ac5e2f95bd9fa54c6ea870e923e395b63',1,'nlohmann::detail::has_to_json< BasicJsonType, T, enable_if_t< not is_basic_json< T >::value > >::value()'],['../structnlohmann_1_1detail_1_1is__iterator__traits_3_01iterator__traits_3_01T_01_4_01_4.html#af3347bcc8271a93cace2f976727d6828',1,'nlohmann::detail::is_iterator_traits< iterator_traits< T > >::value()'],['../structnlohmann_1_1detail_1_1is__compatible__object__type__impl_3_01BasicJsonType_00_01Compatible0bd988932da161d60568f9b7198a50d2.html#adc8188ae8d65e8175d961cd461a8ee43',1,'nlohmann::detail::is_compatible_object_type_impl< BasicJsonType, CompatibleObjectType, enable_if_t< is_detected< mapped_type_t, CompatibleObjectType >::value and is_detected< key_type_t, CompatibleObjectType >::value > >::value()'],['../structnlohmann_1_1detail_1_1is__constructible__object__type__impl_3_01BasicJsonType_00_01Construb7f96efbcfd2606ccb5c84a830a60036.html#a7c1801a302b938e3176435b6451962e4',1,'nlohmann::detail::is_constructible_object_type_impl< BasicJsonType, ConstructibleObjectType, enable_if_t< is_detected< mapped_type_t, ConstructibleObjectType >::value and is_detected< key_type_t, ConstructibleObjectType >::value > >::value()'],['../structnlohmann_1_1detail_1_1is__compatible__string__type__impl_3_01BasicJsonType_00_01Compatible494e9dc742c819c61e54b8282030b5b6.html#af5d2561b531334269754ccc8a48dca89',1,'nlohmann::detail::is_compatible_string_type_impl< BasicJsonType, CompatibleStringType, enable_if_t< is_detected_exact< typename BasicJsonType::string_t::value_type, value_type_t, CompatibleStringType >::value > >::value()'],['../structnlohmann_1_1detail_1_1is__constructible__string__type__impl_3_01BasicJsonType_00_01Construe4743afb22172cdb3c5f428800835387.html#a333e92411ae32f5bc835ef27f89645db',1,'nlohmann::detail::is_constructible_string_type_impl< BasicJsonType, ConstructibleStringType, enable_if_t< is_detected_exact< typename BasicJsonType::string_t::value_type, value_type_t, ConstructibleStringType >::value > >::value()'],['../structnlohmann_1_1detail_1_1is__compatible__array__type__impl_3_01BasicJsonType_00_01CompatibleA2ae7cc020294dfcc2b3bca5a9db30ddf.html#aa9bdf31f85ac3ee17180a008f1cb81f7',1,'nlohmann::detail::is_compatible_array_type_impl< BasicJsonType, CompatibleArrayType, enable_if_t< is_detected< value_type_t, CompatibleArrayType >::value and is_detected< iterator_t, CompatibleArrayType >::value and not is_iterator_traits< iterator_traits< CompatibleArrayType > >::value > >::value()'],['../structnlohmann_1_1detail_1_1is__constructible__array__type__impl_3_01BasicJsonType_00_01Construcb751ba39e14100ed41966800a3fcf4db.html#a39e2baa94bee9c7abed5e3cada4bf184',1,'nlohmann::detail::is_constructible_array_type_impl< BasicJsonType, ConstructibleArrayType, enable_if_t< not std::is_same< ConstructibleArrayType, typename BasicJsonType::value_type >::value and std::is_default_constructible< ConstructibleArrayType >::value and(std::is_move_assignable< ConstructibleArrayType >::value or std::is_copy_assignable< ConstructibleArrayType >::value) andis_detected< value_type_t, ConstructibleArrayType >::value andis_detected< iterator_t, ConstructibleArrayType >::value andis_complete_type< detected_t< value_type_t, ConstructibleArrayType > >::value > >::value()'],['../structnlohmann_1_1detail_1_1is__compatible__integer__type__impl_3_01RealIntegerType_00_01Compati3a04243716e8bda67d1ff2aead18da88.html#a478242daac7a70e28c749bfec00d1c1b',1,'nlohmann::detail::is_compatible_integer_type_impl< RealIntegerType, CompatibleNumberIntegerType, enable_if_t< std::is_integral< RealIntegerType >::value and std::is_integral< CompatibleNumberIntegerType >::value and not std::is_same< bool, CompatibleNumberIntegerType >::value > >::value()'],['../structnlohmann_1_1detail_1_1is__compatible__type__impl_3_01BasicJsonType_00_01CompatibleType_00_fa54cb60e66f5c6ba93b1dd3f418b703.html#ace501639ecbf41a3d2bc4d02e19f6934',1,'nlohmann::detail::is_compatible_type_impl< BasicJsonType, CompatibleType, enable_if_t< is_complete_type< CompatibleType >::value > >::value()'],['../structnlohmann_1_1detail_1_1is__sax.html#aaa7499d9b0fafd305acf1ef5c0d7f8d4',1,'nlohmann::detail::is_sax::value()'],['../structnlohmann_1_1detail_1_1is__getable.html#a2150b5b5398683147928a61c99cd0070',1,'nlohmann::detail::is_getable::value()'],['../structnlohmann_1_1detail_1_1has__from__json_3_01BasicJsonType_00_01T_00_01enable__if__t_3_01_9is3ee028c64c76c768be45996bb13fc9c5.html#a4d1c8c5e3080360d4ba3d4701b00d442',1,'nlohmann::detail::has_from_json< BasicJsonType, T, enable_if_t< !is_basic_json< T >::value > >::value()'],['../structnlohmann_1_1detail_1_1has__non__default__from__json_3_01BasicJsonType_00_01T_00_01enable__b7a8cd863889b54d1139b207b4233111.html#a5d5bc2b9f1c107696d64d92cf6b5d0d7',1,'nlohmann::detail::has_non_default_from_json< BasicJsonType, T, enable_if_t< !is_basic_json< T >::value > >::value()'],['../structnlohmann_1_1detail_1_1has__to__json_3_01BasicJsonType_00_01T_00_01enable__if__t_3_01_9is__4a8838c1c30336126696a126041e661c.html#a25600efc3dbab20cebe1a90f97505d6a',1,'nlohmann::detail::has_to_json< BasicJsonType, T, enable_if_t< !is_basic_json< T >::value > >::value()'],['../structnlohmann_1_1detail_1_1is__compatible__object__type__impl_3_01BasicJsonType_00_01Compatible1dd1bd23ba0e4ce33237aa702f8058a9.html#a74b723d759119148c44a5e0899956a72',1,'nlohmann::detail::is_compatible_object_type_impl< BasicJsonType, CompatibleObjectType, enable_if_t< is_detected< mapped_type_t, CompatibleObjectType >::value &&is_detected< key_type_t, CompatibleObjectType >::value > >::value()'],['../structnlohmann_1_1detail_1_1is__constructible__object__type__impl_3_01BasicJsonType_00_01Construa4d1e16800f2c4963485512ecf18377c.html#a50418a0a88d63afbf7246af49f3e554c',1,'nlohmann::detail::is_constructible_object_type_impl< BasicJsonType, ConstructibleObjectType, enable_if_t< is_detected< mapped_type_t, ConstructibleObjectType >::value &&is_detected< key_type_t, ConstructibleObjectType >::value > >::value()'],['../structnlohmann_1_1detail_1_1is__compatible__array__type__impl_3_01BasicJsonType_00_01CompatibleAb638dd3c6149bb42b44d6778e8db3f9d.html#ab4a4e921f0676b2e25d1031ca486ddee',1,'nlohmann::detail::is_compatible_array_type_impl< BasicJsonType, CompatibleArrayType, enable_if_t< is_detected< value_type_t, CompatibleArrayType >::value &&is_detected< iterator_t, CompatibleArrayType >::value &&!is_iterator_traits< iterator_traits< CompatibleArrayType > >::value > >::value()'],['../structnlohmann_1_1detail_1_1is__constructible__array__type__impl_3_01BasicJsonType_00_01Construcdcf7abcf4e7a13cd758bad3819c3d6fc.html#a17212ea9da3aeac586dbff33293d2f96',1,'nlohmann::detail::is_constructible_array_type_impl< BasicJsonType, ConstructibleArrayType, enable_if_t< !std::is_same< ConstructibleArrayType, typename BasicJsonType::value_type >::value &&std::is_default_constructible< ConstructibleArrayType >::value &&(std::is_move_assignable< ConstructibleArrayType >::value||std::is_copy_assignable< ConstructibleArrayType >::value)&&is_detected< value_type_t, ConstructibleArrayType >::value &&is_detected< iterator_t, ConstructibleArrayType >::value &&is_complete_type< detected_t< value_type_t, ConstructibleArrayType > >::value > >::value()'],['../structnlohmann_1_1detail_1_1is__compatible__integer__type__impl_3_01RealIntegerType_00_01Compatie5920c849e839ebb9f8c57349c900796.html#a8fd20d5e7d65d14b4e9f4ee181a3aded',1,'nlohmann::detail::is_compatible_integer_type_impl< RealIntegerType, CompatibleNumberIntegerType, enable_if_t< std::is_integral< RealIntegerType >::value &&std::is_integral< CompatibleNumberIntegerType >::value &&!std::is_same< bool, CompatibleNumberIntegerType >::value > >::value()']]] -]; diff --git a/help/html/search/variables_16.html b/help/html/search/variables_16.html deleted file mode 100644 index 2b5a433..0000000 --- a/help/html/search/variables_16.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/variables_16.js b/help/html/search/variables_16.js deleted file mode 100644 index 27b4501..0000000 --- a/help/html/search/variables_16.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['w_1461',['w',['../structnlohmann_1_1detail_1_1dtoa__impl_1_1boundaries.html#ad1668c60aeade5f2557fafed8b8aee1a',1,'nlohmann::detail::dtoa_impl::boundaries']]], - ['wl_1462',['Wl',['../CMakeCache_8txt.html#a91a5fba9ebc62bef7682b670bb7da857',1,'CMakeCache.txt']]] -]; diff --git a/help/html/search/variables_17.html b/help/html/search/variables_17.html deleted file mode 100644 index 16914b7..0000000 --- a/help/html/search/variables_17.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/variables_17.js b/help/html/search/variables_17.js deleted file mode 100644 index b9a88fc..0000000 --- a/help/html/search/variables_17.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['z_1463',['z',['../CMakeCache_8txt.html#a25ed1bcb423b0b7200f485fc5ff71c8e',1,'z(): CMakeCache.txt'],['../CMakeLists_8txt.html#a976e76516b81c3e0f6f677d39beb977c',1,'z(): CMakeLists.txt']]] -]; diff --git a/help/html/search/variables_2.html b/help/html/search/variables_2.html deleted file mode 100644 index 0c8a18c..0000000 --- a/help/html/search/variables_2.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/variables_2.js b/help/html/search/variables_2.js deleted file mode 100644 index b82fe3b..0000000 --- a/help/html/search/variables_2.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['common_365',['common',['../CMakeLists_8txt.html#ab073f774aac3d0d478f24fc923c505d5',1,'CMakeLists.txt']]], - ['contenttype_5f_366',['contentType_',['../classCocoaTweet_1_1API_1_1Interface_1_1HttpBase.html#aa80a8d2b339e3eed6f9e031518f8193b',1,'CocoaTweet::API::Interface::HttpBase']]], - ['coord_367',['coord',['../structCocoaTweet_1_1API_1_1Statuses_1_1Status_1_1Options.html#ab24c15ece20c3aef129d2924fb21b3d0',1,'CocoaTweet::API::Statuses::Status::Options']]] -]; diff --git a/help/html/search/variables_3.html b/help/html/search/variables_3.html deleted file mode 100644 index 19a31fc..0000000 --- a/help/html/search/variables_3.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/variables_3.js b/help/html/search/variables_3.js deleted file mode 100644 index 6a5e6af..0000000 --- a/help/html/search/variables_3.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['displaycoord_368',['displayCoord',['../structCocoaTweet_1_1API_1_1Statuses_1_1Status_1_1Options.html#a388f9bed352d912db4ec44f8d8b794e8',1,'CocoaTweet::API::Statuses::Status::Options']]] -]; diff --git a/help/html/search/variables_4.html b/help/html/search/variables_4.html deleted file mode 100644 index bdc37be..0000000 --- a/help/html/search/variables_4.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/variables_4.js b/help/html/search/variables_4.js deleted file mode 100644 index 39faafa..0000000 --- a/help/html/search/variables_4.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['enabledmcommands_369',['enableDMCommands',['../structCocoaTweet_1_1API_1_1Statuses_1_1Status_1_1Options.html#a3ca1dc7e59fd95384fdb602d262eea07',1,'CocoaTweet::API::Statuses::Status::Options']]], - ['excludereplyuserid_370',['excludeReplyUserId',['../structCocoaTweet_1_1API_1_1Statuses_1_1Status_1_1Options.html#a643d2eb27a56746b7c27cdc89cbf8b35',1,'CocoaTweet::API::Statuses::Status::Options']]] -]; diff --git a/help/html/search/variables_5.html b/help/html/search/variables_5.html deleted file mode 100644 index 6aa2249..0000000 --- a/help/html/search/variables_5.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/variables_5.js b/help/html/search/variables_5.js deleted file mode 100644 index a3e9e90..0000000 --- a/help/html/search/variables_5.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['faildmcommands_371',['failDMCommands',['../structCocoaTweet_1_1API_1_1Statuses_1_1Status_1_1Options.html#a793d031d5b6050a4a059d6abdc55fe80',1,'CocoaTweet::API::Statuses::Status::Options']]] -]; diff --git a/help/html/search/variables_6.html b/help/html/search/variables_6.html deleted file mode 100644 index ce4a906..0000000 --- a/help/html/search/variables_6.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/variables_6.js b/help/html/search/variables_6.js deleted file mode 100644 index 775e114..0000000 --- a/help/html/search/variables_6.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['msg_5f_372',['msg_',['../classCocoaTweet_1_1Exception_1_1Exception.html#a979d1a34fc7ddc79572fea00e89cf7db',1,'CocoaTweet::Exception::Exception']]] -]; diff --git a/help/html/search/variables_7.html b/help/html/search/variables_7.html deleted file mode 100644 index 39ffd47..0000000 --- a/help/html/search/variables_7.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/variables_7.js b/help/html/search/variables_7.js deleted file mode 100644 index 008d735..0000000 --- a/help/html/search/variables_7.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['needed_373',['needed',['../CMakeLists_8txt.html#a00fba48fc95d7cf91486378c8d671c99',1,'CMakeLists.txt']]] -]; diff --git a/help/html/search/variables_8.html b/help/html/search/variables_8.html deleted file mode 100644 index 37a2edd..0000000 --- a/help/html/search/variables_8.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/variables_8.js b/help/html/search/variables_8.js deleted file mode 100644 index 69d456a..0000000 --- a/help/html/search/variables_8.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['o1_374',['O1',['../CMakeLists_8txt.html#a23ef90534a2fac3d2eec4950829a2abc',1,'CMakeLists.txt']]], - ['oauth_5f_375',['oauth_',['../classCocoaTweet_1_1API_1_1groupInterface.html#a71452bcc421ce246fd4f64d861ccbb97',1,'CocoaTweet::API::groupInterface::oauth_()'],['../classCocoaTweet_1_1API_1_1Interface_1_1HttpBase.html#ab0b8b76e12fdf34849fc1c8ee928a2ff',1,'CocoaTweet::API::Interface::HttpBase::oauth_()']]] -]; diff --git a/help/html/search/variables_9.html b/help/html/search/variables_9.html deleted file mode 100644 index 21e5a4f..0000000 --- a/help/html/search/variables_9.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/variables_9.js b/help/html/search/variables_9.js deleted file mode 100644 index 40ac23c..0000000 --- a/help/html/search/variables_9.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['replytostatusid_376',['replyToStatusId',['../structCocoaTweet_1_1API_1_1Statuses_1_1Status_1_1Options.html#a34f95b6dc6a9847e517cbf7d31ca9383',1,'CocoaTweet::API::Statuses::Status::Options']]] -]; diff --git a/help/html/search/variables_a.html b/help/html/search/variables_a.html deleted file mode 100644 index 1f65055..0000000 --- a/help/html/search/variables_a.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/variables_a.js b/help/html/search/variables_a.js deleted file mode 100644 index 62822ba..0000000 --- a/help/html/search/variables_a.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['trimuser_377',['trimUser',['../structCocoaTweet_1_1API_1_1Statuses_1_1Status_1_1Options.html#a6b445d1b1122acf2057fb284bb0bcf52',1,'CocoaTweet::API::Statuses::Status::Options']]] -]; diff --git a/help/html/search/variables_b.html b/help/html/search/variables_b.html deleted file mode 100644 index c02d066..0000000 --- a/help/html/search/variables_b.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/variables_b.js b/help/html/search/variables_b.js deleted file mode 100644 index 8b09233..0000000 --- a/help/html/search/variables_b.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['url_5f_378',['url_',['../classCocoaTweet_1_1API_1_1Interface_1_1HttpBase.html#a6511d018265ca90a5c675b375b8feee0',1,'CocoaTweet::API::Interface::HttpBase']]] -]; diff --git a/help/html/search/variables_c.html b/help/html/search/variables_c.html deleted file mode 100644 index 4b866c6..0000000 --- a/help/html/search/variables_c.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/variables_c.js b/help/html/search/variables_c.js deleted file mode 100644 index b2e7ddb..0000000 --- a/help/html/search/variables_c.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['z_379',['z',['../CMakeLists_8txt.html#a976e76516b81c3e0f6f677d39beb977c',1,'CMakeLists.txt']]] -]; diff --git a/help/html/search/variables_d.html b/help/html/search/variables_d.html deleted file mode 100644 index 84d878b..0000000 --- a/help/html/search/variables_d.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/variables_d.js b/help/html/search/variables_d.js deleted file mode 100644 index 0d1ac39..0000000 --- a/help/html/search/variables_d.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['minus_1431',['minus',['../structnlohmann_1_1detail_1_1dtoa__impl_1_1boundaries.html#aec4e5028333c01f3229062f31ce16763',1,'nlohmann::detail::dtoa_impl::boundaries']]], - ['mode_1432',['mode',['../namespaceupdate.html#a56bcbbbccd21e6f6b1212329e491f09f',1,'update']]], - ['msg_5f_1433',['msg_',['../classCocoaTweet_1_1Exception_1_1Exception.html#a979d1a34fc7ddc79572fea00e89cf7db',1,'CocoaTweet::Exception::Exception']]] -]; diff --git a/help/html/search/variables_e.html b/help/html/search/variables_e.html deleted file mode 100644 index b0d9b7b..0000000 --- a/help/html/search/variables_e.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/variables_e.js b/help/html/search/variables_e.js deleted file mode 100644 index 3e32526..0000000 --- a/help/html/search/variables_e.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['needed_1434',['needed',['../CMakeLists_8txt.html#a00fba48fc95d7cf91486378c8d671c99',1,'CMakeLists.txt']]], - ['nghttp2_1435',['nghttp2',['../CMakeCache_8txt.html#a2a2c967519267796b819dffbcbb733b6',1,'CMakeCache.txt']]], - ['ntlm_1436',['NTLM',['../CMakeCache_8txt.html#a5a211b7549f1ce3faed4ce9742c8ce93',1,'CMakeCache.txt']]], - ['ntlm_5fwb_1437',['NTLM_WB',['../CMakeCache_8txt.html#ac12aa68d9d456e40e046bce59dc50b29',1,'CMakeCache.txt']]] -]; diff --git a/help/html/search/variables_f.html b/help/html/search/variables_f.html deleted file mode 100644 index a708dbf..0000000 --- a/help/html/search/variables_f.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/help/html/search/variables_f.js b/help/html/search/variables_f.js deleted file mode 100644 index 2d611dc..0000000 --- a/help/html/search/variables_f.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['o1_1438',['O1',['../CMakeLists_8txt.html#a23ef90534a2fac3d2eec4950829a2abc',1,'CMakeLists.txt']]], - ['o777_1439',['o777',['../namespaceupdate.html#a0d3253eadc5ea2f2f21dfd233f461c15',1,'update']]], - ['oauth_5f_1440',['oauth_',['../classCocoaTweet_1_1API_1_1groupInterface.html#a71452bcc421ce246fd4f64d861ccbb97',1,'CocoaTweet::API::groupInterface::oauth_()'],['../classCocoaTweet_1_1API_1_1Interface_1_1HttpPost.html#ab03b2b6dfa57d10069d678c3d5d812db',1,'CocoaTweet::API::Interface::HttpPost::oauth_()']]], - ['object_5fiterator_1441',['object_iterator',['../structnlohmann_1_1detail_1_1internal__iterator.html#a8cb0af3498061426c1d0a65ad6220408',1,'nlohmann::detail::internal_iterator']]] -]; diff --git a/help/html/splitbar.png b/help/html/splitbar.png deleted file mode 100644 index fe895f2..0000000 Binary files a/help/html/splitbar.png and /dev/null differ diff --git a/help/html/src_2CMakeLists_8txt.html b/help/html/src_2CMakeLists_8txt.html deleted file mode 100644 index 7484359..0000000 --- a/help/html/src_2CMakeLists_8txt.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - - -CocoaTweet: src/CMakeLists.txt File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    - -
    -
    src/CMakeLists.txt File Reference
    -
    -
    - - - - - - -

    -Functions

     add_subdirectory (cocoatweet) set(EXECUTABLE_OUTPUT_PATH $
     
     add_executable (${PROJECT_NAME} main.cc) target_link_libraries($
     
    -

    Function Documentation

    - -

    ◆ add_executable()

    - -
    -
    - - - - - - - - -
    add_executable ( ${PROJECT_NAME} main.)
    -
    - -
    -
    - -

    ◆ add_subdirectory()

    - -
    -
    - - - - - - - - -
    add_subdirectory (cocoatweet )
    -
    - -
    -
    -
    - - - - diff --git a/help/html/src_2cocoatweet_2CMakeLists_8txt.html b/help/html/src_2cocoatweet_2CMakeLists_8txt.html deleted file mode 100644 index fe8afec..0000000 --- a/help/html/src_2cocoatweet_2CMakeLists_8txt.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/CMakeLists.txt File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    -
    -
    src/cocoatweet/CMakeLists.txt File Reference
    -
    -
    -
    - - - - diff --git a/help/html/src_2cocoatweet_2api_2model_2tweet_8cc.html b/help/html/src_2cocoatweet_2api_2model_2tweet_8cc.html deleted file mode 100644 index c3beec8..0000000 --- a/help/html/src_2cocoatweet_2api_2model_2tweet_8cc.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api/model/tweet.cc File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    tweet.cc File Reference
    -
    -
    -
    -Include dependency graph for tweet.cc:
    -
    -
    - - - - - - - - - - - - - -
    -
    - - - - - - - -

    -Namespaces

     CocoaTweet
     
     CocoaTweet::API
     
     CocoaTweet::API::Model
     
    -
    - - - - diff --git a/help/html/src_2cocoatweet_2api_2model_2tweet_8cc__incl.map b/help/html/src_2cocoatweet_2api_2model_2tweet_8cc__incl.map deleted file mode 100644 index 3a09249..0000000 --- a/help/html/src_2cocoatweet_2api_2model_2tweet_8cc__incl.map +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/help/html/src_2cocoatweet_2api_2model_2tweet_8cc__incl.md5 b/help/html/src_2cocoatweet_2api_2model_2tweet_8cc__incl.md5 deleted file mode 100644 index 13b9dcf..0000000 --- a/help/html/src_2cocoatweet_2api_2model_2tweet_8cc__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -9570dd5f1be7fa387a74a23d90d3a816 \ No newline at end of file diff --git a/help/html/src_2cocoatweet_2api_2model_2tweet_8cc__incl.png b/help/html/src_2cocoatweet_2api_2model_2tweet_8cc__incl.png deleted file mode 100644 index ab83e39..0000000 Binary files a/help/html/src_2cocoatweet_2api_2model_2tweet_8cc__incl.png and /dev/null differ diff --git a/help/html/src_2cocoatweet_2oauth_2key_8cc.html b/help/html/src_2cocoatweet_2oauth_2key_8cc.html deleted file mode 100644 index 0ce84d3..0000000 --- a/help/html/src_2cocoatweet_2oauth_2key_8cc.html +++ /dev/null @@ -1,107 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/oauth/key.cc File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    key.cc File Reference
    -
    -
    -
    #include "cocoatweet/oauth/key.h"
    -#include "nlohmann/json.hpp"
    -#include <fstream>
    -#include <string>
    -
    -Include dependency graph for key.cc:
    -
    -
    - - - - - - - - -
    -
    - - - - - -

    -Namespaces

     CocoaTweet
     
     CocoaTweet::OAuth
     
    -
    - - - - diff --git a/help/html/src_2cocoatweet_2oauth_2key_8cc__incl.map b/help/html/src_2cocoatweet_2oauth_2key_8cc__incl.map deleted file mode 100644 index 9c1b06c..0000000 --- a/help/html/src_2cocoatweet_2oauth_2key_8cc__incl.map +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/help/html/src_2cocoatweet_2oauth_2key_8cc__incl.md5 b/help/html/src_2cocoatweet_2oauth_2key_8cc__incl.md5 deleted file mode 100644 index e4a68f3..0000000 --- a/help/html/src_2cocoatweet_2oauth_2key_8cc__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -35c23c2ea263cd2f9c4a227951d38185 \ No newline at end of file diff --git a/help/html/src_2cocoatweet_2oauth_2key_8cc__incl.png b/help/html/src_2cocoatweet_2oauth_2key_8cc__incl.png deleted file mode 100644 index 71b1078..0000000 Binary files a/help/html/src_2cocoatweet_2oauth_2key_8cc__incl.png and /dev/null differ diff --git a/help/html/status_2destroy_8cc.html b/help/html/status_2destroy_8cc.html deleted file mode 100644 index 3e08ea9..0000000 --- a/help/html/status_2destroy_8cc.html +++ /dev/null @@ -1,113 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api/status/destroy.cc File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    destroy.cc File Reference
    -
    -
    -
    -Include dependency graph for destroy.cc:
    -
    -
    - - - - - - - - - - - - - - -
    -
    - - - - - - - -

    -Namespaces

     CocoaTweet
     
     CocoaTweet::API
     
     CocoaTweet::API::Statuses
     
    -
    - - - - diff --git a/help/html/status_2destroy_8cc__incl.map b/help/html/status_2destroy_8cc__incl.map deleted file mode 100644 index 8c642d8..0000000 --- a/help/html/status_2destroy_8cc__incl.map +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/help/html/status_2destroy_8cc__incl.md5 b/help/html/status_2destroy_8cc__incl.md5 deleted file mode 100644 index a612a9f..0000000 --- a/help/html/status_2destroy_8cc__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -48bd4e40b156aa27a9401fc70974fb83 \ No newline at end of file diff --git a/help/html/status_2destroy_8cc__incl.png b/help/html/status_2destroy_8cc__incl.png deleted file mode 100644 index 6ab5d03..0000000 Binary files a/help/html/status_2destroy_8cc__incl.png and /dev/null differ diff --git a/help/html/status_2destroy_8h.html b/help/html/status_2destroy_8h.html deleted file mode 100644 index a25b6a2..0000000 --- a/help/html/status_2destroy_8h.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api/status/destroy.h File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    destroy.h File Reference
    -
    -
    -
    #include <memory>
    -#include <cocoatweet/api/interface/httpPost.h>
    -#include <cocoatweet/api/model/tweet.h>
    -
    -Include dependency graph for destroy.h:
    -
    -
    - - - - - - - - - - - - - -
    -
    -This graph shows which files directly or indirectly include this file:
    -
    -
    - - - - - -
    -
    -

    Go to the source code of this file.

    - - - - - -

    -Classes

    class  CocoaTweet::API::Statuses::Destroy
     class for using status/destroy:id endpoint More...
     
    - - - - - - - -

    -Namespaces

     CocoaTweet
     
     CocoaTweet::API
     
     CocoaTweet::API::Statuses
     
    -
    - - - - diff --git a/help/html/status_2destroy_8h__dep__incl.map b/help/html/status_2destroy_8h__dep__incl.map deleted file mode 100644 index e7cbd75..0000000 --- a/help/html/status_2destroy_8h__dep__incl.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/help/html/status_2destroy_8h__dep__incl.md5 b/help/html/status_2destroy_8h__dep__incl.md5 deleted file mode 100644 index c4132b5..0000000 --- a/help/html/status_2destroy_8h__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -5b1d1c24a77922483fb85eca1cd0e5c4 \ No newline at end of file diff --git a/help/html/status_2destroy_8h__dep__incl.png b/help/html/status_2destroy_8h__dep__incl.png deleted file mode 100644 index af1312b..0000000 Binary files a/help/html/status_2destroy_8h__dep__incl.png and /dev/null differ diff --git a/help/html/status_2destroy_8h__incl.map b/help/html/status_2destroy_8h__incl.map deleted file mode 100644 index 7a35673..0000000 --- a/help/html/status_2destroy_8h__incl.map +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/help/html/status_2destroy_8h__incl.md5 b/help/html/status_2destroy_8h__incl.md5 deleted file mode 100644 index fe097d4..0000000 --- a/help/html/status_2destroy_8h__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -3fc708058a0a9058e972ba79fc3fc022 \ No newline at end of file diff --git a/help/html/status_2destroy_8h__incl.png b/help/html/status_2destroy_8h__incl.png deleted file mode 100644 index cba1b27..0000000 Binary files a/help/html/status_2destroy_8h__incl.png and /dev/null differ diff --git a/help/html/status_2destroy_8h_source.html b/help/html/status_2destroy_8h_source.html deleted file mode 100644 index 229c979..0000000 --- a/help/html/status_2destroy_8h_source.html +++ /dev/null @@ -1,108 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api/status/destroy.h Source File - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    destroy.h
    -
    -
    -Go to the documentation of this file.
    1 #ifndef COCOATWEET_API_STATUS_DESTROY_H_
    -
    2 #define COCOATWEET_API_STATUS_DESTROY_H_
    -
    3 
    -
    4 #include <memory>
    - - -
    7 
    - - -
    11 public:
    -
    13  Destroy();
    -
    14 
    -
    18  void id(const std::string _id);
    -
    19 
    -
    23  CocoaTweet::API::Model::Tweet process(std::weak_ptr<CocoaTweet::OAuth::OAuth1> _oauth);
    -
    24 };
    -
    25 } // namespace CocoaTweet::API::Statuses
    -
    26 
    -
    27 #endif
    -
    -
    class for using status/destroy:id endpoint
    Definition: destroy.h:10
    -
    class for Send request with POST method
    Definition: httpPost.h:10
    -
    data class for tweet object
    Definition: tweet.h:10
    - -
    CocoaTweet::API::Model::Tweet process(std::weak_ptr< CocoaTweet::OAuth::OAuth1 > _oauth)
    process request for endpoint
    Definition: destroy.cc:11
    -
    Destroy()
    primary constructor
    Definition: destroy.cc:5
    -
    void id(const std::string _id)
    set tweet id to destroy
    Definition: destroy.cc:6
    - -
    Definition: destroy.cc:4
    - - - - diff --git a/help/html/status_8cc.html b/help/html/status_8cc.html deleted file mode 100644 index c986a89..0000000 --- a/help/html/status_8cc.html +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api/status/status.cc File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    status.cc File Reference
    -
    -
    -
    -Include dependency graph for status.cc:
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - - - - -

    -Namespaces

     CocoaTweet
     
     CocoaTweet::API
     
     CocoaTweet::API::Statuses
     
    -
    - - - - diff --git a/help/html/status_8cc__incl.map b/help/html/status_8cc__incl.map deleted file mode 100644 index ab63fe5..0000000 --- a/help/html/status_8cc__incl.map +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - diff --git a/help/html/status_8cc__incl.md5 b/help/html/status_8cc__incl.md5 deleted file mode 100644 index d592984..0000000 --- a/help/html/status_8cc__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -fb28945102ba467da0a12e1499886a9f \ No newline at end of file diff --git a/help/html/status_8cc__incl.png b/help/html/status_8cc__incl.png deleted file mode 100644 index b176b8a..0000000 Binary files a/help/html/status_8cc__incl.png and /dev/null differ diff --git a/help/html/status_8h.html b/help/html/status_8h.html deleted file mode 100644 index 5c3696f..0000000 --- a/help/html/status_8h.html +++ /dev/null @@ -1,138 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api/status/status.h File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    status.h File Reference
    -
    -
    -
    #include "cocoatweet/api/interface/groupInterface.h"
    -#include "cocoatweet/oauth/oauth.h"
    -#include <cocoatweet/api/model/tweet.h>
    -#include <vector>
    -#include <utility>
    -
    -Include dependency graph for status.h:
    -
    -
    - - - - - - - - - - - - - -
    -
    -This graph shows which files directly or indirectly include this file:
    -
    -
    - - - - - - - -
    -
    -

    Go to the source code of this file.

    - - - - - - - -

    -Classes

    class  CocoaTweet::API::Statuses::Status
     Entory point for statuses/*. More...
     
    struct  CocoaTweet::API::Statuses::Status::Options
     
    - - - - - - - -

    -Namespaces

     CocoaTweet
     
     CocoaTweet::API
     
     CocoaTweet::API::Statuses
     
    -
    - - - - diff --git a/help/html/status_8h__dep__incl.map b/help/html/status_8h__dep__incl.map deleted file mode 100644 index 889a09c..0000000 --- a/help/html/status_8h__dep__incl.map +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/help/html/status_8h__dep__incl.md5 b/help/html/status_8h__dep__incl.md5 deleted file mode 100644 index 7975028..0000000 --- a/help/html/status_8h__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -4add4413e5f6375f7404db26cb6d8ebe \ No newline at end of file diff --git a/help/html/status_8h__dep__incl.png b/help/html/status_8h__dep__incl.png deleted file mode 100644 index 832715d..0000000 Binary files a/help/html/status_8h__dep__incl.png and /dev/null differ diff --git a/help/html/status_8h__incl.map b/help/html/status_8h__incl.map deleted file mode 100644 index 40b7611..0000000 --- a/help/html/status_8h__incl.map +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/help/html/status_8h__incl.md5 b/help/html/status_8h__incl.md5 deleted file mode 100644 index cafea2e..0000000 --- a/help/html/status_8h__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -b6669672c68fb24f5edc435a3dc74e9a \ No newline at end of file diff --git a/help/html/status_8h__incl.png b/help/html/status_8h__incl.png deleted file mode 100644 index a442a79..0000000 Binary files a/help/html/status_8h__incl.png and /dev/null differ diff --git a/help/html/status_8h_source.html b/help/html/status_8h_source.html deleted file mode 100644 index 1c86f6d..0000000 --- a/help/html/status_8h_source.html +++ /dev/null @@ -1,153 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api/status/status.h Source File - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    status.h
    -
    -
    -Go to the documentation of this file.
    1 #ifndef COCOATWEET_API_STATUS_STATUS_H_
    -
    2 #define COCOATWEET_API_STATUS_STATUS_H_
    -
    3 
    - - - -
    7 #include <vector>
    -
    8 #include <utility>
    -
    9 
    -
    10 namespace CocoaTweet::API::Statuses {
    -
    11 
    -
    13 class Status : public groupInterface {
    -
    14 public:
    -
    15  struct Options {
    -
    16  std::string replyToStatusId;
    - -
    18  std::vector<std::string> excludeReplyUserId;
    -
    19  std::string attachmentUrl;
    -
    20  std::pair<std::string, std::string> coord;
    -
    21  bool displayCoord = false;
    -
    22  bool trimUser = false;
    -
    23  bool enableDMCommands = false;
    -
    24  bool failDMCommands = true;
    -
    25  };
    -
    26 
    -
    28  Status() = default;
    -
    29 
    -
    32  Status(std::shared_ptr<CocoaTweet::OAuth::OAuth1> _oauth);
    -
    33 
    -
    38  CocoaTweet::API::Model::Tweet update(const std::string& _status) const;
    -
    39 
    -
    46  CocoaTweet::API::Model::Tweet update(const std::string& _status,
    -
    47  const Options _options) const;
    -
    48 
    -
    54  CocoaTweet::API::Model::Tweet update(const std::string& _status,
    -
    55  std::vector<std::string> _mediaId) const;
    -
    56 
    -
    61  CocoaTweet::API::Model::Tweet destroy(const std::string& _id) const;
    -
    62 
    -
    63  CocoaTweet::API::Model::Tweet retweet(const std::string& _id) const;
    -
    64  CocoaTweet::API::Model::Tweet unretweet(const std::string& _id) const;
    -
    65 
    -
    66  std::vector<CocoaTweet::API::Model::Tweet> userTimeline(const std::string& _screenName) const;
    -
    67 
    -
    68 private:
    -
    69  Options defaultOpt_;
    -
    70 };
    -
    71 } // namespace CocoaTweet::API::Statuses
    -
    72 
    -
    73 #endif
    -
    - -
    std::pair< std::string, std::string > coord
    Definition: status.h:20
    -
    CocoaTweet::API::Model::Tweet unretweet(const std::string &_id) const
    Definition: status.cc:83
    -
    data class for tweet object
    Definition: tweet.h:10
    -
    std::vector< std::string > excludeReplyUserId
    Definition: status.h:18
    -
    Definition: groupInterface.h:8
    - -
    bool autoPopulateReplyMetaData
    Definition: status.h:17
    -
    bool failDMCommands
    Definition: status.h:24
    -
    CocoaTweet::API::Model::Tweet update(const std::string &_status) const
    send request to statuses/update with specified status
    Definition: status.cc:13
    -
    std::vector< CocoaTweet::API::Model::Tweet > userTimeline(const std::string &_screenName) const
    Definition: status.cc:89
    -
    Status()=default
    primary constructor to allow for create NON-INITIALIZED object
    - -
    bool displayCoord
    Definition: status.h:21
    -
    Entory point for statuses/*.
    Definition: status.h:13
    -
    CocoaTweet::API::Model::Tweet retweet(const std::string &_id) const
    Definition: status.cc:77
    -
    CocoaTweet::API::Model::Tweet destroy(const std::string &_id) const
    send request to statuses/destroy with specified id
    Definition: status.cc:71
    -
    std::string attachmentUrl
    Definition: status.h:19
    -
    bool trimUser
    Definition: status.h:22
    -
    std::string replyToStatusId
    Definition: status.h:16
    - -
    Definition: destroy.cc:4
    -
    bool enableDMCommands
    Definition: status.h:23
    - - - - diff --git a/help/html/structCocoaTweet_1_1API_1_1Statuses_1_1Status_1_1Options-members.html b/help/html/structCocoaTweet_1_1API_1_1Statuses_1_1Status_1_1Options-members.html deleted file mode 100644 index 7085a37..0000000 --- a/help/html/structCocoaTweet_1_1API_1_1Statuses_1_1Status_1_1Options-members.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    CocoaTweet::API::Statuses::Status::Options Member List
    -
    - - - - - diff --git a/help/html/structCocoaTweet_1_1API_1_1Statuses_1_1Status_1_1Options.html b/help/html/structCocoaTweet_1_1API_1_1Statuses_1_1Status_1_1Options.html deleted file mode 100644 index 426a0f0..0000000 --- a/help/html/structCocoaTweet_1_1API_1_1Statuses_1_1Status_1_1Options.html +++ /dev/null @@ -1,237 +0,0 @@ - - - - - - - -CocoaTweet: CocoaTweet::API::Statuses::Status::Options Struct Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    CocoaTweet::API::Statuses::Status::Options Struct Reference
    -
    -
    - -

    #include <status.h>

    - - - - - - - - - - - - - - - - - - - - -

    -Public Attributes

    std::string replyToStatusId
     
    bool autoPopulateReplyMetaData = false
     
    std::vector< std::string > excludeReplyUserId
     
    std::string attachmentUrl
     
    std::pair< std::string, std::string > coord
     
    bool displayCoord = false
     
    bool trimUser = false
     
    bool enableDMCommands = false
     
    bool failDMCommands = true
     
    -

    Member Data Documentation

    - -

    ◆ attachmentUrl

    - -
    -
    - - - - -
    std::string CocoaTweet::API::Statuses::Status::Options::attachmentUrl
    -
    - -
    -
    - -

    ◆ autoPopulateReplyMetaData

    - -
    -
    - - - - -
    bool CocoaTweet::API::Statuses::Status::Options::autoPopulateReplyMetaData = false
    -
    - -
    -
    - -

    ◆ coord

    - -
    -
    - - - - -
    std::pair<std::string, std::string> CocoaTweet::API::Statuses::Status::Options::coord
    -
    - -
    -
    - -

    ◆ displayCoord

    - -
    -
    - - - - -
    bool CocoaTweet::API::Statuses::Status::Options::displayCoord = false
    -
    - -
    -
    - -

    ◆ enableDMCommands

    - -
    -
    - - - - -
    bool CocoaTweet::API::Statuses::Status::Options::enableDMCommands = false
    -
    - -
    -
    - -

    ◆ excludeReplyUserId

    - -
    -
    - - - - -
    std::vector<std::string> CocoaTweet::API::Statuses::Status::Options::excludeReplyUserId
    -
    - -
    -
    - -

    ◆ failDMCommands

    - -
    -
    - - - - -
    bool CocoaTweet::API::Statuses::Status::Options::failDMCommands = true
    -
    - -
    -
    - -

    ◆ replyToStatusId

    - -
    -
    - - - - -
    std::string CocoaTweet::API::Statuses::Status::Options::replyToStatusId
    -
    - -
    -
    - -

    ◆ trimUser

    - -
    -
    - - - - -
    bool CocoaTweet::API::Statuses::Status::Options::trimUser = false
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/help/html/structnlohmann_1_1adl__serializer-members.html b/help/html/structnlohmann_1_1adl__serializer-members.html deleted file mode 100644 index 74fc351..0000000 --- a/help/html/structnlohmann_1_1adl__serializer-members.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    nlohmann::adl_serializer< typename, typename > Member List
    -
    -
    - -

    This is the complete list of members for nlohmann::adl_serializer< typename, typename >, including all inherited members.

    - - - - - -
    from_json(BasicJsonType &&j, ValueType &val) noexcept(noexcept(::nlohmann::from_json(std::forward< BasicJsonType >(j), val))) -> decltype(::nlohmann::from_json(std::forward< BasicJsonType >(j), val), void())nlohmann::adl_serializer< typename, typename >inlinestatic
    from_json(BasicJsonType &&j, ValueType &val) noexcept(noexcept(::nlohmann::from_json(std::forward< BasicJsonType >(j), val))) -> decltype(::nlohmann::from_json(std::forward< BasicJsonType >(j), val), void())nlohmann::adl_serializer< typename, typename >inlinestatic
    to_json(BasicJsonType &j, ValueType &&val) noexcept(noexcept(::nlohmann::to_json(j, std::forward< ValueType >(val)))) -> decltype(::nlohmann::to_json(j, std::forward< ValueType >(val)), void())nlohmann::adl_serializer< typename, typename >inlinestatic
    to_json(BasicJsonType &j, ValueType &&val) noexcept(noexcept(::nlohmann::to_json(j, std::forward< ValueType >(val)))) -> decltype(::nlohmann::to_json(j, std::forward< ValueType >(val)), void())nlohmann::adl_serializer< typename, typename >inlinestatic
    - - - - diff --git a/help/html/structnlohmann_1_1adl__serializer.html b/help/html/structnlohmann_1_1adl__serializer.html deleted file mode 100644 index d52b450..0000000 --- a/help/html/structnlohmann_1_1adl__serializer.html +++ /dev/null @@ -1,322 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::adl_serializer< typename, typename > Struct Template Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    nlohmann::adl_serializer< typename, typename > Struct Template Reference
    -
    -
    - -

    default JSONSerializer template argument - More...

    - -

    #include <json.hpp>

    - - - - - - - - - - - - - - - - - - -

    -Static Public Member Functions

    template<typename BasicJsonType , typename ValueType >
    static auto from_json (BasicJsonType &&j, ValueType &val) noexcept(noexcept(::nlohmann::from_json(std::forward< BasicJsonType >(j), val))) -> decltype(::nlohmann::from_json(std::forward< BasicJsonType >(j), val), void())
     convert a JSON value to any value type More...
     
    template<typename BasicJsonType , typename ValueType >
    static auto to_json (BasicJsonType &j, ValueType &&val) noexcept(noexcept(::nlohmann::to_json(j, std::forward< ValueType >(val)))) -> decltype(::nlohmann::to_json(j, std::forward< ValueType >(val)), void())
     convert any value type to a JSON value More...
     
    template<typename BasicJsonType , typename ValueType >
    static auto from_json (BasicJsonType &&j, ValueType &val) noexcept(noexcept(::nlohmann::from_json(std::forward< BasicJsonType >(j), val))) -> decltype(::nlohmann::from_json(std::forward< BasicJsonType >(j), val), void())
     convert a JSON value to any value type More...
     
    template<typename BasicJsonType , typename ValueType >
    static auto to_json (BasicJsonType &j, ValueType &&val) noexcept(noexcept(::nlohmann::to_json(j, std::forward< ValueType >(val)))) -> decltype(::nlohmann::to_json(j, std::forward< ValueType >(val)), void())
     convert any value type to a JSON value More...
     
    -

    Detailed Description

    -

    template<typename, typename>
    -struct nlohmann::adl_serializer< typename, typename >

    - -

    default JSONSerializer template argument

    -

    This serializer ignores the template arguments and uses ADL (argument-dependent lookup) for serialization.

    -

    Member Function Documentation

    - -

    ◆ from_json() [1/2]

    - -
    -
    -
    -template<typename , typename >
    -
    -template<typename BasicJsonType , typename ValueType >
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    static auto nlohmann::adl_serializer< typename, typename >::from_json (BasicJsonType && j,
    ValueType & val 
    ) -> decltype(::nlohmann::from_json(std::forward<BasicJsonType>(j), val), void()) -
    -
    -inlinestaticnoexcept
    -
    - -

    convert a JSON value to any value type

    -

    This function is usually called by the get() function of the basic_json class (either explicit or via conversion operators).

    -
    Parameters
    - - - -
    [in]jJSON value to read from
    [in,out]valvalue to write to
    -
    -
    - -
    -
    - -

    ◆ from_json() [2/2]

    - -
    -
    -
    -template<typename , typename >
    -
    -template<typename BasicJsonType , typename ValueType >
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    static auto nlohmann::adl_serializer< typename, typename >::from_json (BasicJsonType && j,
    ValueType & val 
    ) -> decltype(::nlohmann::from_json(std::forward<BasicJsonType>(j), val), void()) -
    -
    -inlinestaticnoexcept
    -
    - -

    convert a JSON value to any value type

    -

    This function is usually called by the get() function of the basic_json class (either explicit or via conversion operators).

    -
    Parameters
    - - - -
    [in]jJSON value to read from
    [in,out]valvalue to write to
    -
    -
    - -
    -
    - -

    ◆ to_json() [1/2]

    - -
    -
    -
    -template<typename , typename >
    -
    -template<typename BasicJsonType , typename ValueType >
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    static auto nlohmann::adl_serializer< typename, typename >::to_json (BasicJsonType & j,
    ValueType && val 
    ) -> decltype(::nlohmann::to_json(j, std::forward<ValueType>(val)), void()) -
    -
    -inlinestaticnoexcept
    -
    - -

    convert any value type to a JSON value

    -

    This function is usually called by the constructors of the basic_json class.

    -
    Parameters
    - - - -
    [in,out]jJSON value to write to
    [in]valvalue to read from
    -
    -
    - -
    -
    - -

    ◆ to_json() [2/2]

    - -
    -
    -
    -template<typename , typename >
    -
    -template<typename BasicJsonType , typename ValueType >
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    static auto nlohmann::adl_serializer< typename, typename >::to_json (BasicJsonType & j,
    ValueType && val 
    ) -> decltype(::nlohmann::to_json(j, std::forward<ValueType>(val)), void()) -
    -
    -inlinestaticnoexcept
    -
    - -

    convert any value type to a JSON value

    -

    This function is usually called by the constructors of the basic_json class.

    -
    Parameters
    - - - -
    [in,out]jJSON value to write to
    [in]valvalue to read from
    -
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • build/_deps/json-src/include/nlohmann/json.hpp
    • -
    -
    - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1conjunction.html b/help/html/structnlohmann_1_1detail_1_1conjunction.html deleted file mode 100644 index bdb1db9..0000000 --- a/help/html/structnlohmann_1_1detail_1_1conjunction.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::conjunction<... > Struct Template Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    nlohmann::detail::conjunction<... > Struct Template Reference
    -
    -
    - -

    #include <json.hpp>

    -
    -Inheritance diagram for nlohmann::detail::conjunction<... >:
    -
    -
    Inheritance graph
    - - - - -
    [legend]
    -
    -Collaboration diagram for nlohmann::detail::conjunction<... >:
    -
    -
    Collaboration graph
    - - - - -
    [legend]
    -
    The documentation for this struct was generated from the following file:
      -
    • build/_deps/json-src/include/nlohmann/json.hpp
    • -
    -
    - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1conjunction_3_01B1_00_01Bn_8_8_8_01_4.html b/help/html/structnlohmann_1_1detail_1_1conjunction_3_01B1_00_01Bn_8_8_8_01_4.html deleted file mode 100644 index 6c91bc9..0000000 --- a/help/html/structnlohmann_1_1detail_1_1conjunction_3_01B1_00_01Bn_8_8_8_01_4.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::conjunction< B1, Bn... > Struct Template Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    nlohmann::detail::conjunction< B1, Bn... > Struct Template Reference
    -
    -
    - -

    #include <json.hpp>

    -
    -Inheritance diagram for nlohmann::detail::conjunction< B1, Bn... >:
    -
    -
    Inheritance graph
    - - - - -
    [legend]
    -
    -Collaboration diagram for nlohmann::detail::conjunction< B1, Bn... >:
    -
    -
    Collaboration graph
    - - - - -
    [legend]
    -
    The documentation for this struct was generated from the following file:
      -
    • build/_deps/json-src/include/nlohmann/json.hpp
    • -
    -
    - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1conjunction_3_01B1_00_01Bn_8_8_8_01_4__coll__graph.map b/help/html/structnlohmann_1_1detail_1_1conjunction_3_01B1_00_01Bn_8_8_8_01_4__coll__graph.map deleted file mode 100644 index 6b52720..0000000 --- a/help/html/structnlohmann_1_1detail_1_1conjunction_3_01B1_00_01Bn_8_8_8_01_4__coll__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1conjunction_3_01B1_00_01Bn_8_8_8_01_4__coll__graph.md5 b/help/html/structnlohmann_1_1detail_1_1conjunction_3_01B1_00_01Bn_8_8_8_01_4__coll__graph.md5 deleted file mode 100644 index ab4a14f..0000000 --- a/help/html/structnlohmann_1_1detail_1_1conjunction_3_01B1_00_01Bn_8_8_8_01_4__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -bfed7f3f4d363de8be03c64556d3025f \ No newline at end of file diff --git a/help/html/structnlohmann_1_1detail_1_1conjunction_3_01B1_00_01Bn_8_8_8_01_4__coll__graph.png b/help/html/structnlohmann_1_1detail_1_1conjunction_3_01B1_00_01Bn_8_8_8_01_4__coll__graph.png deleted file mode 100644 index b9a8e47..0000000 Binary files a/help/html/structnlohmann_1_1detail_1_1conjunction_3_01B1_00_01Bn_8_8_8_01_4__coll__graph.png and /dev/null differ diff --git a/help/html/structnlohmann_1_1detail_1_1conjunction_3_01B1_00_01Bn_8_8_8_01_4__inherit__graph.map b/help/html/structnlohmann_1_1detail_1_1conjunction_3_01B1_00_01Bn_8_8_8_01_4__inherit__graph.map deleted file mode 100644 index 6b52720..0000000 --- a/help/html/structnlohmann_1_1detail_1_1conjunction_3_01B1_00_01Bn_8_8_8_01_4__inherit__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1conjunction_3_01B1_00_01Bn_8_8_8_01_4__inherit__graph.md5 b/help/html/structnlohmann_1_1detail_1_1conjunction_3_01B1_00_01Bn_8_8_8_01_4__inherit__graph.md5 deleted file mode 100644 index ab4a14f..0000000 --- a/help/html/structnlohmann_1_1detail_1_1conjunction_3_01B1_00_01Bn_8_8_8_01_4__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -bfed7f3f4d363de8be03c64556d3025f \ No newline at end of file diff --git a/help/html/structnlohmann_1_1detail_1_1conjunction_3_01B1_00_01Bn_8_8_8_01_4__inherit__graph.png b/help/html/structnlohmann_1_1detail_1_1conjunction_3_01B1_00_01Bn_8_8_8_01_4__inherit__graph.png deleted file mode 100644 index b9a8e47..0000000 Binary files a/help/html/structnlohmann_1_1detail_1_1conjunction_3_01B1_00_01Bn_8_8_8_01_4__inherit__graph.png and /dev/null differ diff --git a/help/html/structnlohmann_1_1detail_1_1conjunction_3_01B1_01_4.html b/help/html/structnlohmann_1_1detail_1_1conjunction_3_01B1_01_4.html deleted file mode 100644 index 17b05e5..0000000 --- a/help/html/structnlohmann_1_1detail_1_1conjunction_3_01B1_01_4.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::conjunction< B1 > Struct Template Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    nlohmann::detail::conjunction< B1 > Struct Template Reference
    -
    -
    - -

    #include <json.hpp>

    -
    -Inheritance diagram for nlohmann::detail::conjunction< B1 >:
    -
    -
    Inheritance graph
    - - - - -
    [legend]
    -
    -Collaboration diagram for nlohmann::detail::conjunction< B1 >:
    -
    -
    Collaboration graph
    - - - - -
    [legend]
    -
    The documentation for this struct was generated from the following file:
      -
    • build/_deps/json-src/include/nlohmann/json.hpp
    • -
    -
    - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1conjunction_3_01B1_01_4__coll__graph.map b/help/html/structnlohmann_1_1detail_1_1conjunction_3_01B1_01_4__coll__graph.map deleted file mode 100644 index acde8f5..0000000 --- a/help/html/structnlohmann_1_1detail_1_1conjunction_3_01B1_01_4__coll__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1conjunction_3_01B1_01_4__coll__graph.md5 b/help/html/structnlohmann_1_1detail_1_1conjunction_3_01B1_01_4__coll__graph.md5 deleted file mode 100644 index ef04f56..0000000 --- a/help/html/structnlohmann_1_1detail_1_1conjunction_3_01B1_01_4__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -07e4a77396dcb7c5791af662cd55c77b \ No newline at end of file diff --git a/help/html/structnlohmann_1_1detail_1_1conjunction_3_01B1_01_4__coll__graph.png b/help/html/structnlohmann_1_1detail_1_1conjunction_3_01B1_01_4__coll__graph.png deleted file mode 100644 index 71f2315..0000000 Binary files a/help/html/structnlohmann_1_1detail_1_1conjunction_3_01B1_01_4__coll__graph.png and /dev/null differ diff --git a/help/html/structnlohmann_1_1detail_1_1conjunction_3_01B1_01_4__inherit__graph.map b/help/html/structnlohmann_1_1detail_1_1conjunction_3_01B1_01_4__inherit__graph.map deleted file mode 100644 index acde8f5..0000000 --- a/help/html/structnlohmann_1_1detail_1_1conjunction_3_01B1_01_4__inherit__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1conjunction_3_01B1_01_4__inherit__graph.md5 b/help/html/structnlohmann_1_1detail_1_1conjunction_3_01B1_01_4__inherit__graph.md5 deleted file mode 100644 index ef04f56..0000000 --- a/help/html/structnlohmann_1_1detail_1_1conjunction_3_01B1_01_4__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -07e4a77396dcb7c5791af662cd55c77b \ No newline at end of file diff --git a/help/html/structnlohmann_1_1detail_1_1conjunction_3_01B1_01_4__inherit__graph.png b/help/html/structnlohmann_1_1detail_1_1conjunction_3_01B1_01_4__inherit__graph.png deleted file mode 100644 index 71f2315..0000000 Binary files a/help/html/structnlohmann_1_1detail_1_1conjunction_3_01B1_01_4__inherit__graph.png and /dev/null differ diff --git a/help/html/structnlohmann_1_1detail_1_1conjunction__coll__graph.map b/help/html/structnlohmann_1_1detail_1_1conjunction__coll__graph.map deleted file mode 100644 index b8cd247..0000000 --- a/help/html/structnlohmann_1_1detail_1_1conjunction__coll__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1conjunction__coll__graph.md5 b/help/html/structnlohmann_1_1detail_1_1conjunction__coll__graph.md5 deleted file mode 100644 index 39ee68c..0000000 --- a/help/html/structnlohmann_1_1detail_1_1conjunction__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -2317000f22dc1721922dff9513b5cfba \ No newline at end of file diff --git a/help/html/structnlohmann_1_1detail_1_1conjunction__coll__graph.png b/help/html/structnlohmann_1_1detail_1_1conjunction__coll__graph.png deleted file mode 100644 index 27c5e49..0000000 Binary files a/help/html/structnlohmann_1_1detail_1_1conjunction__coll__graph.png and /dev/null differ diff --git a/help/html/structnlohmann_1_1detail_1_1conjunction__inherit__graph.map b/help/html/structnlohmann_1_1detail_1_1conjunction__inherit__graph.map deleted file mode 100644 index b8cd247..0000000 --- a/help/html/structnlohmann_1_1detail_1_1conjunction__inherit__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1conjunction__inherit__graph.md5 b/help/html/structnlohmann_1_1detail_1_1conjunction__inherit__graph.md5 deleted file mode 100644 index 39ee68c..0000000 --- a/help/html/structnlohmann_1_1detail_1_1conjunction__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -2317000f22dc1721922dff9513b5cfba \ No newline at end of file diff --git a/help/html/structnlohmann_1_1detail_1_1conjunction__inherit__graph.png b/help/html/structnlohmann_1_1detail_1_1conjunction__inherit__graph.png deleted file mode 100644 index 27c5e49..0000000 Binary files a/help/html/structnlohmann_1_1detail_1_1conjunction__inherit__graph.png and /dev/null differ diff --git a/help/html/structnlohmann_1_1detail_1_1detector-members.html b/help/html/structnlohmann_1_1detail_1_1detector-members.html deleted file mode 100644 index 758bd75..0000000 --- a/help/html/structnlohmann_1_1detail_1_1detector-members.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    nlohmann::detail::detector< Default, AlwaysVoid, Op, Args > Member List
    -
    - - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1detector.html b/help/html/structnlohmann_1_1detail_1_1detector.html deleted file mode 100644 index 8fd46ef..0000000 --- a/help/html/structnlohmann_1_1detail_1_1detector.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::detector< Default, AlwaysVoid, Op, Args > Struct Template Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    nlohmann::detail::detector< Default, AlwaysVoid, Op, Args > Struct Template Reference
    -
    -
    - -

    #include <json.hpp>

    - - - - - - - - - - -

    -Public Types

    using value_t = std::false_type
     
    using type = Default
     
    using value_t = std::false_type
     
    using type = Default
     
    -

    Member Typedef Documentation

    - -

    ◆ type [1/2]

    - -
    -
    -
    -template<class Default , class AlwaysVoid , template< class... > class Op, class... Args>
    - - - - -
    using nlohmann::detail::detector< Default, AlwaysVoid, Op, Args >::type = Default
    -
    - -
    -
    - -

    ◆ type [2/2]

    - -
    -
    -
    -template<class Default , class AlwaysVoid , template< class... > class Op, class... Args>
    - - - - -
    using nlohmann::detail::detector< Default, AlwaysVoid, Op, Args >::type = Default
    -
    - -
    -
    - -

    ◆ value_t [1/2]

    - -
    -
    -
    -template<class Default , class AlwaysVoid , template< class... > class Op, class... Args>
    - - - - -
    using nlohmann::detail::detector< Default, AlwaysVoid, Op, Args >::value_t = std::false_type
    -
    - -
    -
    - -

    ◆ value_t [2/2]

    - -
    -
    -
    -template<class Default , class AlwaysVoid , template< class... > class Op, class... Args>
    - - - - -
    using nlohmann::detail::detector< Default, AlwaysVoid, Op, Args >::value_t = std::false_type
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • build/_deps/json-src/include/nlohmann/json.hpp
    • -
    -
    - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1detector_3_01Default_00_01void__t_3_01Op_3_01Args_8_8_8_01_4_01_4_0069ce2b3aa60be472a03913e9fec4f4c1.html b/help/html/structnlohmann_1_1detail_1_1detector_3_01Default_00_01void__t_3_01Op_3_01Args_8_8_8_01_4_01_4_0069ce2b3aa60be472a03913e9fec4f4c1.html deleted file mode 100644 index 4f37307..0000000 --- a/help/html/structnlohmann_1_1detail_1_1detector_3_01Default_00_01void__t_3_01Op_3_01Args_8_8_8_01_4_01_4_0069ce2b3aa60be472a03913e9fec4f4c1.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    nlohmann::detail::detector< Default, void_t< Op< Args... > >, Op, Args... > Member List
    -
    - - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1detector_3_01Default_00_01void__t_3_01Op_3_01Args_8_8_8_01_4_01_4_00_01Op_00_01Args_8_8_8_01_4.html b/help/html/structnlohmann_1_1detail_1_1detector_3_01Default_00_01void__t_3_01Op_3_01Args_8_8_8_01_4_01_4_00_01Op_00_01Args_8_8_8_01_4.html deleted file mode 100644 index c79089d..0000000 --- a/help/html/structnlohmann_1_1detail_1_1detector_3_01Default_00_01void__t_3_01Op_3_01Args_8_8_8_01_4_01_4_00_01Op_00_01Args_8_8_8_01_4.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::detector< Default, void_t< Op< Args... > >, Op, Args... > Struct Template Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    nlohmann::detail::detector< Default, void_t< Op< Args... > >, Op, Args... > Struct Template Reference
    -
    -
    - -

    #include <json.hpp>

    - - - - - - - - - - -

    -Public Types

    using value_t = std::true_type
     
    using type = Op< Args... >
     
    using value_t = std::true_type
     
    using type = Op< Args... >
     
    -

    Member Typedef Documentation

    - -

    ◆ type [1/2]

    - -
    -
    -
    -template<class Default , template< class... > class Op, class... Args>
    - - - - -
    using nlohmann::detail::detector< Default, void_t< Op< Args... > >, Op, Args... >::type = Op<Args...>
    -
    - -
    -
    - -

    ◆ type [2/2]

    - -
    -
    -
    -template<class Default , template< class... > class Op, class... Args>
    - - - - -
    using nlohmann::detail::detector< Default, void_t< Op< Args... > >, Op, Args... >::type = Op<Args...>
    -
    - -
    -
    - -

    ◆ value_t [1/2]

    - -
    -
    -
    -template<class Default , template< class... > class Op, class... Args>
    - - - - -
    using nlohmann::detail::detector< Default, void_t< Op< Args... > >, Op, Args... >::value_t = std::true_type
    -
    - -
    -
    - -

    ◆ value_t [2/2]

    - -
    -
    -
    -template<class Default , template< class... > class Op, class... Args>
    - - - - -
    using nlohmann::detail::detector< Default, void_t< Op< Args... > >, Op, Args... >::value_t = std::true_type
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • build/_deps/json-src/include/nlohmann/json.hpp
    • -
    -
    - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1dtoa__impl_1_1boundaries-members.html b/help/html/structnlohmann_1_1detail_1_1dtoa__impl_1_1boundaries-members.html deleted file mode 100644 index 24e9eb7..0000000 --- a/help/html/structnlohmann_1_1detail_1_1dtoa__impl_1_1boundaries-members.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    nlohmann::detail::dtoa_impl::boundaries Member List
    -
    - - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1dtoa__impl_1_1boundaries.html b/help/html/structnlohmann_1_1detail_1_1dtoa__impl_1_1boundaries.html deleted file mode 100644 index 7a6dfc4..0000000 --- a/help/html/structnlohmann_1_1detail_1_1dtoa__impl_1_1boundaries.html +++ /dev/null @@ -1,150 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::dtoa_impl::boundaries Struct Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    nlohmann::detail::dtoa_impl::boundaries Struct Reference
    -
    -
    - -

    #include <json.hpp>

    -
    -Collaboration diagram for nlohmann::detail::dtoa_impl::boundaries:
    -
    -
    Collaboration graph
    - - - - -
    [legend]
    - - - - - - - - -

    -Public Attributes

    diyfp w
     
    diyfp minus
     
    diyfp plus
     
    -

    Member Data Documentation

    - -

    ◆ minus

    - -
    -
    - - - - -
    diyfp nlohmann::detail::dtoa_impl::boundaries::minus
    -
    - -
    -
    - -

    ◆ plus

    - -
    -
    - - - - -
    diyfp nlohmann::detail::dtoa_impl::boundaries::plus
    -
    - -
    -
    - -

    ◆ w

    - -
    -
    - - - - -
    diyfp nlohmann::detail::dtoa_impl::boundaries::w
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • build/_deps/json-src/include/nlohmann/json.hpp
    • -
    -
    - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1dtoa__impl_1_1boundaries__coll__graph.map b/help/html/structnlohmann_1_1detail_1_1dtoa__impl_1_1boundaries__coll__graph.map deleted file mode 100644 index 460abaf..0000000 --- a/help/html/structnlohmann_1_1detail_1_1dtoa__impl_1_1boundaries__coll__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1dtoa__impl_1_1boundaries__coll__graph.md5 b/help/html/structnlohmann_1_1detail_1_1dtoa__impl_1_1boundaries__coll__graph.md5 deleted file mode 100644 index b6d2edf..0000000 --- a/help/html/structnlohmann_1_1detail_1_1dtoa__impl_1_1boundaries__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -359bd39581963fe83b3a340a4fec560f \ No newline at end of file diff --git a/help/html/structnlohmann_1_1detail_1_1dtoa__impl_1_1boundaries__coll__graph.png b/help/html/structnlohmann_1_1detail_1_1dtoa__impl_1_1boundaries__coll__graph.png deleted file mode 100644 index af9d574..0000000 Binary files a/help/html/structnlohmann_1_1detail_1_1dtoa__impl_1_1boundaries__coll__graph.png and /dev/null differ diff --git a/help/html/structnlohmann_1_1detail_1_1dtoa__impl_1_1cached__power-members.html b/help/html/structnlohmann_1_1detail_1_1dtoa__impl_1_1cached__power-members.html deleted file mode 100644 index 6c17ddc..0000000 --- a/help/html/structnlohmann_1_1detail_1_1dtoa__impl_1_1cached__power-members.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    nlohmann::detail::dtoa_impl::cached_power Member List
    -
    - - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1dtoa__impl_1_1cached__power.html b/help/html/structnlohmann_1_1detail_1_1dtoa__impl_1_1cached__power.html deleted file mode 100644 index c9a461c..0000000 --- a/help/html/structnlohmann_1_1detail_1_1dtoa__impl_1_1cached__power.html +++ /dev/null @@ -1,141 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::dtoa_impl::cached_power Struct Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    nlohmann::detail::dtoa_impl::cached_power Struct Reference
    -
    -
    - -

    #include <json.hpp>

    - - - - - - - - -

    -Public Attributes

    std::uint64_t f
     
    int e
     
    int k
     
    -

    Member Data Documentation

    - -

    ◆ e

    - -
    -
    - - - - -
    int nlohmann::detail::dtoa_impl::cached_power::e
    -
    - -
    -
    - -

    ◆ f

    - -
    -
    - - - - -
    std::uint64_t nlohmann::detail::dtoa_impl::cached_power::f
    -
    - -
    -
    - -

    ◆ k

    - -
    -
    - - - - -
    int nlohmann::detail::dtoa_impl::cached_power::k
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • build/_deps/json-src/include/nlohmann/json.hpp
    • -
    -
    - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp-members.html b/help/html/structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp-members.html deleted file mode 100644 index 172a48b..0000000 --- a/help/html/structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp-members.html +++ /dev/null @@ -1,96 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    nlohmann::detail::dtoa_impl::diyfp Member List
    -
    -
    - -

    This is the complete list of members for nlohmann::detail::dtoa_impl::diyfp, including all inherited members.

    - - - - - - - - - - - - - - -
    diyfp(std::uint64_t f_, int e_) noexceptnlohmann::detail::dtoa_impl::diyfpinline
    diyfp(std::uint64_t f_, int e_) noexceptnlohmann::detail::dtoa_impl::diyfpinline
    enlohmann::detail::dtoa_impl::diyfp
    fnlohmann::detail::dtoa_impl::diyfp
    kPrecisionnlohmann::detail::dtoa_impl::diyfpstatic
    mul(const diyfp &x, const diyfp &y) noexceptnlohmann::detail::dtoa_impl::diyfpinlinestatic
    mul(const diyfp &x, const diyfp &y) noexceptnlohmann::detail::dtoa_impl::diyfpinlinestatic
    normalize(diyfp x) noexceptnlohmann::detail::dtoa_impl::diyfpinlinestatic
    normalize(diyfp x) noexceptnlohmann::detail::dtoa_impl::diyfpinlinestatic
    normalize_to(const diyfp &x, const int target_exponent) noexceptnlohmann::detail::dtoa_impl::diyfpinlinestatic
    normalize_to(const diyfp &x, const int target_exponent) noexceptnlohmann::detail::dtoa_impl::diyfpinlinestatic
    sub(const diyfp &x, const diyfp &y) noexceptnlohmann::detail::dtoa_impl::diyfpinlinestatic
    sub(const diyfp &x, const diyfp &y) noexceptnlohmann::detail::dtoa_impl::diyfpinlinestatic
    - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html b/help/html/structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html deleted file mode 100644 index 281d286..0000000 --- a/help/html/structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html +++ /dev/null @@ -1,555 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::dtoa_impl::diyfp Struct Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    nlohmann::detail::dtoa_impl::diyfp Struct Reference
    -
    -
    - -

    #include <json.hpp>

    - - - - - - -

    -Public Member Functions

    constexpr diyfp (std::uint64_t f_, int e_) noexcept
     
    constexpr diyfp (std::uint64_t f_, int e_) noexcept
     
    - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Static Public Member Functions

    static diyfp sub (const diyfp &x, const diyfp &y) noexcept
     returns x - y More...
     
    static diyfp mul (const diyfp &x, const diyfp &y) noexcept
     returns x * y More...
     
    static diyfp normalize (diyfp x) noexcept
     normalize x such that the significand is >= 2^(q-1) More...
     
    static diyfp normalize_to (const diyfp &x, const int target_exponent) noexcept
     normalize x such that the result has the exponent E More...
     
    static diyfp sub (const diyfp &x, const diyfp &y) noexcept
     returns x - y More...
     
    static diyfp mul (const diyfp &x, const diyfp &y) noexcept
     returns x * y More...
     
    static diyfp normalize (diyfp x) noexcept
     normalize x such that the significand is >= 2^(q-1) More...
     
    static diyfp normalize_to (const diyfp &x, const int target_exponent) noexcept
     normalize x such that the result has the exponent E More...
     
    - - - - - -

    -Public Attributes

    std::uint64_t f = 0
     
    int e = 0
     
    - - - -

    -Static Public Attributes

    static constexpr int kPrecision = 64
     
    -

    Constructor & Destructor Documentation

    - -

    ◆ diyfp() [1/2]

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    constexpr nlohmann::detail::dtoa_impl::diyfp::diyfp (std::uint64_t f_,
    int e_ 
    )
    -
    -inlineconstexprnoexcept
    -
    - -
    -
    - -

    ◆ diyfp() [2/2]

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    constexpr nlohmann::detail::dtoa_impl::diyfp::diyfp (std::uint64_t f_,
    int e_ 
    )
    -
    -inlineconstexprnoexcept
    -
    - -
    -
    -

    Member Function Documentation

    - -

    ◆ mul() [1/2]

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    static diyfp nlohmann::detail::dtoa_impl::diyfp::mul (const diyfpx,
    const diyfpy 
    )
    -
    -inlinestaticnoexcept
    -
    - -

    returns x * y

    -
    Note
    The result is rounded. (Only the upper q bits are returned.)
    - -
    -
    - -

    ◆ mul() [2/2]

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    static diyfp nlohmann::detail::dtoa_impl::diyfp::mul (const diyfpx,
    const diyfpy 
    )
    -
    -inlinestaticnoexcept
    -
    - -

    returns x * y

    -
    Note
    The result is rounded. (Only the upper q bits are returned.)
    - -
    -
    - -

    ◆ normalize() [1/2]

    - -
    -
    - - - - - -
    - - - - - - - - -
    static diyfp nlohmann::detail::dtoa_impl::diyfp::normalize (diyfp x)
    -
    -inlinestaticnoexcept
    -
    - -

    normalize x such that the significand is >= 2^(q-1)

    -
    Precondition
    x.f != 0
    - -
    -
    - -

    ◆ normalize() [2/2]

    - -
    -
    - - - - - -
    - - - - - - - - -
    static diyfp nlohmann::detail::dtoa_impl::diyfp::normalize (diyfp x)
    -
    -inlinestaticnoexcept
    -
    - -

    normalize x such that the significand is >= 2^(q-1)

    -
    Precondition
    x.f != 0
    - -
    -
    - -

    ◆ normalize_to() [1/2]

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    static diyfp nlohmann::detail::dtoa_impl::diyfp::normalize_to (const diyfpx,
    const int target_exponent 
    )
    -
    -inlinestaticnoexcept
    -
    - -

    normalize x such that the result has the exponent E

    -
    Precondition
    e >= x.e and the upper e - x.e bits of x.f must be zero.
    - -
    -
    - -

    ◆ normalize_to() [2/2]

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    static diyfp nlohmann::detail::dtoa_impl::diyfp::normalize_to (const diyfpx,
    const int target_exponent 
    )
    -
    -inlinestaticnoexcept
    -
    - -

    normalize x such that the result has the exponent E

    -
    Precondition
    e >= x.e and the upper e - x.e bits of x.f must be zero.
    - -
    -
    - -

    ◆ sub() [1/2]

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    static diyfp nlohmann::detail::dtoa_impl::diyfp::sub (const diyfpx,
    const diyfpy 
    )
    -
    -inlinestaticnoexcept
    -
    - -

    returns x - y

    -
    Precondition
    x.e == y.e and x.f >= y.f
    - -
    -
    - -

    ◆ sub() [2/2]

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    static diyfp nlohmann::detail::dtoa_impl::diyfp::sub (const diyfpx,
    const diyfpy 
    )
    -
    -inlinestaticnoexcept
    -
    - -

    returns x - y

    -
    Precondition
    x.e == y.e and x.f >= y.f
    - -
    -
    -

    Member Data Documentation

    - -

    ◆ e

    - -
    -
    - - - - -
    int nlohmann::detail::dtoa_impl::diyfp::e = 0
    -
    - -
    -
    - -

    ◆ f

    - -
    -
    - - - - -
    std::uint64_t nlohmann::detail::dtoa_impl::diyfp::f = 0
    -
    - -
    -
    - -

    ◆ kPrecision

    - -
    -
    - - - - - -
    - - - - -
    static constexpr int nlohmann::detail::dtoa_impl::diyfp::kPrecision = 64
    -
    -staticconstexpr
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • build/_deps/json-src/include/nlohmann/json.hpp
    • -
    -
    - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1external__constructor.html b/help/html/structnlohmann_1_1detail_1_1external__constructor.html deleted file mode 100644 index e6601a4..0000000 --- a/help/html/structnlohmann_1_1detail_1_1external__constructor.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::external_constructor< value_t > Struct Template Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    nlohmann::detail::external_constructor< value_t > Struct Template Reference
    -
    -
    - -

    #include <json.hpp>

    -
    The documentation for this struct was generated from the following file:
      -
    • build/_deps/json-src/include/nlohmann/json.hpp
    • -
    -
    - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1array_01_4-members.html b/help/html/structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1array_01_4-members.html deleted file mode 100644 index 7c1d56d..0000000 --- a/help/html/structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1array_01_4-members.html +++ /dev/null @@ -1,93 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    nlohmann::detail::external_constructor< value_t::array > Member List
    -
    -
    - -

    This is the complete list of members for nlohmann::detail::external_constructor< value_t::array >, including all inherited members.

    - - - - - - - - - - - -
    construct(BasicJsonType &j, const typename BasicJsonType::array_t &arr)nlohmann::detail::external_constructor< value_t::array >inlinestatic
    construct(BasicJsonType &j, typename BasicJsonType::array_t &&arr)nlohmann::detail::external_constructor< value_t::array >inlinestatic
    construct(BasicJsonType &j, const CompatibleArrayType &arr)nlohmann::detail::external_constructor< value_t::array >inlinestatic
    construct(BasicJsonType &j, const std::vector< bool > &arr)nlohmann::detail::external_constructor< value_t::array >inlinestatic
    construct(BasicJsonType &j, const std::valarray< T > &arr)nlohmann::detail::external_constructor< value_t::array >inlinestatic
    construct(BasicJsonType &j, const typename BasicJsonType::array_t &arr)nlohmann::detail::external_constructor< value_t::array >inlinestatic
    construct(BasicJsonType &j, typename BasicJsonType::array_t &&arr)nlohmann::detail::external_constructor< value_t::array >inlinestatic
    construct(BasicJsonType &j, const CompatibleArrayType &arr)nlohmann::detail::external_constructor< value_t::array >inlinestatic
    construct(BasicJsonType &j, const std::vector< bool > &arr)nlohmann::detail::external_constructor< value_t::array >inlinestatic
    construct(BasicJsonType &j, const std::valarray< T > &arr)nlohmann::detail::external_constructor< value_t::array >inlinestatic
    - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1array_01_4.html b/help/html/structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1array_01_4.html deleted file mode 100644 index ac6a4c6..0000000 --- a/help/html/structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1array_01_4.html +++ /dev/null @@ -1,503 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::external_constructor< value_t::array > Struct Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    nlohmann::detail::external_constructor< value_t::array > Struct Reference
    -
    -
    - -

    #include <json.hpp>

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Static Public Member Functions

    template<typename BasicJsonType >
    static void construct (BasicJsonType &j, const typename BasicJsonType::array_t &arr)
     
    template<typename BasicJsonType >
    static void construct (BasicJsonType &j, typename BasicJsonType::array_t &&arr)
     
    template<typename BasicJsonType , typename CompatibleArrayType , enable_if_t< not std::is_same< CompatibleArrayType, typename BasicJsonType::array_t >::value, int > = 0>
    static void construct (BasicJsonType &j, const CompatibleArrayType &arr)
     
    template<typename BasicJsonType >
    static void construct (BasicJsonType &j, const std::vector< bool > &arr)
     
    template<typename BasicJsonType , typename T , enable_if_t< std::is_convertible< T, BasicJsonType >::value, int > = 0>
    static void construct (BasicJsonType &j, const std::valarray< T > &arr)
     
    template<typename BasicJsonType >
    static void construct (BasicJsonType &j, const typename BasicJsonType::array_t &arr)
     
    template<typename BasicJsonType >
    static void construct (BasicJsonType &j, typename BasicJsonType::array_t &&arr)
     
    template<typename BasicJsonType , typename CompatibleArrayType , enable_if_t< !std::is_same< CompatibleArrayType, typename BasicJsonType::array_t >::value, int > = 0>
    static void construct (BasicJsonType &j, const CompatibleArrayType &arr)
     
    template<typename BasicJsonType >
    static void construct (BasicJsonType &j, const std::vector< bool > &arr)
     
    template<typename BasicJsonType , typename T , enable_if_t< std::is_convertible< T, BasicJsonType >::value, int > = 0>
    static void construct (BasicJsonType &j, const std::valarray< T > &arr)
     
    -

    Member Function Documentation

    - -

    ◆ construct() [1/10]

    - -
    -
    -
    -template<typename BasicJsonType , typename CompatibleArrayType , enable_if_t< not std::is_same< CompatibleArrayType, typename BasicJsonType::array_t >::value, int > = 0>
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    static void nlohmann::detail::external_constructor< value_t::array >::construct (BasicJsonType & j,
    const CompatibleArrayType & arr 
    )
    -
    -inlinestatic
    -
    - -
    -
    - -

    ◆ construct() [2/10]

    - -
    -
    -
    -template<typename BasicJsonType , typename CompatibleArrayType , enable_if_t< !std::is_same< CompatibleArrayType, typename BasicJsonType::array_t >::value, int > = 0>
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    static void nlohmann::detail::external_constructor< value_t::array >::construct (BasicJsonType & j,
    const CompatibleArrayType & arr 
    )
    -
    -inlinestatic
    -
    - -
    -
    - -

    ◆ construct() [3/10]

    - -
    -
    -
    -template<typename BasicJsonType , typename T , enable_if_t< std::is_convertible< T, BasicJsonType >::value, int > = 0>
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    static void nlohmann::detail::external_constructor< value_t::array >::construct (BasicJsonType & j,
    const std::valarray< T > & arr 
    )
    -
    -inlinestatic
    -
    - -
    -
    - -

    ◆ construct() [4/10]

    - -
    -
    -
    -template<typename BasicJsonType , typename T , enable_if_t< std::is_convertible< T, BasicJsonType >::value, int > = 0>
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    static void nlohmann::detail::external_constructor< value_t::array >::construct (BasicJsonType & j,
    const std::valarray< T > & arr 
    )
    -
    -inlinestatic
    -
    - -
    -
    - -

    ◆ construct() [5/10]

    - -
    -
    -
    -template<typename BasicJsonType >
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    static void nlohmann::detail::external_constructor< value_t::array >::construct (BasicJsonType & j,
    const std::vector< bool > & arr 
    )
    -
    -inlinestatic
    -
    - -
    -
    - -

    ◆ construct() [6/10]

    - -
    -
    -
    -template<typename BasicJsonType >
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    static void nlohmann::detail::external_constructor< value_t::array >::construct (BasicJsonType & j,
    const std::vector< bool > & arr 
    )
    -
    -inlinestatic
    -
    - -
    -
    - -

    ◆ construct() [7/10]

    - -
    -
    -
    -template<typename BasicJsonType >
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    static void nlohmann::detail::external_constructor< value_t::array >::construct (BasicJsonType & j,
    const typename BasicJsonType::array_t & arr 
    )
    -
    -inlinestatic
    -
    - -
    -
    - -

    ◆ construct() [8/10]

    - -
    -
    -
    -template<typename BasicJsonType >
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    static void nlohmann::detail::external_constructor< value_t::array >::construct (BasicJsonType & j,
    const typename BasicJsonType::array_t & arr 
    )
    -
    -inlinestatic
    -
    - -
    -
    - -

    ◆ construct() [9/10]

    - -
    -
    -
    -template<typename BasicJsonType >
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    static void nlohmann::detail::external_constructor< value_t::array >::construct (BasicJsonType & j,
    typename BasicJsonType::array_t && arr 
    )
    -
    -inlinestatic
    -
    - -
    -
    - -

    ◆ construct() [10/10]

    - -
    -
    -
    -template<typename BasicJsonType >
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    static void nlohmann::detail::external_constructor< value_t::array >::construct (BasicJsonType & j,
    typename BasicJsonType::array_t && arr 
    )
    -
    -inlinestatic
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • build/_deps/json-src/include/nlohmann/json.hpp
    • -
    -
    - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1binary_01_4-members.html b/help/html/structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1binary_01_4-members.html deleted file mode 100644 index 8ecec02..0000000 --- a/help/html/structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1binary_01_4-members.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    nlohmann::detail::external_constructor< value_t::binary > Member List
    -
    -
    - -

    This is the complete list of members for nlohmann::detail::external_constructor< value_t::binary >, including all inherited members.

    - - - -
    construct(BasicJsonType &j, const typename BasicJsonType::binary_t &b)nlohmann::detail::external_constructor< value_t::binary >inlinestatic
    construct(BasicJsonType &j, typename BasicJsonType::binary_t &&b)nlohmann::detail::external_constructor< value_t::binary >inlinestatic
    - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1binary_01_4.html b/help/html/structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1binary_01_4.html deleted file mode 100644 index 0ef0555..0000000 --- a/help/html/structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1binary_01_4.html +++ /dev/null @@ -1,175 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::external_constructor< value_t::binary > Struct Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    nlohmann::detail::external_constructor< value_t::binary > Struct Reference
    -
    -
    - -

    #include <json.hpp>

    - - - - - - - - -

    -Static Public Member Functions

    template<typename BasicJsonType >
    static void construct (BasicJsonType &j, const typename BasicJsonType::binary_t &b)
     
    template<typename BasicJsonType >
    static void construct (BasicJsonType &j, typename BasicJsonType::binary_t &&b)
     
    -

    Member Function Documentation

    - -

    ◆ construct() [1/2]

    - -
    -
    -
    -template<typename BasicJsonType >
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    static void nlohmann::detail::external_constructor< value_t::binary >::construct (BasicJsonType & j,
    const typename BasicJsonType::binary_t & b 
    )
    -
    -inlinestatic
    -
    - -
    -
    - -

    ◆ construct() [2/2]

    - -
    -
    -
    -template<typename BasicJsonType >
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    static void nlohmann::detail::external_constructor< value_t::binary >::construct (BasicJsonType & j,
    typename BasicJsonType::binary_t && b 
    )
    -
    -inlinestatic
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1boolean_01_4-members.html b/help/html/structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1boolean_01_4-members.html deleted file mode 100644 index ac5f489..0000000 --- a/help/html/structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1boolean_01_4-members.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    nlohmann::detail::external_constructor< value_t::boolean > Member List
    -
    -
    - -

    This is the complete list of members for nlohmann::detail::external_constructor< value_t::boolean >, including all inherited members.

    - - - -
    construct(BasicJsonType &j, typename BasicJsonType::boolean_t b) noexceptnlohmann::detail::external_constructor< value_t::boolean >inlinestatic
    construct(BasicJsonType &j, typename BasicJsonType::boolean_t b) noexceptnlohmann::detail::external_constructor< value_t::boolean >inlinestatic
    - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1boolean_01_4.html b/help/html/structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1boolean_01_4.html deleted file mode 100644 index c072e17..0000000 --- a/help/html/structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1boolean_01_4.html +++ /dev/null @@ -1,175 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::external_constructor< value_t::boolean > Struct Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    nlohmann::detail::external_constructor< value_t::boolean > Struct Reference
    -
    -
    - -

    #include <json.hpp>

    - - - - - - - - -

    -Static Public Member Functions

    template<typename BasicJsonType >
    static void construct (BasicJsonType &j, typename BasicJsonType::boolean_t b) noexcept
     
    template<typename BasicJsonType >
    static void construct (BasicJsonType &j, typename BasicJsonType::boolean_t b) noexcept
     
    -

    Member Function Documentation

    - -

    ◆ construct() [1/2]

    - -
    -
    -
    -template<typename BasicJsonType >
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    static void nlohmann::detail::external_constructor< value_t::boolean >::construct (BasicJsonType & j,
    typename BasicJsonType::boolean_t b 
    )
    -
    -inlinestaticnoexcept
    -
    - -
    -
    - -

    ◆ construct() [2/2]

    - -
    -
    -
    -template<typename BasicJsonType >
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    static void nlohmann::detail::external_constructor< value_t::boolean >::construct (BasicJsonType & j,
    typename BasicJsonType::boolean_t b 
    )
    -
    -inlinestaticnoexcept
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • build/_deps/json-src/include/nlohmann/json.hpp
    • -
    -
    - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1number__float_01_4-members.html b/help/html/structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1number__float_01_4-members.html deleted file mode 100644 index ec962c2..0000000 --- a/help/html/structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1number__float_01_4-members.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    nlohmann::detail::external_constructor< value_t::number_float > Member List
    -
    -
    - -

    This is the complete list of members for nlohmann::detail::external_constructor< value_t::number_float >, including all inherited members.

    - - - -
    construct(BasicJsonType &j, typename BasicJsonType::number_float_t val) noexceptnlohmann::detail::external_constructor< value_t::number_float >inlinestatic
    construct(BasicJsonType &j, typename BasicJsonType::number_float_t val) noexceptnlohmann::detail::external_constructor< value_t::number_float >inlinestatic
    - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1number__float_01_4.html b/help/html/structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1number__float_01_4.html deleted file mode 100644 index 9c5cc21..0000000 --- a/help/html/structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1number__float_01_4.html +++ /dev/null @@ -1,175 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::external_constructor< value_t::number_float > Struct Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    nlohmann::detail::external_constructor< value_t::number_float > Struct Reference
    -
    -
    - -

    #include <json.hpp>

    - - - - - - - - -

    -Static Public Member Functions

    template<typename BasicJsonType >
    static void construct (BasicJsonType &j, typename BasicJsonType::number_float_t val) noexcept
     
    template<typename BasicJsonType >
    static void construct (BasicJsonType &j, typename BasicJsonType::number_float_t val) noexcept
     
    -

    Member Function Documentation

    - -

    ◆ construct() [1/2]

    - -
    -
    -
    -template<typename BasicJsonType >
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    static void nlohmann::detail::external_constructor< value_t::number_float >::construct (BasicJsonType & j,
    typename BasicJsonType::number_float_t val 
    )
    -
    -inlinestaticnoexcept
    -
    - -
    -
    - -

    ◆ construct() [2/2]

    - -
    -
    -
    -template<typename BasicJsonType >
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    static void nlohmann::detail::external_constructor< value_t::number_float >::construct (BasicJsonType & j,
    typename BasicJsonType::number_float_t val 
    )
    -
    -inlinestaticnoexcept
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • build/_deps/json-src/include/nlohmann/json.hpp
    • -
    -
    - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1number__integer_01_4-members.html b/help/html/structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1number__integer_01_4-members.html deleted file mode 100644 index f9b7cae..0000000 --- a/help/html/structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1number__integer_01_4-members.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    nlohmann::detail::external_constructor< value_t::number_integer > Member List
    -
    -
    - -

    This is the complete list of members for nlohmann::detail::external_constructor< value_t::number_integer >, including all inherited members.

    - - - -
    construct(BasicJsonType &j, typename BasicJsonType::number_integer_t val) noexceptnlohmann::detail::external_constructor< value_t::number_integer >inlinestatic
    construct(BasicJsonType &j, typename BasicJsonType::number_integer_t val) noexceptnlohmann::detail::external_constructor< value_t::number_integer >inlinestatic
    - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1number__integer_01_4.html b/help/html/structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1number__integer_01_4.html deleted file mode 100644 index c6491aa..0000000 --- a/help/html/structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1number__integer_01_4.html +++ /dev/null @@ -1,175 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::external_constructor< value_t::number_integer > Struct Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    nlohmann::detail::external_constructor< value_t::number_integer > Struct Reference
    -
    -
    - -

    #include <json.hpp>

    - - - - - - - - -

    -Static Public Member Functions

    template<typename BasicJsonType >
    static void construct (BasicJsonType &j, typename BasicJsonType::number_integer_t val) noexcept
     
    template<typename BasicJsonType >
    static void construct (BasicJsonType &j, typename BasicJsonType::number_integer_t val) noexcept
     
    -

    Member Function Documentation

    - -

    ◆ construct() [1/2]

    - -
    -
    -
    -template<typename BasicJsonType >
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    static void nlohmann::detail::external_constructor< value_t::number_integer >::construct (BasicJsonType & j,
    typename BasicJsonType::number_integer_t val 
    )
    -
    -inlinestaticnoexcept
    -
    - -
    -
    - -

    ◆ construct() [2/2]

    - -
    -
    -
    -template<typename BasicJsonType >
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    static void nlohmann::detail::external_constructor< value_t::number_integer >::construct (BasicJsonType & j,
    typename BasicJsonType::number_integer_t val 
    )
    -
    -inlinestaticnoexcept
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • build/_deps/json-src/include/nlohmann/json.hpp
    • -
    -
    - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1number__unsigned_01_4-members.html b/help/html/structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1number__unsigned_01_4-members.html deleted file mode 100644 index 4ce98c0..0000000 --- a/help/html/structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1number__unsigned_01_4-members.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    nlohmann::detail::external_constructor< value_t::number_unsigned > Member List
    -
    -
    - -

    This is the complete list of members for nlohmann::detail::external_constructor< value_t::number_unsigned >, including all inherited members.

    - - - -
    construct(BasicJsonType &j, typename BasicJsonType::number_unsigned_t val) noexceptnlohmann::detail::external_constructor< value_t::number_unsigned >inlinestatic
    construct(BasicJsonType &j, typename BasicJsonType::number_unsigned_t val) noexceptnlohmann::detail::external_constructor< value_t::number_unsigned >inlinestatic
    - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1number__unsigned_01_4.html b/help/html/structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1number__unsigned_01_4.html deleted file mode 100644 index 0cfde94..0000000 --- a/help/html/structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1number__unsigned_01_4.html +++ /dev/null @@ -1,175 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::external_constructor< value_t::number_unsigned > Struct Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    nlohmann::detail::external_constructor< value_t::number_unsigned > Struct Reference
    -
    -
    - -

    #include <json.hpp>

    - - - - - - - - -

    -Static Public Member Functions

    template<typename BasicJsonType >
    static void construct (BasicJsonType &j, typename BasicJsonType::number_unsigned_t val) noexcept
     
    template<typename BasicJsonType >
    static void construct (BasicJsonType &j, typename BasicJsonType::number_unsigned_t val) noexcept
     
    -

    Member Function Documentation

    - -

    ◆ construct() [1/2]

    - -
    -
    -
    -template<typename BasicJsonType >
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    static void nlohmann::detail::external_constructor< value_t::number_unsigned >::construct (BasicJsonType & j,
    typename BasicJsonType::number_unsigned_t val 
    )
    -
    -inlinestaticnoexcept
    -
    - -
    -
    - -

    ◆ construct() [2/2]

    - -
    -
    -
    -template<typename BasicJsonType >
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    static void nlohmann::detail::external_constructor< value_t::number_unsigned >::construct (BasicJsonType & j,
    typename BasicJsonType::number_unsigned_t val 
    )
    -
    -inlinestaticnoexcept
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • build/_deps/json-src/include/nlohmann/json.hpp
    • -
    -
    - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1object_01_4-members.html b/help/html/structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1object_01_4-members.html deleted file mode 100644 index c42d86f..0000000 --- a/help/html/structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1object_01_4-members.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    nlohmann::detail::external_constructor< value_t::object > Member List
    -
    -
    - -

    This is the complete list of members for nlohmann::detail::external_constructor< value_t::object >, including all inherited members.

    - - - - - - - -
    construct(BasicJsonType &j, const typename BasicJsonType::object_t &obj)nlohmann::detail::external_constructor< value_t::object >inlinestatic
    construct(BasicJsonType &j, typename BasicJsonType::object_t &&obj)nlohmann::detail::external_constructor< value_t::object >inlinestatic
    construct(BasicJsonType &j, const CompatibleObjectType &obj)nlohmann::detail::external_constructor< value_t::object >inlinestatic
    construct(BasicJsonType &j, const typename BasicJsonType::object_t &obj)nlohmann::detail::external_constructor< value_t::object >inlinestatic
    construct(BasicJsonType &j, typename BasicJsonType::object_t &&obj)nlohmann::detail::external_constructor< value_t::object >inlinestatic
    construct(BasicJsonType &j, const CompatibleObjectType &obj)nlohmann::detail::external_constructor< value_t::object >inlinestatic
    - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1object_01_4.html b/help/html/structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1object_01_4.html deleted file mode 100644 index c2c9d2e..0000000 --- a/help/html/structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1object_01_4.html +++ /dev/null @@ -1,339 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::external_constructor< value_t::object > Struct Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    nlohmann::detail::external_constructor< value_t::object > Struct Reference
    -
    -
    - -

    #include <json.hpp>

    - - - - - - - - - - - - - - - - - - - - -

    -Static Public Member Functions

    template<typename BasicJsonType >
    static void construct (BasicJsonType &j, const typename BasicJsonType::object_t &obj)
     
    template<typename BasicJsonType >
    static void construct (BasicJsonType &j, typename BasicJsonType::object_t &&obj)
     
    template<typename BasicJsonType , typename CompatibleObjectType , enable_if_t< not std::is_same< CompatibleObjectType, typename BasicJsonType::object_t >::value, int > = 0>
    static void construct (BasicJsonType &j, const CompatibleObjectType &obj)
     
    template<typename BasicJsonType >
    static void construct (BasicJsonType &j, const typename BasicJsonType::object_t &obj)
     
    template<typename BasicJsonType >
    static void construct (BasicJsonType &j, typename BasicJsonType::object_t &&obj)
     
    template<typename BasicJsonType , typename CompatibleObjectType , enable_if_t< !std::is_same< CompatibleObjectType, typename BasicJsonType::object_t >::value, int > = 0>
    static void construct (BasicJsonType &j, const CompatibleObjectType &obj)
     
    -

    Member Function Documentation

    - -

    ◆ construct() [1/6]

    - -
    -
    -
    -template<typename BasicJsonType , typename CompatibleObjectType , enable_if_t< not std::is_same< CompatibleObjectType, typename BasicJsonType::object_t >::value, int > = 0>
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    static void nlohmann::detail::external_constructor< value_t::object >::construct (BasicJsonType & j,
    const CompatibleObjectType & obj 
    )
    -
    -inlinestatic
    -
    - -
    -
    - -

    ◆ construct() [2/6]

    - -
    -
    -
    -template<typename BasicJsonType , typename CompatibleObjectType , enable_if_t< !std::is_same< CompatibleObjectType, typename BasicJsonType::object_t >::value, int > = 0>
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    static void nlohmann::detail::external_constructor< value_t::object >::construct (BasicJsonType & j,
    const CompatibleObjectType & obj 
    )
    -
    -inlinestatic
    -
    - -
    -
    - -

    ◆ construct() [3/6]

    - -
    -
    -
    -template<typename BasicJsonType >
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    static void nlohmann::detail::external_constructor< value_t::object >::construct (BasicJsonType & j,
    const typename BasicJsonType::object_t & obj 
    )
    -
    -inlinestatic
    -
    - -
    -
    - -

    ◆ construct() [4/6]

    - -
    -
    -
    -template<typename BasicJsonType >
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    static void nlohmann::detail::external_constructor< value_t::object >::construct (BasicJsonType & j,
    const typename BasicJsonType::object_t & obj 
    )
    -
    -inlinestatic
    -
    - -
    -
    - -

    ◆ construct() [5/6]

    - -
    -
    -
    -template<typename BasicJsonType >
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    static void nlohmann::detail::external_constructor< value_t::object >::construct (BasicJsonType & j,
    typename BasicJsonType::object_t && obj 
    )
    -
    -inlinestatic
    -
    - -
    -
    - -

    ◆ construct() [6/6]

    - -
    -
    -
    -template<typename BasicJsonType >
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    static void nlohmann::detail::external_constructor< value_t::object >::construct (BasicJsonType & j,
    typename BasicJsonType::object_t && obj 
    )
    -
    -inlinestatic
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • build/_deps/json-src/include/nlohmann/json.hpp
    • -
    -
    - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1string_01_4-members.html b/help/html/structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1string_01_4-members.html deleted file mode 100644 index 2178719..0000000 --- a/help/html/structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1string_01_4-members.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    nlohmann::detail::external_constructor< value_t::string > Member List
    -
    -
    - -

    This is the complete list of members for nlohmann::detail::external_constructor< value_t::string >, including all inherited members.

    - - - - - - - -
    construct(BasicJsonType &j, const typename BasicJsonType::string_t &s)nlohmann::detail::external_constructor< value_t::string >inlinestatic
    construct(BasicJsonType &j, typename BasicJsonType::string_t &&s)nlohmann::detail::external_constructor< value_t::string >inlinestatic
    construct(BasicJsonType &j, const CompatibleStringType &str)nlohmann::detail::external_constructor< value_t::string >inlinestatic
    construct(BasicJsonType &j, const typename BasicJsonType::string_t &s)nlohmann::detail::external_constructor< value_t::string >inlinestatic
    construct(BasicJsonType &j, typename BasicJsonType::string_t &&s)nlohmann::detail::external_constructor< value_t::string >inlinestatic
    construct(BasicJsonType &j, const CompatibleStringType &str)nlohmann::detail::external_constructor< value_t::string >inlinestatic
    - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1string_01_4.html b/help/html/structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1string_01_4.html deleted file mode 100644 index 4d08576..0000000 --- a/help/html/structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1string_01_4.html +++ /dev/null @@ -1,339 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::external_constructor< value_t::string > Struct Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    nlohmann::detail::external_constructor< value_t::string > Struct Reference
    -
    -
    - -

    #include <json.hpp>

    - - - - - - - - - - - - - - - - - - - - -

    -Static Public Member Functions

    template<typename BasicJsonType >
    static void construct (BasicJsonType &j, const typename BasicJsonType::string_t &s)
     
    template<typename BasicJsonType >
    static void construct (BasicJsonType &j, typename BasicJsonType::string_t &&s)
     
    template<typename BasicJsonType , typename CompatibleStringType , enable_if_t< not std::is_same< CompatibleStringType, typename BasicJsonType::string_t >::value, int > = 0>
    static void construct (BasicJsonType &j, const CompatibleStringType &str)
     
    template<typename BasicJsonType >
    static void construct (BasicJsonType &j, const typename BasicJsonType::string_t &s)
     
    template<typename BasicJsonType >
    static void construct (BasicJsonType &j, typename BasicJsonType::string_t &&s)
     
    template<typename BasicJsonType , typename CompatibleStringType , enable_if_t< !std::is_same< CompatibleStringType, typename BasicJsonType::string_t >::value, int > = 0>
    static void construct (BasicJsonType &j, const CompatibleStringType &str)
     
    -

    Member Function Documentation

    - -

    ◆ construct() [1/6]

    - -
    -
    -
    -template<typename BasicJsonType , typename CompatibleStringType , enable_if_t< not std::is_same< CompatibleStringType, typename BasicJsonType::string_t >::value, int > = 0>
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    static void nlohmann::detail::external_constructor< value_t::string >::construct (BasicJsonType & j,
    const CompatibleStringType & str 
    )
    -
    -inlinestatic
    -
    - -
    -
    - -

    ◆ construct() [2/6]

    - -
    -
    -
    -template<typename BasicJsonType , typename CompatibleStringType , enable_if_t< !std::is_same< CompatibleStringType, typename BasicJsonType::string_t >::value, int > = 0>
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    static void nlohmann::detail::external_constructor< value_t::string >::construct (BasicJsonType & j,
    const CompatibleStringType & str 
    )
    -
    -inlinestatic
    -
    - -
    -
    - -

    ◆ construct() [3/6]

    - -
    -
    -
    -template<typename BasicJsonType >
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    static void nlohmann::detail::external_constructor< value_t::string >::construct (BasicJsonType & j,
    const typename BasicJsonType::string_t & s 
    )
    -
    -inlinestatic
    -
    - -
    -
    - -

    ◆ construct() [4/6]

    - -
    -
    -
    -template<typename BasicJsonType >
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    static void nlohmann::detail::external_constructor< value_t::string >::construct (BasicJsonType & j,
    const typename BasicJsonType::string_t & s 
    )
    -
    -inlinestatic
    -
    - -
    -
    - -

    ◆ construct() [5/6]

    - -
    -
    -
    -template<typename BasicJsonType >
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    static void nlohmann::detail::external_constructor< value_t::string >::construct (BasicJsonType & j,
    typename BasicJsonType::string_t && s 
    )
    -
    -inlinestatic
    -
    - -
    -
    - -

    ◆ construct() [6/6]

    - -
    -
    -
    -template<typename BasicJsonType >
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    static void nlohmann::detail::external_constructor< value_t::string >::construct (BasicJsonType & j,
    typename BasicJsonType::string_t && s 
    )
    -
    -inlinestatic
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • build/_deps/json-src/include/nlohmann/json.hpp
    • -
    -
    - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1from__json__fn-members.html b/help/html/structnlohmann_1_1detail_1_1from__json__fn-members.html deleted file mode 100644 index 8ccfb0f..0000000 --- a/help/html/structnlohmann_1_1detail_1_1from__json__fn-members.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    nlohmann::detail::from_json_fn Member List
    -
    -
    - -

    This is the complete list of members for nlohmann::detail::from_json_fn, including all inherited members.

    - - - -
    operator()(const BasicJsonType &j, T &val) const noexcept(noexcept(from_json(j, val))) -> decltype(from_json(j, val), void())nlohmann::detail::from_json_fninline
    operator()(const BasicJsonType &j, T &val) const noexcept(noexcept(from_json(j, val))) -> decltype(from_json(j, val), void())nlohmann::detail::from_json_fninline
    - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1from__json__fn.html b/help/html/structnlohmann_1_1detail_1_1from__json__fn.html deleted file mode 100644 index e05a7c1..0000000 --- a/help/html/structnlohmann_1_1detail_1_1from__json__fn.html +++ /dev/null @@ -1,177 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::from_json_fn Struct Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    nlohmann::detail::from_json_fn Struct Reference
    -
    -
    - -

    #include <json.hpp>

    - - - - - - - - -

    -Public Member Functions

    template<typename BasicJsonType , typename T >
    auto operator() (const BasicJsonType &j, T &val) const noexcept(noexcept(from_json(j, val))) -> decltype(from_json(j, val), void())
     
    template<typename BasicJsonType , typename T >
    auto operator() (const BasicJsonType &j, T &val) const noexcept(noexcept(from_json(j, val))) -> decltype(from_json(j, val), void())
     
    -

    Member Function Documentation

    - -

    ◆ operator()() [1/2]

    - -
    -
    -
    -template<typename BasicJsonType , typename T >
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    auto nlohmann::detail::from_json_fn::operator() (const BasicJsonType & j,
    T & val 
    ) const -> decltype(from_json(j, val), void()) -
    -
    -inlinenoexcept
    -
    - -
    -
    - -

    ◆ operator()() [2/2]

    - -
    -
    -
    -template<typename BasicJsonType , typename T >
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    auto nlohmann::detail::from_json_fn::operator() (const BasicJsonType & j,
    T & val 
    ) const -> decltype(from_json(j, val), void()) -
    -
    -inlinenoexcept
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • build/_deps/json-src/include/nlohmann/json.hpp
    • -
    -
    - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1has__from__json.html b/help/html/structnlohmann_1_1detail_1_1has__from__json.html deleted file mode 100644 index aefe0a3..0000000 --- a/help/html/structnlohmann_1_1detail_1_1has__from__json.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::has_from_json< BasicJsonType, T, typename > Struct Template Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    nlohmann::detail::has_from_json< BasicJsonType, T, typename > Struct Template Reference
    -
    -
    - -

    #include <json.hpp>

    -
    -Inheritance diagram for nlohmann::detail::has_from_json< BasicJsonType, T, typename >:
    -
    -
    Inheritance graph
    - - - - -
    [legend]
    -
    -Collaboration diagram for nlohmann::detail::has_from_json< BasicJsonType, T, typename >:
    -
    -
    Collaboration graph
    - - - - -
    [legend]
    -
    The documentation for this struct was generated from the following file:
      -
    • build/_deps/json-src/include/nlohmann/json.hpp
    • -
    -
    - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1has__from__json_3_01BasicJsonType_00_01T_00_01enable__if__t_3_01_9is3ee028c64c76c768be45996bb13fc9c5.html b/help/html/structnlohmann_1_1detail_1_1has__from__json_3_01BasicJsonType_00_01T_00_01enable__if__t_3_01_9is3ee028c64c76c768be45996bb13fc9c5.html deleted file mode 100644 index 1b9d4ac..0000000 --- a/help/html/structnlohmann_1_1detail_1_1has__from__json_3_01BasicJsonType_00_01T_00_01enable__if__t_3_01_9is3ee028c64c76c768be45996bb13fc9c5.html +++ /dev/null @@ -1,150 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::has_from_json< BasicJsonType, T, enable_if_t< !is_basic_json< T >::value > > Struct Template Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    nlohmann::detail::has_from_json< BasicJsonType, T, enable_if_t< !is_basic_json< T >::value > > Struct Template Reference
    -
    -
    - -

    #include <json.hpp>

    - - - - -

    -Public Types

    using serializer = typename BasicJsonType::template json_serializer< T, void >
     
    - - - -

    -Static Public Attributes

    static constexpr bool value
     
    -

    Member Typedef Documentation

    - -

    ◆ serializer

    - -
    -
    -
    -template<typename BasicJsonType , typename T >
    - - - - -
    using nlohmann::detail::has_from_json< BasicJsonType, T, enable_if_t< !is_basic_json< T >::value > >::serializer = typename BasicJsonType::template json_serializer<T, void>
    -
    - -
    -
    -

    Member Data Documentation

    - -

    ◆ value

    - -
    -
    -
    -template<typename BasicJsonType , typename T >
    - - - - - -
    - - - - -
    constexpr bool nlohmann::detail::has_from_json< BasicJsonType, T, enable_if_t< !is_basic_json< T >::value > >::value
    -
    -staticconstexpr
    -
    -Initial value:
    =
    - -
    const BasicJsonType&, T&>::value
    -
    -
    -
    -
    The documentation for this struct was generated from the following file: -
    - -
    typename BasicJsonType::template json_serializer< T, void > serializer
    Definition: json.hpp:3050
    -
    j template void())
    Definition: json.hpp:3108
    -
    decltype(T::from_json(std::declval< Args >()...)) from_json_function
    Definition: json.hpp:2513
    -
    std::is_same< Expected, detected_t< Op, Args... > > is_detected_exact
    Definition: json.hpp:2376
    - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1has__from__json_3_01BasicJsonType_00_01T_00_01enable__if__t_3_01_9isde16438fb15ffe82c953e808bb44e8bf.html b/help/html/structnlohmann_1_1detail_1_1has__from__json_3_01BasicJsonType_00_01T_00_01enable__if__t_3_01_9isde16438fb15ffe82c953e808bb44e8bf.html deleted file mode 100644 index 8fe6180..0000000 --- a/help/html/structnlohmann_1_1detail_1_1has__from__json_3_01BasicJsonType_00_01T_00_01enable__if__t_3_01_9isde16438fb15ffe82c953e808bb44e8bf.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    nlohmann::detail::has_from_json< BasicJsonType, T, enable_if_t< !is_basic_json< T >::value > > Member List
    -
    - - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1has__from__json_3_01BasicJsonType_00_01T_00_01enable__if__t_3_01not_43514980991ae140f327ade8e98a8a39.html b/help/html/structnlohmann_1_1detail_1_1has__from__json_3_01BasicJsonType_00_01T_00_01enable__if__t_3_01not_43514980991ae140f327ade8e98a8a39.html deleted file mode 100644 index f2f43c2..0000000 --- a/help/html/structnlohmann_1_1detail_1_1has__from__json_3_01BasicJsonType_00_01T_00_01enable__if__t_3_01not_43514980991ae140f327ade8e98a8a39.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    nlohmann::detail::has_from_json< BasicJsonType, T, enable_if_t< not is_basic_json< T >::value > > Member List
    -
    - - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1has__from__json_3_01BasicJsonType_00_01T_00_01enable__if__t_3_01not_5e786a91cad76ed1c14f425887b41640.html b/help/html/structnlohmann_1_1detail_1_1has__from__json_3_01BasicJsonType_00_01T_00_01enable__if__t_3_01not_5e786a91cad76ed1c14f425887b41640.html deleted file mode 100644 index 44a2c55..0000000 --- a/help/html/structnlohmann_1_1detail_1_1has__from__json_3_01BasicJsonType_00_01T_00_01enable__if__t_3_01not_5e786a91cad76ed1c14f425887b41640.html +++ /dev/null @@ -1,150 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::has_from_json< BasicJsonType, T, enable_if_t< not is_basic_json< T >::value > > Struct Template Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    nlohmann::detail::has_from_json< BasicJsonType, T, enable_if_t< not is_basic_json< T >::value > > Struct Template Reference
    -
    -
    - -

    #include <json.hpp>

    - - - - -

    -Public Types

    using serializer = typename BasicJsonType::template json_serializer< T, void >
     
    - - - -

    -Static Public Attributes

    static constexpr bool value
     
    -

    Member Typedef Documentation

    - -

    ◆ serializer

    - -
    -
    -
    -template<typename BasicJsonType , typename T >
    - - - - -
    using nlohmann::detail::has_from_json< BasicJsonType, T, enable_if_t< not is_basic_json< T >::value > >::serializer = typename BasicJsonType::template json_serializer<T, void>
    -
    - -
    -
    -

    Member Data Documentation

    - -

    ◆ value

    - -
    -
    -
    -template<typename BasicJsonType , typename T >
    - - - - - -
    - - - - -
    constexpr bool nlohmann::detail::has_from_json< BasicJsonType, T, enable_if_t< not is_basic_json< T >::value > >::value
    -
    -staticconstexpr
    -
    -Initial value:
    =
    - -
    const BasicJsonType&, T&>::value
    -
    -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • build/_deps/json-src/include/nlohmann/json.hpp
    • -
    -
    -
    typename BasicJsonType::template json_serializer< T, void > serializer
    Definition: json.hpp:2526
    -
    j template void())
    Definition: json.hpp:3108
    - -
    decltype(T::from_json(std::declval< Args >()...)) from_json_function
    Definition: json.hpp:2513
    -
    std::is_same< Expected, detected_t< Op, Args... > > is_detected_exact
    Definition: json.hpp:2376
    - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1has__from__json__coll__graph.map b/help/html/structnlohmann_1_1detail_1_1has__from__json__coll__graph.map deleted file mode 100644 index 910ecb7..0000000 --- a/help/html/structnlohmann_1_1detail_1_1has__from__json__coll__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1has__from__json__coll__graph.md5 b/help/html/structnlohmann_1_1detail_1_1has__from__json__coll__graph.md5 deleted file mode 100644 index 74cca75..0000000 --- a/help/html/structnlohmann_1_1detail_1_1has__from__json__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -d41ea6fea50f4c16ae20fe76efb6c3ce \ No newline at end of file diff --git a/help/html/structnlohmann_1_1detail_1_1has__from__json__coll__graph.png b/help/html/structnlohmann_1_1detail_1_1has__from__json__coll__graph.png deleted file mode 100644 index 12bf096..0000000 Binary files a/help/html/structnlohmann_1_1detail_1_1has__from__json__coll__graph.png and /dev/null differ diff --git a/help/html/structnlohmann_1_1detail_1_1has__from__json__inherit__graph.map b/help/html/structnlohmann_1_1detail_1_1has__from__json__inherit__graph.map deleted file mode 100644 index 910ecb7..0000000 --- a/help/html/structnlohmann_1_1detail_1_1has__from__json__inherit__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1has__from__json__inherit__graph.md5 b/help/html/structnlohmann_1_1detail_1_1has__from__json__inherit__graph.md5 deleted file mode 100644 index 74cca75..0000000 --- a/help/html/structnlohmann_1_1detail_1_1has__from__json__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -d41ea6fea50f4c16ae20fe76efb6c3ce \ No newline at end of file diff --git a/help/html/structnlohmann_1_1detail_1_1has__from__json__inherit__graph.png b/help/html/structnlohmann_1_1detail_1_1has__from__json__inherit__graph.png deleted file mode 100644 index 12bf096..0000000 Binary files a/help/html/structnlohmann_1_1detail_1_1has__from__json__inherit__graph.png and /dev/null differ diff --git a/help/html/structnlohmann_1_1detail_1_1has__non__default__from__json.html b/help/html/structnlohmann_1_1detail_1_1has__non__default__from__json.html deleted file mode 100644 index aeacece..0000000 --- a/help/html/structnlohmann_1_1detail_1_1has__non__default__from__json.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::has_non_default_from_json< BasicJsonType, T, typename > Struct Template Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    nlohmann::detail::has_non_default_from_json< BasicJsonType, T, typename > Struct Template Reference
    -
    -
    - -

    #include <json.hpp>

    -
    -Inheritance diagram for nlohmann::detail::has_non_default_from_json< BasicJsonType, T, typename >:
    -
    -
    Inheritance graph
    - - - - -
    [legend]
    -
    -Collaboration diagram for nlohmann::detail::has_non_default_from_json< BasicJsonType, T, typename >:
    -
    -
    Collaboration graph
    - - - - -
    [legend]
    -
    The documentation for this struct was generated from the following file:
      -
    • build/_deps/json-src/include/nlohmann/json.hpp
    • -
    -
    - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1has__non__default__from__json_3_01BasicJsonType_00_01T_00_01enable__77fa4a66bcd4ad6a4833327a7a0f101c.html b/help/html/structnlohmann_1_1detail_1_1has__non__default__from__json_3_01BasicJsonType_00_01T_00_01enable__77fa4a66bcd4ad6a4833327a7a0f101c.html deleted file mode 100644 index 708e418..0000000 --- a/help/html/structnlohmann_1_1detail_1_1has__non__default__from__json_3_01BasicJsonType_00_01T_00_01enable__77fa4a66bcd4ad6a4833327a7a0f101c.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    nlohmann::detail::has_non_default_from_json< BasicJsonType, T, enable_if_t< not is_basic_json< T >::value > > Member List
    -
    - - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1has__non__default__from__json_3_01BasicJsonType_00_01T_00_01enable__a9e4562f31f7ed523e6e0f675606b0f2.html b/help/html/structnlohmann_1_1detail_1_1has__non__default__from__json_3_01BasicJsonType_00_01T_00_01enable__a9e4562f31f7ed523e6e0f675606b0f2.html deleted file mode 100644 index e815cd0..0000000 --- a/help/html/structnlohmann_1_1detail_1_1has__non__default__from__json_3_01BasicJsonType_00_01T_00_01enable__a9e4562f31f7ed523e6e0f675606b0f2.html +++ /dev/null @@ -1,149 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::has_non_default_from_json< BasicJsonType, T, enable_if_t< not is_basic_json< T >::value > > Struct Template Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    nlohmann::detail::has_non_default_from_json< BasicJsonType, T, enable_if_t< not is_basic_json< T >::value > > Struct Template Reference
    -
    -
    - -

    #include <json.hpp>

    - - - - -

    -Public Types

    using serializer = typename BasicJsonType::template json_serializer< T, void >
     
    - - - -

    -Static Public Attributes

    static constexpr bool value
     
    -

    Member Typedef Documentation

    - -

    ◆ serializer

    - -
    -
    -
    -template<typename BasicJsonType , typename T >
    - - - - -
    using nlohmann::detail::has_non_default_from_json< BasicJsonType, T, enable_if_t< not is_basic_json< T >::value > >::serializer = typename BasicJsonType::template json_serializer<T, void>
    -
    - -
    -
    -

    Member Data Documentation

    - -

    ◆ value

    - -
    -
    -
    -template<typename BasicJsonType , typename T >
    - - - - - -
    - - - - -
    constexpr bool nlohmann::detail::has_non_default_from_json< BasicJsonType, T, enable_if_t< not is_basic_json< T >::value > >::value
    -
    -staticconstexpr
    -
    -Initial value:
    =
    - -
    const BasicJsonType&>::value
    -
    -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • build/_deps/json-src/include/nlohmann/json.hpp
    • -
    -
    - -
    decltype(T::from_json(std::declval< Args >()...)) from_json_function
    Definition: json.hpp:2513
    -
    typename BasicJsonType::template json_serializer< T, void > serializer
    Definition: json.hpp:2541
    -
    std::is_same< Expected, detected_t< Op, Args... > > is_detected_exact
    Definition: json.hpp:2376
    - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1has__non__default__from__json_3_01BasicJsonType_00_01T_00_01enable__b7a8cd863889b54d1139b207b4233111.html b/help/html/structnlohmann_1_1detail_1_1has__non__default__from__json_3_01BasicJsonType_00_01T_00_01enable__b7a8cd863889b54d1139b207b4233111.html deleted file mode 100644 index 1478e64..0000000 --- a/help/html/structnlohmann_1_1detail_1_1has__non__default__from__json_3_01BasicJsonType_00_01T_00_01enable__b7a8cd863889b54d1139b207b4233111.html +++ /dev/null @@ -1,149 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::has_non_default_from_json< BasicJsonType, T, enable_if_t< !is_basic_json< T >::value > > Struct Template Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    nlohmann::detail::has_non_default_from_json< BasicJsonType, T, enable_if_t< !is_basic_json< T >::value > > Struct Template Reference
    -
    -
    - -

    #include <json.hpp>

    - - - - -

    -Public Types

    using serializer = typename BasicJsonType::template json_serializer< T, void >
     
    - - - -

    -Static Public Attributes

    static constexpr bool value
     
    -

    Member Typedef Documentation

    - -

    ◆ serializer

    - -
    -
    -
    -template<typename BasicJsonType , typename T >
    - - - - -
    using nlohmann::detail::has_non_default_from_json< BasicJsonType, T, enable_if_t< !is_basic_json< T >::value > >::serializer = typename BasicJsonType::template json_serializer<T, void>
    -
    - -
    -
    -

    Member Data Documentation

    - -

    ◆ value

    - -
    -
    -
    -template<typename BasicJsonType , typename T >
    - - - - - -
    - - - - -
    constexpr bool nlohmann::detail::has_non_default_from_json< BasicJsonType, T, enable_if_t< !is_basic_json< T >::value > >::value
    -
    -staticconstexpr
    -
    -Initial value:
    =
    - -
    const BasicJsonType&>::value
    -
    -
    -
    -
    The documentation for this struct was generated from the following file: -
    - -
    decltype(T::from_json(std::declval< Args >()...)) from_json_function
    Definition: json.hpp:2513
    -
    typename BasicJsonType::template json_serializer< T, void > serializer
    Definition: json.hpp:3065
    -
    std::is_same< Expected, detected_t< Op, Args... > > is_detected_exact
    Definition: json.hpp:2376
    - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1has__non__default__from__json_3_01BasicJsonType_00_01T_00_01enable__e5da58796d1ad6035f3ae6423b3ecf82.html b/help/html/structnlohmann_1_1detail_1_1has__non__default__from__json_3_01BasicJsonType_00_01T_00_01enable__e5da58796d1ad6035f3ae6423b3ecf82.html deleted file mode 100644 index 89c78b7..0000000 --- a/help/html/structnlohmann_1_1detail_1_1has__non__default__from__json_3_01BasicJsonType_00_01T_00_01enable__e5da58796d1ad6035f3ae6423b3ecf82.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    nlohmann::detail::has_non_default_from_json< BasicJsonType, T, enable_if_t< !is_basic_json< T >::value > > Member List
    -
    - - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1has__non__default__from__json__coll__graph.map b/help/html/structnlohmann_1_1detail_1_1has__non__default__from__json__coll__graph.map deleted file mode 100644 index 1e17480..0000000 --- a/help/html/structnlohmann_1_1detail_1_1has__non__default__from__json__coll__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1has__non__default__from__json__coll__graph.md5 b/help/html/structnlohmann_1_1detail_1_1has__non__default__from__json__coll__graph.md5 deleted file mode 100644 index 306077d..0000000 --- a/help/html/structnlohmann_1_1detail_1_1has__non__default__from__json__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -b124105c605aaa65a41a681f163c3c37 \ No newline at end of file diff --git a/help/html/structnlohmann_1_1detail_1_1has__non__default__from__json__coll__graph.png b/help/html/structnlohmann_1_1detail_1_1has__non__default__from__json__coll__graph.png deleted file mode 100644 index 60be5ee..0000000 Binary files a/help/html/structnlohmann_1_1detail_1_1has__non__default__from__json__coll__graph.png and /dev/null differ diff --git a/help/html/structnlohmann_1_1detail_1_1has__non__default__from__json__inherit__graph.map b/help/html/structnlohmann_1_1detail_1_1has__non__default__from__json__inherit__graph.map deleted file mode 100644 index 1e17480..0000000 --- a/help/html/structnlohmann_1_1detail_1_1has__non__default__from__json__inherit__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1has__non__default__from__json__inherit__graph.md5 b/help/html/structnlohmann_1_1detail_1_1has__non__default__from__json__inherit__graph.md5 deleted file mode 100644 index 306077d..0000000 --- a/help/html/structnlohmann_1_1detail_1_1has__non__default__from__json__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -b124105c605aaa65a41a681f163c3c37 \ No newline at end of file diff --git a/help/html/structnlohmann_1_1detail_1_1has__non__default__from__json__inherit__graph.png b/help/html/structnlohmann_1_1detail_1_1has__non__default__from__json__inherit__graph.png deleted file mode 100644 index 60be5ee..0000000 Binary files a/help/html/structnlohmann_1_1detail_1_1has__non__default__from__json__inherit__graph.png and /dev/null differ diff --git a/help/html/structnlohmann_1_1detail_1_1has__to__json.html b/help/html/structnlohmann_1_1detail_1_1has__to__json.html deleted file mode 100644 index 52ee990..0000000 --- a/help/html/structnlohmann_1_1detail_1_1has__to__json.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::has_to_json< BasicJsonType, T, typename > Struct Template Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    nlohmann::detail::has_to_json< BasicJsonType, T, typename > Struct Template Reference
    -
    -
    - -

    #include <json.hpp>

    -
    -Inheritance diagram for nlohmann::detail::has_to_json< BasicJsonType, T, typename >:
    -
    -
    Inheritance graph
    - - - - -
    [legend]
    -
    -Collaboration diagram for nlohmann::detail::has_to_json< BasicJsonType, T, typename >:
    -
    -
    Collaboration graph
    - - - - -
    [legend]
    -
    The documentation for this struct was generated from the following file:
      -
    • build/_deps/json-src/include/nlohmann/json.hpp
    • -
    -
    - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1has__to__json_3_01BasicJsonType_00_01T_00_01enable__if__t_3_01_9is__4a8838c1c30336126696a126041e661c.html b/help/html/structnlohmann_1_1detail_1_1has__to__json_3_01BasicJsonType_00_01T_00_01enable__if__t_3_01_9is__4a8838c1c30336126696a126041e661c.html deleted file mode 100644 index 285ff75..0000000 --- a/help/html/structnlohmann_1_1detail_1_1has__to__json_3_01BasicJsonType_00_01T_00_01enable__if__t_3_01_9is__4a8838c1c30336126696a126041e661c.html +++ /dev/null @@ -1,150 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::has_to_json< BasicJsonType, T, enable_if_t< !is_basic_json< T >::value > > Struct Template Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    nlohmann::detail::has_to_json< BasicJsonType, T, enable_if_t< !is_basic_json< T >::value > > Struct Template Reference
    -
    -
    - -

    #include <json.hpp>

    - - - - -

    -Public Types

    using serializer = typename BasicJsonType::template json_serializer< T, void >
     
    - - - -

    -Static Public Attributes

    static constexpr bool value
     
    -

    Member Typedef Documentation

    - -

    ◆ serializer

    - -
    -
    -
    -template<typename BasicJsonType , typename T >
    - - - - -
    using nlohmann::detail::has_to_json< BasicJsonType, T, enable_if_t< !is_basic_json< T >::value > >::serializer = typename BasicJsonType::template json_serializer<T, void>
    -
    - -
    -
    -

    Member Data Documentation

    - -

    ◆ value

    - -
    -
    -
    -template<typename BasicJsonType , typename T >
    - - - - - -
    - - - - -
    constexpr bool nlohmann::detail::has_to_json< BasicJsonType, T, enable_if_t< !is_basic_json< T >::value > >::value
    -
    -staticconstexpr
    -
    -Initial value: -
    -
    -
    The documentation for this struct was generated from the following file: -
    -
    typename BasicJsonType::template json_serializer< T, void > serializer
    Definition: json.hpp:3080
    - -
    j template void())
    Definition: json.hpp:3108
    -
    decltype(T::to_json(std::declval< Args >()...)) to_json_function
    Definition: json.hpp:2510
    -
    std::is_same< Expected, detected_t< Op, Args... > > is_detected_exact
    Definition: json.hpp:2376
    - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1has__to__json_3_01BasicJsonType_00_01T_00_01enable__if__t_3_01_9is__944b66130848f3165eb5e28ba04c888e.html b/help/html/structnlohmann_1_1detail_1_1has__to__json_3_01BasicJsonType_00_01T_00_01enable__if__t_3_01_9is__944b66130848f3165eb5e28ba04c888e.html deleted file mode 100644 index bfe3eac..0000000 --- a/help/html/structnlohmann_1_1detail_1_1has__to__json_3_01BasicJsonType_00_01T_00_01enable__if__t_3_01_9is__944b66130848f3165eb5e28ba04c888e.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    nlohmann::detail::has_to_json< BasicJsonType, T, enable_if_t< !is_basic_json< T >::value > > Member List
    -
    - - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1has__to__json_3_01BasicJsonType_00_01T_00_01enable__if__t_3_01not_0145fd0aefe65a4b2c55996f981ba800f0.html b/help/html/structnlohmann_1_1detail_1_1has__to__json_3_01BasicJsonType_00_01T_00_01enable__if__t_3_01not_0145fd0aefe65a4b2c55996f981ba800f0.html deleted file mode 100644 index 69a4402..0000000 --- a/help/html/structnlohmann_1_1detail_1_1has__to__json_3_01BasicJsonType_00_01T_00_01enable__if__t_3_01not_0145fd0aefe65a4b2c55996f981ba800f0.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    nlohmann::detail::has_to_json< BasicJsonType, T, enable_if_t< not is_basic_json< T >::value > > Member List
    -
    - - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1has__to__json_3_01BasicJsonType_00_01T_00_01enable__if__t_3_01not_01737900a749c335e922e2f74e2face5e4.html b/help/html/structnlohmann_1_1detail_1_1has__to__json_3_01BasicJsonType_00_01T_00_01enable__if__t_3_01not_01737900a749c335e922e2f74e2face5e4.html deleted file mode 100644 index 25edc38..0000000 --- a/help/html/structnlohmann_1_1detail_1_1has__to__json_3_01BasicJsonType_00_01T_00_01enable__if__t_3_01not_01737900a749c335e922e2f74e2face5e4.html +++ /dev/null @@ -1,150 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::has_to_json< BasicJsonType, T, enable_if_t< not is_basic_json< T >::value > > Struct Template Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    nlohmann::detail::has_to_json< BasicJsonType, T, enable_if_t< not is_basic_json< T >::value > > Struct Template Reference
    -
    -
    - -

    #include <json.hpp>

    - - - - -

    -Public Types

    using serializer = typename BasicJsonType::template json_serializer< T, void >
     
    - - - -

    -Static Public Attributes

    static constexpr bool value
     
    -

    Member Typedef Documentation

    - -

    ◆ serializer

    - -
    -
    -
    -template<typename BasicJsonType , typename T >
    - - - - -
    using nlohmann::detail::has_to_json< BasicJsonType, T, enable_if_t< not is_basic_json< T >::value > >::serializer = typename BasicJsonType::template json_serializer<T, void>
    -
    - -
    -
    -

    Member Data Documentation

    - -

    ◆ value

    - -
    -
    -
    -template<typename BasicJsonType , typename T >
    - - - - - -
    - - - - -
    constexpr bool nlohmann::detail::has_to_json< BasicJsonType, T, enable_if_t< not is_basic_json< T >::value > >::value
    -
    -staticconstexpr
    -
    -Initial value: -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • build/_deps/json-src/include/nlohmann/json.hpp
    • -
    -
    - -
    j template void())
    Definition: json.hpp:3108
    -
    decltype(T::to_json(std::declval< Args >()...)) to_json_function
    Definition: json.hpp:2510
    -
    typename BasicJsonType::template json_serializer< T, void > serializer
    Definition: json.hpp:2556
    -
    std::is_same< Expected, detected_t< Op, Args... > > is_detected_exact
    Definition: json.hpp:2376
    - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1has__to__json__coll__graph.map b/help/html/structnlohmann_1_1detail_1_1has__to__json__coll__graph.map deleted file mode 100644 index ee6b337..0000000 --- a/help/html/structnlohmann_1_1detail_1_1has__to__json__coll__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1has__to__json__coll__graph.md5 b/help/html/structnlohmann_1_1detail_1_1has__to__json__coll__graph.md5 deleted file mode 100644 index b34202f..0000000 --- a/help/html/structnlohmann_1_1detail_1_1has__to__json__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -78e67ead035be471f09b7c85ebb1c886 \ No newline at end of file diff --git a/help/html/structnlohmann_1_1detail_1_1has__to__json__coll__graph.png b/help/html/structnlohmann_1_1detail_1_1has__to__json__coll__graph.png deleted file mode 100644 index 99e0524..0000000 Binary files a/help/html/structnlohmann_1_1detail_1_1has__to__json__coll__graph.png and /dev/null differ diff --git a/help/html/structnlohmann_1_1detail_1_1has__to__json__inherit__graph.map b/help/html/structnlohmann_1_1detail_1_1has__to__json__inherit__graph.map deleted file mode 100644 index ee6b337..0000000 --- a/help/html/structnlohmann_1_1detail_1_1has__to__json__inherit__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1has__to__json__inherit__graph.md5 b/help/html/structnlohmann_1_1detail_1_1has__to__json__inherit__graph.md5 deleted file mode 100644 index b34202f..0000000 --- a/help/html/structnlohmann_1_1detail_1_1has__to__json__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -78e67ead035be471f09b7c85ebb1c886 \ No newline at end of file diff --git a/help/html/structnlohmann_1_1detail_1_1has__to__json__inherit__graph.png b/help/html/structnlohmann_1_1detail_1_1has__to__json__inherit__graph.png deleted file mode 100644 index 99e0524..0000000 Binary files a/help/html/structnlohmann_1_1detail_1_1has__to__json__inherit__graph.png and /dev/null differ diff --git a/help/html/structnlohmann_1_1detail_1_1index__sequence-members.html b/help/html/structnlohmann_1_1detail_1_1index__sequence-members.html deleted file mode 100644 index a2e9c03..0000000 --- a/help/html/structnlohmann_1_1detail_1_1index__sequence-members.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    nlohmann::detail::index_sequence< Ints > Member List
    -
    - - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1index__sequence.html b/help/html/structnlohmann_1_1detail_1_1index__sequence.html deleted file mode 100644 index c1176b9..0000000 --- a/help/html/structnlohmann_1_1detail_1_1index__sequence.html +++ /dev/null @@ -1,228 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::index_sequence< Ints > Struct Template Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    nlohmann::detail::index_sequence< Ints > Struct Template Reference
    -
    -
    - -

    #include <json.hpp>

    - - - - - - - - - - -

    -Public Types

    using type = index_sequence
     
    using value_type = std::size_t
     
    using type = index_sequence
     
    using value_type = std::size_t
     
    - - - - - -

    -Static Public Member Functions

    static constexpr std::size_t size () noexcept
     
    static constexpr std::size_t size () noexcept
     
    -

    Member Typedef Documentation

    - -

    ◆ type [1/2]

    - -
    -
    -
    -template<std::size_t... Ints>
    - - - - -
    using nlohmann::detail::index_sequence< Ints >::type = index_sequence
    -
    - -
    -
    - -

    ◆ type [2/2]

    - -
    -
    -
    -template<std::size_t... Ints>
    - - - - -
    using nlohmann::detail::index_sequence< Ints >::type = index_sequence
    -
    - -
    -
    - -

    ◆ value_type [1/2]

    - -
    -
    -
    -template<std::size_t... Ints>
    - - - - -
    using nlohmann::detail::index_sequence< Ints >::value_type = std::size_t
    -
    - -
    -
    - -

    ◆ value_type [2/2]

    - -
    -
    -
    -template<std::size_t... Ints>
    - - - - -
    using nlohmann::detail::index_sequence< Ints >::value_type = std::size_t
    -
    - -
    -
    -

    Member Function Documentation

    - -

    ◆ size() [1/2]

    - -
    -
    -
    -template<std::size_t... Ints>
    - - - - - -
    - - - - - - - -
    static constexpr std::size_t nlohmann::detail::index_sequence< Ints >::size ()
    -
    -inlinestaticconstexprnoexcept
    -
    - -
    -
    - -

    ◆ size() [2/2]

    - -
    -
    -
    -template<std::size_t... Ints>
    - - - - - -
    - - - - - - - -
    static constexpr std::size_t nlohmann::detail::index_sequence< Ints >::size ()
    -
    -inlinestaticconstexprnoexcept
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • build/_deps/json-src/include/nlohmann/json.hpp
    • -
    -
    - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1input__adapter__protocol-members.html b/help/html/structnlohmann_1_1detail_1_1input__adapter__protocol-members.html deleted file mode 100644 index 6a55c0e..0000000 --- a/help/html/structnlohmann_1_1detail_1_1input__adapter__protocol-members.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    nlohmann::detail::input_adapter_protocol Member List
    -
    -
    - -

    This is the complete list of members for nlohmann::detail::input_adapter_protocol, including all inherited members.

    - - - -
    get_character()=0nlohmann::detail::input_adapter_protocolpure virtual
    ~input_adapter_protocol()=defaultnlohmann::detail::input_adapter_protocolvirtual
    - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1input__adapter__protocol.html b/help/html/structnlohmann_1_1detail_1_1input__adapter__protocol.html deleted file mode 100644 index 06152c7..0000000 --- a/help/html/structnlohmann_1_1detail_1_1input__adapter__protocol.html +++ /dev/null @@ -1,171 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::input_adapter_protocol Struct Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    nlohmann::detail::input_adapter_protocol Struct Referenceabstract
    -
    -
    - -

    abstract input adapter interface - More...

    - -

    #include <json.hpp>

    -
    -Inheritance diagram for nlohmann::detail::input_adapter_protocol:
    -
    -
    Inheritance graph
    - - - - - - - -
    [legend]
    - - - - - - - -

    -Public Member Functions

    virtual std::char_traits< char >::int_type get_character ()=0
     get a character [0,255] or std::char_traits<char>::eof(). More...
     
    virtual ~input_adapter_protocol ()=default
     
    -

    Detailed Description

    -

    abstract input adapter interface

    -

    Produces a stream of std::char_traits<char>::int_type characters from a std::istream, a buffer, or some other input type. Accepts the return of exactly one non-EOF character for future input. The int_type characters returned consist of all valid char values as positive values (typically unsigned char), plus an EOF value outside that range, specified by the value of the function std::char_traits<char>::eof(). This value is typically -1, but could be any arbitrary value which is not a valid char value.

    -

    Constructor & Destructor Documentation

    - -

    ◆ ~input_adapter_protocol()

    - -
    -
    - - - - - -
    - - - - - - - -
    virtual nlohmann::detail::input_adapter_protocol::~input_adapter_protocol ()
    -
    -virtualdefault
    -
    - -
    -
    -

    Member Function Documentation

    - -

    ◆ get_character()

    - -
    -
    - - - - - -
    - - - - - - - -
    virtual std::char_traits<char>::int_type nlohmann::detail::input_adapter_protocol::get_character ()
    -
    -pure virtual
    -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • build/_deps/json-src/include/nlohmann/json.hpp
    • -
    -
    - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1input__adapter__protocol__inherit__graph.map b/help/html/structnlohmann_1_1detail_1_1input__adapter__protocol__inherit__graph.map deleted file mode 100644 index 3a3e780..0000000 --- a/help/html/structnlohmann_1_1detail_1_1input__adapter__protocol__inherit__graph.map +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1input__adapter__protocol__inherit__graph.md5 b/help/html/structnlohmann_1_1detail_1_1input__adapter__protocol__inherit__graph.md5 deleted file mode 100644 index 7e91e22..0000000 --- a/help/html/structnlohmann_1_1detail_1_1input__adapter__protocol__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -ca3d32577efaa1a4841eb403795e7bfe \ No newline at end of file diff --git a/help/html/structnlohmann_1_1detail_1_1input__adapter__protocol__inherit__graph.png b/help/html/structnlohmann_1_1detail_1_1input__adapter__protocol__inherit__graph.png deleted file mode 100644 index 618eceb..0000000 Binary files a/help/html/structnlohmann_1_1detail_1_1input__adapter__protocol__inherit__graph.png and /dev/null differ diff --git a/help/html/structnlohmann_1_1detail_1_1internal__iterator-members.html b/help/html/structnlohmann_1_1detail_1_1internal__iterator-members.html deleted file mode 100644 index c1523af..0000000 --- a/help/html/structnlohmann_1_1detail_1_1internal__iterator-members.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    nlohmann::detail::internal_iterator< BasicJsonType > Member List
    -
    - - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1internal__iterator.html b/help/html/structnlohmann_1_1detail_1_1internal__iterator.html deleted file mode 100644 index 2b0f23a..0000000 --- a/help/html/structnlohmann_1_1detail_1_1internal__iterator.html +++ /dev/null @@ -1,174 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::internal_iterator< BasicJsonType > Struct Template Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    nlohmann::detail::internal_iterator< BasicJsonType > Struct Template Reference
    -
    -
    - -

    an iterator value - More...

    - -

    #include <json.hpp>

    -
    -Collaboration diagram for nlohmann::detail::internal_iterator< BasicJsonType >:
    -
    -
    Collaboration graph
    - - - - -
    [legend]
    - - - - - - - - - - - -

    -Public Attributes

    BasicJsonType::object_t::iterator object_iterator {}
     iterator for JSON objects More...
     
    BasicJsonType::array_t::iterator array_iterator {}
     iterator for JSON arrays More...
     
    primitive_iterator_t primitive_iterator {}
     generic iterator for all other types More...
     
    -

    Detailed Description

    -

    template<typename BasicJsonType>
    -struct nlohmann::detail::internal_iterator< BasicJsonType >

    - -

    an iterator value

    -
    Note
    This structure could easily be a union, but MSVC currently does not allow unions members with complex constructors, see https://github.com/nlohmann/json/pull/105.
    -

    Member Data Documentation

    - -

    ◆ array_iterator

    - -
    -
    -
    -template<typename BasicJsonType >
    - - - - -
    BasicJsonType::array_t::iterator nlohmann::detail::internal_iterator< BasicJsonType >::array_iterator {}
    -
    - -

    iterator for JSON arrays

    - -
    -
    - -

    ◆ object_iterator

    - -
    -
    -
    -template<typename BasicJsonType >
    - - - - -
    BasicJsonType::object_t::iterator nlohmann::detail::internal_iterator< BasicJsonType >::object_iterator {}
    -
    - -

    iterator for JSON objects

    - -
    -
    - -

    ◆ primitive_iterator

    - -
    -
    -
    -template<typename BasicJsonType >
    - - - - -
    primitive_iterator_t nlohmann::detail::internal_iterator< BasicJsonType >::primitive_iterator {}
    -
    - -

    generic iterator for all other types

    - -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • build/_deps/json-src/include/nlohmann/json.hpp
    • -
    -
    - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1internal__iterator__coll__graph.map b/help/html/structnlohmann_1_1detail_1_1internal__iterator__coll__graph.map deleted file mode 100644 index 99898f8..0000000 --- a/help/html/structnlohmann_1_1detail_1_1internal__iterator__coll__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1internal__iterator__coll__graph.md5 b/help/html/structnlohmann_1_1detail_1_1internal__iterator__coll__graph.md5 deleted file mode 100644 index cdbddb0..0000000 --- a/help/html/structnlohmann_1_1detail_1_1internal__iterator__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -4f7082ab23d29b25c053489d3969596f \ No newline at end of file diff --git a/help/html/structnlohmann_1_1detail_1_1internal__iterator__coll__graph.png b/help/html/structnlohmann_1_1detail_1_1internal__iterator__coll__graph.png deleted file mode 100644 index dfefaf9..0000000 Binary files a/help/html/structnlohmann_1_1detail_1_1internal__iterator__coll__graph.png and /dev/null differ diff --git a/help/html/structnlohmann_1_1detail_1_1is__basic__json.html b/help/html/structnlohmann_1_1detail_1_1is__basic__json.html deleted file mode 100644 index 883b185..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__basic__json.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::is_basic_json< typename > Struct Template Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    nlohmann::detail::is_basic_json< typename > Struct Template Reference
    -
    -
    - -

    #include <json.hpp>

    -
    -Inheritance diagram for nlohmann::detail::is_basic_json< typename >:
    -
    -
    Inheritance graph
    - - - - -
    [legend]
    -
    -Collaboration diagram for nlohmann::detail::is_basic_json< typename >:
    -
    -
    Collaboration graph
    - - - - -
    [legend]
    -
    The documentation for this struct was generated from the following file:
      -
    • build/_deps/json-src/include/nlohmann/json.hpp
    • -
    -
    - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1is__basic__json_3_01NLOHMANN__BASIC__JSON__TPL_01_4.html b/help/html/structnlohmann_1_1detail_1_1is__basic__json_3_01NLOHMANN__BASIC__JSON__TPL_01_4.html deleted file mode 100644 index 0959fbe..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__basic__json_3_01NLOHMANN__BASIC__JSON__TPL_01_4.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::is_basic_json< NLOHMANN_BASIC_JSON_TPL > Struct Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    nlohmann::detail::is_basic_json< NLOHMANN_BASIC_JSON_TPL > Struct Reference
    -
    -
    - -

    #include <json.hpp>

    -
    -Inheritance diagram for nlohmann::detail::is_basic_json< NLOHMANN_BASIC_JSON_TPL >:
    -
    -
    Inheritance graph
    - - - - -
    [legend]
    -
    -Collaboration diagram for nlohmann::detail::is_basic_json< NLOHMANN_BASIC_JSON_TPL >:
    -
    -
    Collaboration graph
    - - - - -
    [legend]
    -
    The documentation for this struct was generated from the following file:
      -
    • build/_deps/json-src/include/nlohmann/json.hpp
    • -
    -
    - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1is__basic__json_3_01NLOHMANN__BASIC__JSON__TPL_01_4__coll__graph.map b/help/html/structnlohmann_1_1detail_1_1is__basic__json_3_01NLOHMANN__BASIC__JSON__TPL_01_4__coll__graph.map deleted file mode 100644 index 46cf6e5..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__basic__json_3_01NLOHMANN__BASIC__JSON__TPL_01_4__coll__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1is__basic__json_3_01NLOHMANN__BASIC__JSON__TPL_01_4__coll__graph.md5 b/help/html/structnlohmann_1_1detail_1_1is__basic__json_3_01NLOHMANN__BASIC__JSON__TPL_01_4__coll__graph.md5 deleted file mode 100644 index 2abf1da..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__basic__json_3_01NLOHMANN__BASIC__JSON__TPL_01_4__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -f055f46a179ab28c7bebd1ae0c1c355d \ No newline at end of file diff --git a/help/html/structnlohmann_1_1detail_1_1is__basic__json_3_01NLOHMANN__BASIC__JSON__TPL_01_4__coll__graph.png b/help/html/structnlohmann_1_1detail_1_1is__basic__json_3_01NLOHMANN__BASIC__JSON__TPL_01_4__coll__graph.png deleted file mode 100644 index 989e049..0000000 Binary files a/help/html/structnlohmann_1_1detail_1_1is__basic__json_3_01NLOHMANN__BASIC__JSON__TPL_01_4__coll__graph.png and /dev/null differ diff --git a/help/html/structnlohmann_1_1detail_1_1is__basic__json_3_01NLOHMANN__BASIC__JSON__TPL_01_4__inherit__graph.map b/help/html/structnlohmann_1_1detail_1_1is__basic__json_3_01NLOHMANN__BASIC__JSON__TPL_01_4__inherit__graph.map deleted file mode 100644 index 46cf6e5..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__basic__json_3_01NLOHMANN__BASIC__JSON__TPL_01_4__inherit__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1is__basic__json_3_01NLOHMANN__BASIC__JSON__TPL_01_4__inherit__graph.md5 b/help/html/structnlohmann_1_1detail_1_1is__basic__json_3_01NLOHMANN__BASIC__JSON__TPL_01_4__inherit__graph.md5 deleted file mode 100644 index 2abf1da..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__basic__json_3_01NLOHMANN__BASIC__JSON__TPL_01_4__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -f055f46a179ab28c7bebd1ae0c1c355d \ No newline at end of file diff --git a/help/html/structnlohmann_1_1detail_1_1is__basic__json_3_01NLOHMANN__BASIC__JSON__TPL_01_4__inherit__graph.png b/help/html/structnlohmann_1_1detail_1_1is__basic__json_3_01NLOHMANN__BASIC__JSON__TPL_01_4__inherit__graph.png deleted file mode 100644 index 989e049..0000000 Binary files a/help/html/structnlohmann_1_1detail_1_1is__basic__json_3_01NLOHMANN__BASIC__JSON__TPL_01_4__inherit__graph.png and /dev/null differ diff --git a/help/html/structnlohmann_1_1detail_1_1is__basic__json__coll__graph.map b/help/html/structnlohmann_1_1detail_1_1is__basic__json__coll__graph.map deleted file mode 100644 index d677540..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__basic__json__coll__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1is__basic__json__coll__graph.md5 b/help/html/structnlohmann_1_1detail_1_1is__basic__json__coll__graph.md5 deleted file mode 100644 index 5e6751f..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__basic__json__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -8a5d3a9d76d751138678dc203cbbdf8f \ No newline at end of file diff --git a/help/html/structnlohmann_1_1detail_1_1is__basic__json__coll__graph.png b/help/html/structnlohmann_1_1detail_1_1is__basic__json__coll__graph.png deleted file mode 100644 index 952f95d..0000000 Binary files a/help/html/structnlohmann_1_1detail_1_1is__basic__json__coll__graph.png and /dev/null differ diff --git a/help/html/structnlohmann_1_1detail_1_1is__basic__json__inherit__graph.map b/help/html/structnlohmann_1_1detail_1_1is__basic__json__inherit__graph.map deleted file mode 100644 index d677540..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__basic__json__inherit__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1is__basic__json__inherit__graph.md5 b/help/html/structnlohmann_1_1detail_1_1is__basic__json__inherit__graph.md5 deleted file mode 100644 index 5e6751f..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__basic__json__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -8a5d3a9d76d751138678dc203cbbdf8f \ No newline at end of file diff --git a/help/html/structnlohmann_1_1detail_1_1is__basic__json__inherit__graph.png b/help/html/structnlohmann_1_1detail_1_1is__basic__json__inherit__graph.png deleted file mode 100644 index 952f95d..0000000 Binary files a/help/html/structnlohmann_1_1detail_1_1is__basic__json__inherit__graph.png and /dev/null differ diff --git a/help/html/structnlohmann_1_1detail_1_1is__compatible__array__type.html b/help/html/structnlohmann_1_1detail_1_1is__compatible__array__type.html deleted file mode 100644 index c28aff4..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__compatible__array__type.html +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::is_compatible_array_type< BasicJsonType, CompatibleArrayType > Struct Template Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    nlohmann::detail::is_compatible_array_type< BasicJsonType, CompatibleArrayType > Struct Template Reference
    -
    -
    - -

    #include <json.hpp>

    -
    -Inheritance diagram for nlohmann::detail::is_compatible_array_type< BasicJsonType, CompatibleArrayType >:
    -
    -
    Inheritance graph
    - - - - - -
    [legend]
    -
    -Collaboration diagram for nlohmann::detail::is_compatible_array_type< BasicJsonType, CompatibleArrayType >:
    -
    -
    Collaboration graph
    - - - - - -
    [legend]
    -
    The documentation for this struct was generated from the following file:
      -
    • build/_deps/json-src/include/nlohmann/json.hpp
    • -
    -
    - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1is__compatible__array__type__coll__graph.map b/help/html/structnlohmann_1_1detail_1_1is__compatible__array__type__coll__graph.map deleted file mode 100644 index eb6f2d2..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__compatible__array__type__coll__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1is__compatible__array__type__coll__graph.md5 b/help/html/structnlohmann_1_1detail_1_1is__compatible__array__type__coll__graph.md5 deleted file mode 100644 index 9a21cc5..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__compatible__array__type__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -1a07ba8f8ccf21b7c986a6049b967ec0 \ No newline at end of file diff --git a/help/html/structnlohmann_1_1detail_1_1is__compatible__array__type__coll__graph.png b/help/html/structnlohmann_1_1detail_1_1is__compatible__array__type__coll__graph.png deleted file mode 100644 index 0b71be3..0000000 Binary files a/help/html/structnlohmann_1_1detail_1_1is__compatible__array__type__coll__graph.png and /dev/null differ diff --git a/help/html/structnlohmann_1_1detail_1_1is__compatible__array__type__impl.html b/help/html/structnlohmann_1_1detail_1_1is__compatible__array__type__impl.html deleted file mode 100644 index b73972d..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__compatible__array__type__impl.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::is_compatible_array_type_impl< BasicJsonType, CompatibleArrayType, typename > Struct Template Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    nlohmann::detail::is_compatible_array_type_impl< BasicJsonType, CompatibleArrayType, typename > Struct Template Reference
    -
    -
    - -

    #include <json.hpp>

    -
    -Inheritance diagram for nlohmann::detail::is_compatible_array_type_impl< BasicJsonType, CompatibleArrayType, typename >:
    -
    -
    Inheritance graph
    - - - - -
    [legend]
    -
    -Collaboration diagram for nlohmann::detail::is_compatible_array_type_impl< BasicJsonType, CompatibleArrayType, typename >:
    -
    -
    Collaboration graph
    - - - - -
    [legend]
    -
    The documentation for this struct was generated from the following file:
      -
    • build/_deps/json-src/include/nlohmann/json.hpp
    • -
    -
    - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1is__compatible__array__type__impl_3_01BasicJsonType_00_01CompatibleA267684a873e5addda71cf693e6831a1f.html b/help/html/structnlohmann_1_1detail_1_1is__compatible__array__type__impl_3_01BasicJsonType_00_01CompatibleA267684a873e5addda71cf693e6831a1f.html deleted file mode 100644 index 7e38cdf..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__compatible__array__type__impl_3_01BasicJsonType_00_01CompatibleA267684a873e5addda71cf693e6831a1f.html +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    nlohmann::detail::is_compatible_array_type_impl< BasicJsonType, CompatibleArrayType, enable_if_t< is_detected< value_type_t, CompatibleArrayType >::value and is_detected< iterator_t, CompatibleArrayType >::value and not is_iterator_traits< iterator_traits< CompatibleArrayType > >::value > > Member List
    -
    - - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1is__compatible__array__type__impl_3_01BasicJsonType_00_01CompatibleA2ae7cc020294dfcc2b3bca5a9db30ddf.html b/help/html/structnlohmann_1_1detail_1_1is__compatible__array__type__impl_3_01BasicJsonType_00_01CompatibleA2ae7cc020294dfcc2b3bca5a9db30ddf.html deleted file mode 100644 index fd92fbf..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__compatible__array__type__impl_3_01BasicJsonType_00_01CompatibleA2ae7cc020294dfcc2b3bca5a9db30ddf.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::is_compatible_array_type_impl< BasicJsonType, CompatibleArrayType, enable_if_t< is_detected< value_type_t, CompatibleArrayType >::value and is_detected< iterator_t, CompatibleArrayType >::value and not is_iterator_traits< iterator_traits< CompatibleArrayType > >::value > > Struct Template Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    nlohmann::detail::is_compatible_array_type_impl< BasicJsonType, CompatibleArrayType, enable_if_t< is_detected< value_type_t, CompatibleArrayType >::value and is_detected< iterator_t, CompatibleArrayType >::value and not is_iterator_traits< iterator_traits< CompatibleArrayType > >::value > > Struct Template Reference
    -
    -
    - -

    #include <json.hpp>

    - - - - -

    -Static Public Attributes

    static constexpr bool value
     
    -

    Member Data Documentation

    - -

    ◆ value

    - -
    -
    -
    -template<typename BasicJsonType , typename CompatibleArrayType >
    - - - - - -
    - - - - -
    constexpr bool nlohmann::detail::is_compatible_array_type_impl< BasicJsonType, CompatibleArrayType, enable_if_t< is_detected< value_type_t, CompatibleArrayType >::value and is_detected< iterator_t, CompatibleArrayType >::value and not is_iterator_traits< iterator_traits< CompatibleArrayType > >::value > >::value
    -
    -staticconstexpr
    -
    -Initial value:
    =
    -
    std::is_constructible<BasicJsonType,
    -
    typename CompatibleArrayType::value_type>::value
    -
    -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • build/_deps/json-src/include/nlohmann/json.hpp
    • -
    -
    - - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1is__compatible__array__type__impl_3_01BasicJsonType_00_01CompatibleA743c6abbb328073027e2ffd00708cfee.html b/help/html/structnlohmann_1_1detail_1_1is__compatible__array__type__impl_3_01BasicJsonType_00_01CompatibleA743c6abbb328073027e2ffd00708cfee.html deleted file mode 100644 index 87600cc..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__compatible__array__type__impl_3_01BasicJsonType_00_01CompatibleA743c6abbb328073027e2ffd00708cfee.html +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    nlohmann::detail::is_compatible_array_type_impl< BasicJsonType, CompatibleArrayType, enable_if_t< is_detected< value_type_t, CompatibleArrayType >::value &&is_detected< iterator_t, CompatibleArrayType >::value &&!is_iterator_traits< iterator_traits< CompatibleArrayType > >::value > > Member List
    -
    - - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1is__compatible__array__type__impl_3_01BasicJsonType_00_01CompatibleAb638dd3c6149bb42b44d6778e8db3f9d.html b/help/html/structnlohmann_1_1detail_1_1is__compatible__array__type__impl_3_01BasicJsonType_00_01CompatibleAb638dd3c6149bb42b44d6778e8db3f9d.html deleted file mode 100644 index d15d308..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__compatible__array__type__impl_3_01BasicJsonType_00_01CompatibleAb638dd3c6149bb42b44d6778e8db3f9d.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::is_compatible_array_type_impl< BasicJsonType, CompatibleArrayType, enable_if_t< is_detected< value_type_t, CompatibleArrayType >::value &&is_detected< iterator_t, CompatibleArrayType >::value &&!is_iterator_traits< iterator_traits< CompatibleArrayType > >::value > > Struct Template Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    nlohmann::detail::is_compatible_array_type_impl< BasicJsonType, CompatibleArrayType, enable_if_t< is_detected< value_type_t, CompatibleArrayType >::value &&is_detected< iterator_t, CompatibleArrayType >::value &&!is_iterator_traits< iterator_traits< CompatibleArrayType > >::value > > Struct Template Reference
    -
    -
    - -

    #include <json.hpp>

    - - - - -

    -Static Public Attributes

    static constexpr bool value
     
    -

    Member Data Documentation

    - -

    ◆ value

    - -
    -
    -
    -template<typename BasicJsonType , typename CompatibleArrayType >
    - - - - - -
    - - - - -
    constexpr bool nlohmann::detail::is_compatible_array_type_impl< BasicJsonType, CompatibleArrayType, enable_if_t< is_detected< value_type_t, CompatibleArrayType >::value &&is_detected< iterator_t, CompatibleArrayType >::value &&!is_iterator_traits< iterator_traits< CompatibleArrayType > >::value > >::value
    -
    -staticconstexpr
    -
    -Initial value:
    =
    -
    std::is_constructible<BasicJsonType,
    -
    typename CompatibleArrayType::value_type>::value
    -
    -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1is__compatible__array__type__impl__coll__graph.map b/help/html/structnlohmann_1_1detail_1_1is__compatible__array__type__impl__coll__graph.map deleted file mode 100644 index d66bb56..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__compatible__array__type__impl__coll__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1is__compatible__array__type__impl__coll__graph.md5 b/help/html/structnlohmann_1_1detail_1_1is__compatible__array__type__impl__coll__graph.md5 deleted file mode 100644 index 4e78645..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__compatible__array__type__impl__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -ecc851b63a009bb814124c58409d502b \ No newline at end of file diff --git a/help/html/structnlohmann_1_1detail_1_1is__compatible__array__type__impl__coll__graph.png b/help/html/structnlohmann_1_1detail_1_1is__compatible__array__type__impl__coll__graph.png deleted file mode 100644 index cd55f80..0000000 Binary files a/help/html/structnlohmann_1_1detail_1_1is__compatible__array__type__impl__coll__graph.png and /dev/null differ diff --git a/help/html/structnlohmann_1_1detail_1_1is__compatible__array__type__impl__inherit__graph.map b/help/html/structnlohmann_1_1detail_1_1is__compatible__array__type__impl__inherit__graph.map deleted file mode 100644 index d66bb56..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__compatible__array__type__impl__inherit__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1is__compatible__array__type__impl__inherit__graph.md5 b/help/html/structnlohmann_1_1detail_1_1is__compatible__array__type__impl__inherit__graph.md5 deleted file mode 100644 index 4e78645..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__compatible__array__type__impl__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -ecc851b63a009bb814124c58409d502b \ No newline at end of file diff --git a/help/html/structnlohmann_1_1detail_1_1is__compatible__array__type__impl__inherit__graph.png b/help/html/structnlohmann_1_1detail_1_1is__compatible__array__type__impl__inherit__graph.png deleted file mode 100644 index cd55f80..0000000 Binary files a/help/html/structnlohmann_1_1detail_1_1is__compatible__array__type__impl__inherit__graph.png and /dev/null differ diff --git a/help/html/structnlohmann_1_1detail_1_1is__compatible__array__type__inherit__graph.map b/help/html/structnlohmann_1_1detail_1_1is__compatible__array__type__inherit__graph.map deleted file mode 100644 index eb6f2d2..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__compatible__array__type__inherit__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1is__compatible__array__type__inherit__graph.md5 b/help/html/structnlohmann_1_1detail_1_1is__compatible__array__type__inherit__graph.md5 deleted file mode 100644 index 9a21cc5..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__compatible__array__type__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -1a07ba8f8ccf21b7c986a6049b967ec0 \ No newline at end of file diff --git a/help/html/structnlohmann_1_1detail_1_1is__compatible__array__type__inherit__graph.png b/help/html/structnlohmann_1_1detail_1_1is__compatible__array__type__inherit__graph.png deleted file mode 100644 index 0b71be3..0000000 Binary files a/help/html/structnlohmann_1_1detail_1_1is__compatible__array__type__inherit__graph.png and /dev/null differ diff --git a/help/html/structnlohmann_1_1detail_1_1is__compatible__integer__type.html b/help/html/structnlohmann_1_1detail_1_1is__compatible__integer__type.html deleted file mode 100644 index ae35197..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__compatible__integer__type.html +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::is_compatible_integer_type< RealIntegerType, CompatibleNumberIntegerType > Struct Template Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    nlohmann::detail::is_compatible_integer_type< RealIntegerType, CompatibleNumberIntegerType > Struct Template Reference
    -
    -
    - -

    #include <json.hpp>

    -
    -Inheritance diagram for nlohmann::detail::is_compatible_integer_type< RealIntegerType, CompatibleNumberIntegerType >:
    -
    -
    Inheritance graph
    - - - - - -
    [legend]
    -
    -Collaboration diagram for nlohmann::detail::is_compatible_integer_type< RealIntegerType, CompatibleNumberIntegerType >:
    -
    -
    Collaboration graph
    - - - - - -
    [legend]
    -
    The documentation for this struct was generated from the following file:
      -
    • build/_deps/json-src/include/nlohmann/json.hpp
    • -
    -
    - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1is__compatible__integer__type__coll__graph.map b/help/html/structnlohmann_1_1detail_1_1is__compatible__integer__type__coll__graph.map deleted file mode 100644 index 10e9f58..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__compatible__integer__type__coll__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1is__compatible__integer__type__coll__graph.md5 b/help/html/structnlohmann_1_1detail_1_1is__compatible__integer__type__coll__graph.md5 deleted file mode 100644 index 7c4d911..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__compatible__integer__type__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -f240ab7e12d3ef81bafa62cd1c693e71 \ No newline at end of file diff --git a/help/html/structnlohmann_1_1detail_1_1is__compatible__integer__type__coll__graph.png b/help/html/structnlohmann_1_1detail_1_1is__compatible__integer__type__coll__graph.png deleted file mode 100644 index 496d16c..0000000 Binary files a/help/html/structnlohmann_1_1detail_1_1is__compatible__integer__type__coll__graph.png and /dev/null differ diff --git a/help/html/structnlohmann_1_1detail_1_1is__compatible__integer__type__impl.html b/help/html/structnlohmann_1_1detail_1_1is__compatible__integer__type__impl.html deleted file mode 100644 index 51f641b..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__compatible__integer__type__impl.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::is_compatible_integer_type_impl< RealIntegerType, CompatibleNumberIntegerType, typename > Struct Template Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    nlohmann::detail::is_compatible_integer_type_impl< RealIntegerType, CompatibleNumberIntegerType, typename > Struct Template Reference
    -
    -
    - -

    #include <json.hpp>

    -
    -Inheritance diagram for nlohmann::detail::is_compatible_integer_type_impl< RealIntegerType, CompatibleNumberIntegerType, typename >:
    -
    -
    Inheritance graph
    - - - - -
    [legend]
    -
    -Collaboration diagram for nlohmann::detail::is_compatible_integer_type_impl< RealIntegerType, CompatibleNumberIntegerType, typename >:
    -
    -
    Collaboration graph
    - - - - -
    [legend]
    -
    The documentation for this struct was generated from the following file:
      -
    • build/_deps/json-src/include/nlohmann/json.hpp
    • -
    -
    - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1is__compatible__integer__type__impl_3_01RealIntegerType_00_01Compati1168634cedff9d7e18b9909ed68ebe6b.html b/help/html/structnlohmann_1_1detail_1_1is__compatible__integer__type__impl_3_01RealIntegerType_00_01Compati1168634cedff9d7e18b9909ed68ebe6b.html deleted file mode 100644 index b8ec0b5..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__compatible__integer__type__impl_3_01RealIntegerType_00_01Compati1168634cedff9d7e18b9909ed68ebe6b.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    nlohmann::detail::is_compatible_integer_type_impl< RealIntegerType, CompatibleNumberIntegerType, enable_if_t< std::is_integral< RealIntegerType >::value &&std::is_integral< CompatibleNumberIntegerType >::value &&!std::is_same< bool, CompatibleNumberIntegerType >::value > > Member List
    -
    - - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1is__compatible__integer__type__impl_3_01RealIntegerType_00_01Compati3a04243716e8bda67d1ff2aead18da88.html b/help/html/structnlohmann_1_1detail_1_1is__compatible__integer__type__impl_3_01RealIntegerType_00_01Compati3a04243716e8bda67d1ff2aead18da88.html deleted file mode 100644 index ae0c895..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__compatible__integer__type__impl_3_01RealIntegerType_00_01Compati3a04243716e8bda67d1ff2aead18da88.html +++ /dev/null @@ -1,166 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::is_compatible_integer_type_impl< RealIntegerType, CompatibleNumberIntegerType, enable_if_t< std::is_integral< RealIntegerType >::value and std::is_integral< CompatibleNumberIntegerType >::value and not std::is_same< bool, CompatibleNumberIntegerType >::value > > Struct Template Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    nlohmann::detail::is_compatible_integer_type_impl< RealIntegerType, CompatibleNumberIntegerType, enable_if_t< std::is_integral< RealIntegerType >::value and std::is_integral< CompatibleNumberIntegerType >::value and not std::is_same< bool, CompatibleNumberIntegerType >::value > > Struct Template Reference
    -
    -
    - -

    #include <json.hpp>

    - - - - - - -

    -Public Types

    using RealLimits = std::numeric_limits< RealIntegerType >
     
    using CompatibleLimits = std::numeric_limits< CompatibleNumberIntegerType >
     
    - - - -

    -Static Public Attributes

    static constexpr auto value
     
    -

    Member Typedef Documentation

    - -

    ◆ CompatibleLimits

    - -
    -
    -
    -template<typename RealIntegerType , typename CompatibleNumberIntegerType >
    - - - - -
    using nlohmann::detail::is_compatible_integer_type_impl< RealIntegerType, CompatibleNumberIntegerType, enable_if_t< std::is_integral< RealIntegerType >::value and std::is_integral< CompatibleNumberIntegerType >::value and not std::is_same< bool, CompatibleNumberIntegerType >::value > >::CompatibleLimits = std::numeric_limits<CompatibleNumberIntegerType>
    -
    - -
    -
    - -

    ◆ RealLimits

    - -
    -
    -
    -template<typename RealIntegerType , typename CompatibleNumberIntegerType >
    - - - - -
    using nlohmann::detail::is_compatible_integer_type_impl< RealIntegerType, CompatibleNumberIntegerType, enable_if_t< std::is_integral< RealIntegerType >::value and std::is_integral< CompatibleNumberIntegerType >::value and not std::is_same< bool, CompatibleNumberIntegerType >::value > >::RealLimits = std::numeric_limits<RealIntegerType>
    -
    - -
    -
    -

    Member Data Documentation

    - -

    ◆ value

    - -
    -
    -
    -template<typename RealIntegerType , typename CompatibleNumberIntegerType >
    - - - - - -
    - - - - -
    constexpr auto nlohmann::detail::is_compatible_integer_type_impl< RealIntegerType, CompatibleNumberIntegerType, enable_if_t< std::is_integral< RealIntegerType >::value and std::is_integral< CompatibleNumberIntegerType >::value and not std::is_same< bool, CompatibleNumberIntegerType >::value > >::value
    -
    -staticconstexpr
    -
    -Initial value:
    =
    -
    std::is_constructible<RealIntegerType,
    -
    CompatibleNumberIntegerType>::value and
    -
    CompatibleLimits::is_integer and
    -
    RealLimits::is_signed == CompatibleLimits::is_signed
    -
    -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • build/_deps/json-src/include/nlohmann/json.hpp
    • -
    -
    - - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1is__compatible__integer__type__impl_3_01RealIntegerType_00_01Compatiae7372380b367a5941ed536a54f52e62.html b/help/html/structnlohmann_1_1detail_1_1is__compatible__integer__type__impl_3_01RealIntegerType_00_01Compatiae7372380b367a5941ed536a54f52e62.html deleted file mode 100644 index 24632a3..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__compatible__integer__type__impl_3_01RealIntegerType_00_01Compatiae7372380b367a5941ed536a54f52e62.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    nlohmann::detail::is_compatible_integer_type_impl< RealIntegerType, CompatibleNumberIntegerType, enable_if_t< std::is_integral< RealIntegerType >::value and std::is_integral< CompatibleNumberIntegerType >::value and not std::is_same< bool, CompatibleNumberIntegerType >::value > > Member List
    -
    - - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1is__compatible__integer__type__impl_3_01RealIntegerType_00_01Compatie5920c849e839ebb9f8c57349c900796.html b/help/html/structnlohmann_1_1detail_1_1is__compatible__integer__type__impl_3_01RealIntegerType_00_01Compatie5920c849e839ebb9f8c57349c900796.html deleted file mode 100644 index 9fa46f6..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__compatible__integer__type__impl_3_01RealIntegerType_00_01Compatie5920c849e839ebb9f8c57349c900796.html +++ /dev/null @@ -1,166 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::is_compatible_integer_type_impl< RealIntegerType, CompatibleNumberIntegerType, enable_if_t< std::is_integral< RealIntegerType >::value &&std::is_integral< CompatibleNumberIntegerType >::value &&!std::is_same< bool, CompatibleNumberIntegerType >::value > > Struct Template Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    nlohmann::detail::is_compatible_integer_type_impl< RealIntegerType, CompatibleNumberIntegerType, enable_if_t< std::is_integral< RealIntegerType >::value &&std::is_integral< CompatibleNumberIntegerType >::value &&!std::is_same< bool, CompatibleNumberIntegerType >::value > > Struct Template Reference
    -
    -
    - -

    #include <json.hpp>

    - - - - - - -

    -Public Types

    using RealLimits = std::numeric_limits< RealIntegerType >
     
    using CompatibleLimits = std::numeric_limits< CompatibleNumberIntegerType >
     
    - - - -

    -Static Public Attributes

    static constexpr auto value
     
    -

    Member Typedef Documentation

    - -

    ◆ CompatibleLimits

    - -
    -
    -
    -template<typename RealIntegerType , typename CompatibleNumberIntegerType >
    - - - - -
    using nlohmann::detail::is_compatible_integer_type_impl< RealIntegerType, CompatibleNumberIntegerType, enable_if_t< std::is_integral< RealIntegerType >::value &&std::is_integral< CompatibleNumberIntegerType >::value &&!std::is_same< bool, CompatibleNumberIntegerType >::value > >::CompatibleLimits = std::numeric_limits<CompatibleNumberIntegerType>
    -
    - -
    -
    - -

    ◆ RealLimits

    - -
    -
    -
    -template<typename RealIntegerType , typename CompatibleNumberIntegerType >
    - - - - -
    using nlohmann::detail::is_compatible_integer_type_impl< RealIntegerType, CompatibleNumberIntegerType, enable_if_t< std::is_integral< RealIntegerType >::value &&std::is_integral< CompatibleNumberIntegerType >::value &&!std::is_same< bool, CompatibleNumberIntegerType >::value > >::RealLimits = std::numeric_limits<RealIntegerType>
    -
    - -
    -
    -

    Member Data Documentation

    - -

    ◆ value

    - -
    -
    -
    -template<typename RealIntegerType , typename CompatibleNumberIntegerType >
    - - - - - -
    - - - - -
    constexpr auto nlohmann::detail::is_compatible_integer_type_impl< RealIntegerType, CompatibleNumberIntegerType, enable_if_t< std::is_integral< RealIntegerType >::value &&std::is_integral< CompatibleNumberIntegerType >::value &&!std::is_same< bool, CompatibleNumberIntegerType >::value > >::value
    -
    -staticconstexpr
    -
    -Initial value:
    =
    -
    std::is_constructible<RealIntegerType,
    -
    CompatibleNumberIntegerType>::value &&
    -
    CompatibleLimits::is_integer &&
    -
    RealLimits::is_signed == CompatibleLimits::is_signed
    -
    -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1is__compatible__integer__type__impl__coll__graph.map b/help/html/structnlohmann_1_1detail_1_1is__compatible__integer__type__impl__coll__graph.map deleted file mode 100644 index 6dcb08f..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__compatible__integer__type__impl__coll__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1is__compatible__integer__type__impl__coll__graph.md5 b/help/html/structnlohmann_1_1detail_1_1is__compatible__integer__type__impl__coll__graph.md5 deleted file mode 100644 index 8bc7a51..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__compatible__integer__type__impl__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -bdc2c4974ef5ed1eb02e320aa84f7dad \ No newline at end of file diff --git a/help/html/structnlohmann_1_1detail_1_1is__compatible__integer__type__impl__coll__graph.png b/help/html/structnlohmann_1_1detail_1_1is__compatible__integer__type__impl__coll__graph.png deleted file mode 100644 index 3a46805..0000000 Binary files a/help/html/structnlohmann_1_1detail_1_1is__compatible__integer__type__impl__coll__graph.png and /dev/null differ diff --git a/help/html/structnlohmann_1_1detail_1_1is__compatible__integer__type__impl__inherit__graph.map b/help/html/structnlohmann_1_1detail_1_1is__compatible__integer__type__impl__inherit__graph.map deleted file mode 100644 index 6dcb08f..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__compatible__integer__type__impl__inherit__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1is__compatible__integer__type__impl__inherit__graph.md5 b/help/html/structnlohmann_1_1detail_1_1is__compatible__integer__type__impl__inherit__graph.md5 deleted file mode 100644 index 8bc7a51..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__compatible__integer__type__impl__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -bdc2c4974ef5ed1eb02e320aa84f7dad \ No newline at end of file diff --git a/help/html/structnlohmann_1_1detail_1_1is__compatible__integer__type__impl__inherit__graph.png b/help/html/structnlohmann_1_1detail_1_1is__compatible__integer__type__impl__inherit__graph.png deleted file mode 100644 index 3a46805..0000000 Binary files a/help/html/structnlohmann_1_1detail_1_1is__compatible__integer__type__impl__inherit__graph.png and /dev/null differ diff --git a/help/html/structnlohmann_1_1detail_1_1is__compatible__integer__type__inherit__graph.map b/help/html/structnlohmann_1_1detail_1_1is__compatible__integer__type__inherit__graph.map deleted file mode 100644 index 10e9f58..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__compatible__integer__type__inherit__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1is__compatible__integer__type__inherit__graph.md5 b/help/html/structnlohmann_1_1detail_1_1is__compatible__integer__type__inherit__graph.md5 deleted file mode 100644 index 7c4d911..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__compatible__integer__type__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -f240ab7e12d3ef81bafa62cd1c693e71 \ No newline at end of file diff --git a/help/html/structnlohmann_1_1detail_1_1is__compatible__integer__type__inherit__graph.png b/help/html/structnlohmann_1_1detail_1_1is__compatible__integer__type__inherit__graph.png deleted file mode 100644 index 496d16c..0000000 Binary files a/help/html/structnlohmann_1_1detail_1_1is__compatible__integer__type__inherit__graph.png and /dev/null differ diff --git a/help/html/structnlohmann_1_1detail_1_1is__compatible__object__type.html b/help/html/structnlohmann_1_1detail_1_1is__compatible__object__type.html deleted file mode 100644 index fbfff1e..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__compatible__object__type.html +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::is_compatible_object_type< BasicJsonType, CompatibleObjectType > Struct Template Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    nlohmann::detail::is_compatible_object_type< BasicJsonType, CompatibleObjectType > Struct Template Reference
    -
    -
    - -

    #include <json.hpp>

    -
    -Inheritance diagram for nlohmann::detail::is_compatible_object_type< BasicJsonType, CompatibleObjectType >:
    -
    -
    Inheritance graph
    - - - - - -
    [legend]
    -
    -Collaboration diagram for nlohmann::detail::is_compatible_object_type< BasicJsonType, CompatibleObjectType >:
    -
    -
    Collaboration graph
    - - - - - -
    [legend]
    -
    The documentation for this struct was generated from the following file:
      -
    • build/_deps/json-src/include/nlohmann/json.hpp
    • -
    -
    - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1is__compatible__object__type__coll__graph.map b/help/html/structnlohmann_1_1detail_1_1is__compatible__object__type__coll__graph.map deleted file mode 100644 index 097a4b7..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__compatible__object__type__coll__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1is__compatible__object__type__coll__graph.md5 b/help/html/structnlohmann_1_1detail_1_1is__compatible__object__type__coll__graph.md5 deleted file mode 100644 index 309ae59..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__compatible__object__type__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -f1adaa7eaaed96615739f29e15c9cf32 \ No newline at end of file diff --git a/help/html/structnlohmann_1_1detail_1_1is__compatible__object__type__coll__graph.png b/help/html/structnlohmann_1_1detail_1_1is__compatible__object__type__coll__graph.png deleted file mode 100644 index d8a455c..0000000 Binary files a/help/html/structnlohmann_1_1detail_1_1is__compatible__object__type__coll__graph.png and /dev/null differ diff --git a/help/html/structnlohmann_1_1detail_1_1is__compatible__object__type__impl.html b/help/html/structnlohmann_1_1detail_1_1is__compatible__object__type__impl.html deleted file mode 100644 index 3e83f19..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__compatible__object__type__impl.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::is_compatible_object_type_impl< BasicJsonType, CompatibleObjectType, typename > Struct Template Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    nlohmann::detail::is_compatible_object_type_impl< BasicJsonType, CompatibleObjectType, typename > Struct Template Reference
    -
    -
    - -

    #include <json.hpp>

    -
    -Inheritance diagram for nlohmann::detail::is_compatible_object_type_impl< BasicJsonType, CompatibleObjectType, typename >:
    -
    -
    Inheritance graph
    - - - - -
    [legend]
    -
    -Collaboration diagram for nlohmann::detail::is_compatible_object_type_impl< BasicJsonType, CompatibleObjectType, typename >:
    -
    -
    Collaboration graph
    - - - - -
    [legend]
    -
    The documentation for this struct was generated from the following file:
      -
    • build/_deps/json-src/include/nlohmann/json.hpp
    • -
    -
    - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1is__compatible__object__type__impl_3_01BasicJsonType_00_01Compatible0bd988932da161d60568f9b7198a50d2.html b/help/html/structnlohmann_1_1detail_1_1is__compatible__object__type__impl_3_01BasicJsonType_00_01Compatible0bd988932da161d60568f9b7198a50d2.html deleted file mode 100644 index b8581c2..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__compatible__object__type__impl_3_01BasicJsonType_00_01Compatible0bd988932da161d60568f9b7198a50d2.html +++ /dev/null @@ -1,148 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::is_compatible_object_type_impl< BasicJsonType, CompatibleObjectType, enable_if_t< is_detected< mapped_type_t, CompatibleObjectType >::value and is_detected< key_type_t, CompatibleObjectType >::value > > Struct Template Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    nlohmann::detail::is_compatible_object_type_impl< BasicJsonType, CompatibleObjectType, enable_if_t< is_detected< mapped_type_t, CompatibleObjectType >::value and is_detected< key_type_t, CompatibleObjectType >::value > > Struct Template Reference
    -
    -
    - -

    #include <json.hpp>

    - - - - -

    -Public Types

    using object_t = typename BasicJsonType::object_t
     
    - - - -

    -Static Public Attributes

    static constexpr bool value
     
    -

    Member Typedef Documentation

    - -

    ◆ object_t

    - -
    -
    -
    -template<typename BasicJsonType , typename CompatibleObjectType >
    - - - - -
    using nlohmann::detail::is_compatible_object_type_impl< BasicJsonType, CompatibleObjectType, enable_if_t< is_detected< mapped_type_t, CompatibleObjectType >::value and is_detected< key_type_t, CompatibleObjectType >::value > >::object_t = typename BasicJsonType::object_t
    -
    - -
    -
    -

    Member Data Documentation

    - -

    ◆ value

    - -
    -
    -
    -template<typename BasicJsonType , typename CompatibleObjectType >
    - - - - - -
    - - - - -
    constexpr bool nlohmann::detail::is_compatible_object_type_impl< BasicJsonType, CompatibleObjectType, enable_if_t< is_detected< mapped_type_t, CompatibleObjectType >::value and is_detected< key_type_t, CompatibleObjectType >::value > >::value
    -
    -staticconstexpr
    -
    -Initial value:
    =
    -
    std::is_constructible<typename object_t::key_type,
    -
    typename CompatibleObjectType::key_type>::value and
    -
    std::is_constructible<typename object_t::mapped_type,
    -
    typename CompatibleObjectType::mapped_type>::value
    -
    -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • build/_deps/json-src/include/nlohmann/json.hpp
    • -
    -
    - - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1is__compatible__object__type__impl_3_01BasicJsonType_00_01Compatible1dd1bd23ba0e4ce33237aa702f8058a9.html b/help/html/structnlohmann_1_1detail_1_1is__compatible__object__type__impl_3_01BasicJsonType_00_01Compatible1dd1bd23ba0e4ce33237aa702f8058a9.html deleted file mode 100644 index abc2e80..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__compatible__object__type__impl_3_01BasicJsonType_00_01Compatible1dd1bd23ba0e4ce33237aa702f8058a9.html +++ /dev/null @@ -1,148 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::is_compatible_object_type_impl< BasicJsonType, CompatibleObjectType, enable_if_t< is_detected< mapped_type_t, CompatibleObjectType >::value &&is_detected< key_type_t, CompatibleObjectType >::value > > Struct Template Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    nlohmann::detail::is_compatible_object_type_impl< BasicJsonType, CompatibleObjectType, enable_if_t< is_detected< mapped_type_t, CompatibleObjectType >::value &&is_detected< key_type_t, CompatibleObjectType >::value > > Struct Template Reference
    -
    -
    - -

    #include <json.hpp>

    - - - - -

    -Public Types

    using object_t = typename BasicJsonType::object_t
     
    - - - -

    -Static Public Attributes

    static constexpr bool value
     
    -

    Member Typedef Documentation

    - -

    ◆ object_t

    - -
    -
    -
    -template<typename BasicJsonType , typename CompatibleObjectType >
    - - - - -
    using nlohmann::detail::is_compatible_object_type_impl< BasicJsonType, CompatibleObjectType, enable_if_t< is_detected< mapped_type_t, CompatibleObjectType >::value &&is_detected< key_type_t, CompatibleObjectType >::value > >::object_t = typename BasicJsonType::object_t
    -
    - -
    -
    -

    Member Data Documentation

    - -

    ◆ value

    - -
    -
    -
    -template<typename BasicJsonType , typename CompatibleObjectType >
    - - - - - -
    - - - - -
    constexpr bool nlohmann::detail::is_compatible_object_type_impl< BasicJsonType, CompatibleObjectType, enable_if_t< is_detected< mapped_type_t, CompatibleObjectType >::value &&is_detected< key_type_t, CompatibleObjectType >::value > >::value
    -
    -staticconstexpr
    -
    -Initial value:
    =
    -
    std::is_constructible<typename object_t::key_type,
    -
    typename CompatibleObjectType::key_type>::value &&
    -
    std::is_constructible<typename object_t::mapped_type,
    -
    typename CompatibleObjectType::mapped_type>::value
    -
    -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1is__compatible__object__type__impl_3_01BasicJsonType_00_01Compatible36ffa4cc676308784bdd0957c614c009.html b/help/html/structnlohmann_1_1detail_1_1is__compatible__object__type__impl_3_01BasicJsonType_00_01Compatible36ffa4cc676308784bdd0957c614c009.html deleted file mode 100644 index e566063..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__compatible__object__type__impl_3_01BasicJsonType_00_01Compatible36ffa4cc676308784bdd0957c614c009.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    nlohmann::detail::is_compatible_object_type_impl< BasicJsonType, CompatibleObjectType, enable_if_t< is_detected< mapped_type_t, CompatibleObjectType >::value &&is_detected< key_type_t, CompatibleObjectType >::value > > Member List
    -
    - - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1is__compatible__object__type__impl_3_01BasicJsonType_00_01Compatiblea32a8cabf55a683668f34b50bd53f52d.html b/help/html/structnlohmann_1_1detail_1_1is__compatible__object__type__impl_3_01BasicJsonType_00_01Compatiblea32a8cabf55a683668f34b50bd53f52d.html deleted file mode 100644 index 24e781d..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__compatible__object__type__impl_3_01BasicJsonType_00_01Compatiblea32a8cabf55a683668f34b50bd53f52d.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    nlohmann::detail::is_compatible_object_type_impl< BasicJsonType, CompatibleObjectType, enable_if_t< is_detected< mapped_type_t, CompatibleObjectType >::value and is_detected< key_type_t, CompatibleObjectType >::value > > Member List
    -
    - - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1is__compatible__object__type__impl__coll__graph.map b/help/html/structnlohmann_1_1detail_1_1is__compatible__object__type__impl__coll__graph.map deleted file mode 100644 index 9cb8f2b..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__compatible__object__type__impl__coll__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1is__compatible__object__type__impl__coll__graph.md5 b/help/html/structnlohmann_1_1detail_1_1is__compatible__object__type__impl__coll__graph.md5 deleted file mode 100644 index a0743aa..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__compatible__object__type__impl__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -49961afc6ecb6a69291fe2c13120f6a7 \ No newline at end of file diff --git a/help/html/structnlohmann_1_1detail_1_1is__compatible__object__type__impl__coll__graph.png b/help/html/structnlohmann_1_1detail_1_1is__compatible__object__type__impl__coll__graph.png deleted file mode 100644 index 6d0514f..0000000 Binary files a/help/html/structnlohmann_1_1detail_1_1is__compatible__object__type__impl__coll__graph.png and /dev/null differ diff --git a/help/html/structnlohmann_1_1detail_1_1is__compatible__object__type__impl__inherit__graph.map b/help/html/structnlohmann_1_1detail_1_1is__compatible__object__type__impl__inherit__graph.map deleted file mode 100644 index 9cb8f2b..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__compatible__object__type__impl__inherit__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1is__compatible__object__type__impl__inherit__graph.md5 b/help/html/structnlohmann_1_1detail_1_1is__compatible__object__type__impl__inherit__graph.md5 deleted file mode 100644 index a0743aa..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__compatible__object__type__impl__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -49961afc6ecb6a69291fe2c13120f6a7 \ No newline at end of file diff --git a/help/html/structnlohmann_1_1detail_1_1is__compatible__object__type__impl__inherit__graph.png b/help/html/structnlohmann_1_1detail_1_1is__compatible__object__type__impl__inherit__graph.png deleted file mode 100644 index 6d0514f..0000000 Binary files a/help/html/structnlohmann_1_1detail_1_1is__compatible__object__type__impl__inherit__graph.png and /dev/null differ diff --git a/help/html/structnlohmann_1_1detail_1_1is__compatible__object__type__inherit__graph.map b/help/html/structnlohmann_1_1detail_1_1is__compatible__object__type__inherit__graph.map deleted file mode 100644 index 097a4b7..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__compatible__object__type__inherit__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1is__compatible__object__type__inherit__graph.md5 b/help/html/structnlohmann_1_1detail_1_1is__compatible__object__type__inherit__graph.md5 deleted file mode 100644 index 309ae59..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__compatible__object__type__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -f1adaa7eaaed96615739f29e15c9cf32 \ No newline at end of file diff --git a/help/html/structnlohmann_1_1detail_1_1is__compatible__object__type__inherit__graph.png b/help/html/structnlohmann_1_1detail_1_1is__compatible__object__type__inherit__graph.png deleted file mode 100644 index d8a455c..0000000 Binary files a/help/html/structnlohmann_1_1detail_1_1is__compatible__object__type__inherit__graph.png and /dev/null differ diff --git a/help/html/structnlohmann_1_1detail_1_1is__compatible__string__type.html b/help/html/structnlohmann_1_1detail_1_1is__compatible__string__type.html deleted file mode 100644 index 496a7bf..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__compatible__string__type.html +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::is_compatible_string_type< BasicJsonType, ConstructibleStringType > Struct Template Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    nlohmann::detail::is_compatible_string_type< BasicJsonType, ConstructibleStringType > Struct Template Reference
    -
    -
    - -

    #include <json.hpp>

    -
    -Inheritance diagram for nlohmann::detail::is_compatible_string_type< BasicJsonType, ConstructibleStringType >:
    -
    -
    Inheritance graph
    - - - - - -
    [legend]
    -
    -Collaboration diagram for nlohmann::detail::is_compatible_string_type< BasicJsonType, ConstructibleStringType >:
    -
    -
    Collaboration graph
    - - - - - -
    [legend]
    -
    The documentation for this struct was generated from the following file:
      -
    • build/_deps/json-src/include/nlohmann/json.hpp
    • -
    -
    - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1is__compatible__string__type__coll__graph.map b/help/html/structnlohmann_1_1detail_1_1is__compatible__string__type__coll__graph.map deleted file mode 100644 index 9fb1829..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__compatible__string__type__coll__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1is__compatible__string__type__coll__graph.md5 b/help/html/structnlohmann_1_1detail_1_1is__compatible__string__type__coll__graph.md5 deleted file mode 100644 index 42804b3..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__compatible__string__type__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -613690887176a95c3b3f103c04f95b70 \ No newline at end of file diff --git a/help/html/structnlohmann_1_1detail_1_1is__compatible__string__type__coll__graph.png b/help/html/structnlohmann_1_1detail_1_1is__compatible__string__type__coll__graph.png deleted file mode 100644 index a2c46ad..0000000 Binary files a/help/html/structnlohmann_1_1detail_1_1is__compatible__string__type__coll__graph.png and /dev/null differ diff --git a/help/html/structnlohmann_1_1detail_1_1is__compatible__string__type__impl.html b/help/html/structnlohmann_1_1detail_1_1is__compatible__string__type__impl.html deleted file mode 100644 index e56728f..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__compatible__string__type__impl.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::is_compatible_string_type_impl< BasicJsonType, CompatibleStringType, typename > Struct Template Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    nlohmann::detail::is_compatible_string_type_impl< BasicJsonType, CompatibleStringType, typename > Struct Template Reference
    -
    -
    - -

    #include <json.hpp>

    -
    -Inheritance diagram for nlohmann::detail::is_compatible_string_type_impl< BasicJsonType, CompatibleStringType, typename >:
    -
    -
    Inheritance graph
    - - - - -
    [legend]
    -
    -Collaboration diagram for nlohmann::detail::is_compatible_string_type_impl< BasicJsonType, CompatibleStringType, typename >:
    -
    -
    Collaboration graph
    - - - - -
    [legend]
    -
    The documentation for this struct was generated from the following file:
      -
    • build/_deps/json-src/include/nlohmann/json.hpp
    • -
    -
    - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1is__compatible__string__type__impl_3_01BasicJsonType_00_01Compatible08f2b97ced9133b6c9efddf038a31cca.html b/help/html/structnlohmann_1_1detail_1_1is__compatible__string__type__impl_3_01BasicJsonType_00_01Compatible08f2b97ced9133b6c9efddf038a31cca.html deleted file mode 100644 index 6cfa665..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__compatible__string__type__impl_3_01BasicJsonType_00_01Compatible08f2b97ced9133b6c9efddf038a31cca.html +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    nlohmann::detail::is_compatible_string_type_impl< BasicJsonType, CompatibleStringType, enable_if_t< is_detected_exact< typename BasicJsonType::string_t::value_type, value_type_t, CompatibleStringType >::value > > Member List
    -
    - - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1is__compatible__string__type__impl_3_01BasicJsonType_00_01Compatible494e9dc742c819c61e54b8282030b5b6.html b/help/html/structnlohmann_1_1detail_1_1is__compatible__string__type__impl_3_01BasicJsonType_00_01Compatible494e9dc742c819c61e54b8282030b5b6.html deleted file mode 100644 index 29a3c1e..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__compatible__string__type__impl_3_01BasicJsonType_00_01Compatible494e9dc742c819c61e54b8282030b5b6.html +++ /dev/null @@ -1,121 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::is_compatible_string_type_impl< BasicJsonType, CompatibleStringType, enable_if_t< is_detected_exact< typename BasicJsonType::string_t::value_type, value_type_t, CompatibleStringType >::value > > Struct Template Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    nlohmann::detail::is_compatible_string_type_impl< BasicJsonType, CompatibleStringType, enable_if_t< is_detected_exact< typename BasicJsonType::string_t::value_type, value_type_t, CompatibleStringType >::value > > Struct Template Reference
    -
    -
    - -

    #include <json.hpp>

    - - - - -

    -Static Public Attributes

    static constexpr auto value
     
    -

    Member Data Documentation

    - -

    ◆ value

    - -
    -
    -
    -template<typename BasicJsonType , typename CompatibleStringType >
    - - - - - -
    - - - - -
    static constexpr auto nlohmann::detail::is_compatible_string_type_impl< BasicJsonType, CompatibleStringType, enable_if_t< is_detected_exact< typename BasicJsonType::string_t::value_type, value_type_t, CompatibleStringType >::value > >::value
    -
    -staticconstexpr
    -
    -Initial value:
    =
    -
    std::is_constructible<typename BasicJsonType::string_t, CompatibleStringType>::value
    -
    -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • build/_deps/json-src/include/nlohmann/json.hpp
    • -
    -
    - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1is__compatible__string__type__impl__coll__graph.map b/help/html/structnlohmann_1_1detail_1_1is__compatible__string__type__impl__coll__graph.map deleted file mode 100644 index 95843cd..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__compatible__string__type__impl__coll__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1is__compatible__string__type__impl__coll__graph.md5 b/help/html/structnlohmann_1_1detail_1_1is__compatible__string__type__impl__coll__graph.md5 deleted file mode 100644 index 5faaabf..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__compatible__string__type__impl__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -2fd9bceadd806b9df9a7feb2da7d7b78 \ No newline at end of file diff --git a/help/html/structnlohmann_1_1detail_1_1is__compatible__string__type__impl__coll__graph.png b/help/html/structnlohmann_1_1detail_1_1is__compatible__string__type__impl__coll__graph.png deleted file mode 100644 index 3e78932..0000000 Binary files a/help/html/structnlohmann_1_1detail_1_1is__compatible__string__type__impl__coll__graph.png and /dev/null differ diff --git a/help/html/structnlohmann_1_1detail_1_1is__compatible__string__type__impl__inherit__graph.map b/help/html/structnlohmann_1_1detail_1_1is__compatible__string__type__impl__inherit__graph.map deleted file mode 100644 index 95843cd..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__compatible__string__type__impl__inherit__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1is__compatible__string__type__impl__inherit__graph.md5 b/help/html/structnlohmann_1_1detail_1_1is__compatible__string__type__impl__inherit__graph.md5 deleted file mode 100644 index 5faaabf..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__compatible__string__type__impl__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -2fd9bceadd806b9df9a7feb2da7d7b78 \ No newline at end of file diff --git a/help/html/structnlohmann_1_1detail_1_1is__compatible__string__type__impl__inherit__graph.png b/help/html/structnlohmann_1_1detail_1_1is__compatible__string__type__impl__inherit__graph.png deleted file mode 100644 index 3e78932..0000000 Binary files a/help/html/structnlohmann_1_1detail_1_1is__compatible__string__type__impl__inherit__graph.png and /dev/null differ diff --git a/help/html/structnlohmann_1_1detail_1_1is__compatible__string__type__inherit__graph.map b/help/html/structnlohmann_1_1detail_1_1is__compatible__string__type__inherit__graph.map deleted file mode 100644 index 9fb1829..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__compatible__string__type__inherit__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1is__compatible__string__type__inherit__graph.md5 b/help/html/structnlohmann_1_1detail_1_1is__compatible__string__type__inherit__graph.md5 deleted file mode 100644 index 42804b3..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__compatible__string__type__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -613690887176a95c3b3f103c04f95b70 \ No newline at end of file diff --git a/help/html/structnlohmann_1_1detail_1_1is__compatible__string__type__inherit__graph.png b/help/html/structnlohmann_1_1detail_1_1is__compatible__string__type__inherit__graph.png deleted file mode 100644 index a2c46ad..0000000 Binary files a/help/html/structnlohmann_1_1detail_1_1is__compatible__string__type__inherit__graph.png and /dev/null differ diff --git a/help/html/structnlohmann_1_1detail_1_1is__compatible__type.html b/help/html/structnlohmann_1_1detail_1_1is__compatible__type.html deleted file mode 100644 index 071fc05..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__compatible__type.html +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::is_compatible_type< BasicJsonType, CompatibleType > Struct Template Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    nlohmann::detail::is_compatible_type< BasicJsonType, CompatibleType > Struct Template Reference
    -
    -
    - -

    #include <json.hpp>

    -
    -Inheritance diagram for nlohmann::detail::is_compatible_type< BasicJsonType, CompatibleType >:
    -
    -
    Inheritance graph
    - - - - - -
    [legend]
    -
    -Collaboration diagram for nlohmann::detail::is_compatible_type< BasicJsonType, CompatibleType >:
    -
    -
    Collaboration graph
    - - - - - -
    [legend]
    -
    The documentation for this struct was generated from the following file:
      -
    • build/_deps/json-src/include/nlohmann/json.hpp
    • -
    -
    - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1is__compatible__type__coll__graph.map b/help/html/structnlohmann_1_1detail_1_1is__compatible__type__coll__graph.map deleted file mode 100644 index cc70b65..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__compatible__type__coll__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1is__compatible__type__coll__graph.md5 b/help/html/structnlohmann_1_1detail_1_1is__compatible__type__coll__graph.md5 deleted file mode 100644 index 74a7f2c..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__compatible__type__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -e4a2c4ee77b0aecc84f45a5ed61c99a3 \ No newline at end of file diff --git a/help/html/structnlohmann_1_1detail_1_1is__compatible__type__coll__graph.png b/help/html/structnlohmann_1_1detail_1_1is__compatible__type__coll__graph.png deleted file mode 100644 index 31b4ded..0000000 Binary files a/help/html/structnlohmann_1_1detail_1_1is__compatible__type__coll__graph.png and /dev/null differ diff --git a/help/html/structnlohmann_1_1detail_1_1is__compatible__type__impl.html b/help/html/structnlohmann_1_1detail_1_1is__compatible__type__impl.html deleted file mode 100644 index 94be2e3..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__compatible__type__impl.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::is_compatible_type_impl< BasicJsonType, CompatibleType, typename > Struct Template Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    nlohmann::detail::is_compatible_type_impl< BasicJsonType, CompatibleType, typename > Struct Template Reference
    -
    -
    - -

    #include <json.hpp>

    -
    -Inheritance diagram for nlohmann::detail::is_compatible_type_impl< BasicJsonType, CompatibleType, typename >:
    -
    -
    Inheritance graph
    - - - - -
    [legend]
    -
    -Collaboration diagram for nlohmann::detail::is_compatible_type_impl< BasicJsonType, CompatibleType, typename >:
    -
    -
    Collaboration graph
    - - - - -
    [legend]
    -
    The documentation for this struct was generated from the following file:
      -
    • build/_deps/json-src/include/nlohmann/json.hpp
    • -
    -
    - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1is__compatible__type__impl_3_01BasicJsonType_00_01CompatibleType_00_9a6352a6d7bc32b815455d253d1f1f62.html b/help/html/structnlohmann_1_1detail_1_1is__compatible__type__impl_3_01BasicJsonType_00_01CompatibleType_00_9a6352a6d7bc32b815455d253d1f1f62.html deleted file mode 100644 index 9a8a5ad..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__compatible__type__impl_3_01BasicJsonType_00_01CompatibleType_00_9a6352a6d7bc32b815455d253d1f1f62.html +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    nlohmann::detail::is_compatible_type_impl< BasicJsonType, CompatibleType, enable_if_t< is_complete_type< CompatibleType >::value > > Member List
    -
    - - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1is__compatible__type__impl_3_01BasicJsonType_00_01CompatibleType_00_fa54cb60e66f5c6ba93b1dd3f418b703.html b/help/html/structnlohmann_1_1detail_1_1is__compatible__type__impl_3_01BasicJsonType_00_01CompatibleType_00_fa54cb60e66f5c6ba93b1dd3f418b703.html deleted file mode 100644 index 08fb752..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__compatible__type__impl_3_01BasicJsonType_00_01CompatibleType_00_fa54cb60e66f5c6ba93b1dd3f418b703.html +++ /dev/null @@ -1,121 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::is_compatible_type_impl< BasicJsonType, CompatibleType, enable_if_t< is_complete_type< CompatibleType >::value > > Struct Template Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    nlohmann::detail::is_compatible_type_impl< BasicJsonType, CompatibleType, enable_if_t< is_complete_type< CompatibleType >::value > > Struct Template Reference
    -
    -
    - -

    #include <json.hpp>

    - - - - -

    -Static Public Attributes

    static constexpr bool value
     
    -

    Member Data Documentation

    - -

    ◆ value

    - -
    -
    -
    -template<typename BasicJsonType , typename CompatibleType >
    - - - - - -
    - - - - -
    static constexpr bool nlohmann::detail::is_compatible_type_impl< BasicJsonType, CompatibleType, enable_if_t< is_complete_type< CompatibleType >::value > >::value
    -
    -staticconstexpr
    -
    -Initial value:
    =
    -
    has_to_json<BasicJsonType, CompatibleType>::value
    -
    -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • build/_deps/json-src/include/nlohmann/json.hpp
    • -
    -
    - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1is__compatible__type__impl__coll__graph.map b/help/html/structnlohmann_1_1detail_1_1is__compatible__type__impl__coll__graph.map deleted file mode 100644 index 4ae0338..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__compatible__type__impl__coll__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1is__compatible__type__impl__coll__graph.md5 b/help/html/structnlohmann_1_1detail_1_1is__compatible__type__impl__coll__graph.md5 deleted file mode 100644 index c8e63c4..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__compatible__type__impl__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -2ab967800f703c0abcd8f6031729c75f \ No newline at end of file diff --git a/help/html/structnlohmann_1_1detail_1_1is__compatible__type__impl__coll__graph.png b/help/html/structnlohmann_1_1detail_1_1is__compatible__type__impl__coll__graph.png deleted file mode 100644 index e03f260..0000000 Binary files a/help/html/structnlohmann_1_1detail_1_1is__compatible__type__impl__coll__graph.png and /dev/null differ diff --git a/help/html/structnlohmann_1_1detail_1_1is__compatible__type__impl__inherit__graph.map b/help/html/structnlohmann_1_1detail_1_1is__compatible__type__impl__inherit__graph.map deleted file mode 100644 index 4ae0338..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__compatible__type__impl__inherit__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1is__compatible__type__impl__inherit__graph.md5 b/help/html/structnlohmann_1_1detail_1_1is__compatible__type__impl__inherit__graph.md5 deleted file mode 100644 index c8e63c4..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__compatible__type__impl__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -2ab967800f703c0abcd8f6031729c75f \ No newline at end of file diff --git a/help/html/structnlohmann_1_1detail_1_1is__compatible__type__impl__inherit__graph.png b/help/html/structnlohmann_1_1detail_1_1is__compatible__type__impl__inherit__graph.png deleted file mode 100644 index e03f260..0000000 Binary files a/help/html/structnlohmann_1_1detail_1_1is__compatible__type__impl__inherit__graph.png and /dev/null differ diff --git a/help/html/structnlohmann_1_1detail_1_1is__compatible__type__inherit__graph.map b/help/html/structnlohmann_1_1detail_1_1is__compatible__type__inherit__graph.map deleted file mode 100644 index cc70b65..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__compatible__type__inherit__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1is__compatible__type__inherit__graph.md5 b/help/html/structnlohmann_1_1detail_1_1is__compatible__type__inherit__graph.md5 deleted file mode 100644 index 74a7f2c..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__compatible__type__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -e4a2c4ee77b0aecc84f45a5ed61c99a3 \ No newline at end of file diff --git a/help/html/structnlohmann_1_1detail_1_1is__compatible__type__inherit__graph.png b/help/html/structnlohmann_1_1detail_1_1is__compatible__type__inherit__graph.png deleted file mode 100644 index 31b4ded..0000000 Binary files a/help/html/structnlohmann_1_1detail_1_1is__compatible__type__inherit__graph.png and /dev/null differ diff --git a/help/html/structnlohmann_1_1detail_1_1is__complete__type.html b/help/html/structnlohmann_1_1detail_1_1is__complete__type.html deleted file mode 100644 index 89d401b..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__complete__type.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::is_complete_type< T, typename > Struct Template Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    nlohmann::detail::is_complete_type< T, typename > Struct Template Reference
    -
    -
    - -

    #include <json.hpp>

    -
    -Inheritance diagram for nlohmann::detail::is_complete_type< T, typename >:
    -
    -
    Inheritance graph
    - - - - -
    [legend]
    -
    -Collaboration diagram for nlohmann::detail::is_complete_type< T, typename >:
    -
    -
    Collaboration graph
    - - - - -
    [legend]
    -
    The documentation for this struct was generated from the following file:
      -
    • build/_deps/json-src/include/nlohmann/json.hpp
    • -
    -
    - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1is__complete__type_3_01T_00_01decltype_07void_07sizeof_07T_08_08_08_4.html b/help/html/structnlohmann_1_1detail_1_1is__complete__type_3_01T_00_01decltype_07void_07sizeof_07T_08_08_08_4.html deleted file mode 100644 index 0755754..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__complete__type_3_01T_00_01decltype_07void_07sizeof_07T_08_08_08_4.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::is_complete_type< T, decltype(void(sizeof(T)))> Struct Template Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    nlohmann::detail::is_complete_type< T, decltype(void(sizeof(T)))> Struct Template Reference
    -
    -
    - -

    #include <json.hpp>

    -
    -Inheritance diagram for nlohmann::detail::is_complete_type< T, decltype(void(sizeof(T)))>:
    -
    -
    Inheritance graph
    - - - - -
    [legend]
    -
    -Collaboration diagram for nlohmann::detail::is_complete_type< T, decltype(void(sizeof(T)))>:
    -
    -
    Collaboration graph
    - - - - -
    [legend]
    -
    The documentation for this struct was generated from the following file:
      -
    • build/_deps/json-src/include/nlohmann/json.hpp
    • -
    -
    - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1is__complete__type_3_01T_00_01decltype_07void_07sizeof_07T_08_08_08_4__coll__graph.map b/help/html/structnlohmann_1_1detail_1_1is__complete__type_3_01T_00_01decltype_07void_07sizeof_07T_08_08_08_4__coll__graph.map deleted file mode 100644 index a4a8ef6..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__complete__type_3_01T_00_01decltype_07void_07sizeof_07T_08_08_08_4__coll__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1is__complete__type_3_01T_00_01decltype_07void_07sizeof_07T_08_08_08_4__coll__graph.md5 b/help/html/structnlohmann_1_1detail_1_1is__complete__type_3_01T_00_01decltype_07void_07sizeof_07T_08_08_08_4__coll__graph.md5 deleted file mode 100644 index ae26732..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__complete__type_3_01T_00_01decltype_07void_07sizeof_07T_08_08_08_4__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -cf85d24724e217293fd10992043a8f62 \ No newline at end of file diff --git a/help/html/structnlohmann_1_1detail_1_1is__complete__type_3_01T_00_01decltype_07void_07sizeof_07T_08_08_08_4__coll__graph.png b/help/html/structnlohmann_1_1detail_1_1is__complete__type_3_01T_00_01decltype_07void_07sizeof_07T_08_08_08_4__coll__graph.png deleted file mode 100644 index dd0805c..0000000 Binary files a/help/html/structnlohmann_1_1detail_1_1is__complete__type_3_01T_00_01decltype_07void_07sizeof_07T_08_08_08_4__coll__graph.png and /dev/null differ diff --git a/help/html/structnlohmann_1_1detail_1_1is__complete__type_3_01T_00_01decltype_07void_07sizeof_07T_08_08_08_4__inherit__graph.map b/help/html/structnlohmann_1_1detail_1_1is__complete__type_3_01T_00_01decltype_07void_07sizeof_07T_08_08_08_4__inherit__graph.map deleted file mode 100644 index a4a8ef6..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__complete__type_3_01T_00_01decltype_07void_07sizeof_07T_08_08_08_4__inherit__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1is__complete__type_3_01T_00_01decltype_07void_07sizeof_07T_08_08_08_4__inherit__graph.md5 b/help/html/structnlohmann_1_1detail_1_1is__complete__type_3_01T_00_01decltype_07void_07sizeof_07T_08_08_08_4__inherit__graph.md5 deleted file mode 100644 index ae26732..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__complete__type_3_01T_00_01decltype_07void_07sizeof_07T_08_08_08_4__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -cf85d24724e217293fd10992043a8f62 \ No newline at end of file diff --git a/help/html/structnlohmann_1_1detail_1_1is__complete__type_3_01T_00_01decltype_07void_07sizeof_07T_08_08_08_4__inherit__graph.png b/help/html/structnlohmann_1_1detail_1_1is__complete__type_3_01T_00_01decltype_07void_07sizeof_07T_08_08_08_4__inherit__graph.png deleted file mode 100644 index dd0805c..0000000 Binary files a/help/html/structnlohmann_1_1detail_1_1is__complete__type_3_01T_00_01decltype_07void_07sizeof_07T_08_08_08_4__inherit__graph.png and /dev/null differ diff --git a/help/html/structnlohmann_1_1detail_1_1is__complete__type__coll__graph.map b/help/html/structnlohmann_1_1detail_1_1is__complete__type__coll__graph.map deleted file mode 100644 index f60ee73..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__complete__type__coll__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1is__complete__type__coll__graph.md5 b/help/html/structnlohmann_1_1detail_1_1is__complete__type__coll__graph.md5 deleted file mode 100644 index 138edf3..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__complete__type__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -e19e5409ee29ce7b2c91dd97b662ef9b \ No newline at end of file diff --git a/help/html/structnlohmann_1_1detail_1_1is__complete__type__coll__graph.png b/help/html/structnlohmann_1_1detail_1_1is__complete__type__coll__graph.png deleted file mode 100644 index 8d60aa1..0000000 Binary files a/help/html/structnlohmann_1_1detail_1_1is__complete__type__coll__graph.png and /dev/null differ diff --git a/help/html/structnlohmann_1_1detail_1_1is__complete__type__inherit__graph.map b/help/html/structnlohmann_1_1detail_1_1is__complete__type__inherit__graph.map deleted file mode 100644 index f60ee73..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__complete__type__inherit__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1is__complete__type__inherit__graph.md5 b/help/html/structnlohmann_1_1detail_1_1is__complete__type__inherit__graph.md5 deleted file mode 100644 index 138edf3..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__complete__type__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -e19e5409ee29ce7b2c91dd97b662ef9b \ No newline at end of file diff --git a/help/html/structnlohmann_1_1detail_1_1is__complete__type__inherit__graph.png b/help/html/structnlohmann_1_1detail_1_1is__complete__type__inherit__graph.png deleted file mode 100644 index 8d60aa1..0000000 Binary files a/help/html/structnlohmann_1_1detail_1_1is__complete__type__inherit__graph.png and /dev/null differ diff --git a/help/html/structnlohmann_1_1detail_1_1is__constructible__array__type.html b/help/html/structnlohmann_1_1detail_1_1is__constructible__array__type.html deleted file mode 100644 index 92b5aa4..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__constructible__array__type.html +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::is_constructible_array_type< BasicJsonType, ConstructibleArrayType > Struct Template Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    nlohmann::detail::is_constructible_array_type< BasicJsonType, ConstructibleArrayType > Struct Template Reference
    -
    -
    - -

    #include <json.hpp>

    -
    -Inheritance diagram for nlohmann::detail::is_constructible_array_type< BasicJsonType, ConstructibleArrayType >:
    -
    -
    Inheritance graph
    - - - - - -
    [legend]
    -
    -Collaboration diagram for nlohmann::detail::is_constructible_array_type< BasicJsonType, ConstructibleArrayType >:
    -
    -
    Collaboration graph
    - - - - - -
    [legend]
    -
    The documentation for this struct was generated from the following file:
      -
    • build/_deps/json-src/include/nlohmann/json.hpp
    • -
    -
    - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1is__constructible__array__type__coll__graph.map b/help/html/structnlohmann_1_1detail_1_1is__constructible__array__type__coll__graph.map deleted file mode 100644 index 214d3b5..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__constructible__array__type__coll__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1is__constructible__array__type__coll__graph.md5 b/help/html/structnlohmann_1_1detail_1_1is__constructible__array__type__coll__graph.md5 deleted file mode 100644 index e3b4a11..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__constructible__array__type__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -18ae18de98a6be57501defba9f00a843 \ No newline at end of file diff --git a/help/html/structnlohmann_1_1detail_1_1is__constructible__array__type__coll__graph.png b/help/html/structnlohmann_1_1detail_1_1is__constructible__array__type__coll__graph.png deleted file mode 100644 index 104e5fe..0000000 Binary files a/help/html/structnlohmann_1_1detail_1_1is__constructible__array__type__coll__graph.png and /dev/null differ diff --git a/help/html/structnlohmann_1_1detail_1_1is__constructible__array__type__impl.html b/help/html/structnlohmann_1_1detail_1_1is__constructible__array__type__impl.html deleted file mode 100644 index 4b53360..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__constructible__array__type__impl.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::is_constructible_array_type_impl< BasicJsonType, ConstructibleArrayType, typename > Struct Template Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    nlohmann::detail::is_constructible_array_type_impl< BasicJsonType, ConstructibleArrayType, typename > Struct Template Reference
    -
    -
    - -

    #include <json.hpp>

    -
    -Inheritance diagram for nlohmann::detail::is_constructible_array_type_impl< BasicJsonType, ConstructibleArrayType, typename >:
    -
    -
    Inheritance graph
    - - - - -
    [legend]
    -
    -Collaboration diagram for nlohmann::detail::is_constructible_array_type_impl< BasicJsonType, ConstructibleArrayType, typename >:
    -
    -
    Collaboration graph
    - - - - -
    [legend]
    -
    The documentation for this struct was generated from the following file:
      -
    • build/_deps/json-src/include/nlohmann/json.hpp
    • -
    -
    - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1is__constructible__array__type__impl_3_01BasicJsonType_00_01Construc32e1f7176d4f9ce923e40e0b0d186e13.map b/help/html/structnlohmann_1_1detail_1_1is__constructible__array__type__impl_3_01BasicJsonType_00_01Construc32e1f7176d4f9ce923e40e0b0d186e13.map deleted file mode 100644 index 41f6667..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__constructible__array__type__impl_3_01BasicJsonType_00_01Construc32e1f7176d4f9ce923e40e0b0d186e13.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1is__constructible__array__type__impl_3_01BasicJsonType_00_01Construc32e1f7176d4f9ce923e40e0b0d186e13.md5 b/help/html/structnlohmann_1_1detail_1_1is__constructible__array__type__impl_3_01BasicJsonType_00_01Construc32e1f7176d4f9ce923e40e0b0d186e13.md5 deleted file mode 100644 index ca698e5..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__constructible__array__type__impl_3_01BasicJsonType_00_01Construc32e1f7176d4f9ce923e40e0b0d186e13.md5 +++ /dev/null @@ -1 +0,0 @@ -8dad77d0d66a99bac88262df2b3dfadc \ No newline at end of file diff --git a/help/html/structnlohmann_1_1detail_1_1is__constructible__array__type__impl_3_01BasicJsonType_00_01Construc32e1f7176d4f9ce923e40e0b0d186e13.png b/help/html/structnlohmann_1_1detail_1_1is__constructible__array__type__impl_3_01BasicJsonType_00_01Construc32e1f7176d4f9ce923e40e0b0d186e13.png deleted file mode 100644 index 7ecbb07..0000000 Binary files a/help/html/structnlohmann_1_1detail_1_1is__constructible__array__type__impl_3_01BasicJsonType_00_01Construc32e1f7176d4f9ce923e40e0b0d186e13.png and /dev/null differ diff --git a/help/html/structnlohmann_1_1detail_1_1is__constructible__array__type__impl_3_01BasicJsonType_00_01Construc65686bccc13a5314e8805a22524438f0.html b/help/html/structnlohmann_1_1detail_1_1is__constructible__array__type__impl_3_01BasicJsonType_00_01Construc65686bccc13a5314e8805a22524438f0.html deleted file mode 100644 index 5009f59..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__constructible__array__type__impl_3_01BasicJsonType_00_01Construc65686bccc13a5314e8805a22524438f0.html +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    nlohmann::detail::is_constructible_array_type_impl< BasicJsonType, ConstructibleArrayType, enable_if_t< !std::is_same< ConstructibleArrayType, typename BasicJsonType::value_type >::value &&std::is_default_constructible< ConstructibleArrayType >::value &&(std::is_move_assignable< ConstructibleArrayType >::value||std::is_copy_assignable< ConstructibleArrayType >::value)&&is_detected< value_type_t, ConstructibleArrayType >::value &&is_detected< iterator_t, ConstructibleArrayType >::value &&is_complete_type< detected_t< value_type_t, ConstructibleArrayType > >::value > > Member List
    -
    - - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1is__constructible__array__type__impl_3_01BasicJsonType_00_01Construc66cd9eea2814580c77becd1b1fb171c6.html b/help/html/structnlohmann_1_1detail_1_1is__constructible__array__type__impl_3_01BasicJsonType_00_01Construc66cd9eea2814580c77becd1b1fb171c6.html deleted file mode 100644 index 3bb4525..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__constructible__array__type__impl_3_01BasicJsonType_00_01Construc66cd9eea2814580c77becd1b1fb171c6.html +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    nlohmann::detail::is_constructible_array_type_impl< BasicJsonType, ConstructibleArrayType, enable_if_t< not std::is_same< ConstructibleArrayType, typename BasicJsonType::value_type >::value and std::is_default_constructible< ConstructibleArrayType >::value and(std::is_move_assignable< ConstructibleArrayType >::value or std::is_copy_assignable< ConstructibleArrayType >::value) andis_detected< value_type_t, ConstructibleArrayType >::value andis_detected< iterator_t, ConstructibleArrayType >::value andis_complete_type< detected_t< value_type_t, ConstructibleArrayType > >::value > > Member List
    -
    - - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1is__constructible__array__type__impl_3_01BasicJsonType_00_01Construca6751f0ccf983945799627775f5c1958.map b/help/html/structnlohmann_1_1detail_1_1is__constructible__array__type__impl_3_01BasicJsonType_00_01Construca6751f0ccf983945799627775f5c1958.map deleted file mode 100644 index 41f6667..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__constructible__array__type__impl_3_01BasicJsonType_00_01Construca6751f0ccf983945799627775f5c1958.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1is__constructible__array__type__impl_3_01BasicJsonType_00_01Construca6751f0ccf983945799627775f5c1958.md5 b/help/html/structnlohmann_1_1detail_1_1is__constructible__array__type__impl_3_01BasicJsonType_00_01Construca6751f0ccf983945799627775f5c1958.md5 deleted file mode 100644 index ca698e5..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__constructible__array__type__impl_3_01BasicJsonType_00_01Construca6751f0ccf983945799627775f5c1958.md5 +++ /dev/null @@ -1 +0,0 @@ -8dad77d0d66a99bac88262df2b3dfadc \ No newline at end of file diff --git a/help/html/structnlohmann_1_1detail_1_1is__constructible__array__type__impl_3_01BasicJsonType_00_01Construca6751f0ccf983945799627775f5c1958.png b/help/html/structnlohmann_1_1detail_1_1is__constructible__array__type__impl_3_01BasicJsonType_00_01Construca6751f0ccf983945799627775f5c1958.png deleted file mode 100644 index 7ecbb07..0000000 Binary files a/help/html/structnlohmann_1_1detail_1_1is__constructible__array__type__impl_3_01BasicJsonType_00_01Construca6751f0ccf983945799627775f5c1958.png and /dev/null differ diff --git a/help/html/structnlohmann_1_1detail_1_1is__constructible__array__type__impl_3_01BasicJsonType_00_01Construcb751ba39e14100ed41966800a3fcf4db.html b/help/html/structnlohmann_1_1detail_1_1is__constructible__array__type__impl_3_01BasicJsonType_00_01Construcb751ba39e14100ed41966800a3fcf4db.html deleted file mode 100644 index 0488d9d..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__constructible__array__type__impl_3_01BasicJsonType_00_01Construcb751ba39e14100ed41966800a3fcf4db.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::is_constructible_array_type_impl< BasicJsonType, ConstructibleArrayType, enable_if_t< not std::is_same< ConstructibleArrayType, typename BasicJsonType::value_type >::value and std::is_default_constructible< ConstructibleArrayType >::value and(std::is_move_assignable< ConstructibleArrayType >::value or std::is_copy_assignable< ConstructibleArrayType >::value) andis_detected< value_type_t, ConstructibleArrayType >::value andis_detected< iterator_t, ConstructibleArrayType >::value andis_complete_type< detected_t< value_type_t, ConstructibleArrayType > >::value > > Struct Template Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    nlohmann::detail::is_constructible_array_type_impl< BasicJsonType, ConstructibleArrayType, enable_if_t< not std::is_same< ConstructibleArrayType, typename BasicJsonType::value_type >::value and std::is_default_constructible< ConstructibleArrayType >::value and(std::is_move_assignable< ConstructibleArrayType >::value or std::is_copy_assignable< ConstructibleArrayType >::value) andis_detected< value_type_t, ConstructibleArrayType >::value andis_detected< iterator_t, ConstructibleArrayType >::value andis_complete_type< detected_t< value_type_t, ConstructibleArrayType > >::value > > Struct Template Reference
    -
    -
    - -

    #include <json.hpp>

    - - - - -

    -Static Public Attributes

    static constexpr bool value
     
    -

    Member Data Documentation

    - -

    ◆ value

    - -
    -
    -
    -template<typename BasicJsonType , typename ConstructibleArrayType >
    - - - - - -
    - - - - -
    constexpr bool nlohmann::detail::is_constructible_array_type_impl< BasicJsonType, ConstructibleArrayType, enable_if_t< not std::is_same< ConstructibleArrayType, typename BasicJsonType::value_type >::value and std::is_default_constructible< ConstructibleArrayType >::value and(std::is_move_assignable< ConstructibleArrayType >::value or std::is_copy_assignable< ConstructibleArrayType >::value) andis_detected< value_type_t, ConstructibleArrayType >::value andis_detected< iterator_t, ConstructibleArrayType >::value andis_complete_type< detected_t< value_type_t, ConstructibleArrayType > >::value > >::value
    -
    -staticconstexpr
    -
    -Initial value:
    =
    -
    -
    -
    -
    -
    -
    not is_iterator_traits<iterator_traits<ConstructibleArrayType>>::value and
    -
    -
    (std::is_same<typename ConstructibleArrayType::value_type,
    -
    typename BasicJsonType::array_t::value_type>::value or
    -
    has_from_json<BasicJsonType,
    -
    typename ConstructibleArrayType::value_type>::value or
    -
    has_non_default_from_json <
    -
    BasicJsonType, typename ConstructibleArrayType::value_type >::value)
    -
    -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • build/_deps/json-src/include/nlohmann/json.hpp
    • -
    -
    - - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1is__constructible__array__type__impl_3_01BasicJsonType_00_01Construcdcf7abcf4e7a13cd758bad3819c3d6fc.html b/help/html/structnlohmann_1_1detail_1_1is__constructible__array__type__impl_3_01BasicJsonType_00_01Construcdcf7abcf4e7a13cd758bad3819c3d6fc.html deleted file mode 100644 index 581e951..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__constructible__array__type__impl_3_01BasicJsonType_00_01Construcdcf7abcf4e7a13cd758bad3819c3d6fc.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::is_constructible_array_type_impl< BasicJsonType, ConstructibleArrayType, enable_if_t< !std::is_same< ConstructibleArrayType, typename BasicJsonType::value_type >::value &&std::is_default_constructible< ConstructibleArrayType >::value &&(std::is_move_assignable< ConstructibleArrayType >::value||std::is_copy_assignable< ConstructibleArrayType >::value)&&is_detected< value_type_t, ConstructibleArrayType >::value &&is_detected< iterator_t, ConstructibleArrayType >::value &&is_complete_type< detected_t< value_type_t, ConstructibleArrayType > >::value > > Struct Template Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    nlohmann::detail::is_constructible_array_type_impl< BasicJsonType, ConstructibleArrayType, enable_if_t< !std::is_same< ConstructibleArrayType, typename BasicJsonType::value_type >::value &&std::is_default_constructible< ConstructibleArrayType >::value &&(std::is_move_assignable< ConstructibleArrayType >::value||std::is_copy_assignable< ConstructibleArrayType >::value)&&is_detected< value_type_t, ConstructibleArrayType >::value &&is_detected< iterator_t, ConstructibleArrayType >::value &&is_complete_type< detected_t< value_type_t, ConstructibleArrayType > >::value > > Struct Template Reference
    -
    -
    - -

    #include <json.hpp>

    - - - - -

    -Static Public Attributes

    static constexpr bool value
     
    -

    Member Data Documentation

    - -

    ◆ value

    - -
    -
    -
    -template<typename BasicJsonType , typename ConstructibleArrayType >
    - - - - - -
    - - - - -
    constexpr bool nlohmann::detail::is_constructible_array_type_impl< BasicJsonType, ConstructibleArrayType, enable_if_t< !std::is_same< ConstructibleArrayType, typename BasicJsonType::value_type >::value &&std::is_default_constructible< ConstructibleArrayType >::value &&(std::is_move_assignable< ConstructibleArrayType >::value||std::is_copy_assignable< ConstructibleArrayType >::value)&&is_detected< value_type_t, ConstructibleArrayType >::value &&is_detected< iterator_t, ConstructibleArrayType >::value &&is_complete_type< detected_t< value_type_t, ConstructibleArrayType > >::value > >::value
    -
    -staticconstexpr
    -
    -Initial value:
    =
    -
    -
    -
    -
    -
    -
    !is_iterator_traits<iterator_traits<ConstructibleArrayType>>::value &&
    -
    -
    (std::is_same<typename ConstructibleArrayType::value_type,
    -
    typename BasicJsonType::array_t::value_type>::value ||
    -
    has_from_json<BasicJsonType,
    -
    typename ConstructibleArrayType::value_type>::value ||
    -
    has_non_default_from_json <
    -
    BasicJsonType, typename ConstructibleArrayType::value_type >::value)
    -
    -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1is__constructible__array__type__impl_3_01BasicJsonType_00_01Construce6fa33688da703b95649da4749cdeb98.html b/help/html/structnlohmann_1_1detail_1_1is__constructible__array__type__impl_3_01BasicJsonType_00_01Construce6fa33688da703b95649da4749cdeb98.html deleted file mode 100644 index 8143b59..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__constructible__array__type__impl_3_01BasicJsonType_00_01Construce6fa33688da703b95649da4749cdeb98.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::is_constructible_array_type_impl< BasicJsonType, ConstructibleArrayType, enable_if_t< std::is_same< ConstructibleArrayType, typename BasicJsonType::value_type >::value > > Struct Template Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    nlohmann::detail::is_constructible_array_type_impl< BasicJsonType, ConstructibleArrayType, enable_if_t< std::is_same< ConstructibleArrayType, typename BasicJsonType::value_type >::value > > Struct Template Reference
    -
    -
    - -

    #include <json.hpp>

    -
    -Inheritance diagram for nlohmann::detail::is_constructible_array_type_impl< BasicJsonType, ConstructibleArrayType, enable_if_t< std::is_same< ConstructibleArrayType, typename BasicJsonType::value_type >::value > >:
    -
    -
    Inheritance graph
    - - - - -
    [legend]
    -
    -Collaboration diagram for nlohmann::detail::is_constructible_array_type_impl< BasicJsonType, ConstructibleArrayType, enable_if_t< std::is_same< ConstructibleArrayType, typename BasicJsonType::value_type >::value > >:
    -
    -
    Collaboration graph
    - - - - -
    [legend]
    -
    The documentation for this struct was generated from the following file:
      -
    • build/_deps/json-src/include/nlohmann/json.hpp
    • -
    -
    - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1is__constructible__array__type__impl__coll__graph.map b/help/html/structnlohmann_1_1detail_1_1is__constructible__array__type__impl__coll__graph.map deleted file mode 100644 index 93c6b76..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__constructible__array__type__impl__coll__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1is__constructible__array__type__impl__coll__graph.md5 b/help/html/structnlohmann_1_1detail_1_1is__constructible__array__type__impl__coll__graph.md5 deleted file mode 100644 index f122ee4..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__constructible__array__type__impl__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -0cf9f1b9b7231fec6f78103127ac0d3f \ No newline at end of file diff --git a/help/html/structnlohmann_1_1detail_1_1is__constructible__array__type__impl__coll__graph.png b/help/html/structnlohmann_1_1detail_1_1is__constructible__array__type__impl__coll__graph.png deleted file mode 100644 index 32ee1bf..0000000 Binary files a/help/html/structnlohmann_1_1detail_1_1is__constructible__array__type__impl__coll__graph.png and /dev/null differ diff --git a/help/html/structnlohmann_1_1detail_1_1is__constructible__array__type__impl__inherit__graph.map b/help/html/structnlohmann_1_1detail_1_1is__constructible__array__type__impl__inherit__graph.map deleted file mode 100644 index 93c6b76..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__constructible__array__type__impl__inherit__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1is__constructible__array__type__impl__inherit__graph.md5 b/help/html/structnlohmann_1_1detail_1_1is__constructible__array__type__impl__inherit__graph.md5 deleted file mode 100644 index f122ee4..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__constructible__array__type__impl__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -0cf9f1b9b7231fec6f78103127ac0d3f \ No newline at end of file diff --git a/help/html/structnlohmann_1_1detail_1_1is__constructible__array__type__impl__inherit__graph.png b/help/html/structnlohmann_1_1detail_1_1is__constructible__array__type__impl__inherit__graph.png deleted file mode 100644 index 32ee1bf..0000000 Binary files a/help/html/structnlohmann_1_1detail_1_1is__constructible__array__type__impl__inherit__graph.png and /dev/null differ diff --git a/help/html/structnlohmann_1_1detail_1_1is__constructible__array__type__inherit__graph.map b/help/html/structnlohmann_1_1detail_1_1is__constructible__array__type__inherit__graph.map deleted file mode 100644 index 214d3b5..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__constructible__array__type__inherit__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1is__constructible__array__type__inherit__graph.md5 b/help/html/structnlohmann_1_1detail_1_1is__constructible__array__type__inherit__graph.md5 deleted file mode 100644 index e3b4a11..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__constructible__array__type__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -18ae18de98a6be57501defba9f00a843 \ No newline at end of file diff --git a/help/html/structnlohmann_1_1detail_1_1is__constructible__array__type__inherit__graph.png b/help/html/structnlohmann_1_1detail_1_1is__constructible__array__type__inherit__graph.png deleted file mode 100644 index 104e5fe..0000000 Binary files a/help/html/structnlohmann_1_1detail_1_1is__constructible__array__type__inherit__graph.png and /dev/null differ diff --git a/help/html/structnlohmann_1_1detail_1_1is__constructible__object__type.html b/help/html/structnlohmann_1_1detail_1_1is__constructible__object__type.html deleted file mode 100644 index 03f21d7..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__constructible__object__type.html +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::is_constructible_object_type< BasicJsonType, ConstructibleObjectType > Struct Template Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    nlohmann::detail::is_constructible_object_type< BasicJsonType, ConstructibleObjectType > Struct Template Reference
    -
    -
    - -

    #include <json.hpp>

    -
    -Inheritance diagram for nlohmann::detail::is_constructible_object_type< BasicJsonType, ConstructibleObjectType >:
    -
    -
    Inheritance graph
    - - - - - -
    [legend]
    -
    -Collaboration diagram for nlohmann::detail::is_constructible_object_type< BasicJsonType, ConstructibleObjectType >:
    -
    -
    Collaboration graph
    - - - - - -
    [legend]
    -
    The documentation for this struct was generated from the following file:
      -
    • build/_deps/json-src/include/nlohmann/json.hpp
    • -
    -
    - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1is__constructible__object__type__coll__graph.map b/help/html/structnlohmann_1_1detail_1_1is__constructible__object__type__coll__graph.map deleted file mode 100644 index 01144ab..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__constructible__object__type__coll__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1is__constructible__object__type__coll__graph.md5 b/help/html/structnlohmann_1_1detail_1_1is__constructible__object__type__coll__graph.md5 deleted file mode 100644 index ecfbeb2..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__constructible__object__type__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -e4afbc69c3d7401d47c64ef6a17b74c3 \ No newline at end of file diff --git a/help/html/structnlohmann_1_1detail_1_1is__constructible__object__type__coll__graph.png b/help/html/structnlohmann_1_1detail_1_1is__constructible__object__type__coll__graph.png deleted file mode 100644 index d430fa3..0000000 Binary files a/help/html/structnlohmann_1_1detail_1_1is__constructible__object__type__coll__graph.png and /dev/null differ diff --git a/help/html/structnlohmann_1_1detail_1_1is__constructible__object__type__impl.html b/help/html/structnlohmann_1_1detail_1_1is__constructible__object__type__impl.html deleted file mode 100644 index 8e262a0..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__constructible__object__type__impl.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::is_constructible_object_type_impl< BasicJsonType, ConstructibleObjectType, typename > Struct Template Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    nlohmann::detail::is_constructible_object_type_impl< BasicJsonType, ConstructibleObjectType, typename > Struct Template Reference
    -
    -
    - -

    #include <json.hpp>

    -
    -Inheritance diagram for nlohmann::detail::is_constructible_object_type_impl< BasicJsonType, ConstructibleObjectType, typename >:
    -
    -
    Inheritance graph
    - - - - -
    [legend]
    -
    -Collaboration diagram for nlohmann::detail::is_constructible_object_type_impl< BasicJsonType, ConstructibleObjectType, typename >:
    -
    -
    Collaboration graph
    - - - - -
    [legend]
    -
    The documentation for this struct was generated from the following file:
      -
    • build/_deps/json-src/include/nlohmann/json.hpp
    • -
    -
    - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1is__constructible__object__type__impl_3_01BasicJsonType_00_01Construa4d1e16800f2c4963485512ecf18377c.html b/help/html/structnlohmann_1_1detail_1_1is__constructible__object__type__impl_3_01BasicJsonType_00_01Construa4d1e16800f2c4963485512ecf18377c.html deleted file mode 100644 index 51d3520..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__constructible__object__type__impl_3_01BasicJsonType_00_01Construa4d1e16800f2c4963485512ecf18377c.html +++ /dev/null @@ -1,157 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::is_constructible_object_type_impl< BasicJsonType, ConstructibleObjectType, enable_if_t< is_detected< mapped_type_t, ConstructibleObjectType >::value &&is_detected< key_type_t, ConstructibleObjectType >::value > > Struct Template Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    nlohmann::detail::is_constructible_object_type_impl< BasicJsonType, ConstructibleObjectType, enable_if_t< is_detected< mapped_type_t, ConstructibleObjectType >::value &&is_detected< key_type_t, ConstructibleObjectType >::value > > Struct Template Reference
    -
    -
    - -

    #include <json.hpp>

    - - - - -

    -Public Types

    using object_t = typename BasicJsonType::object_t
     
    - - - -

    -Static Public Attributes

    static constexpr bool value
     
    -

    Member Typedef Documentation

    - -

    ◆ object_t

    - -
    -
    -
    -template<typename BasicJsonType , typename ConstructibleObjectType >
    - - - - -
    using nlohmann::detail::is_constructible_object_type_impl< BasicJsonType, ConstructibleObjectType, enable_if_t< is_detected< mapped_type_t, ConstructibleObjectType >::value &&is_detected< key_type_t, ConstructibleObjectType >::value > >::object_t = typename BasicJsonType::object_t
    -
    - -
    -
    -

    Member Data Documentation

    - -

    ◆ value

    - -
    -
    -
    -template<typename BasicJsonType , typename ConstructibleObjectType >
    - - - - - -
    - - - - -
    constexpr bool nlohmann::detail::is_constructible_object_type_impl< BasicJsonType, ConstructibleObjectType, enable_if_t< is_detected< mapped_type_t, ConstructibleObjectType >::value &&is_detected< key_type_t, ConstructibleObjectType >::value > >::value
    -
    -staticconstexpr
    -
    -Initial value:
    =
    -
    (std::is_default_constructible<ConstructibleObjectType>::value &&
    -
    (std::is_move_assignable<ConstructibleObjectType>::value ||
    -
    std::is_copy_assignable<ConstructibleObjectType>::value) &&
    -
    (std::is_constructible<typename ConstructibleObjectType::key_type,
    -
    typename object_t::key_type>::value &&
    -
    std::is_same <
    -
    typename object_t::mapped_type,
    -
    typename ConstructibleObjectType::mapped_type >::value)) ||
    -
    (has_from_json<BasicJsonType,
    -
    typename ConstructibleObjectType::mapped_type>::value ||
    -
    has_non_default_from_json <
    -
    BasicJsonType,
    -
    typename ConstructibleObjectType::mapped_type >::value)
    -
    -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1is__constructible__object__type__impl_3_01BasicJsonType_00_01Construabeeb8c1928ab8354a051276e570f7ba.html b/help/html/structnlohmann_1_1detail_1_1is__constructible__object__type__impl_3_01BasicJsonType_00_01Construabeeb8c1928ab8354a051276e570f7ba.html deleted file mode 100644 index 681bf45..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__constructible__object__type__impl_3_01BasicJsonType_00_01Construabeeb8c1928ab8354a051276e570f7ba.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    nlohmann::detail::is_constructible_object_type_impl< BasicJsonType, ConstructibleObjectType, enable_if_t< is_detected< mapped_type_t, ConstructibleObjectType >::value and is_detected< key_type_t, ConstructibleObjectType >::value > > Member List
    -
    - - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1is__constructible__object__type__impl_3_01BasicJsonType_00_01Construb7f96efbcfd2606ccb5c84a830a60036.html b/help/html/structnlohmann_1_1detail_1_1is__constructible__object__type__impl_3_01BasicJsonType_00_01Construb7f96efbcfd2606ccb5c84a830a60036.html deleted file mode 100644 index af2c970..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__constructible__object__type__impl_3_01BasicJsonType_00_01Construb7f96efbcfd2606ccb5c84a830a60036.html +++ /dev/null @@ -1,157 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::is_constructible_object_type_impl< BasicJsonType, ConstructibleObjectType, enable_if_t< is_detected< mapped_type_t, ConstructibleObjectType >::value and is_detected< key_type_t, ConstructibleObjectType >::value > > Struct Template Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    nlohmann::detail::is_constructible_object_type_impl< BasicJsonType, ConstructibleObjectType, enable_if_t< is_detected< mapped_type_t, ConstructibleObjectType >::value and is_detected< key_type_t, ConstructibleObjectType >::value > > Struct Template Reference
    -
    -
    - -

    #include <json.hpp>

    - - - - -

    -Public Types

    using object_t = typename BasicJsonType::object_t
     
    - - - -

    -Static Public Attributes

    static constexpr bool value
     
    -

    Member Typedef Documentation

    - -

    ◆ object_t

    - -
    -
    -
    -template<typename BasicJsonType , typename ConstructibleObjectType >
    - - - - -
    using nlohmann::detail::is_constructible_object_type_impl< BasicJsonType, ConstructibleObjectType, enable_if_t< is_detected< mapped_type_t, ConstructibleObjectType >::value and is_detected< key_type_t, ConstructibleObjectType >::value > >::object_t = typename BasicJsonType::object_t
    -
    - -
    -
    -

    Member Data Documentation

    - -

    ◆ value

    - -
    -
    -
    -template<typename BasicJsonType , typename ConstructibleObjectType >
    - - - - - -
    - - - - -
    constexpr bool nlohmann::detail::is_constructible_object_type_impl< BasicJsonType, ConstructibleObjectType, enable_if_t< is_detected< mapped_type_t, ConstructibleObjectType >::value and is_detected< key_type_t, ConstructibleObjectType >::value > >::value
    -
    -staticconstexpr
    -
    -Initial value:
    =
    -
    (std::is_default_constructible<ConstructibleObjectType>::value and
    -
    (std::is_move_assignable<ConstructibleObjectType>::value or
    -
    std::is_copy_assignable<ConstructibleObjectType>::value) and
    -
    (std::is_constructible<typename ConstructibleObjectType::key_type,
    -
    typename object_t::key_type>::value and
    -
    std::is_same <
    -
    typename object_t::mapped_type,
    -
    typename ConstructibleObjectType::mapped_type >::value)) or
    -
    (has_from_json<BasicJsonType,
    -
    typename ConstructibleObjectType::mapped_type>::value or
    -
    has_non_default_from_json <
    -
    BasicJsonType,
    -
    typename ConstructibleObjectType::mapped_type >::value)
    -
    -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • build/_deps/json-src/include/nlohmann/json.hpp
    • -
    -
    - - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1is__constructible__object__type__impl_3_01BasicJsonType_00_01Construba053eadca50083566a99e3961acdee7.html b/help/html/structnlohmann_1_1detail_1_1is__constructible__object__type__impl_3_01BasicJsonType_00_01Construba053eadca50083566a99e3961acdee7.html deleted file mode 100644 index 0378879..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__constructible__object__type__impl_3_01BasicJsonType_00_01Construba053eadca50083566a99e3961acdee7.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    nlohmann::detail::is_constructible_object_type_impl< BasicJsonType, ConstructibleObjectType, enable_if_t< is_detected< mapped_type_t, ConstructibleObjectType >::value &&is_detected< key_type_t, ConstructibleObjectType >::value > > Member List
    -
    - - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1is__constructible__object__type__impl__coll__graph.map b/help/html/structnlohmann_1_1detail_1_1is__constructible__object__type__impl__coll__graph.map deleted file mode 100644 index 8390456..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__constructible__object__type__impl__coll__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1is__constructible__object__type__impl__coll__graph.md5 b/help/html/structnlohmann_1_1detail_1_1is__constructible__object__type__impl__coll__graph.md5 deleted file mode 100644 index d7f273d..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__constructible__object__type__impl__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -8c5032a1fa7495202b02469062a14275 \ No newline at end of file diff --git a/help/html/structnlohmann_1_1detail_1_1is__constructible__object__type__impl__coll__graph.png b/help/html/structnlohmann_1_1detail_1_1is__constructible__object__type__impl__coll__graph.png deleted file mode 100644 index 2a4ab4d..0000000 Binary files a/help/html/structnlohmann_1_1detail_1_1is__constructible__object__type__impl__coll__graph.png and /dev/null differ diff --git a/help/html/structnlohmann_1_1detail_1_1is__constructible__object__type__impl__inherit__graph.map b/help/html/structnlohmann_1_1detail_1_1is__constructible__object__type__impl__inherit__graph.map deleted file mode 100644 index 8390456..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__constructible__object__type__impl__inherit__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1is__constructible__object__type__impl__inherit__graph.md5 b/help/html/structnlohmann_1_1detail_1_1is__constructible__object__type__impl__inherit__graph.md5 deleted file mode 100644 index d7f273d..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__constructible__object__type__impl__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -8c5032a1fa7495202b02469062a14275 \ No newline at end of file diff --git a/help/html/structnlohmann_1_1detail_1_1is__constructible__object__type__impl__inherit__graph.png b/help/html/structnlohmann_1_1detail_1_1is__constructible__object__type__impl__inherit__graph.png deleted file mode 100644 index 2a4ab4d..0000000 Binary files a/help/html/structnlohmann_1_1detail_1_1is__constructible__object__type__impl__inherit__graph.png and /dev/null differ diff --git a/help/html/structnlohmann_1_1detail_1_1is__constructible__object__type__inherit__graph.map b/help/html/structnlohmann_1_1detail_1_1is__constructible__object__type__inherit__graph.map deleted file mode 100644 index 01144ab..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__constructible__object__type__inherit__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1is__constructible__object__type__inherit__graph.md5 b/help/html/structnlohmann_1_1detail_1_1is__constructible__object__type__inherit__graph.md5 deleted file mode 100644 index ecfbeb2..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__constructible__object__type__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -e4afbc69c3d7401d47c64ef6a17b74c3 \ No newline at end of file diff --git a/help/html/structnlohmann_1_1detail_1_1is__constructible__object__type__inherit__graph.png b/help/html/structnlohmann_1_1detail_1_1is__constructible__object__type__inherit__graph.png deleted file mode 100644 index d430fa3..0000000 Binary files a/help/html/structnlohmann_1_1detail_1_1is__constructible__object__type__inherit__graph.png and /dev/null differ diff --git a/help/html/structnlohmann_1_1detail_1_1is__constructible__string__type.html b/help/html/structnlohmann_1_1detail_1_1is__constructible__string__type.html deleted file mode 100644 index 02652ad..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__constructible__string__type.html +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::is_constructible_string_type< BasicJsonType, ConstructibleStringType > Struct Template Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    nlohmann::detail::is_constructible_string_type< BasicJsonType, ConstructibleStringType > Struct Template Reference
    -
    -
    - -

    #include <json.hpp>

    -
    -Inheritance diagram for nlohmann::detail::is_constructible_string_type< BasicJsonType, ConstructibleStringType >:
    -
    -
    Inheritance graph
    - - - - - -
    [legend]
    -
    -Collaboration diagram for nlohmann::detail::is_constructible_string_type< BasicJsonType, ConstructibleStringType >:
    -
    -
    Collaboration graph
    - - - - - -
    [legend]
    -
    The documentation for this struct was generated from the following file:
      -
    • build/_deps/json-src/include/nlohmann/json.hpp
    • -
    -
    - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1is__constructible__string__type__coll__graph.map b/help/html/structnlohmann_1_1detail_1_1is__constructible__string__type__coll__graph.map deleted file mode 100644 index b59aa40..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__constructible__string__type__coll__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1is__constructible__string__type__coll__graph.md5 b/help/html/structnlohmann_1_1detail_1_1is__constructible__string__type__coll__graph.md5 deleted file mode 100644 index 67ed2d0..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__constructible__string__type__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -0565ffc53d770289d506f2a895a4ffd6 \ No newline at end of file diff --git a/help/html/structnlohmann_1_1detail_1_1is__constructible__string__type__coll__graph.png b/help/html/structnlohmann_1_1detail_1_1is__constructible__string__type__coll__graph.png deleted file mode 100644 index d11a372..0000000 Binary files a/help/html/structnlohmann_1_1detail_1_1is__constructible__string__type__coll__graph.png and /dev/null differ diff --git a/help/html/structnlohmann_1_1detail_1_1is__constructible__string__type__impl.html b/help/html/structnlohmann_1_1detail_1_1is__constructible__string__type__impl.html deleted file mode 100644 index b7baf6e..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__constructible__string__type__impl.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::is_constructible_string_type_impl< BasicJsonType, ConstructibleStringType, typename > Struct Template Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    nlohmann::detail::is_constructible_string_type_impl< BasicJsonType, ConstructibleStringType, typename > Struct Template Reference
    -
    -
    - -

    #include <json.hpp>

    -
    -Inheritance diagram for nlohmann::detail::is_constructible_string_type_impl< BasicJsonType, ConstructibleStringType, typename >:
    -
    -
    Inheritance graph
    - - - - -
    [legend]
    -
    -Collaboration diagram for nlohmann::detail::is_constructible_string_type_impl< BasicJsonType, ConstructibleStringType, typename >:
    -
    -
    Collaboration graph
    - - - - -
    [legend]
    -
    The documentation for this struct was generated from the following file:
      -
    • build/_deps/json-src/include/nlohmann/json.hpp
    • -
    -
    - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1is__constructible__string__type__impl_3_01BasicJsonType_00_01Construe1847e4756f276dca6ac832a1b3cf4bf.html b/help/html/structnlohmann_1_1detail_1_1is__constructible__string__type__impl_3_01BasicJsonType_00_01Construe1847e4756f276dca6ac832a1b3cf4bf.html deleted file mode 100644 index c11238f..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__constructible__string__type__impl_3_01BasicJsonType_00_01Construe1847e4756f276dca6ac832a1b3cf4bf.html +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    nlohmann::detail::is_constructible_string_type_impl< BasicJsonType, ConstructibleStringType, enable_if_t< is_detected_exact< typename BasicJsonType::string_t::value_type, value_type_t, ConstructibleStringType >::value > > Member List
    -
    - - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1is__constructible__string__type__impl_3_01BasicJsonType_00_01Construe4743afb22172cdb3c5f428800835387.html b/help/html/structnlohmann_1_1detail_1_1is__constructible__string__type__impl_3_01BasicJsonType_00_01Construe4743afb22172cdb3c5f428800835387.html deleted file mode 100644 index 94c6c13..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__constructible__string__type__impl_3_01BasicJsonType_00_01Construe4743afb22172cdb3c5f428800835387.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::is_constructible_string_type_impl< BasicJsonType, ConstructibleStringType, enable_if_t< is_detected_exact< typename BasicJsonType::string_t::value_type, value_type_t, ConstructibleStringType >::value > > Struct Template Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    nlohmann::detail::is_constructible_string_type_impl< BasicJsonType, ConstructibleStringType, enable_if_t< is_detected_exact< typename BasicJsonType::string_t::value_type, value_type_t, ConstructibleStringType >::value > > Struct Template Reference
    -
    -
    - -

    #include <json.hpp>

    - - - - -

    -Static Public Attributes

    static constexpr auto value
     
    -

    Member Data Documentation

    - -

    ◆ value

    - -
    -
    -
    -template<typename BasicJsonType , typename ConstructibleStringType >
    - - - - - -
    - - - - -
    static constexpr auto nlohmann::detail::is_constructible_string_type_impl< BasicJsonType, ConstructibleStringType, enable_if_t< is_detected_exact< typename BasicJsonType::string_t::value_type, value_type_t, ConstructibleStringType >::value > >::value
    -
    -staticconstexpr
    -
    -Initial value:
    =
    -
    std::is_constructible<ConstructibleStringType,
    -
    typename BasicJsonType::string_t>::value
    -
    -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • build/_deps/json-src/include/nlohmann/json.hpp
    • -
    -
    - - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1is__constructible__string__type__impl__coll__graph.map b/help/html/structnlohmann_1_1detail_1_1is__constructible__string__type__impl__coll__graph.map deleted file mode 100644 index d84ebd8..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__constructible__string__type__impl__coll__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1is__constructible__string__type__impl__coll__graph.md5 b/help/html/structnlohmann_1_1detail_1_1is__constructible__string__type__impl__coll__graph.md5 deleted file mode 100644 index 2e9f254..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__constructible__string__type__impl__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -16efd4e3b043bd808c3abfdfdd5b9e64 \ No newline at end of file diff --git a/help/html/structnlohmann_1_1detail_1_1is__constructible__string__type__impl__coll__graph.png b/help/html/structnlohmann_1_1detail_1_1is__constructible__string__type__impl__coll__graph.png deleted file mode 100644 index cac7e4a..0000000 Binary files a/help/html/structnlohmann_1_1detail_1_1is__constructible__string__type__impl__coll__graph.png and /dev/null differ diff --git a/help/html/structnlohmann_1_1detail_1_1is__constructible__string__type__impl__inherit__graph.map b/help/html/structnlohmann_1_1detail_1_1is__constructible__string__type__impl__inherit__graph.map deleted file mode 100644 index d84ebd8..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__constructible__string__type__impl__inherit__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1is__constructible__string__type__impl__inherit__graph.md5 b/help/html/structnlohmann_1_1detail_1_1is__constructible__string__type__impl__inherit__graph.md5 deleted file mode 100644 index 2e9f254..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__constructible__string__type__impl__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -16efd4e3b043bd808c3abfdfdd5b9e64 \ No newline at end of file diff --git a/help/html/structnlohmann_1_1detail_1_1is__constructible__string__type__impl__inherit__graph.png b/help/html/structnlohmann_1_1detail_1_1is__constructible__string__type__impl__inherit__graph.png deleted file mode 100644 index cac7e4a..0000000 Binary files a/help/html/structnlohmann_1_1detail_1_1is__constructible__string__type__impl__inherit__graph.png and /dev/null differ diff --git a/help/html/structnlohmann_1_1detail_1_1is__constructible__string__type__inherit__graph.map b/help/html/structnlohmann_1_1detail_1_1is__constructible__string__type__inherit__graph.map deleted file mode 100644 index b59aa40..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__constructible__string__type__inherit__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1is__constructible__string__type__inherit__graph.md5 b/help/html/structnlohmann_1_1detail_1_1is__constructible__string__type__inherit__graph.md5 deleted file mode 100644 index 67ed2d0..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__constructible__string__type__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -0565ffc53d770289d506f2a895a4ffd6 \ No newline at end of file diff --git a/help/html/structnlohmann_1_1detail_1_1is__constructible__string__type__inherit__graph.png b/help/html/structnlohmann_1_1detail_1_1is__constructible__string__type__inherit__graph.png deleted file mode 100644 index d11a372..0000000 Binary files a/help/html/structnlohmann_1_1detail_1_1is__constructible__string__type__inherit__graph.png and /dev/null differ diff --git a/help/html/structnlohmann_1_1detail_1_1is__constructible__tuple.html b/help/html/structnlohmann_1_1detail_1_1is__constructible__tuple.html deleted file mode 100644 index 7abb170..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__constructible__tuple.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::is_constructible_tuple< T1, T2 > Struct Template Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    nlohmann::detail::is_constructible_tuple< T1, T2 > Struct Template Reference
    -
    -
    - -

    #include <json.hpp>

    -
    -Inheritance diagram for nlohmann::detail::is_constructible_tuple< T1, T2 >:
    -
    -
    Inheritance graph
    - - - - -
    [legend]
    -
    -Collaboration diagram for nlohmann::detail::is_constructible_tuple< T1, T2 >:
    -
    -
    Collaboration graph
    - - - - -
    [legend]
    -
    The documentation for this struct was generated from the following file:
      -
    • build/_deps/json-src/include/nlohmann/json.hpp
    • -
    -
    - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1is__constructible__tuple_3_01T1_00_01std_1_1tuple_3_01Args_8_8_8_01_4_01_4.html b/help/html/structnlohmann_1_1detail_1_1is__constructible__tuple_3_01T1_00_01std_1_1tuple_3_01Args_8_8_8_01_4_01_4.html deleted file mode 100644 index 81e9d4e..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__constructible__tuple_3_01T1_00_01std_1_1tuple_3_01Args_8_8_8_01_4_01_4.html +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::is_constructible_tuple< T1, std::tuple< Args... > > Struct Template Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    nlohmann::detail::is_constructible_tuple< T1, std::tuple< Args... > > Struct Template Reference
    -
    -
    - -

    #include <json.hpp>

    -
    -Inheritance diagram for nlohmann::detail::is_constructible_tuple< T1, std::tuple< Args... > >:
    -
    -
    Inheritance graph
    - - - - - -
    [legend]
    -
    -Collaboration diagram for nlohmann::detail::is_constructible_tuple< T1, std::tuple< Args... > >:
    -
    -
    Collaboration graph
    - - - - - -
    [legend]
    -
    The documentation for this struct was generated from the following file:
      -
    • build/_deps/json-src/include/nlohmann/json.hpp
    • -
    -
    - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1is__constructible__tuple_3_01T1_00_01std_1_1tuple_3_01Args_8_8_8_01_4_01_4__coll__graph.map b/help/html/structnlohmann_1_1detail_1_1is__constructible__tuple_3_01T1_00_01std_1_1tuple_3_01Args_8_8_8_01_4_01_4__coll__graph.map deleted file mode 100644 index 935aeea..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__constructible__tuple_3_01T1_00_01std_1_1tuple_3_01Args_8_8_8_01_4_01_4__coll__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1is__constructible__tuple_3_01T1_00_01std_1_1tuple_3_01Args_8_8_8_01_4_01_4__coll__graph.md5 b/help/html/structnlohmann_1_1detail_1_1is__constructible__tuple_3_01T1_00_01std_1_1tuple_3_01Args_8_8_8_01_4_01_4__coll__graph.md5 deleted file mode 100644 index b7296cd..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__constructible__tuple_3_01T1_00_01std_1_1tuple_3_01Args_8_8_8_01_4_01_4__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -8a156d21efeddf562775ff0bc6746df1 \ No newline at end of file diff --git a/help/html/structnlohmann_1_1detail_1_1is__constructible__tuple_3_01T1_00_01std_1_1tuple_3_01Args_8_8_8_01_4_01_4__coll__graph.png b/help/html/structnlohmann_1_1detail_1_1is__constructible__tuple_3_01T1_00_01std_1_1tuple_3_01Args_8_8_8_01_4_01_4__coll__graph.png deleted file mode 100644 index 1dc98cc..0000000 Binary files a/help/html/structnlohmann_1_1detail_1_1is__constructible__tuple_3_01T1_00_01std_1_1tuple_3_01Args_8_8_8_01_4_01_4__coll__graph.png and /dev/null differ diff --git a/help/html/structnlohmann_1_1detail_1_1is__constructible__tuple_3_01T1_00_01std_1_1tuple_3_01Args_8_8_8_01_4_01_4__inherit__graph.map b/help/html/structnlohmann_1_1detail_1_1is__constructible__tuple_3_01T1_00_01std_1_1tuple_3_01Args_8_8_8_01_4_01_4__inherit__graph.map deleted file mode 100644 index 935aeea..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__constructible__tuple_3_01T1_00_01std_1_1tuple_3_01Args_8_8_8_01_4_01_4__inherit__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1is__constructible__tuple_3_01T1_00_01std_1_1tuple_3_01Args_8_8_8_01_4_01_4__inherit__graph.md5 b/help/html/structnlohmann_1_1detail_1_1is__constructible__tuple_3_01T1_00_01std_1_1tuple_3_01Args_8_8_8_01_4_01_4__inherit__graph.md5 deleted file mode 100644 index b7296cd..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__constructible__tuple_3_01T1_00_01std_1_1tuple_3_01Args_8_8_8_01_4_01_4__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -8a156d21efeddf562775ff0bc6746df1 \ No newline at end of file diff --git a/help/html/structnlohmann_1_1detail_1_1is__constructible__tuple_3_01T1_00_01std_1_1tuple_3_01Args_8_8_8_01_4_01_4__inherit__graph.png b/help/html/structnlohmann_1_1detail_1_1is__constructible__tuple_3_01T1_00_01std_1_1tuple_3_01Args_8_8_8_01_4_01_4__inherit__graph.png deleted file mode 100644 index 1dc98cc..0000000 Binary files a/help/html/structnlohmann_1_1detail_1_1is__constructible__tuple_3_01T1_00_01std_1_1tuple_3_01Args_8_8_8_01_4_01_4__inherit__graph.png and /dev/null differ diff --git a/help/html/structnlohmann_1_1detail_1_1is__constructible__tuple__coll__graph.map b/help/html/structnlohmann_1_1detail_1_1is__constructible__tuple__coll__graph.map deleted file mode 100644 index 3404f75..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__constructible__tuple__coll__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1is__constructible__tuple__coll__graph.md5 b/help/html/structnlohmann_1_1detail_1_1is__constructible__tuple__coll__graph.md5 deleted file mode 100644 index 07c09b9..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__constructible__tuple__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -53f3b02ee429a4ac212fe07a94aaeb48 \ No newline at end of file diff --git a/help/html/structnlohmann_1_1detail_1_1is__constructible__tuple__coll__graph.png b/help/html/structnlohmann_1_1detail_1_1is__constructible__tuple__coll__graph.png deleted file mode 100644 index 9b342ff..0000000 Binary files a/help/html/structnlohmann_1_1detail_1_1is__constructible__tuple__coll__graph.png and /dev/null differ diff --git a/help/html/structnlohmann_1_1detail_1_1is__constructible__tuple__inherit__graph.map b/help/html/structnlohmann_1_1detail_1_1is__constructible__tuple__inherit__graph.map deleted file mode 100644 index 3404f75..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__constructible__tuple__inherit__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1is__constructible__tuple__inherit__graph.md5 b/help/html/structnlohmann_1_1detail_1_1is__constructible__tuple__inherit__graph.md5 deleted file mode 100644 index 07c09b9..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__constructible__tuple__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -53f3b02ee429a4ac212fe07a94aaeb48 \ No newline at end of file diff --git a/help/html/structnlohmann_1_1detail_1_1is__constructible__tuple__inherit__graph.png b/help/html/structnlohmann_1_1detail_1_1is__constructible__tuple__inherit__graph.png deleted file mode 100644 index 9b342ff..0000000 Binary files a/help/html/structnlohmann_1_1detail_1_1is__constructible__tuple__inherit__graph.png and /dev/null differ diff --git a/help/html/structnlohmann_1_1detail_1_1is__getable-members.html b/help/html/structnlohmann_1_1detail_1_1is__getable-members.html deleted file mode 100644 index 13d2e7b..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__getable-members.html +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    nlohmann::detail::is_getable< BasicJsonType, T > Member List
    -
    -
    - -

    This is the complete list of members for nlohmann::detail::is_getable< BasicJsonType, T >, including all inherited members.

    - - -
    valuenlohmann::detail::is_getable< BasicJsonType, T >static
    - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1is__getable.html b/help/html/structnlohmann_1_1detail_1_1is__getable.html deleted file mode 100644 index e391c66..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__getable.html +++ /dev/null @@ -1,119 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::is_getable< BasicJsonType, T > Struct Template Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    nlohmann::detail::is_getable< BasicJsonType, T > Struct Template Reference
    -
    -
    - -

    #include <json.hpp>

    - - - - -

    -Static Public Attributes

    static constexpr bool value = is_detected<get_template_function, const BasicJsonType&, T>::value
     
    -

    Member Data Documentation

    - -

    ◆ value

    - -
    -
    -
    -template<typename BasicJsonType , typename T >
    - - - - - -
    - - - - -
    constexpr bool nlohmann::detail::is_getable< BasicJsonType, T >::value = is_detected<get_template_function, const BasicJsonType&, T>::value
    -
    -staticconstexpr
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1is__iterator__of__multibyte-members.html b/help/html/structnlohmann_1_1detail_1_1is__iterator__of__multibyte-members.html deleted file mode 100644 index 065db41..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__iterator__of__multibyte-members.html +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    nlohmann::detail::is_iterator_of_multibyte< T > Member List
    -
    -
    - -

    This is the complete list of members for nlohmann::detail::is_iterator_of_multibyte< T >, including all inherited members.

    - - -
    value_type typedefnlohmann::detail::is_iterator_of_multibyte< T >
    - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1is__iterator__of__multibyte.html b/help/html/structnlohmann_1_1detail_1_1is__iterator__of__multibyte.html deleted file mode 100644 index 26f9cb6..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__iterator__of__multibyte.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::is_iterator_of_multibyte< T > Struct Template Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    nlohmann::detail::is_iterator_of_multibyte< T > Struct Template Reference
    -
    -
    - -

    #include <json.hpp>

    - - - - - - -

    -Public Types

    enum  
     
    using value_type = typename std::iterator_traits< T >::value_type
     
    -

    Member Typedef Documentation

    - -

    ◆ value_type

    - -
    -
    -
    -template<typename T >
    - - - - -
    using nlohmann::detail::is_iterator_of_multibyte< T >::value_type = typename std::iterator_traits<T>::value_type
    -
    - -
    -
    -

    Member Enumeration Documentation

    - -

    ◆ anonymous enum

    - -
    -
    -
    -template<typename T >
    - - - - -
    anonymous enum
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1is__iterator__traits.html b/help/html/structnlohmann_1_1detail_1_1is__iterator__traits.html deleted file mode 100644 index 33f44b7..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__iterator__traits.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::is_iterator_traits< T, typename > Struct Template Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    nlohmann::detail::is_iterator_traits< T, typename > Struct Template Reference
    -
    -
    - -

    #include <json.hpp>

    -
    -Inheritance diagram for nlohmann::detail::is_iterator_traits< T, typename >:
    -
    -
    Inheritance graph
    - - - - -
    [legend]
    -
    -Collaboration diagram for nlohmann::detail::is_iterator_traits< T, typename >:
    -
    -
    Collaboration graph
    - - - - -
    [legend]
    -
    The documentation for this struct was generated from the following file:
      -
    • build/_deps/json-src/include/nlohmann/json.hpp
    • -
    -
    - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1is__iterator__traits_3_01iterator__traits_3_01T_01_4_01_4-members.html b/help/html/structnlohmann_1_1detail_1_1is__iterator__traits_3_01iterator__traits_3_01T_01_4_01_4-members.html deleted file mode 100644 index 3746a7d..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__iterator__traits_3_01iterator__traits_3_01T_01_4_01_4-members.html +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    nlohmann::detail::is_iterator_traits< iterator_traits< T > > Member List
    -
    -
    - -

    This is the complete list of members for nlohmann::detail::is_iterator_traits< iterator_traits< T > >, including all inherited members.

    - - -
    valuenlohmann::detail::is_iterator_traits< iterator_traits< T > >static
    - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1is__iterator__traits_3_01iterator__traits_3_01T_01_4_01_4.html b/help/html/structnlohmann_1_1detail_1_1is__iterator__traits_3_01iterator__traits_3_01T_01_4_01_4.html deleted file mode 100644 index 1c35107..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__iterator__traits_3_01iterator__traits_3_01T_01_4_01_4.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::is_iterator_traits< iterator_traits< T > > Struct Template Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    nlohmann::detail::is_iterator_traits< iterator_traits< T > > Struct Template Reference
    -
    -
    - -

    #include <json.hpp>

    - - - - -

    -Static Public Attributes

    static constexpr auto value
     
    -

    Member Data Documentation

    - -

    ◆ value

    - -
    -
    -
    -template<typename T >
    - - - - - -
    - - - - -
    static constexpr auto nlohmann::detail::is_iterator_traits< iterator_traits< T > >::value
    -
    -staticconstexpr
    -
    -Initial value:
    =
    -
    is_detected<value_type_t, traits>::value &&
    -
    is_detected<difference_type_t, traits>::value &&
    -
    is_detected<pointer_t, traits>::value &&
    -
    is_detected<iterator_category_t, traits>::value &&
    -
    is_detected<reference_t, traits>::value
    -
    -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • build/_deps/json-src/include/nlohmann/json.hpp
    • -
    -
    - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1is__iterator__traits__coll__graph.map b/help/html/structnlohmann_1_1detail_1_1is__iterator__traits__coll__graph.map deleted file mode 100644 index f12f90a..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__iterator__traits__coll__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1is__iterator__traits__coll__graph.md5 b/help/html/structnlohmann_1_1detail_1_1is__iterator__traits__coll__graph.md5 deleted file mode 100644 index ed74fdb..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__iterator__traits__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -dcd360b1939cd5ec9910ce9abd2f7af4 \ No newline at end of file diff --git a/help/html/structnlohmann_1_1detail_1_1is__iterator__traits__coll__graph.png b/help/html/structnlohmann_1_1detail_1_1is__iterator__traits__coll__graph.png deleted file mode 100644 index cf1c5b0..0000000 Binary files a/help/html/structnlohmann_1_1detail_1_1is__iterator__traits__coll__graph.png and /dev/null differ diff --git a/help/html/structnlohmann_1_1detail_1_1is__iterator__traits__inherit__graph.map b/help/html/structnlohmann_1_1detail_1_1is__iterator__traits__inherit__graph.map deleted file mode 100644 index f12f90a..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__iterator__traits__inherit__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1is__iterator__traits__inherit__graph.md5 b/help/html/structnlohmann_1_1detail_1_1is__iterator__traits__inherit__graph.md5 deleted file mode 100644 index ed74fdb..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__iterator__traits__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -dcd360b1939cd5ec9910ce9abd2f7af4 \ No newline at end of file diff --git a/help/html/structnlohmann_1_1detail_1_1is__iterator__traits__inherit__graph.png b/help/html/structnlohmann_1_1detail_1_1is__iterator__traits__inherit__graph.png deleted file mode 100644 index cf1c5b0..0000000 Binary files a/help/html/structnlohmann_1_1detail_1_1is__iterator__traits__inherit__graph.png and /dev/null differ diff --git a/help/html/structnlohmann_1_1detail_1_1is__json__ref.html b/help/html/structnlohmann_1_1detail_1_1is__json__ref.html deleted file mode 100644 index e30469e..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__json__ref.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::is_json_ref< typename > Struct Template Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    nlohmann::detail::is_json_ref< typename > Struct Template Reference
    -
    -
    - -

    #include <json.hpp>

    -
    -Inheritance diagram for nlohmann::detail::is_json_ref< typename >:
    -
    -
    Inheritance graph
    - - - - -
    [legend]
    -
    -Collaboration diagram for nlohmann::detail::is_json_ref< typename >:
    -
    -
    Collaboration graph
    - - - - -
    [legend]
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1is__json__ref_3_01json__ref_3_01T_01_4_01_4.html b/help/html/structnlohmann_1_1detail_1_1is__json__ref_3_01json__ref_3_01T_01_4_01_4.html deleted file mode 100644 index 686f2e9..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__json__ref_3_01json__ref_3_01T_01_4_01_4.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::is_json_ref< json_ref< T > > Struct Template Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    nlohmann::detail::is_json_ref< json_ref< T > > Struct Template Reference
    -
    -
    - -

    #include <json.hpp>

    -
    -Inheritance diagram for nlohmann::detail::is_json_ref< json_ref< T > >:
    -
    -
    Inheritance graph
    - - - - -
    [legend]
    -
    -Collaboration diagram for nlohmann::detail::is_json_ref< json_ref< T > >:
    -
    -
    Collaboration graph
    - - - - -
    [legend]
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1is__json__ref_3_01json__ref_3_01T_01_4_01_4__coll__graph.map b/help/html/structnlohmann_1_1detail_1_1is__json__ref_3_01json__ref_3_01T_01_4_01_4__coll__graph.map deleted file mode 100644 index 339acb9..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__json__ref_3_01json__ref_3_01T_01_4_01_4__coll__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1is__json__ref_3_01json__ref_3_01T_01_4_01_4__coll__graph.md5 b/help/html/structnlohmann_1_1detail_1_1is__json__ref_3_01json__ref_3_01T_01_4_01_4__coll__graph.md5 deleted file mode 100644 index 6f03b78..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__json__ref_3_01json__ref_3_01T_01_4_01_4__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -c8d9d1416ec4ed8c98ef776468b7e7e3 \ No newline at end of file diff --git a/help/html/structnlohmann_1_1detail_1_1is__json__ref_3_01json__ref_3_01T_01_4_01_4__coll__graph.png b/help/html/structnlohmann_1_1detail_1_1is__json__ref_3_01json__ref_3_01T_01_4_01_4__coll__graph.png deleted file mode 100644 index 65008e4..0000000 Binary files a/help/html/structnlohmann_1_1detail_1_1is__json__ref_3_01json__ref_3_01T_01_4_01_4__coll__graph.png and /dev/null differ diff --git a/help/html/structnlohmann_1_1detail_1_1is__json__ref_3_01json__ref_3_01T_01_4_01_4__inherit__graph.map b/help/html/structnlohmann_1_1detail_1_1is__json__ref_3_01json__ref_3_01T_01_4_01_4__inherit__graph.map deleted file mode 100644 index 339acb9..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__json__ref_3_01json__ref_3_01T_01_4_01_4__inherit__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1is__json__ref_3_01json__ref_3_01T_01_4_01_4__inherit__graph.md5 b/help/html/structnlohmann_1_1detail_1_1is__json__ref_3_01json__ref_3_01T_01_4_01_4__inherit__graph.md5 deleted file mode 100644 index 6f03b78..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__json__ref_3_01json__ref_3_01T_01_4_01_4__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -c8d9d1416ec4ed8c98ef776468b7e7e3 \ No newline at end of file diff --git a/help/html/structnlohmann_1_1detail_1_1is__json__ref_3_01json__ref_3_01T_01_4_01_4__inherit__graph.png b/help/html/structnlohmann_1_1detail_1_1is__json__ref_3_01json__ref_3_01T_01_4_01_4__inherit__graph.png deleted file mode 100644 index 65008e4..0000000 Binary files a/help/html/structnlohmann_1_1detail_1_1is__json__ref_3_01json__ref_3_01T_01_4_01_4__inherit__graph.png and /dev/null differ diff --git a/help/html/structnlohmann_1_1detail_1_1is__json__ref__coll__graph.map b/help/html/structnlohmann_1_1detail_1_1is__json__ref__coll__graph.map deleted file mode 100644 index 1d2d646..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__json__ref__coll__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1is__json__ref__coll__graph.md5 b/help/html/structnlohmann_1_1detail_1_1is__json__ref__coll__graph.md5 deleted file mode 100644 index c205a3e..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__json__ref__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -31d20584d7bd66ac73e4b1a9ed764c61 \ No newline at end of file diff --git a/help/html/structnlohmann_1_1detail_1_1is__json__ref__coll__graph.png b/help/html/structnlohmann_1_1detail_1_1is__json__ref__coll__graph.png deleted file mode 100644 index b02882d..0000000 Binary files a/help/html/structnlohmann_1_1detail_1_1is__json__ref__coll__graph.png and /dev/null differ diff --git a/help/html/structnlohmann_1_1detail_1_1is__json__ref__inherit__graph.map b/help/html/structnlohmann_1_1detail_1_1is__json__ref__inherit__graph.map deleted file mode 100644 index 1d2d646..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__json__ref__inherit__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1is__json__ref__inherit__graph.md5 b/help/html/structnlohmann_1_1detail_1_1is__json__ref__inherit__graph.md5 deleted file mode 100644 index c205a3e..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__json__ref__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -31d20584d7bd66ac73e4b1a9ed764c61 \ No newline at end of file diff --git a/help/html/structnlohmann_1_1detail_1_1is__json__ref__inherit__graph.png b/help/html/structnlohmann_1_1detail_1_1is__json__ref__inherit__graph.png deleted file mode 100644 index b02882d..0000000 Binary files a/help/html/structnlohmann_1_1detail_1_1is__json__ref__inherit__graph.png and /dev/null differ diff --git a/help/html/structnlohmann_1_1detail_1_1is__sax-members.html b/help/html/structnlohmann_1_1detail_1_1is__sax-members.html deleted file mode 100644 index 89c4cf7..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__sax-members.html +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    nlohmann::detail::is_sax< SAX, BasicJsonType > Member List
    -
    -
    - -

    This is the complete list of members for nlohmann::detail::is_sax< SAX, BasicJsonType >, including all inherited members.

    - - -
    valuenlohmann::detail::is_sax< SAX, BasicJsonType >static
    - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1is__sax.html b/help/html/structnlohmann_1_1detail_1_1is__sax.html deleted file mode 100644 index d1d26e9..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__sax.html +++ /dev/null @@ -1,140 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::is_sax< SAX, BasicJsonType > Struct Template Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    nlohmann::detail::is_sax< SAX, BasicJsonType > Struct Template Reference
    -
    -
    - -

    #include <json.hpp>

    - - - - -

    -Static Public Attributes

    static constexpr bool value
     
    -

    Member Data Documentation

    - -

    ◆ value

    - -
    -
    -
    -template<typename SAX , typename BasicJsonType >
    - - - - - -
    - - - - -
    static constexpr bool nlohmann::detail::is_sax< SAX, BasicJsonType >::value
    -
    -staticconstexpr
    -
    -Initial value:
    =
    -
    is_detected_exact<bool, null_function_t, SAX>::value &&
    -
    is_detected_exact<bool, boolean_function_t, SAX>::value &&
    - -
    number_integer_t>::value &&
    - -
    number_unsigned_t>::value &&
    -
    is_detected_exact<bool, number_float_function_t, SAX, number_float_t,
    -
    string_t>::value &&
    -
    is_detected_exact<bool, string_function_t, SAX, string_t>::value &&
    -
    is_detected_exact<bool, start_object_function_t, SAX>::value &&
    -
    is_detected_exact<bool, key_function_t, SAX, string_t>::value &&
    -
    is_detected_exact<bool, end_object_function_t, SAX>::value &&
    -
    is_detected_exact<bool, start_array_function_t, SAX>::value &&
    -
    is_detected_exact<bool, end_array_function_t, SAX>::value &&
    -
    is_detected_exact<bool, parse_error_function_t, SAX, exception_t>::value
    -
    -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • build/_deps/json-src/include/nlohmann/json.hpp
    • -
    -
    -
    static constexpr bool value
    Definition: json.hpp:5090
    -
    decltype(std::declval< T & >().number_integer(std::declval< Integer >())) number_integer_function_t
    Definition: json.hpp:5039
    -
    decltype(std::declval< T & >().number_float(std::declval< Float >(), std::declval< const String & >())) number_float_function_t
    Definition: json.hpp:5047
    -
    decltype(std::declval< T & >().number_unsigned(std::declval< Unsigned >())) number_unsigned_function_t
    Definition: json.hpp:5043
    -
    std::is_same< Expected, detected_t< Op, Args... > > is_detected_exact
    Definition: json.hpp:2376
    - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1is__sax__static__asserts-members.html b/help/html/structnlohmann_1_1detail_1_1is__sax__static__asserts-members.html deleted file mode 100644 index 988ec4c..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__sax__static__asserts-members.html +++ /dev/null @@ -1,82 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    nlohmann::detail::is_sax_static_asserts< SAX, BasicJsonType > Member List
    -
    -
    - -

    This is the complete list of members for nlohmann::detail::is_sax_static_asserts< SAX, BasicJsonType >, including all inherited members.

    -
    - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1is__sax__static__asserts.html b/help/html/structnlohmann_1_1detail_1_1is__sax__static__asserts.html deleted file mode 100644 index 6bd1e20..0000000 --- a/help/html/structnlohmann_1_1detail_1_1is__sax__static__asserts.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::is_sax_static_asserts< SAX, BasicJsonType > Struct Template Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    nlohmann::detail::is_sax_static_asserts< SAX, BasicJsonType > Struct Template Reference
    -
    -
    - -

    #include <json.hpp>

    -
    The documentation for this struct was generated from the following file:
      -
    • build/_deps/json-src/include/nlohmann/json.hpp
    • -
    -
    - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1iterator__input__adapter__factory-members.html b/help/html/structnlohmann_1_1detail_1_1iterator__input__adapter__factory-members.html deleted file mode 100644 index 91e92ca..0000000 --- a/help/html/structnlohmann_1_1detail_1_1iterator__input__adapter__factory-members.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    nlohmann::detail::iterator_input_adapter_factory< IteratorType, Enable > Member List
    -
    - - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1iterator__input__adapter__factory.html b/help/html/structnlohmann_1_1detail_1_1iterator__input__adapter__factory.html deleted file mode 100644 index ed4abc5..0000000 --- a/help/html/structnlohmann_1_1detail_1_1iterator__input__adapter__factory.html +++ /dev/null @@ -1,192 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::iterator_input_adapter_factory< IteratorType, Enable > Struct Template Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    nlohmann::detail::iterator_input_adapter_factory< IteratorType, Enable > Struct Template Reference
    -
    -
    - -

    #include <json.hpp>

    - - - - - - - - -

    -Public Types

    using iterator_type = IteratorType
     
    using char_type = typename std::iterator_traits< iterator_type >::value_type
     
    using adapter_type = iterator_input_adapter< iterator_type >
     
    - - - -

    -Static Public Member Functions

    static adapter_type create (IteratorType first, IteratorType last)
     
    -

    Member Typedef Documentation

    - -

    ◆ adapter_type

    - -
    -
    -
    -template<typename IteratorType , typename Enable = void>
    - - - - -
    using nlohmann::detail::iterator_input_adapter_factory< IteratorType, Enable >::adapter_type = iterator_input_adapter<iterator_type>
    -
    - -
    -
    - -

    ◆ char_type

    - -
    -
    -
    -template<typename IteratorType , typename Enable = void>
    - - - - -
    using nlohmann::detail::iterator_input_adapter_factory< IteratorType, Enable >::char_type = typename std::iterator_traits<iterator_type>::value_type
    -
    - -
    -
    - -

    ◆ iterator_type

    - -
    -
    -
    -template<typename IteratorType , typename Enable = void>
    - - - - -
    using nlohmann::detail::iterator_input_adapter_factory< IteratorType, Enable >::iterator_type = IteratorType
    -
    - -
    -
    -

    Member Function Documentation

    - -

    ◆ create()

    - -
    -
    -
    -template<typename IteratorType , typename Enable = void>
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    static adapter_type nlohmann::detail::iterator_input_adapter_factory< IteratorType, Enable >::create (IteratorType first,
    IteratorType last 
    )
    -
    -inlinestatic
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1iterator__input__adapter__factory_3_01IteratorType_00_01enable__if__0c89cbb31dac1e960c788dd5bec52102.html b/help/html/structnlohmann_1_1detail_1_1iterator__input__adapter__factory_3_01IteratorType_00_01enable__if__0c89cbb31dac1e960c788dd5bec52102.html deleted file mode 100644 index 188245d..0000000 --- a/help/html/structnlohmann_1_1detail_1_1iterator__input__adapter__factory_3_01IteratorType_00_01enable__if__0c89cbb31dac1e960c788dd5bec52102.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    nlohmann::detail::iterator_input_adapter_factory< IteratorType, enable_if_t< is_iterator_of_multibyte< IteratorType >::value > > Member List
    -
    - - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1iterator__input__adapter__factory_3_01IteratorType_00_01enable__if__0e86378a778d78dd2284e92dc30f4902.html b/help/html/structnlohmann_1_1detail_1_1iterator__input__adapter__factory_3_01IteratorType_00_01enable__if__0e86378a778d78dd2284e92dc30f4902.html deleted file mode 100644 index 5a137d3..0000000 --- a/help/html/structnlohmann_1_1detail_1_1iterator__input__adapter__factory_3_01IteratorType_00_01enable__if__0e86378a778d78dd2284e92dc30f4902.html +++ /dev/null @@ -1,210 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::iterator_input_adapter_factory< IteratorType, enable_if_t< is_iterator_of_multibyte< IteratorType >::value > > Struct Template Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    nlohmann::detail::iterator_input_adapter_factory< IteratorType, enable_if_t< is_iterator_of_multibyte< IteratorType >::value > > Struct Template Reference
    -
    -
    - -

    #include <json.hpp>

    - - - - - - - - - - -

    -Public Types

    using iterator_type = IteratorType
     
    using char_type = typename std::iterator_traits< iterator_type >::value_type
     
    using base_adapter_type = iterator_input_adapter< iterator_type >
     
    using adapter_type = wide_string_input_adapter< base_adapter_type, char_type >
     
    - - - -

    -Static Public Member Functions

    static adapter_type create (IteratorType first, IteratorType last)
     
    -

    Member Typedef Documentation

    - -

    ◆ adapter_type

    - -
    -
    -
    -template<typename IteratorType >
    - - - - -
    using nlohmann::detail::iterator_input_adapter_factory< IteratorType, enable_if_t< is_iterator_of_multibyte< IteratorType >::value > >::adapter_type = wide_string_input_adapter<base_adapter_type, char_type>
    -
    - -
    -
    - -

    ◆ base_adapter_type

    - -
    -
    -
    -template<typename IteratorType >
    - - - - -
    using nlohmann::detail::iterator_input_adapter_factory< IteratorType, enable_if_t< is_iterator_of_multibyte< IteratorType >::value > >::base_adapter_type = iterator_input_adapter<iterator_type>
    -
    - -
    -
    - -

    ◆ char_type

    - -
    -
    -
    -template<typename IteratorType >
    - - - - -
    using nlohmann::detail::iterator_input_adapter_factory< IteratorType, enable_if_t< is_iterator_of_multibyte< IteratorType >::value > >::char_type = typename std::iterator_traits<iterator_type>::value_type
    -
    - -
    -
    - -

    ◆ iterator_type

    - -
    -
    -
    -template<typename IteratorType >
    - - - - -
    using nlohmann::detail::iterator_input_adapter_factory< IteratorType, enable_if_t< is_iterator_of_multibyte< IteratorType >::value > >::iterator_type = IteratorType
    -
    - -
    -
    -

    Member Function Documentation

    - -

    ◆ create()

    - -
    -
    -
    -template<typename IteratorType >
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    static adapter_type nlohmann::detail::iterator_input_adapter_factory< IteratorType, enable_if_t< is_iterator_of_multibyte< IteratorType >::value > >::create (IteratorType first,
    IteratorType last 
    )
    -
    -inlinestatic
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1iterator__traits.html b/help/html/structnlohmann_1_1detail_1_1iterator__traits.html deleted file mode 100644 index 76bab6a..0000000 --- a/help/html/structnlohmann_1_1detail_1_1iterator__traits.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::iterator_traits< T, typename > Struct Template Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    nlohmann::detail::iterator_traits< T, typename > Struct Template Reference
    -
    -
    - -

    #include <json.hpp>

    -
    The documentation for this struct was generated from the following file:
      -
    • build/_deps/json-src/include/nlohmann/json.hpp
    • -
    -
    - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1iterator__traits_3_01T_00_01enable__if__t_3_01_9std_1_1is__pointer_31bae2175447e35a79f8ff22df87ddb2a.map b/help/html/structnlohmann_1_1detail_1_1iterator__traits_3_01T_00_01enable__if__t_3_01_9std_1_1is__pointer_31bae2175447e35a79f8ff22df87ddb2a.map deleted file mode 100644 index 9ff6a8a..0000000 --- a/help/html/structnlohmann_1_1detail_1_1iterator__traits_3_01T_00_01enable__if__t_3_01_9std_1_1is__pointer_31bae2175447e35a79f8ff22df87ddb2a.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1iterator__traits_3_01T_00_01enable__if__t_3_01_9std_1_1is__pointer_31bae2175447e35a79f8ff22df87ddb2a.md5 b/help/html/structnlohmann_1_1detail_1_1iterator__traits_3_01T_00_01enable__if__t_3_01_9std_1_1is__pointer_31bae2175447e35a79f8ff22df87ddb2a.md5 deleted file mode 100644 index 8e8eda5..0000000 --- a/help/html/structnlohmann_1_1detail_1_1iterator__traits_3_01T_00_01enable__if__t_3_01_9std_1_1is__pointer_31bae2175447e35a79f8ff22df87ddb2a.md5 +++ /dev/null @@ -1 +0,0 @@ -207e8bfe75fb617a991e73c8aca5e281 \ No newline at end of file diff --git a/help/html/structnlohmann_1_1detail_1_1iterator__traits_3_01T_00_01enable__if__t_3_01_9std_1_1is__pointer_31bae2175447e35a79f8ff22df87ddb2a.png b/help/html/structnlohmann_1_1detail_1_1iterator__traits_3_01T_00_01enable__if__t_3_01_9std_1_1is__pointer_31bae2175447e35a79f8ff22df87ddb2a.png deleted file mode 100644 index 0fb0b06..0000000 Binary files a/help/html/structnlohmann_1_1detail_1_1iterator__traits_3_01T_00_01enable__if__t_3_01_9std_1_1is__pointer_31bae2175447e35a79f8ff22df87ddb2a.png and /dev/null differ diff --git a/help/html/structnlohmann_1_1detail_1_1iterator__traits_3_01T_00_01enable__if__t_3_01_9std_1_1is__pointer_31de627e6351fc4d3947a52fbbc938280.map b/help/html/structnlohmann_1_1detail_1_1iterator__traits_3_01T_00_01enable__if__t_3_01_9std_1_1is__pointer_31de627e6351fc4d3947a52fbbc938280.map deleted file mode 100644 index 9ff6a8a..0000000 --- a/help/html/structnlohmann_1_1detail_1_1iterator__traits_3_01T_00_01enable__if__t_3_01_9std_1_1is__pointer_31de627e6351fc4d3947a52fbbc938280.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1iterator__traits_3_01T_00_01enable__if__t_3_01_9std_1_1is__pointer_31de627e6351fc4d3947a52fbbc938280.md5 b/help/html/structnlohmann_1_1detail_1_1iterator__traits_3_01T_00_01enable__if__t_3_01_9std_1_1is__pointer_31de627e6351fc4d3947a52fbbc938280.md5 deleted file mode 100644 index 8e8eda5..0000000 --- a/help/html/structnlohmann_1_1detail_1_1iterator__traits_3_01T_00_01enable__if__t_3_01_9std_1_1is__pointer_31de627e6351fc4d3947a52fbbc938280.md5 +++ /dev/null @@ -1 +0,0 @@ -207e8bfe75fb617a991e73c8aca5e281 \ No newline at end of file diff --git a/help/html/structnlohmann_1_1detail_1_1iterator__traits_3_01T_00_01enable__if__t_3_01_9std_1_1is__pointer_31de627e6351fc4d3947a52fbbc938280.png b/help/html/structnlohmann_1_1detail_1_1iterator__traits_3_01T_00_01enable__if__t_3_01_9std_1_1is__pointer_31de627e6351fc4d3947a52fbbc938280.png deleted file mode 100644 index 0fb0b06..0000000 Binary files a/help/html/structnlohmann_1_1detail_1_1iterator__traits_3_01T_00_01enable__if__t_3_01_9std_1_1is__pointer_31de627e6351fc4d3947a52fbbc938280.png and /dev/null differ diff --git a/help/html/structnlohmann_1_1detail_1_1iterator__traits_3_01T_00_01enable__if__t_3_01_9std_1_1is__pointer_3_01T_01_4_1_1value_01_4_01_4.html b/help/html/structnlohmann_1_1detail_1_1iterator__traits_3_01T_00_01enable__if__t_3_01_9std_1_1is__pointer_3_01T_01_4_1_1value_01_4_01_4.html deleted file mode 100644 index c9dc138..0000000 --- a/help/html/structnlohmann_1_1detail_1_1iterator__traits_3_01T_00_01enable__if__t_3_01_9std_1_1is__pointer_3_01T_01_4_1_1value_01_4_01_4.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::iterator_traits< T, enable_if_t< !std::is_pointer< T >::value > > Struct Template Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    nlohmann::detail::iterator_traits< T, enable_if_t< !std::is_pointer< T >::value > > Struct Template Reference
    -
    -
    - -

    #include <json.hpp>

    -
    -Inheritance diagram for nlohmann::detail::iterator_traits< T, enable_if_t< !std::is_pointer< T >::value > >:
    -
    -
    Inheritance graph
    - - - - -
    [legend]
    -
    -Collaboration diagram for nlohmann::detail::iterator_traits< T, enable_if_t< !std::is_pointer< T >::value > >:
    -
    -
    Collaboration graph
    - - - - -
    [legend]
    -
    The documentation for this struct was generated from the following file:
      -
    • build/_deps/json-src/include/nlohmann/json.hpp
    • -
    -
    - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1iterator__traits_3_01T_01_5_00_01enable__if__t_3_01std_1_1is__object8650598a124364f80fcaf29866166db6.html b/help/html/structnlohmann_1_1detail_1_1iterator__traits_3_01T_01_5_00_01enable__if__t_3_01std_1_1is__object8650598a124364f80fcaf29866166db6.html deleted file mode 100644 index 0b63cd7..0000000 --- a/help/html/structnlohmann_1_1detail_1_1iterator__traits_3_01T_01_5_00_01enable__if__t_3_01std_1_1is__object8650598a124364f80fcaf29866166db6.html +++ /dev/null @@ -1,93 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    nlohmann::detail::iterator_traits< T *, enable_if_t< std::is_object< T >::value > > Member List
    -
    - - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1iterator__traits_3_01T_01_5_00_01enable__if__t_3_01std_1_1is__object_3_01T_01_4_1_1value_01_4_01_4.html b/help/html/structnlohmann_1_1detail_1_1iterator__traits_3_01T_01_5_00_01enable__if__t_3_01std_1_1is__object_3_01T_01_4_1_1value_01_4_01_4.html deleted file mode 100644 index 2145d74..0000000 --- a/help/html/structnlohmann_1_1detail_1_1iterator__traits_3_01T_01_5_00_01enable__if__t_3_01std_1_1is__object_3_01T_01_4_1_1value_01_4_01_4.html +++ /dev/null @@ -1,273 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::iterator_traits< T *, enable_if_t< std::is_object< T >::value > > Struct Template Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    nlohmann::detail::iterator_traits< T *, enable_if_t< std::is_object< T >::value > > Struct Template Reference
    -
    -
    - -

    #include <json.hpp>

    - - - - - - - - - - - - - - - - - - - - - - -

    -Public Types

    using iterator_category = std::random_access_iterator_tag
     
    using value_type = T
     
    using difference_type = ptrdiff_t
     
    using pointer = T *
     
    using reference = T &
     
    using iterator_category = std::random_access_iterator_tag
     
    using value_type = T
     
    using difference_type = ptrdiff_t
     
    using pointer = T *
     
    using reference = T &
     
    -

    Member Typedef Documentation

    - -

    ◆ difference_type [1/2]

    - -
    -
    -
    -template<typename T >
    - - - - -
    using nlohmann::detail::iterator_traits< T *, enable_if_t< std::is_object< T >::value > >::difference_type = ptrdiff_t
    -
    - -
    -
    - -

    ◆ difference_type [2/2]

    - -
    -
    -
    -template<typename T >
    - - - - -
    using nlohmann::detail::iterator_traits< T *, enable_if_t< std::is_object< T >::value > >::difference_type = ptrdiff_t
    -
    - -
    -
    - -

    ◆ iterator_category [1/2]

    - -
    -
    -
    -template<typename T >
    - - - - -
    using nlohmann::detail::iterator_traits< T *, enable_if_t< std::is_object< T >::value > >::iterator_category = std::random_access_iterator_tag
    -
    - -
    -
    - -

    ◆ iterator_category [2/2]

    - -
    -
    -
    -template<typename T >
    - - - - -
    using nlohmann::detail::iterator_traits< T *, enable_if_t< std::is_object< T >::value > >::iterator_category = std::random_access_iterator_tag
    -
    - -
    -
    - -

    ◆ pointer [1/2]

    - -
    -
    -
    -template<typename T >
    - - - - -
    using nlohmann::detail::iterator_traits< T *, enable_if_t< std::is_object< T >::value > >::pointer = T*
    -
    - -
    -
    - -

    ◆ pointer [2/2]

    - -
    -
    -
    -template<typename T >
    - - - - -
    using nlohmann::detail::iterator_traits< T *, enable_if_t< std::is_object< T >::value > >::pointer = T*
    -
    - -
    -
    - -

    ◆ reference [1/2]

    - -
    -
    -
    -template<typename T >
    - - - - -
    using nlohmann::detail::iterator_traits< T *, enable_if_t< std::is_object< T >::value > >::reference = T&
    -
    - -
    -
    - -

    ◆ reference [2/2]

    - -
    -
    -
    -template<typename T >
    - - - - -
    using nlohmann::detail::iterator_traits< T *, enable_if_t< std::is_object< T >::value > >::reference = T&
    -
    - -
    -
    - -

    ◆ value_type [1/2]

    - -
    -
    -
    -template<typename T >
    - - - - -
    using nlohmann::detail::iterator_traits< T *, enable_if_t< std::is_object< T >::value > >::value_type = T
    -
    - -
    -
    - -

    ◆ value_type [2/2]

    - -
    -
    -
    -template<typename T >
    - - - - -
    using nlohmann::detail::iterator_traits< T *, enable_if_t< std::is_object< T >::value > >::value_type = T
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • build/_deps/json-src/include/nlohmann/json.hpp
    • -
    -
    - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1iterator__types.html b/help/html/structnlohmann_1_1detail_1_1iterator__types.html deleted file mode 100644 index a0288d4..0000000 --- a/help/html/structnlohmann_1_1detail_1_1iterator__types.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::iterator_types< It, typename > Struct Template Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    nlohmann::detail::iterator_types< It, typename > Struct Template Reference
    -
    -
    - -

    #include <json.hpp>

    -
    The documentation for this struct was generated from the following file:
      -
    • build/_deps/json-src/include/nlohmann/json.hpp
    • -
    -
    - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1iterator__types_3_01It_00_01void__t_3_01typename_01It_1_1difference_325e10c1578b3a63812617d3f8a8d995.html b/help/html/structnlohmann_1_1detail_1_1iterator__types_3_01It_00_01void__t_3_01typename_01It_1_1difference_325e10c1578b3a63812617d3f8a8d995.html deleted file mode 100644 index 5aa3c9b..0000000 --- a/help/html/structnlohmann_1_1detail_1_1iterator__types_3_01It_00_01void__t_3_01typename_01It_1_1difference_325e10c1578b3a63812617d3f8a8d995.html +++ /dev/null @@ -1,93 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    nlohmann::detail::iterator_types< It, void_t< typename It::difference_type, typename It::value_type, typename It::pointer, typename It::reference, typename It::iterator_category > > Member List
    -
    -
    - -

    This is the complete list of members for nlohmann::detail::iterator_types< It, void_t< typename It::difference_type, typename It::value_type, typename It::pointer, typename It::reference, typename It::iterator_category > >, including all inherited members.

    - - - - - - - - - - - -
    difference_type typedefnlohmann::detail::iterator_types< It, void_t< typename It::difference_type, typename It::value_type, typename It::pointer, typename It::reference, typename It::iterator_category > >
    difference_type typedefnlohmann::detail::iterator_types< It, void_t< typename It::difference_type, typename It::value_type, typename It::pointer, typename It::reference, typename It::iterator_category > >
    iterator_category typedefnlohmann::detail::iterator_types< It, void_t< typename It::difference_type, typename It::value_type, typename It::pointer, typename It::reference, typename It::iterator_category > >
    iterator_category typedefnlohmann::detail::iterator_types< It, void_t< typename It::difference_type, typename It::value_type, typename It::pointer, typename It::reference, typename It::iterator_category > >
    pointer typedefnlohmann::detail::iterator_types< It, void_t< typename It::difference_type, typename It::value_type, typename It::pointer, typename It::reference, typename It::iterator_category > >
    pointer typedefnlohmann::detail::iterator_types< It, void_t< typename It::difference_type, typename It::value_type, typename It::pointer, typename It::reference, typename It::iterator_category > >
    reference typedefnlohmann::detail::iterator_types< It, void_t< typename It::difference_type, typename It::value_type, typename It::pointer, typename It::reference, typename It::iterator_category > >
    reference typedefnlohmann::detail::iterator_types< It, void_t< typename It::difference_type, typename It::value_type, typename It::pointer, typename It::reference, typename It::iterator_category > >
    value_type typedefnlohmann::detail::iterator_types< It, void_t< typename It::difference_type, typename It::value_type, typename It::pointer, typename It::reference, typename It::iterator_category > >
    value_type typedefnlohmann::detail::iterator_types< It, void_t< typename It::difference_type, typename It::value_type, typename It::pointer, typename It::reference, typename It::iterator_category > >
    - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1iterator__types_3_01It_00_01void__t_3_01typename_01It_1_1difference_d2be8685966c97e00e99d4fd2366dc0b.html b/help/html/structnlohmann_1_1detail_1_1iterator__types_3_01It_00_01void__t_3_01typename_01It_1_1difference_d2be8685966c97e00e99d4fd2366dc0b.html deleted file mode 100644 index 722b169..0000000 --- a/help/html/structnlohmann_1_1detail_1_1iterator__types_3_01It_00_01void__t_3_01typename_01It_1_1difference_d2be8685966c97e00e99d4fd2366dc0b.html +++ /dev/null @@ -1,273 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::iterator_types< It, void_t< typename It::difference_type, typename It::value_type, typename It::pointer, typename It::reference, typename It::iterator_category > > Struct Template Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    nlohmann::detail::iterator_types< It, void_t< typename It::difference_type, typename It::value_type, typename It::pointer, typename It::reference, typename It::iterator_category > > Struct Template Reference
    -
    -
    - -

    #include <json.hpp>

    - - - - - - - - - - - - - - - - - - - - - - -

    -Public Types

    using difference_type = typename It::difference_type
     
    using value_type = typename It::value_type
     
    using pointer = typename It::pointer
     
    using reference = typename It::reference
     
    using iterator_category = typename It::iterator_category
     
    using difference_type = typename It::difference_type
     
    using value_type = typename It::value_type
     
    using pointer = typename It::pointer
     
    using reference = typename It::reference
     
    using iterator_category = typename It::iterator_category
     
    -

    Member Typedef Documentation

    - -

    ◆ difference_type [1/2]

    - -
    -
    -
    -template<typename It >
    - - - - -
    using nlohmann::detail::iterator_types< It, void_t< typename It::difference_type, typename It::value_type, typename It::pointer, typename It::reference, typename It::iterator_category > >::difference_type = typename It::difference_type
    -
    - -
    -
    - -

    ◆ difference_type [2/2]

    - -
    -
    -
    -template<typename It >
    - - - - -
    using nlohmann::detail::iterator_types< It, void_t< typename It::difference_type, typename It::value_type, typename It::pointer, typename It::reference, typename It::iterator_category > >::difference_type = typename It::difference_type
    -
    - -
    -
    - -

    ◆ iterator_category [1/2]

    - -
    -
    -
    -template<typename It >
    - - - - -
    using nlohmann::detail::iterator_types< It, void_t< typename It::difference_type, typename It::value_type, typename It::pointer, typename It::reference, typename It::iterator_category > >::iterator_category = typename It::iterator_category
    -
    - -
    -
    - -

    ◆ iterator_category [2/2]

    - -
    -
    -
    -template<typename It >
    - - - - -
    using nlohmann::detail::iterator_types< It, void_t< typename It::difference_type, typename It::value_type, typename It::pointer, typename It::reference, typename It::iterator_category > >::iterator_category = typename It::iterator_category
    -
    - -
    -
    - -

    ◆ pointer [1/2]

    - -
    -
    -
    -template<typename It >
    - - - - -
    using nlohmann::detail::iterator_types< It, void_t< typename It::difference_type, typename It::value_type, typename It::pointer, typename It::reference, typename It::iterator_category > >::pointer = typename It::pointer
    -
    - -
    -
    - -

    ◆ pointer [2/2]

    - -
    -
    -
    -template<typename It >
    - - - - -
    using nlohmann::detail::iterator_types< It, void_t< typename It::difference_type, typename It::value_type, typename It::pointer, typename It::reference, typename It::iterator_category > >::pointer = typename It::pointer
    -
    - -
    -
    - -

    ◆ reference [1/2]

    - -
    -
    -
    -template<typename It >
    - - - - -
    using nlohmann::detail::iterator_types< It, void_t< typename It::difference_type, typename It::value_type, typename It::pointer, typename It::reference, typename It::iterator_category > >::reference = typename It::reference
    -
    - -
    -
    - -

    ◆ reference [2/2]

    - -
    -
    -
    -template<typename It >
    - - - - -
    using nlohmann::detail::iterator_types< It, void_t< typename It::difference_type, typename It::value_type, typename It::pointer, typename It::reference, typename It::iterator_category > >::reference = typename It::reference
    -
    - -
    -
    - -

    ◆ value_type [1/2]

    - -
    -
    -
    -template<typename It >
    - - - - -
    using nlohmann::detail::iterator_types< It, void_t< typename It::difference_type, typename It::value_type, typename It::pointer, typename It::reference, typename It::iterator_category > >::value_type = typename It::value_type
    -
    - -
    -
    - -

    ◆ value_type [2/2]

    - -
    -
    -
    -template<typename It >
    - - - - -
    using nlohmann::detail::iterator_types< It, void_t< typename It::difference_type, typename It::value_type, typename It::pointer, typename It::reference, typename It::iterator_category > >::value_type = typename It::value_type
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • build/_deps/json-src/include/nlohmann/json.hpp
    • -
    -
    - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1make__index__sequence.html b/help/html/structnlohmann_1_1detail_1_1make__index__sequence.html deleted file mode 100644 index 30f0298..0000000 --- a/help/html/structnlohmann_1_1detail_1_1make__index__sequence.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::make_index_sequence< N > Struct Template Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    nlohmann::detail::make_index_sequence< N > Struct Template Reference
    -
    -
    - -

    #include <json.hpp>

    -
    -Inheritance diagram for nlohmann::detail::make_index_sequence< N >:
    -
    -
    Inheritance graph
    - - - - -
    [legend]
    -
    -Collaboration diagram for nlohmann::detail::make_index_sequence< N >:
    -
    -
    Collaboration graph
    - - - - -
    [legend]
    -
    The documentation for this struct was generated from the following file:
      -
    • build/_deps/json-src/include/nlohmann/json.hpp
    • -
    -
    - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1make__index__sequence_3_010_01_4-members.html b/help/html/structnlohmann_1_1detail_1_1make__index__sequence_3_010_01_4-members.html deleted file mode 100644 index 633daa6..0000000 --- a/help/html/structnlohmann_1_1detail_1_1make__index__sequence_3_010_01_4-members.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    nlohmann::detail::make_index_sequence< 0 > Member List
    -
    - - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1make__index__sequence_3_010_01_4.html b/help/html/structnlohmann_1_1detail_1_1make__index__sequence_3_010_01_4.html deleted file mode 100644 index 5f4eabb..0000000 --- a/help/html/structnlohmann_1_1detail_1_1make__index__sequence_3_010_01_4.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::make_index_sequence< 0 > Struct Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    nlohmann::detail::make_index_sequence< 0 > Struct Reference
    -
    -
    - -

    #include <json.hpp>

    -
    -Inheritance diagram for nlohmann::detail::make_index_sequence< 0 >:
    -
    -
    Inheritance graph
    - - - - -
    [legend]
    -
    -Collaboration diagram for nlohmann::detail::make_index_sequence< 0 >:
    -
    -
    Collaboration graph
    - - - - -
    [legend]
    - - - - - - - - - - - - - - - - -

    -Additional Inherited Members

    - Public Types inherited from nlohmann::detail::index_sequence<>
    using type = index_sequence
     
    using type = index_sequence
     
    using value_type = std::size_t
     
    using value_type = std::size_t
     
    - Static Public Member Functions inherited from nlohmann::detail::index_sequence<>
    static constexpr std::size_t size () noexcept
     
    static constexpr std::size_t size () noexcept
     
    -
    The documentation for this struct was generated from the following file:
      -
    • build/_deps/json-src/include/nlohmann/json.hpp
    • -
    -
    - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1make__index__sequence_3_010_01_4__coll__graph.map b/help/html/structnlohmann_1_1detail_1_1make__index__sequence_3_010_01_4__coll__graph.map deleted file mode 100644 index b4bdf31..0000000 --- a/help/html/structnlohmann_1_1detail_1_1make__index__sequence_3_010_01_4__coll__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1make__index__sequence_3_010_01_4__coll__graph.md5 b/help/html/structnlohmann_1_1detail_1_1make__index__sequence_3_010_01_4__coll__graph.md5 deleted file mode 100644 index 73a43c7..0000000 --- a/help/html/structnlohmann_1_1detail_1_1make__index__sequence_3_010_01_4__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -755632fecb873e0b95e2b1d6f8235d0f \ No newline at end of file diff --git a/help/html/structnlohmann_1_1detail_1_1make__index__sequence_3_010_01_4__coll__graph.png b/help/html/structnlohmann_1_1detail_1_1make__index__sequence_3_010_01_4__coll__graph.png deleted file mode 100644 index 39ccfa9..0000000 Binary files a/help/html/structnlohmann_1_1detail_1_1make__index__sequence_3_010_01_4__coll__graph.png and /dev/null differ diff --git a/help/html/structnlohmann_1_1detail_1_1make__index__sequence_3_010_01_4__inherit__graph.map b/help/html/structnlohmann_1_1detail_1_1make__index__sequence_3_010_01_4__inherit__graph.map deleted file mode 100644 index b4bdf31..0000000 --- a/help/html/structnlohmann_1_1detail_1_1make__index__sequence_3_010_01_4__inherit__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1make__index__sequence_3_010_01_4__inherit__graph.md5 b/help/html/structnlohmann_1_1detail_1_1make__index__sequence_3_010_01_4__inherit__graph.md5 deleted file mode 100644 index 73a43c7..0000000 --- a/help/html/structnlohmann_1_1detail_1_1make__index__sequence_3_010_01_4__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -755632fecb873e0b95e2b1d6f8235d0f \ No newline at end of file diff --git a/help/html/structnlohmann_1_1detail_1_1make__index__sequence_3_010_01_4__inherit__graph.png b/help/html/structnlohmann_1_1detail_1_1make__index__sequence_3_010_01_4__inherit__graph.png deleted file mode 100644 index 39ccfa9..0000000 Binary files a/help/html/structnlohmann_1_1detail_1_1make__index__sequence_3_010_01_4__inherit__graph.png and /dev/null differ diff --git a/help/html/structnlohmann_1_1detail_1_1make__index__sequence_3_011_01_4-members.html b/help/html/structnlohmann_1_1detail_1_1make__index__sequence_3_011_01_4-members.html deleted file mode 100644 index f40aac6..0000000 --- a/help/html/structnlohmann_1_1detail_1_1make__index__sequence_3_011_01_4-members.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    nlohmann::detail::make_index_sequence< 1 > Member List
    -
    - - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1make__index__sequence_3_011_01_4.html b/help/html/structnlohmann_1_1detail_1_1make__index__sequence_3_011_01_4.html deleted file mode 100644 index d05bfec..0000000 --- a/help/html/structnlohmann_1_1detail_1_1make__index__sequence_3_011_01_4.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::make_index_sequence< 1 > Struct Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    nlohmann::detail::make_index_sequence< 1 > Struct Reference
    -
    -
    - -

    #include <json.hpp>

    -
    -Inheritance diagram for nlohmann::detail::make_index_sequence< 1 >:
    -
    -
    Inheritance graph
    - - - - -
    [legend]
    -
    -Collaboration diagram for nlohmann::detail::make_index_sequence< 1 >:
    -
    -
    Collaboration graph
    - - - - -
    [legend]
    - - - - - - - - - - - - - - - - -

    -Additional Inherited Members

    - Public Types inherited from nlohmann::detail::index_sequence< 0 >
    using type = index_sequence
     
    using type = index_sequence
     
    using value_type = std::size_t
     
    using value_type = std::size_t
     
    - Static Public Member Functions inherited from nlohmann::detail::index_sequence< 0 >
    static constexpr std::size_t size () noexcept
     
    static constexpr std::size_t size () noexcept
     
    -
    The documentation for this struct was generated from the following file:
      -
    • build/_deps/json-src/include/nlohmann/json.hpp
    • -
    -
    - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1make__index__sequence_3_011_01_4__coll__graph.map b/help/html/structnlohmann_1_1detail_1_1make__index__sequence_3_011_01_4__coll__graph.map deleted file mode 100644 index 96b11c8..0000000 --- a/help/html/structnlohmann_1_1detail_1_1make__index__sequence_3_011_01_4__coll__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1make__index__sequence_3_011_01_4__coll__graph.md5 b/help/html/structnlohmann_1_1detail_1_1make__index__sequence_3_011_01_4__coll__graph.md5 deleted file mode 100644 index 1a0f97e..0000000 --- a/help/html/structnlohmann_1_1detail_1_1make__index__sequence_3_011_01_4__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -66432eb40197a552176f76f3317b6c58 \ No newline at end of file diff --git a/help/html/structnlohmann_1_1detail_1_1make__index__sequence_3_011_01_4__coll__graph.png b/help/html/structnlohmann_1_1detail_1_1make__index__sequence_3_011_01_4__coll__graph.png deleted file mode 100644 index 19c5324..0000000 Binary files a/help/html/structnlohmann_1_1detail_1_1make__index__sequence_3_011_01_4__coll__graph.png and /dev/null differ diff --git a/help/html/structnlohmann_1_1detail_1_1make__index__sequence_3_011_01_4__inherit__graph.map b/help/html/structnlohmann_1_1detail_1_1make__index__sequence_3_011_01_4__inherit__graph.map deleted file mode 100644 index 96b11c8..0000000 --- a/help/html/structnlohmann_1_1detail_1_1make__index__sequence_3_011_01_4__inherit__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1make__index__sequence_3_011_01_4__inherit__graph.md5 b/help/html/structnlohmann_1_1detail_1_1make__index__sequence_3_011_01_4__inherit__graph.md5 deleted file mode 100644 index 1a0f97e..0000000 --- a/help/html/structnlohmann_1_1detail_1_1make__index__sequence_3_011_01_4__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -66432eb40197a552176f76f3317b6c58 \ No newline at end of file diff --git a/help/html/structnlohmann_1_1detail_1_1make__index__sequence_3_011_01_4__inherit__graph.png b/help/html/structnlohmann_1_1detail_1_1make__index__sequence_3_011_01_4__inherit__graph.png deleted file mode 100644 index 19c5324..0000000 Binary files a/help/html/structnlohmann_1_1detail_1_1make__index__sequence_3_011_01_4__inherit__graph.png and /dev/null differ diff --git a/help/html/structnlohmann_1_1detail_1_1make__index__sequence__coll__graph.map b/help/html/structnlohmann_1_1detail_1_1make__index__sequence__coll__graph.map deleted file mode 100644 index 6a45db3..0000000 --- a/help/html/structnlohmann_1_1detail_1_1make__index__sequence__coll__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1make__index__sequence__coll__graph.md5 b/help/html/structnlohmann_1_1detail_1_1make__index__sequence__coll__graph.md5 deleted file mode 100644 index 463d340..0000000 --- a/help/html/structnlohmann_1_1detail_1_1make__index__sequence__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -1707e8c0ef9ee115ed8d439ce99dc457 \ No newline at end of file diff --git a/help/html/structnlohmann_1_1detail_1_1make__index__sequence__coll__graph.png b/help/html/structnlohmann_1_1detail_1_1make__index__sequence__coll__graph.png deleted file mode 100644 index b14bce9..0000000 Binary files a/help/html/structnlohmann_1_1detail_1_1make__index__sequence__coll__graph.png and /dev/null differ diff --git a/help/html/structnlohmann_1_1detail_1_1make__index__sequence__inherit__graph.map b/help/html/structnlohmann_1_1detail_1_1make__index__sequence__inherit__graph.map deleted file mode 100644 index 6a45db3..0000000 --- a/help/html/structnlohmann_1_1detail_1_1make__index__sequence__inherit__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1make__index__sequence__inherit__graph.md5 b/help/html/structnlohmann_1_1detail_1_1make__index__sequence__inherit__graph.md5 deleted file mode 100644 index 463d340..0000000 --- a/help/html/structnlohmann_1_1detail_1_1make__index__sequence__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -1707e8c0ef9ee115ed8d439ce99dc457 \ No newline at end of file diff --git a/help/html/structnlohmann_1_1detail_1_1make__index__sequence__inherit__graph.png b/help/html/structnlohmann_1_1detail_1_1make__index__sequence__inherit__graph.png deleted file mode 100644 index b14bce9..0000000 Binary files a/help/html/structnlohmann_1_1detail_1_1make__index__sequence__inherit__graph.png and /dev/null differ diff --git a/help/html/structnlohmann_1_1detail_1_1make__void-members.html b/help/html/structnlohmann_1_1detail_1_1make__void-members.html deleted file mode 100644 index 01a9754..0000000 --- a/help/html/structnlohmann_1_1detail_1_1make__void-members.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    nlohmann::detail::make_void< Ts > Member List
    -
    -
    - -

    This is the complete list of members for nlohmann::detail::make_void< Ts >, including all inherited members.

    - - - -
    type typedefnlohmann::detail::make_void< Ts >
    type typedefnlohmann::detail::make_void< Ts >
    - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1make__void.html b/help/html/structnlohmann_1_1detail_1_1make__void.html deleted file mode 100644 index cc50420..0000000 --- a/help/html/structnlohmann_1_1detail_1_1make__void.html +++ /dev/null @@ -1,129 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::make_void< Ts > Struct Template Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    nlohmann::detail::make_void< Ts > Struct Template Reference
    -
    -
    - -

    #include <json.hpp>

    - - - - - - -

    -Public Types

    using type = void
     
    using type = void
     
    -

    Member Typedef Documentation

    - -

    ◆ type [1/2]

    - -
    -
    -
    -template<typename ... Ts>
    - - - - -
    using nlohmann::detail::make_void< Ts >::type = void
    -
    - -
    -
    - -

    ◆ type [2/2]

    - -
    -
    -
    -template<typename ... Ts>
    - - - - -
    using nlohmann::detail::make_void< Ts >::type = void
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • build/_deps/json-src/include/nlohmann/json.hpp
    • -
    -
    - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1merge__and__renumber.html b/help/html/structnlohmann_1_1detail_1_1merge__and__renumber.html deleted file mode 100644 index 179a495..0000000 --- a/help/html/structnlohmann_1_1detail_1_1merge__and__renumber.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::merge_and_renumber< Sequence1, Sequence2 > Struct Template Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    nlohmann::detail::merge_and_renumber< Sequence1, Sequence2 > Struct Template Reference
    -
    -
    - -

    #include <json.hpp>

    -
    The documentation for this struct was generated from the following file:
      -
    • build/_deps/json-src/include/nlohmann/json.hpp
    • -
    -
    - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1merge__and__renumber_3_01index__sequence_3_01I1_8_8_8_01_4_00_01inde1bac35fd5e769bd829866cd5fef35c22.map b/help/html/structnlohmann_1_1detail_1_1merge__and__renumber_3_01index__sequence_3_01I1_8_8_8_01_4_00_01inde1bac35fd5e769bd829866cd5fef35c22.map deleted file mode 100644 index 4f86623..0000000 --- a/help/html/structnlohmann_1_1detail_1_1merge__and__renumber_3_01index__sequence_3_01I1_8_8_8_01_4_00_01inde1bac35fd5e769bd829866cd5fef35c22.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1merge__and__renumber_3_01index__sequence_3_01I1_8_8_8_01_4_00_01inde1bac35fd5e769bd829866cd5fef35c22.md5 b/help/html/structnlohmann_1_1detail_1_1merge__and__renumber_3_01index__sequence_3_01I1_8_8_8_01_4_00_01inde1bac35fd5e769bd829866cd5fef35c22.md5 deleted file mode 100644 index 95916b3..0000000 --- a/help/html/structnlohmann_1_1detail_1_1merge__and__renumber_3_01index__sequence_3_01I1_8_8_8_01_4_00_01inde1bac35fd5e769bd829866cd5fef35c22.md5 +++ /dev/null @@ -1 +0,0 @@ -9bb137dbca69bd6c0ccf84678b8c4cac \ No newline at end of file diff --git a/help/html/structnlohmann_1_1detail_1_1merge__and__renumber_3_01index__sequence_3_01I1_8_8_8_01_4_00_01inde1bac35fd5e769bd829866cd5fef35c22.png b/help/html/structnlohmann_1_1detail_1_1merge__and__renumber_3_01index__sequence_3_01I1_8_8_8_01_4_00_01inde1bac35fd5e769bd829866cd5fef35c22.png deleted file mode 100644 index 82b321c..0000000 Binary files a/help/html/structnlohmann_1_1detail_1_1merge__and__renumber_3_01index__sequence_3_01I1_8_8_8_01_4_00_01inde1bac35fd5e769bd829866cd5fef35c22.png and /dev/null differ diff --git a/help/html/structnlohmann_1_1detail_1_1merge__and__renumber_3_01index__sequence_3_01I1_8_8_8_01_4_00_01inde4885d6f1d93a04f25932afbd429c4793.html b/help/html/structnlohmann_1_1detail_1_1merge__and__renumber_3_01index__sequence_3_01I1_8_8_8_01_4_00_01inde4885d6f1d93a04f25932afbd429c4793.html deleted file mode 100644 index d7276c0..0000000 --- a/help/html/structnlohmann_1_1detail_1_1merge__and__renumber_3_01index__sequence_3_01I1_8_8_8_01_4_00_01inde4885d6f1d93a04f25932afbd429c4793.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::merge_and_renumber< index_sequence< I1... >, index_sequence< I2... > > Struct Template Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    nlohmann::detail::merge_and_renumber< index_sequence< I1... >, index_sequence< I2... > > Struct Template Reference
    -
    -
    - -

    #include <json.hpp>

    -
    -Inheritance diagram for nlohmann::detail::merge_and_renumber< index_sequence< I1... >, index_sequence< I2... > >:
    -
    -
    Inheritance graph
    - - - - -
    [legend]
    -
    -Collaboration diagram for nlohmann::detail::merge_and_renumber< index_sequence< I1... >, index_sequence< I2... > >:
    -
    -
    Collaboration graph
    - - - - -
    [legend]
    - - - - - - - - - - - - - - - - -

    -Additional Inherited Members

    - Public Types inherited from nlohmann::detail::index_sequence< I1...,(sizeof...(I1)+I2)... >
    using type = index_sequence
     
    using type = index_sequence
     
    using value_type = std::size_t
     
    using value_type = std::size_t
     
    - Static Public Member Functions inherited from nlohmann::detail::index_sequence< I1...,(sizeof...(I1)+I2)... >
    static constexpr std::size_t size () noexcept
     
    static constexpr std::size_t size () noexcept
     
    -
    The documentation for this struct was generated from the following file:
      -
    • build/_deps/json-src/include/nlohmann/json.hpp
    • -
    -
    - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1merge__and__renumber_3_01index__sequence_3_01I1_8_8_8_01_4_00_01inde58a580c1f5a37a79769abd61aded5e29.map b/help/html/structnlohmann_1_1detail_1_1merge__and__renumber_3_01index__sequence_3_01I1_8_8_8_01_4_00_01inde58a580c1f5a37a79769abd61aded5e29.map deleted file mode 100644 index 4f86623..0000000 --- a/help/html/structnlohmann_1_1detail_1_1merge__and__renumber_3_01index__sequence_3_01I1_8_8_8_01_4_00_01inde58a580c1f5a37a79769abd61aded5e29.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1merge__and__renumber_3_01index__sequence_3_01I1_8_8_8_01_4_00_01inde58a580c1f5a37a79769abd61aded5e29.md5 b/help/html/structnlohmann_1_1detail_1_1merge__and__renumber_3_01index__sequence_3_01I1_8_8_8_01_4_00_01inde58a580c1f5a37a79769abd61aded5e29.md5 deleted file mode 100644 index 95916b3..0000000 --- a/help/html/structnlohmann_1_1detail_1_1merge__and__renumber_3_01index__sequence_3_01I1_8_8_8_01_4_00_01inde58a580c1f5a37a79769abd61aded5e29.md5 +++ /dev/null @@ -1 +0,0 @@ -9bb137dbca69bd6c0ccf84678b8c4cac \ No newline at end of file diff --git a/help/html/structnlohmann_1_1detail_1_1merge__and__renumber_3_01index__sequence_3_01I1_8_8_8_01_4_00_01inde58a580c1f5a37a79769abd61aded5e29.png b/help/html/structnlohmann_1_1detail_1_1merge__and__renumber_3_01index__sequence_3_01I1_8_8_8_01_4_00_01inde58a580c1f5a37a79769abd61aded5e29.png deleted file mode 100644 index 82b321c..0000000 Binary files a/help/html/structnlohmann_1_1detail_1_1merge__and__renumber_3_01index__sequence_3_01I1_8_8_8_01_4_00_01inde58a580c1f5a37a79769abd61aded5e29.png and /dev/null differ diff --git a/help/html/structnlohmann_1_1detail_1_1merge__and__renumber_3_01index__sequence_3_01I1_8_8_8_01_4_00_01indebebec34e109190e5d41f54d7e3818587.html b/help/html/structnlohmann_1_1detail_1_1merge__and__renumber_3_01index__sequence_3_01I1_8_8_8_01_4_00_01indebebec34e109190e5d41f54d7e3818587.html deleted file mode 100644 index 41a86f9..0000000 --- a/help/html/structnlohmann_1_1detail_1_1merge__and__renumber_3_01index__sequence_3_01I1_8_8_8_01_4_00_01indebebec34e109190e5d41f54d7e3818587.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    nlohmann::detail::merge_and_renumber< index_sequence< I1... >, index_sequence< I2... > > Member List
    -
    - - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1nonesuch-members.html b/help/html/structnlohmann_1_1detail_1_1nonesuch-members.html deleted file mode 100644 index 2a52528..0000000 --- a/help/html/structnlohmann_1_1detail_1_1nonesuch-members.html +++ /dev/null @@ -1,95 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    nlohmann::detail::nonesuch Member List
    -
    -
    - -

    This is the complete list of members for nlohmann::detail::nonesuch, including all inherited members.

    - - - - - - - - - - - - - -
    nonesuch()=deletenlohmann::detail::nonesuch
    nonesuch(nonesuch const &)=deletenlohmann::detail::nonesuch
    nonesuch(nonesuch const &&)=deletenlohmann::detail::nonesuch
    nonesuch()=deletenlohmann::detail::nonesuch
    nonesuch(nonesuch const &)=deletenlohmann::detail::nonesuch
    nonesuch(nonesuch const &&)=deletenlohmann::detail::nonesuch
    operator=(nonesuch const &)=deletenlohmann::detail::nonesuch
    operator=(nonesuch &&)=deletenlohmann::detail::nonesuch
    operator=(nonesuch const &)=deletenlohmann::detail::nonesuch
    operator=(nonesuch &&)=deletenlohmann::detail::nonesuch
    ~nonesuch()=deletenlohmann::detail::nonesuch
    ~nonesuch()=deletenlohmann::detail::nonesuch
    - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1nonesuch.html b/help/html/structnlohmann_1_1detail_1_1nonesuch.html deleted file mode 100644 index ea3bfbe..0000000 --- a/help/html/structnlohmann_1_1detail_1_1nonesuch.html +++ /dev/null @@ -1,426 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::nonesuch Struct Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    nlohmann::detail::nonesuch Struct Reference
    -
    -
    - -

    #include <json.hpp>

    - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Member Functions

     nonesuch ()=delete
     
     ~nonesuch ()=delete
     
     nonesuch (nonesuch const &)=delete
     
     nonesuch (nonesuch const &&)=delete
     
    void operator= (nonesuch const &)=delete
     
    void operator= (nonesuch &&)=delete
     
     nonesuch ()=delete
     
     ~nonesuch ()=delete
     
     nonesuch (nonesuch const &)=delete
     
     nonesuch (nonesuch const &&)=delete
     
    void operator= (nonesuch const &)=delete
     
    void operator= (nonesuch &&)=delete
     
    -

    Constructor & Destructor Documentation

    - -

    ◆ nonesuch() [1/6]

    - -
    -
    - - - - - -
    - - - - - - - -
    nlohmann::detail::nonesuch::nonesuch ()
    -
    -delete
    -
    - -
    -
    - -

    ◆ ~nonesuch() [1/2]

    - -
    -
    - - - - - -
    - - - - - - - -
    nlohmann::detail::nonesuch::~nonesuch ()
    -
    -delete
    -
    - -
    -
    - -

    ◆ nonesuch() [2/6]

    - -
    -
    - - - - - -
    - - - - - - - - -
    nlohmann::detail::nonesuch::nonesuch (nonesuch const & )
    -
    -delete
    -
    - -
    -
    - -

    ◆ nonesuch() [3/6]

    - -
    -
    - - - - - -
    - - - - - - - - -
    nlohmann::detail::nonesuch::nonesuch (nonesuch const && )
    -
    -delete
    -
    - -
    -
    - -

    ◆ nonesuch() [4/6]

    - -
    -
    - - - - - -
    - - - - - - - -
    nlohmann::detail::nonesuch::nonesuch ()
    -
    -delete
    -
    - -
    -
    - -

    ◆ ~nonesuch() [2/2]

    - -
    -
    - - - - - -
    - - - - - - - -
    nlohmann::detail::nonesuch::~nonesuch ()
    -
    -delete
    -
    - -
    -
    - -

    ◆ nonesuch() [5/6]

    - -
    -
    - - - - - -
    - - - - - - - - -
    nlohmann::detail::nonesuch::nonesuch (nonesuch const & )
    -
    -delete
    -
    - -
    -
    - -

    ◆ nonesuch() [6/6]

    - -
    -
    - - - - - -
    - - - - - - - - -
    nlohmann::detail::nonesuch::nonesuch (nonesuch const && )
    -
    -delete
    -
    - -
    -
    -

    Member Function Documentation

    - -

    ◆ operator=() [1/4]

    - -
    -
    - - - - - -
    - - - - - - - - -
    void nlohmann::detail::nonesuch::operator= (nonesuch && )
    -
    -delete
    -
    - -
    -
    - -

    ◆ operator=() [2/4]

    - -
    -
    - - - - - -
    - - - - - - - - -
    void nlohmann::detail::nonesuch::operator= (nonesuch && )
    -
    -delete
    -
    - -
    -
    - -

    ◆ operator=() [3/4]

    - -
    -
    - - - - - -
    - - - - - - - - -
    void nlohmann::detail::nonesuch::operator= (nonesuch const & )
    -
    -delete
    -
    - -
    -
    - -

    ◆ operator=() [4/4]

    - -
    -
    - - - - - -
    - - - - - - - - -
    void nlohmann::detail::nonesuch::operator= (nonesuch const & )
    -
    -delete
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • build/_deps/json-src/include/nlohmann/json.hpp
    • -
    -
    - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1output__adapter__protocol-members.html b/help/html/structnlohmann_1_1detail_1_1output__adapter__protocol-members.html deleted file mode 100644 index c2cc0a3..0000000 --- a/help/html/structnlohmann_1_1detail_1_1output__adapter__protocol-members.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    nlohmann::detail::output_adapter_protocol< CharType > Member List
    -
    - - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1output__adapter__protocol.html b/help/html/structnlohmann_1_1detail_1_1output__adapter__protocol.html deleted file mode 100644 index d184c8c..0000000 --- a/help/html/structnlohmann_1_1detail_1_1output__adapter__protocol.html +++ /dev/null @@ -1,319 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::output_adapter_protocol< CharType > Struct Template Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    nlohmann::detail::output_adapter_protocol< CharType > Struct Template Referenceabstract
    -
    -
    - -

    abstract output adapter interface - More...

    - -

    #include <json.hpp>

    -
    -Inheritance diagram for nlohmann::detail::output_adapter_protocol< CharType >:
    -
    -
    Inheritance graph
    - - - - - - -
    [legend]
    - - - - - - - - - - - - - - -

    -Public Member Functions

    virtual void write_character (CharType c)=0
     
    virtual void write_characters (const CharType *s, std::size_t length)=0
     
    virtual ~output_adapter_protocol ()=default
     
    virtual void write_character (CharType c)=0
     
    virtual void write_characters (const CharType *s, std::size_t length)=0
     
    virtual ~output_adapter_protocol ()=default
     
    -

    Detailed Description

    -

    template<typename CharType>
    -struct nlohmann::detail::output_adapter_protocol< CharType >

    - -

    abstract output adapter interface

    -

    Constructor & Destructor Documentation

    - -

    ◆ ~output_adapter_protocol() [1/2]

    - -
    -
    -
    -template<typename CharType >
    - - - - - -
    - - - - - - - -
    virtual nlohmann::detail::output_adapter_protocol< CharType >::~output_adapter_protocol ()
    -
    -virtualdefault
    -
    - -
    -
    - -

    ◆ ~output_adapter_protocol() [2/2]

    - -
    -
    -
    -template<typename CharType >
    - - - - - -
    - - - - - - - -
    virtual nlohmann::detail::output_adapter_protocol< CharType >::~output_adapter_protocol ()
    -
    -virtualdefault
    -
    - -
    -
    -

    Member Function Documentation

    - -

    ◆ write_character() [1/2]

    - - - -

    ◆ write_character() [2/2]

    - - - -

    ◆ write_characters() [1/2]

    - - - -

    ◆ write_characters() [2/2]

    - - -
    The documentation for this struct was generated from the following file:
      -
    • build/_deps/json-src/include/nlohmann/json.hpp
    • -
    -
    - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1output__adapter__protocol__inherit__graph.map b/help/html/structnlohmann_1_1detail_1_1output__adapter__protocol__inherit__graph.map deleted file mode 100644 index b31b609..0000000 --- a/help/html/structnlohmann_1_1detail_1_1output__adapter__protocol__inherit__graph.map +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1output__adapter__protocol__inherit__graph.md5 b/help/html/structnlohmann_1_1detail_1_1output__adapter__protocol__inherit__graph.md5 deleted file mode 100644 index 1ebd8d7..0000000 --- a/help/html/structnlohmann_1_1detail_1_1output__adapter__protocol__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -25bb44cfec42b6cab4804e17aebef319 \ No newline at end of file diff --git a/help/html/structnlohmann_1_1detail_1_1output__adapter__protocol__inherit__graph.png b/help/html/structnlohmann_1_1detail_1_1output__adapter__protocol__inherit__graph.png deleted file mode 100644 index 01fc380..0000000 Binary files a/help/html/structnlohmann_1_1detail_1_1output__adapter__protocol__inherit__graph.png and /dev/null differ diff --git a/help/html/structnlohmann_1_1detail_1_1position__t-members.html b/help/html/structnlohmann_1_1detail_1_1position__t-members.html deleted file mode 100644 index 79798cf..0000000 --- a/help/html/structnlohmann_1_1detail_1_1position__t-members.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    nlohmann::detail::position_t Member List
    -
    - - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1position__t.html b/help/html/structnlohmann_1_1detail_1_1position__t.html deleted file mode 100644 index b41bc94..0000000 --- a/help/html/structnlohmann_1_1detail_1_1position__t.html +++ /dev/null @@ -1,220 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::position_t Struct Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    nlohmann::detail::position_t Struct Reference
    -
    -
    - -

    struct to capture the start position of the current token - More...

    - -

    #include <json.hpp>

    - - - - - - - - -

    -Public Member Functions

    constexpr operator size_t () const
     conversion to size_t to preserve SAX interface More...
     
    constexpr operator size_t () const
     conversion to size_t to preserve SAX interface More...
     
    - - - - - - - - - - -

    -Public Attributes

    std::size_t chars_read_total = 0
     the total number of characters read More...
     
    std::size_t chars_read_current_line = 0
     the number of characters read in the current line More...
     
    std::size_t lines_read = 0
     the number of lines read More...
     
    -

    Detailed Description

    -

    struct to capture the start position of the current token

    -

    Member Function Documentation

    - -

    ◆ operator size_t() [1/2]

    - -
    -
    - - - - - -
    - - - - - - - -
    constexpr nlohmann::detail::position_t::operator size_t () const
    -
    -inlineconstexpr
    -
    - -

    conversion to size_t to preserve SAX interface

    - -
    -
    - -

    ◆ operator size_t() [2/2]

    - -
    -
    - - - - - -
    - - - - - - - -
    constexpr nlohmann::detail::position_t::operator size_t () const
    -
    -inlineconstexpr
    -
    - -

    conversion to size_t to preserve SAX interface

    - -
    -
    -

    Member Data Documentation

    - -

    ◆ chars_read_current_line

    - -
    -
    - - - - -
    std::size_t nlohmann::detail::position_t::chars_read_current_line = 0
    -
    - -

    the number of characters read in the current line

    - -
    -
    - -

    ◆ chars_read_total

    - -
    -
    - - - - -
    std::size_t nlohmann::detail::position_t::chars_read_total = 0
    -
    - -

    the total number of characters read

    - -
    -
    - -

    ◆ lines_read

    - -
    -
    - - - - -
    std::size_t nlohmann::detail::position_t::lines_read = 0
    -
    - -

    the number of lines read

    - -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • build/_deps/json-src/include/nlohmann/json.hpp
    • -
    -
    - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1priority__tag.html b/help/html/structnlohmann_1_1detail_1_1priority__tag.html deleted file mode 100644 index 45f67bf..0000000 --- a/help/html/structnlohmann_1_1detail_1_1priority__tag.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::priority_tag< N > Struct Template Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    nlohmann::detail::priority_tag< N > Struct Template Reference
    -
    -
    - -

    #include <json.hpp>

    -
    The documentation for this struct was generated from the following file:
      -
    • build/_deps/json-src/include/nlohmann/json.hpp
    • -
    -
    - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1priority__tag_3_010_01_4.html b/help/html/structnlohmann_1_1detail_1_1priority__tag_3_010_01_4.html deleted file mode 100644 index 6581acc..0000000 --- a/help/html/structnlohmann_1_1detail_1_1priority__tag_3_010_01_4.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::priority_tag< 0 > Struct Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    nlohmann::detail::priority_tag< 0 > Struct Reference
    -
    -
    - -

    #include <json.hpp>

    -
    The documentation for this struct was generated from the following file:
      -
    • build/_deps/json-src/include/nlohmann/json.hpp
    • -
    -
    - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1static__const-members.html b/help/html/structnlohmann_1_1detail_1_1static__const-members.html deleted file mode 100644 index d08b844..0000000 --- a/help/html/structnlohmann_1_1detail_1_1static__const-members.html +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    nlohmann::detail::static_const< T > Member List
    -
    -
    - -

    This is the complete list of members for nlohmann::detail::static_const< T >, including all inherited members.

    - - -
    valuenlohmann::detail::static_const< T >static
    - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1static__const.html b/help/html/structnlohmann_1_1detail_1_1static__const.html deleted file mode 100644 index f46e335..0000000 --- a/help/html/structnlohmann_1_1detail_1_1static__const.html +++ /dev/null @@ -1,119 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::static_const< T > Struct Template Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    nlohmann::detail::static_const< T > Struct Template Reference
    -
    -
    - -

    #include <json.hpp>

    - - - - -

    -Static Public Attributes

    static constexpr T value {}
     
    -

    Member Data Documentation

    - -

    ◆ value

    - -
    -
    -
    -template<typename T >
    - - - - - -
    - - - - -
    constexpr T nlohmann::detail::static_const< T >::value {}
    -
    -staticconstexpr
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • build/_deps/json-src/include/nlohmann/json.hpp
    • -
    -
    - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1to__json__fn-members.html b/help/html/structnlohmann_1_1detail_1_1to__json__fn-members.html deleted file mode 100644 index 6d7dc4f..0000000 --- a/help/html/structnlohmann_1_1detail_1_1to__json__fn-members.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    nlohmann::detail::to_json_fn Member List
    -
    -
    - -

    This is the complete list of members for nlohmann::detail::to_json_fn, including all inherited members.

    - - - -
    operator()(BasicJsonType &j, T &&val) const noexcept(noexcept(to_json(j, std::forward< T >(val)))) -> decltype(to_json(j, std::forward< T >(val)), void())nlohmann::detail::to_json_fninline
    operator()(BasicJsonType &j, T &&val) const noexcept(noexcept(to_json(j, std::forward< T >(val)))) -> decltype(to_json(j, std::forward< T >(val)), void())nlohmann::detail::to_json_fninline
    - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1to__json__fn.html b/help/html/structnlohmann_1_1detail_1_1to__json__fn.html deleted file mode 100644 index 7ed415e..0000000 --- a/help/html/structnlohmann_1_1detail_1_1to__json__fn.html +++ /dev/null @@ -1,177 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::to_json_fn Struct Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    nlohmann::detail::to_json_fn Struct Reference
    -
    -
    - -

    #include <json.hpp>

    - - - - - - - - -

    -Public Member Functions

    template<typename BasicJsonType , typename T >
    auto operator() (BasicJsonType &j, T &&val) const noexcept(noexcept(to_json(j, std::forward< T >(val)))) -> decltype(to_json(j, std::forward< T >(val)), void())
     
    template<typename BasicJsonType , typename T >
    auto operator() (BasicJsonType &j, T &&val) const noexcept(noexcept(to_json(j, std::forward< T >(val)))) -> decltype(to_json(j, std::forward< T >(val)), void())
     
    -

    Member Function Documentation

    - -

    ◆ operator()() [1/2]

    - -
    -
    -
    -template<typename BasicJsonType , typename T >
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    auto nlohmann::detail::to_json_fn::operator() (BasicJsonType & j,
    T && val 
    ) const -> decltype(to_json(j, std::forward<T>(val)), void()) -
    -
    -inlinenoexcept
    -
    - -
    -
    - -

    ◆ operator()() [2/2]

    - -
    -
    -
    -template<typename BasicJsonType , typename T >
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    auto nlohmann::detail::to_json_fn::operator() (BasicJsonType & j,
    T && val 
    ) const -> decltype(to_json(j, std::forward<T>(val)), void()) -
    -
    -inlinenoexcept
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • build/_deps/json-src/include/nlohmann/json.hpp
    • -
    -
    - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1wide__string__input__helper-members.html b/help/html/structnlohmann_1_1detail_1_1wide__string__input__helper-members.html deleted file mode 100644 index 08c70c5..0000000 --- a/help/html/structnlohmann_1_1detail_1_1wide__string__input__helper-members.html +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    nlohmann::detail::wide_string_input_helper< WideStringType, T > Member List
    -
    -
    - -

    This is the complete list of members for nlohmann::detail::wide_string_input_helper< WideStringType, T >, including all inherited members.

    - - -
    fill_buffer(const WideStringType &str, size_t &current_wchar, std::array< std::char_traits< char >::int_type, 4 > &utf8_bytes, size_t &utf8_bytes_index, size_t &utf8_bytes_filled)nlohmann::detail::wide_string_input_helper< WideStringType, T >inlinestatic
    - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1wide__string__input__helper.html b/help/html/structnlohmann_1_1detail_1_1wide__string__input__helper.html deleted file mode 100644 index afdfe58..0000000 --- a/help/html/structnlohmann_1_1detail_1_1wide__string__input__helper.html +++ /dev/null @@ -1,151 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::wide_string_input_helper< WideStringType, T > Struct Template Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    nlohmann::detail::wide_string_input_helper< WideStringType, T > Struct Template Reference
    -
    -
    - -

    #include <json.hpp>

    - - - - -

    -Static Public Member Functions

    static void fill_buffer (const WideStringType &str, size_t &current_wchar, std::array< std::char_traits< char >::int_type, 4 > &utf8_bytes, size_t &utf8_bytes_index, size_t &utf8_bytes_filled)
     
    -

    Member Function Documentation

    - -

    ◆ fill_buffer()

    - -
    -
    -
    -template<typename WideStringType , size_t T>
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static void nlohmann::detail::wide_string_input_helper< WideStringType, T >::fill_buffer (const WideStringType & str,
    size_t & current_wchar,
    std::array< std::char_traits< char >::int_type, 4 > & utf8_bytes,
    size_t & utf8_bytes_index,
    size_t & utf8_bytes_filled 
    )
    -
    -inlinestatic
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • build/_deps/json-src/include/nlohmann/json.hpp
    • -
    -
    - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1wide__string__input__helper_3_01BaseInputAdapter_00_012_01_4-members.html b/help/html/structnlohmann_1_1detail_1_1wide__string__input__helper_3_01BaseInputAdapter_00_012_01_4-members.html deleted file mode 100644 index 4e4a0c0..0000000 --- a/help/html/structnlohmann_1_1detail_1_1wide__string__input__helper_3_01BaseInputAdapter_00_012_01_4-members.html +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    nlohmann::detail::wide_string_input_helper< BaseInputAdapter, 2 > Member List
    -
    -
    - -

    This is the complete list of members for nlohmann::detail::wide_string_input_helper< BaseInputAdapter, 2 >, including all inherited members.

    - - -
    fill_buffer(BaseInputAdapter &input, std::array< std::char_traits< char >::int_type, 4 > &utf8_bytes, size_t &utf8_bytes_index, size_t &utf8_bytes_filled)nlohmann::detail::wide_string_input_helper< BaseInputAdapter, 2 >inlinestatic
    - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1wide__string__input__helper_3_01BaseInputAdapter_00_012_01_4.html b/help/html/structnlohmann_1_1detail_1_1wide__string__input__helper_3_01BaseInputAdapter_00_012_01_4.html deleted file mode 100644 index 0558721..0000000 --- a/help/html/structnlohmann_1_1detail_1_1wide__string__input__helper_3_01BaseInputAdapter_00_012_01_4.html +++ /dev/null @@ -1,145 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::wide_string_input_helper< BaseInputAdapter, 2 > Struct Template Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    nlohmann::detail::wide_string_input_helper< BaseInputAdapter, 2 > Struct Template Reference
    -
    -
    - -

    #include <json.hpp>

    - - - - -

    -Static Public Member Functions

    static void fill_buffer (BaseInputAdapter &input, std::array< std::char_traits< char >::int_type, 4 > &utf8_bytes, size_t &utf8_bytes_index, size_t &utf8_bytes_filled)
     
    -

    Member Function Documentation

    - -

    ◆ fill_buffer()

    - -
    -
    -
    -template<typename BaseInputAdapter >
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static void nlohmann::detail::wide_string_input_helper< BaseInputAdapter, 2 >::fill_buffer (BaseInputAdapter & input,
    std::array< std::char_traits< char >::int_type, 4 > & utf8_bytes,
    size_t & utf8_bytes_index,
    size_t & utf8_bytes_filled 
    )
    -
    -inlinestatic
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1wide__string__input__helper_3_01BaseInputAdapter_00_014_01_4-members.html b/help/html/structnlohmann_1_1detail_1_1wide__string__input__helper_3_01BaseInputAdapter_00_014_01_4-members.html deleted file mode 100644 index e4b0a51..0000000 --- a/help/html/structnlohmann_1_1detail_1_1wide__string__input__helper_3_01BaseInputAdapter_00_014_01_4-members.html +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    nlohmann::detail::wide_string_input_helper< BaseInputAdapter, 4 > Member List
    -
    -
    - -

    This is the complete list of members for nlohmann::detail::wide_string_input_helper< BaseInputAdapter, 4 >, including all inherited members.

    - - -
    fill_buffer(BaseInputAdapter &input, std::array< std::char_traits< char >::int_type, 4 > &utf8_bytes, size_t &utf8_bytes_index, size_t &utf8_bytes_filled)nlohmann::detail::wide_string_input_helper< BaseInputAdapter, 4 >inlinestatic
    - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1wide__string__input__helper_3_01BaseInputAdapter_00_014_01_4.html b/help/html/structnlohmann_1_1detail_1_1wide__string__input__helper_3_01BaseInputAdapter_00_014_01_4.html deleted file mode 100644 index 1007f13..0000000 --- a/help/html/structnlohmann_1_1detail_1_1wide__string__input__helper_3_01BaseInputAdapter_00_014_01_4.html +++ /dev/null @@ -1,145 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::wide_string_input_helper< BaseInputAdapter, 4 > Struct Template Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    nlohmann::detail::wide_string_input_helper< BaseInputAdapter, 4 > Struct Template Reference
    -
    -
    - -

    #include <json.hpp>

    - - - - -

    -Static Public Member Functions

    static void fill_buffer (BaseInputAdapter &input, std::array< std::char_traits< char >::int_type, 4 > &utf8_bytes, size_t &utf8_bytes_index, size_t &utf8_bytes_filled)
     
    -

    Member Function Documentation

    - -

    ◆ fill_buffer()

    - -
    -
    -
    -template<typename BaseInputAdapter >
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static void nlohmann::detail::wide_string_input_helper< BaseInputAdapter, 4 >::fill_buffer (BaseInputAdapter & input,
    std::array< std::char_traits< char >::int_type, 4 > & utf8_bytes,
    size_t & utf8_bytes_index,
    size_t & utf8_bytes_filled 
    )
    -
    -inlinestatic
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1wide__string__input__helper_3_01WideStringType_00_012_01_4-members.html b/help/html/structnlohmann_1_1detail_1_1wide__string__input__helper_3_01WideStringType_00_012_01_4-members.html deleted file mode 100644 index ed5815f..0000000 --- a/help/html/structnlohmann_1_1detail_1_1wide__string__input__helper_3_01WideStringType_00_012_01_4-members.html +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    nlohmann::detail::wide_string_input_helper< WideStringType, 2 > Member List
    -
    -
    - -

    This is the complete list of members for nlohmann::detail::wide_string_input_helper< WideStringType, 2 >, including all inherited members.

    - - -
    fill_buffer(const WideStringType &str, size_t &current_wchar, std::array< std::char_traits< char >::int_type, 4 > &utf8_bytes, size_t &utf8_bytes_index, size_t &utf8_bytes_filled)nlohmann::detail::wide_string_input_helper< WideStringType, 2 >inlinestatic
    - - - - diff --git a/help/html/structnlohmann_1_1detail_1_1wide__string__input__helper_3_01WideStringType_00_012_01_4.html b/help/html/structnlohmann_1_1detail_1_1wide__string__input__helper_3_01WideStringType_00_012_01_4.html deleted file mode 100644 index 733383d..0000000 --- a/help/html/structnlohmann_1_1detail_1_1wide__string__input__helper_3_01WideStringType_00_012_01_4.html +++ /dev/null @@ -1,151 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::detail::wide_string_input_helper< WideStringType, 2 > Struct Template Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    nlohmann::detail::wide_string_input_helper< WideStringType, 2 > Struct Template Reference
    -
    -
    - -

    #include <json.hpp>

    - - - - -

    -Static Public Member Functions

    static void fill_buffer (const WideStringType &str, size_t &current_wchar, std::array< std::char_traits< char >::int_type, 4 > &utf8_bytes, size_t &utf8_bytes_index, size_t &utf8_bytes_filled)
     
    -

    Member Function Documentation

    - -

    ◆ fill_buffer()

    - -
    -
    -
    -template<typename WideStringType >
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static void nlohmann::detail::wide_string_input_helper< WideStringType, 2 >::fill_buffer (const WideStringType & str,
    size_t & current_wchar,
    std::array< std::char_traits< char >::int_type, 4 > & utf8_bytes,
    size_t & utf8_bytes_index,
    size_t & utf8_bytes_filled 
    )
    -
    -inlinestatic
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • build/_deps/json-src/include/nlohmann/json.hpp
    • -
    -
    - - - - diff --git a/help/html/structnlohmann_1_1json__sax-members.html b/help/html/structnlohmann_1_1json__sax-members.html deleted file mode 100644 index 551cd0d..0000000 --- a/help/html/structnlohmann_1_1json__sax-members.html +++ /dev/null @@ -1,119 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    nlohmann::json_sax< BasicJsonType > Member List
    -
    -
    - -

    This is the complete list of members for nlohmann::json_sax< BasicJsonType >, including all inherited members.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    binary(binary_t &val)=0nlohmann::json_sax< BasicJsonType >pure virtual
    binary_t typedefnlohmann::json_sax< BasicJsonType >
    boolean(bool val)=0nlohmann::json_sax< BasicJsonType >pure virtual
    boolean(bool val)=0nlohmann::json_sax< BasicJsonType >pure virtual
    end_array()=0nlohmann::json_sax< BasicJsonType >pure virtual
    end_array()=0nlohmann::json_sax< BasicJsonType >pure virtual
    end_object()=0nlohmann::json_sax< BasicJsonType >pure virtual
    end_object()=0nlohmann::json_sax< BasicJsonType >pure virtual
    key(string_t &val)=0nlohmann::json_sax< BasicJsonType >pure virtual
    key(string_t &val)=0nlohmann::json_sax< BasicJsonType >pure virtual
    null()=0nlohmann::json_sax< BasicJsonType >pure virtual
    null()=0nlohmann::json_sax< BasicJsonType >pure virtual
    number_float(number_float_t val, const string_t &s)=0nlohmann::json_sax< BasicJsonType >pure virtual
    number_float(number_float_t val, const string_t &s)=0nlohmann::json_sax< BasicJsonType >pure virtual
    number_float_t typedefnlohmann::json_sax< BasicJsonType >
    number_float_t typedefnlohmann::json_sax< BasicJsonType >
    number_integer(number_integer_t val)=0nlohmann::json_sax< BasicJsonType >pure virtual
    number_integer(number_integer_t val)=0nlohmann::json_sax< BasicJsonType >pure virtual
    number_integer_t typedefnlohmann::json_sax< BasicJsonType >
    number_integer_t typedefnlohmann::json_sax< BasicJsonType >
    number_unsigned(number_unsigned_t val)=0nlohmann::json_sax< BasicJsonType >pure virtual
    number_unsigned(number_unsigned_t val)=0nlohmann::json_sax< BasicJsonType >pure virtual
    number_unsigned_t typedefnlohmann::json_sax< BasicJsonType >
    number_unsigned_t typedefnlohmann::json_sax< BasicJsonType >
    parse_error(std::size_t position, const std::string &last_token, const detail::exception &ex)=0nlohmann::json_sax< BasicJsonType >pure virtual
    parse_error(std::size_t position, const std::string &last_token, const detail::exception &ex)=0nlohmann::json_sax< BasicJsonType >pure virtual
    start_array(std::size_t elements)=0nlohmann::json_sax< BasicJsonType >pure virtual
    start_array(std::size_t elements)=0nlohmann::json_sax< BasicJsonType >pure virtual
    start_object(std::size_t elements)=0nlohmann::json_sax< BasicJsonType >pure virtual
    start_object(std::size_t elements)=0nlohmann::json_sax< BasicJsonType >pure virtual
    string(string_t &val)=0nlohmann::json_sax< BasicJsonType >pure virtual
    string(string_t &val)=0nlohmann::json_sax< BasicJsonType >pure virtual
    string_t typedefnlohmann::json_sax< BasicJsonType >
    string_t typedefnlohmann::json_sax< BasicJsonType >
    ~json_sax()=defaultnlohmann::json_sax< BasicJsonType >virtual
    ~json_sax()=defaultnlohmann::json_sax< BasicJsonType >virtual
    - - - - diff --git a/help/html/structnlohmann_1_1json__sax.html b/help/html/structnlohmann_1_1json__sax.html deleted file mode 100644 index 9551624..0000000 --- a/help/html/structnlohmann_1_1json__sax.html +++ /dev/null @@ -1,1365 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::json_sax< BasicJsonType > Struct Template Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    nlohmann::json_sax< BasicJsonType > Struct Template Referenceabstract
    -
    -
    - -

    SAX interface. - More...

    - -

    #include <json.hpp>

    - - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Types

    using number_integer_t = typename BasicJsonType::number_integer_t
     type for (signed) integers More...
     
    using number_unsigned_t = typename BasicJsonType::number_unsigned_t
     type for unsigned integers More...
     
    using number_float_t = typename BasicJsonType::number_float_t
     type for floating-point numbers More...
     
    using string_t = typename BasicJsonType::string_t
     type for strings More...
     
    using number_integer_t = typename BasicJsonType::number_integer_t
     
    using number_unsigned_t = typename BasicJsonType::number_unsigned_t
     
    using number_float_t = typename BasicJsonType::number_float_t
     
    using string_t = typename BasicJsonType::string_t
     
    using binary_t = typename BasicJsonType::binary_t
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Member Functions

    virtual bool null ()=0
     a null value was read More...
     
    virtual bool boolean (bool val)=0
     a boolean value was read More...
     
    virtual bool number_integer (number_integer_t val)=0
     an integer number was read More...
     
    virtual bool number_unsigned (number_unsigned_t val)=0
     an unsigned integer number was read More...
     
    virtual bool number_float (number_float_t val, const string_t &s)=0
     an floating-point number was read More...
     
    virtual bool string (string_t &val)=0
     a string was read More...
     
    virtual bool start_object (std::size_t elements)=0
     the beginning of an object was read More...
     
    virtual bool key (string_t &val)=0
     an object key was read More...
     
    virtual bool end_object ()=0
     the end of an object was read More...
     
    virtual bool start_array (std::size_t elements)=0
     the beginning of an array was read More...
     
    virtual bool end_array ()=0
     the end of an array was read More...
     
    virtual bool parse_error (std::size_t position, const std::string &last_token, const detail::exception &ex)=0
     a parse error occurred More...
     
    virtual ~json_sax ()=default
     
    virtual bool null ()=0
     a null value was read More...
     
    virtual bool boolean (bool val)=0
     a boolean value was read More...
     
    virtual bool number_integer (number_integer_t val)=0
     an integer number was read More...
     
    virtual bool number_unsigned (number_unsigned_t val)=0
     an unsigned integer number was read More...
     
    virtual bool number_float (number_float_t val, const string_t &s)=0
     an floating-point number was read More...
     
    virtual bool string (string_t &val)=0
     a string was read More...
     
    virtual bool binary (binary_t &val)=0
     a binary string was read More...
     
    virtual bool start_object (std::size_t elements)=0
     the beginning of an object was read More...
     
    virtual bool key (string_t &val)=0
     an object key was read More...
     
    virtual bool end_object ()=0
     the end of an object was read More...
     
    virtual bool start_array (std::size_t elements)=0
     the beginning of an array was read More...
     
    virtual bool end_array ()=0
     the end of an array was read More...
     
    virtual bool parse_error (std::size_t position, const std::string &last_token, const detail::exception &ex)=0
     a parse error occurred More...
     
    virtual ~json_sax ()=default
     
    -

    Detailed Description

    -

    template<typename BasicJsonType>
    -struct nlohmann::json_sax< BasicJsonType >

    - -

    SAX interface.

    -

    This class describes the SAX interface used by nlohmann::json::sax_parse. Each function is called in different situations while the input is parsed. The boolean return value informs the parser whether to continue processing the input.

    -

    Member Typedef Documentation

    - -

    ◆ binary_t

    - -
    -
    -
    -template<typename BasicJsonType >
    - - - - -
    using nlohmann::json_sax< BasicJsonType >::binary_t = typename BasicJsonType::binary_t
    -
    - -
    -
    - -

    ◆ number_float_t [1/2]

    - -
    -
    -
    -template<typename BasicJsonType >
    - - - - -
    using nlohmann::json_sax< BasicJsonType >::number_float_t = typename BasicJsonType::number_float_t
    -
    - -

    type for floating-point numbers

    - -
    -
    - -

    ◆ number_float_t [2/2]

    - -
    -
    -
    -template<typename BasicJsonType >
    - - - - -
    using nlohmann::json_sax< BasicJsonType >::number_float_t = typename BasicJsonType::number_float_t
    -
    - -
    -
    - -

    ◆ number_integer_t [1/2]

    - -
    -
    -
    -template<typename BasicJsonType >
    - - - - -
    using nlohmann::json_sax< BasicJsonType >::number_integer_t = typename BasicJsonType::number_integer_t
    -
    - -

    type for (signed) integers

    - -
    -
    - -

    ◆ number_integer_t [2/2]

    - -
    -
    -
    -template<typename BasicJsonType >
    - - - - -
    using nlohmann::json_sax< BasicJsonType >::number_integer_t = typename BasicJsonType::number_integer_t
    -
    - -
    -
    - -

    ◆ number_unsigned_t [1/2]

    - -
    -
    -
    -template<typename BasicJsonType >
    - - - - -
    using nlohmann::json_sax< BasicJsonType >::number_unsigned_t = typename BasicJsonType::number_unsigned_t
    -
    - -

    type for unsigned integers

    - -
    -
    - -

    ◆ number_unsigned_t [2/2]

    - -
    -
    -
    -template<typename BasicJsonType >
    - - - - -
    using nlohmann::json_sax< BasicJsonType >::number_unsigned_t = typename BasicJsonType::number_unsigned_t
    -
    - -
    -
    - -

    ◆ string_t [1/2]

    - -
    -
    -
    -template<typename BasicJsonType >
    - - - - -
    using nlohmann::json_sax< BasicJsonType >::string_t = typename BasicJsonType::string_t
    -
    - -

    type for strings

    - -
    -
    - -

    ◆ string_t [2/2]

    - -
    -
    -
    -template<typename BasicJsonType >
    - - - - -
    using nlohmann::json_sax< BasicJsonType >::string_t = typename BasicJsonType::string_t
    -
    - -
    -
    -

    Constructor & Destructor Documentation

    - -

    ◆ ~json_sax() [1/2]

    - -
    -
    -
    -template<typename BasicJsonType >
    - - - - - -
    - - - - - - - -
    virtual nlohmann::json_sax< BasicJsonType >::~json_sax ()
    -
    -virtualdefault
    -
    - -
    -
    - -

    ◆ ~json_sax() [2/2]

    - -
    -
    -
    -template<typename BasicJsonType >
    - - - - - -
    - - - - - - - -
    virtual nlohmann::json_sax< BasicJsonType >::~json_sax ()
    -
    -virtualdefault
    -
    - -
    -
    -

    Member Function Documentation

    - -

    ◆ binary()

    - -
    -
    -
    -template<typename BasicJsonType >
    - - - - - -
    - - - - - - - - -
    virtual bool nlohmann::json_sax< BasicJsonType >::binary (binary_tval)
    -
    -pure virtual
    -
    - -

    a binary string was read

    -
    Parameters
    - - -
    [in]valbinary value
    -
    -
    -
    Returns
    whether parsing should proceed
    -
    Note
    It is safe to move the passed binary.
    - -
    -
    - -

    ◆ boolean() [1/2]

    - -
    -
    -
    -template<typename BasicJsonType >
    - - - - - -
    - - - - - - - - -
    virtual bool nlohmann::json_sax< BasicJsonType >::boolean (bool val)
    -
    -pure virtual
    -
    - -

    a boolean value was read

    -
    Parameters
    - - -
    [in]valboolean value
    -
    -
    -
    Returns
    whether parsing should proceed
    - -
    -
    - -

    ◆ boolean() [2/2]

    - -
    -
    -
    -template<typename BasicJsonType >
    - - - - - -
    - - - - - - - - -
    virtual bool nlohmann::json_sax< BasicJsonType >::boolean (bool val)
    -
    -pure virtual
    -
    - -

    a boolean value was read

    -
    Parameters
    - - -
    [in]valboolean value
    -
    -
    -
    Returns
    whether parsing should proceed
    - -
    -
    - -

    ◆ end_array() [1/2]

    - -
    -
    -
    -template<typename BasicJsonType >
    - - - - - -
    - - - - - - - -
    virtual bool nlohmann::json_sax< BasicJsonType >::end_array ()
    -
    -pure virtual
    -
    - -

    the end of an array was read

    -
    Returns
    whether parsing should proceed
    - -
    -
    - -

    ◆ end_array() [2/2]

    - -
    -
    -
    -template<typename BasicJsonType >
    - - - - - -
    - - - - - - - -
    virtual bool nlohmann::json_sax< BasicJsonType >::end_array ()
    -
    -pure virtual
    -
    - -

    the end of an array was read

    -
    Returns
    whether parsing should proceed
    - -
    -
    - -

    ◆ end_object() [1/2]

    - -
    -
    -
    -template<typename BasicJsonType >
    - - - - - -
    - - - - - - - -
    virtual bool nlohmann::json_sax< BasicJsonType >::end_object ()
    -
    -pure virtual
    -
    - -

    the end of an object was read

    -
    Returns
    whether parsing should proceed
    - -
    -
    - -

    ◆ end_object() [2/2]

    - -
    -
    -
    -template<typename BasicJsonType >
    - - - - - -
    - - - - - - - -
    virtual bool nlohmann::json_sax< BasicJsonType >::end_object ()
    -
    -pure virtual
    -
    - -

    the end of an object was read

    -
    Returns
    whether parsing should proceed
    - -
    -
    - -

    ◆ key() [1/2]

    - -
    -
    -
    -template<typename BasicJsonType >
    - - - - - -
    - - - - - - - - -
    virtual bool nlohmann::json_sax< BasicJsonType >::key (string_tval)
    -
    -pure virtual
    -
    - -

    an object key was read

    -
    Parameters
    - - -
    [in]valobject key
    -
    -
    -
    Returns
    whether parsing should proceed
    -
    Note
    It is safe to move the passed string.
    - -
    -
    - -

    ◆ key() [2/2]

    - -
    -
    -
    -template<typename BasicJsonType >
    - - - - - -
    - - - - - - - - -
    virtual bool nlohmann::json_sax< BasicJsonType >::key (string_tval)
    -
    -pure virtual
    -
    - -

    an object key was read

    -
    Parameters
    - - -
    [in]valobject key
    -
    -
    -
    Returns
    whether parsing should proceed
    -
    Note
    It is safe to move the passed string.
    - -
    -
    - -

    ◆ null() [1/2]

    - -
    -
    -
    -template<typename BasicJsonType >
    - - - - - -
    - - - - - - - -
    virtual bool nlohmann::json_sax< BasicJsonType >::null ()
    -
    -pure virtual
    -
    - -

    a null value was read

    -
    Returns
    whether parsing should proceed
    - -
    -
    - -

    ◆ null() [2/2]

    - -
    -
    -
    -template<typename BasicJsonType >
    - - - - - -
    - - - - - - - -
    virtual bool nlohmann::json_sax< BasicJsonType >::null ()
    -
    -pure virtual
    -
    - -

    a null value was read

    -
    Returns
    whether parsing should proceed
    - -
    -
    - -

    ◆ number_float() [1/2]

    - -
    -
    -
    -template<typename BasicJsonType >
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    virtual bool nlohmann::json_sax< BasicJsonType >::number_float (number_float_t val,
    const string_ts 
    )
    -
    -pure virtual
    -
    - -

    an floating-point number was read

    -
    Parameters
    - - - -
    [in]valfloating-point value
    [in]sraw token value
    -
    -
    -
    Returns
    whether parsing should proceed
    - -
    -
    - -

    ◆ number_float() [2/2]

    - -
    -
    -
    -template<typename BasicJsonType >
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    virtual bool nlohmann::json_sax< BasicJsonType >::number_float (number_float_t val,
    const string_ts 
    )
    -
    -pure virtual
    -
    - -

    an floating-point number was read

    -
    Parameters
    - - - -
    [in]valfloating-point value
    [in]sraw token value
    -
    -
    -
    Returns
    whether parsing should proceed
    - -
    -
    - -

    ◆ number_integer() [1/2]

    - -
    -
    -
    -template<typename BasicJsonType >
    - - - - - -
    - - - - - - - - -
    virtual bool nlohmann::json_sax< BasicJsonType >::number_integer (number_integer_t val)
    -
    -pure virtual
    -
    - -

    an integer number was read

    -
    Parameters
    - - -
    [in]valinteger value
    -
    -
    -
    Returns
    whether parsing should proceed
    - -
    -
    - -

    ◆ number_integer() [2/2]

    - -
    -
    -
    -template<typename BasicJsonType >
    - - - - - -
    - - - - - - - - -
    virtual bool nlohmann::json_sax< BasicJsonType >::number_integer (number_integer_t val)
    -
    -pure virtual
    -
    - -

    an integer number was read

    -
    Parameters
    - - -
    [in]valinteger value
    -
    -
    -
    Returns
    whether parsing should proceed
    - -
    -
    - -

    ◆ number_unsigned() [1/2]

    - -
    -
    -
    -template<typename BasicJsonType >
    - - - - - -
    - - - - - - - - -
    virtual bool nlohmann::json_sax< BasicJsonType >::number_unsigned (number_unsigned_t val)
    -
    -pure virtual
    -
    - -

    an unsigned integer number was read

    -
    Parameters
    - - -
    [in]valunsigned integer value
    -
    -
    -
    Returns
    whether parsing should proceed
    - -
    -
    - -

    ◆ number_unsigned() [2/2]

    - -
    -
    -
    -template<typename BasicJsonType >
    - - - - - -
    - - - - - - - - -
    virtual bool nlohmann::json_sax< BasicJsonType >::number_unsigned (number_unsigned_t val)
    -
    -pure virtual
    -
    - -

    an unsigned integer number was read

    -
    Parameters
    - - -
    [in]valunsigned integer value
    -
    -
    -
    Returns
    whether parsing should proceed
    - -
    -
    - -

    ◆ parse_error() [1/2]

    - -
    -
    -
    -template<typename BasicJsonType >
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    virtual bool nlohmann::json_sax< BasicJsonType >::parse_error (std::size_t position,
    const std::string & last_token,
    const detail::exceptionex 
    )
    -
    -pure virtual
    -
    - -

    a parse error occurred

    -
    Parameters
    - - - - -
    [in]positionthe position in the input where the error occurs
    [in]last_tokenthe last read token
    [in]exan exception object describing the error
    -
    -
    -
    Returns
    whether parsing should proceed (must return false)
    - -
    -
    - -

    ◆ parse_error() [2/2]

    - -
    -
    -
    -template<typename BasicJsonType >
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    virtual bool nlohmann::json_sax< BasicJsonType >::parse_error (std::size_t position,
    const std::string & last_token,
    const detail::exceptionex 
    )
    -
    -pure virtual
    -
    - -

    a parse error occurred

    -
    Parameters
    - - - - -
    [in]positionthe position in the input where the error occurs
    [in]last_tokenthe last read token
    [in]exan exception object describing the error
    -
    -
    -
    Returns
    whether parsing should proceed (must return false)
    - -
    -
    - -

    ◆ start_array() [1/2]

    - -
    -
    -
    -template<typename BasicJsonType >
    - - - - - -
    - - - - - - - - -
    virtual bool nlohmann::json_sax< BasicJsonType >::start_array (std::size_t elements)
    -
    -pure virtual
    -
    - -

    the beginning of an array was read

    -
    Parameters
    - - -
    [in]elementsnumber of array elements or -1 if unknown
    -
    -
    -
    Returns
    whether parsing should proceed
    -
    Note
    binary formats may report the number of elements
    - -
    -
    - -

    ◆ start_array() [2/2]

    - -
    -
    -
    -template<typename BasicJsonType >
    - - - - - -
    - - - - - - - - -
    virtual bool nlohmann::json_sax< BasicJsonType >::start_array (std::size_t elements)
    -
    -pure virtual
    -
    - -

    the beginning of an array was read

    -
    Parameters
    - - -
    [in]elementsnumber of array elements or -1 if unknown
    -
    -
    -
    Returns
    whether parsing should proceed
    -
    Note
    binary formats may report the number of elements
    - -
    -
    - -

    ◆ start_object() [1/2]

    - -
    -
    -
    -template<typename BasicJsonType >
    - - - - - -
    - - - - - - - - -
    virtual bool nlohmann::json_sax< BasicJsonType >::start_object (std::size_t elements)
    -
    -pure virtual
    -
    - -

    the beginning of an object was read

    -
    Parameters
    - - -
    [in]elementsnumber of object elements or -1 if unknown
    -
    -
    -
    Returns
    whether parsing should proceed
    -
    Note
    binary formats may report the number of elements
    - -
    -
    - -

    ◆ start_object() [2/2]

    - -
    -
    -
    -template<typename BasicJsonType >
    - - - - - -
    - - - - - - - - -
    virtual bool nlohmann::json_sax< BasicJsonType >::start_object (std::size_t elements)
    -
    -pure virtual
    -
    - -

    the beginning of an object was read

    -
    Parameters
    - - -
    [in]elementsnumber of object elements or -1 if unknown
    -
    -
    -
    Returns
    whether parsing should proceed
    -
    Note
    binary formats may report the number of elements
    - -
    -
    - -

    ◆ string() [1/2]

    - -
    -
    -
    -template<typename BasicJsonType >
    - - - - - -
    - - - - - - - - -
    virtual bool nlohmann::json_sax< BasicJsonType >::string (string_tval)
    -
    -pure virtual
    -
    - -

    a string was read

    -
    Parameters
    - - -
    [in]valstring value
    -
    -
    -
    Returns
    whether parsing should proceed
    -
    Note
    It is safe to move the passed string.
    - -
    -
    - -

    ◆ string() [2/2]

    - -
    -
    -
    -template<typename BasicJsonType >
    - - - - - -
    - - - - - - - - -
    virtual bool nlohmann::json_sax< BasicJsonType >::string (string_tval)
    -
    -pure virtual
    -
    - -

    a string was read

    -
    Parameters
    - - -
    [in]valstring value
    -
    -
    -
    Returns
    whether parsing should proceed
    -
    Note
    It is safe to move the passed string.
    - -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • build/_deps/json-src/include/nlohmann/json.hpp
    • -
    -
    - - - - diff --git a/help/html/structnlohmann_1_1ordered__map-members.html b/help/html/structnlohmann_1_1ordered__map-members.html deleted file mode 100644 index ab7b9d4..0000000 --- a/help/html/structnlohmann_1_1ordered__map-members.html +++ /dev/null @@ -1,101 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    nlohmann::ordered_map< Key, T, IgnoredLess, Allocator > Member List
    -
    -
    - -

    This is the complete list of members for nlohmann::ordered_map< Key, T, IgnoredLess, Allocator >, including all inherited members.

    - - - - - - - - - - - - - - - - - - - -
    at(const Key &key)nlohmann::ordered_map< Key, T, IgnoredLess, Allocator >inline
    at(const Key &key) constnlohmann::ordered_map< Key, T, IgnoredLess, Allocator >inline
    Container typedefnlohmann::ordered_map< Key, T, IgnoredLess, Allocator >
    count(const Key &key) constnlohmann::ordered_map< Key, T, IgnoredLess, Allocator >inline
    emplace(const key_type &key, T &&t)nlohmann::ordered_map< Key, T, IgnoredLess, Allocator >inline
    erase(const Key &key)nlohmann::ordered_map< Key, T, IgnoredLess, Allocator >inline
    erase(iterator pos)nlohmann::ordered_map< Key, T, IgnoredLess, Allocator >inline
    find(const Key &key)nlohmann::ordered_map< Key, T, IgnoredLess, Allocator >inline
    find(const Key &key) constnlohmann::ordered_map< Key, T, IgnoredLess, Allocator >inline
    insert(value_type &&value)nlohmann::ordered_map< Key, T, IgnoredLess, Allocator >inline
    insert(const value_type &value)nlohmann::ordered_map< Key, T, IgnoredLess, Allocator >inline
    key_type typedefnlohmann::ordered_map< Key, T, IgnoredLess, Allocator >
    mapped_type typedefnlohmann::ordered_map< Key, T, IgnoredLess, Allocator >
    operator[](const Key &key)nlohmann::ordered_map< Key, T, IgnoredLess, Allocator >inline
    operator[](const Key &key) constnlohmann::ordered_map< Key, T, IgnoredLess, Allocator >inline
    ordered_map(const Allocator &alloc=Allocator())nlohmann::ordered_map< Key, T, IgnoredLess, Allocator >inline
    ordered_map(It first, It last, const Allocator &alloc=Allocator())nlohmann::ordered_map< Key, T, IgnoredLess, Allocator >inline
    ordered_map(std::initializer_list< T > init, const Allocator &alloc=Allocator())nlohmann::ordered_map< Key, T, IgnoredLess, Allocator >inline
    - - - - diff --git a/help/html/structnlohmann_1_1ordered__map.html b/help/html/structnlohmann_1_1ordered__map.html deleted file mode 100644 index 7edf28d..0000000 --- a/help/html/structnlohmann_1_1ordered__map.html +++ /dev/null @@ -1,647 +0,0 @@ - - - - - - - -CocoaTweet: nlohmann::ordered_map< Key, T, IgnoredLess, Allocator > Struct Template Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    nlohmann::ordered_map< Key, T, IgnoredLess, Allocator > Struct Template Reference
    -
    -
    - -

    #include <json.hpp>

    - - - - - - - - -

    -Public Types

    using key_type = Key
     
    using mapped_type = T
     
    using Container = std::vector< std::pair< const Key, T >, Allocator >
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Member Functions

     ordered_map (const Allocator &alloc=Allocator())
     
    template<class It >
     ordered_map (It first, It last, const Allocator &alloc=Allocator())
     
     ordered_map (std::initializer_list< T > init, const Allocator &alloc=Allocator())
     
    std::pair< iterator, bool > emplace (const key_type &key, T &&t)
     
    T & operator[] (const Key &key)
     
    const T & operator[] (const Key &key) const
     
    T & at (const Key &key)
     
    const T & at (const Key &key) const
     
    size_type erase (const Key &key)
     
    iterator erase (iterator pos)
     
    size_type count (const Key &key) const
     
    iterator find (const Key &key)
     
    const_iterator find (const Key &key) const
     
    std::pair< iterator, bool > insert (value_type &&value)
     
    std::pair< iterator, bool > insert (const value_type &value)
     
    -

    Detailed Description

    -

    template<class Key, class T, class IgnoredLess = std::less<Key>, class Allocator = std::allocator<std::pair<const Key, T>>>
    -struct nlohmann::ordered_map< Key, T, IgnoredLess, Allocator >

    - -

    ordered_map: a minimal map-like container that preserves insertion order for use within nlohmann::basic_json<ordered_map>

    -

    Member Typedef Documentation

    - -

    ◆ Container

    - -
    -
    -
    -template<class Key , class T , class IgnoredLess = std::less<Key>, class Allocator = std::allocator<std::pair<const Key, T>>>
    - - - - -
    using nlohmann::ordered_map< Key, T, IgnoredLess, Allocator >::Container = std::vector<std::pair<const Key, T>, Allocator>
    -
    - -
    -
    - -

    ◆ key_type

    - -
    -
    -
    -template<class Key , class T , class IgnoredLess = std::less<Key>, class Allocator = std::allocator<std::pair<const Key, T>>>
    - - - - -
    using nlohmann::ordered_map< Key, T, IgnoredLess, Allocator >::key_type = Key
    -
    - -
    -
    - -

    ◆ mapped_type

    - -
    -
    -
    -template<class Key , class T , class IgnoredLess = std::less<Key>, class Allocator = std::allocator<std::pair<const Key, T>>>
    - - - - -
    using nlohmann::ordered_map< Key, T, IgnoredLess, Allocator >::mapped_type = T
    -
    - -
    -
    -

    Constructor & Destructor Documentation

    - -

    ◆ ordered_map() [1/3]

    - -
    -
    -
    -template<class Key , class T , class IgnoredLess = std::less<Key>, class Allocator = std::allocator<std::pair<const Key, T>>>
    - - - - - -
    - - - - - - - - -
    nlohmann::ordered_map< Key, T, IgnoredLess, Allocator >::ordered_map (const Allocator & alloc = Allocator())
    -
    -inline
    -
    - -
    -
    - -

    ◆ ordered_map() [2/3]

    - -
    -
    -
    -template<class Key , class T , class IgnoredLess = std::less<Key>, class Allocator = std::allocator<std::pair<const Key, T>>>
    -
    -template<class It >
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    nlohmann::ordered_map< Key, T, IgnoredLess, Allocator >::ordered_map (It first,
    It last,
    const Allocator & alloc = Allocator() 
    )
    -
    -inline
    -
    - -
    -
    - -

    ◆ ordered_map() [3/3]

    - -
    -
    -
    -template<class Key , class T , class IgnoredLess = std::less<Key>, class Allocator = std::allocator<std::pair<const Key, T>>>
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    nlohmann::ordered_map< Key, T, IgnoredLess, Allocator >::ordered_map (std::initializer_list< T > init,
    const Allocator & alloc = Allocator() 
    )
    -
    -inline
    -
    - -
    -
    -

    Member Function Documentation

    - -

    ◆ at() [1/2]

    - -
    -
    -
    -template<class Key , class T , class IgnoredLess = std::less<Key>, class Allocator = std::allocator<std::pair<const Key, T>>>
    - - - - - -
    - - - - - - - - -
    T& nlohmann::ordered_map< Key, T, IgnoredLess, Allocator >::at (const Key & key)
    -
    -inline
    -
    - -
    -
    - -

    ◆ at() [2/2]

    - -
    -
    -
    -template<class Key , class T , class IgnoredLess = std::less<Key>, class Allocator = std::allocator<std::pair<const Key, T>>>
    - - - - - -
    - - - - - - - - -
    const T& nlohmann::ordered_map< Key, T, IgnoredLess, Allocator >::at (const Key & key) const
    -
    -inline
    -
    - -
    -
    - -

    ◆ count()

    - -
    -
    -
    -template<class Key , class T , class IgnoredLess = std::less<Key>, class Allocator = std::allocator<std::pair<const Key, T>>>
    - - - - - -
    - - - - - - - - -
    size_type nlohmann::ordered_map< Key, T, IgnoredLess, Allocator >::count (const Key & key) const
    -
    -inline
    -
    - -
    -
    - -

    ◆ emplace()

    - -
    -
    -
    -template<class Key , class T , class IgnoredLess = std::less<Key>, class Allocator = std::allocator<std::pair<const Key, T>>>
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    std::pair<iterator, bool> nlohmann::ordered_map< Key, T, IgnoredLess, Allocator >::emplace (const key_typekey,
    T && t 
    )
    -
    -inline
    -
    - -
    -
    - -

    ◆ erase() [1/2]

    - -
    -
    -
    -template<class Key , class T , class IgnoredLess = std::less<Key>, class Allocator = std::allocator<std::pair<const Key, T>>>
    - - - - - -
    - - - - - - - - -
    size_type nlohmann::ordered_map< Key, T, IgnoredLess, Allocator >::erase (const Key & key)
    -
    -inline
    -
    - -
    -
    - -

    ◆ erase() [2/2]

    - -
    -
    -
    -template<class Key , class T , class IgnoredLess = std::less<Key>, class Allocator = std::allocator<std::pair<const Key, T>>>
    - - - - - -
    - - - - - - - - -
    iterator nlohmann::ordered_map< Key, T, IgnoredLess, Allocator >::erase (iterator pos)
    -
    -inline
    -
    - -
    -
    - -

    ◆ find() [1/2]

    - -
    -
    -
    -template<class Key , class T , class IgnoredLess = std::less<Key>, class Allocator = std::allocator<std::pair<const Key, T>>>
    - - - - - -
    - - - - - - - - -
    iterator nlohmann::ordered_map< Key, T, IgnoredLess, Allocator >::find (const Key & key)
    -
    -inline
    -
    - -
    -
    - -

    ◆ find() [2/2]

    - -
    -
    -
    -template<class Key , class T , class IgnoredLess = std::less<Key>, class Allocator = std::allocator<std::pair<const Key, T>>>
    - - - - - -
    - - - - - - - - -
    const_iterator nlohmann::ordered_map< Key, T, IgnoredLess, Allocator >::find (const Key & key) const
    -
    -inline
    -
    - -
    -
    - -

    ◆ insert() [1/2]

    - -
    -
    -
    -template<class Key , class T , class IgnoredLess = std::less<Key>, class Allocator = std::allocator<std::pair<const Key, T>>>
    - - - - - -
    - - - - - - - - -
    std::pair<iterator, bool> nlohmann::ordered_map< Key, T, IgnoredLess, Allocator >::insert (const value_type & value)
    -
    -inline
    -
    - -
    -
    - -

    ◆ insert() [2/2]

    - -
    -
    -
    -template<class Key , class T , class IgnoredLess = std::less<Key>, class Allocator = std::allocator<std::pair<const Key, T>>>
    - - - - - -
    - - - - - - - - -
    std::pair<iterator, bool> nlohmann::ordered_map< Key, T, IgnoredLess, Allocator >::insert (value_type && value)
    -
    -inline
    -
    - -
    -
    - -

    ◆ operator[]() [1/2]

    - -
    -
    -
    -template<class Key , class T , class IgnoredLess = std::less<Key>, class Allocator = std::allocator<std::pair<const Key, T>>>
    - - - - - -
    - - - - - - - - -
    T& nlohmann::ordered_map< Key, T, IgnoredLess, Allocator >::operator[] (const Key & key)
    -
    -inline
    -
    - -
    -
    - -

    ◆ operator[]() [2/2]

    - -
    -
    -
    -template<class Key , class T , class IgnoredLess = std::less<Key>, class Allocator = std::allocator<std::pair<const Key, T>>>
    - - - - - -
    - - - - - - - - -
    const T& nlohmann::ordered_map< Key, T, IgnoredLess, Allocator >::operator[] (const Key & key) const
    -
    -inline
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/help/html/structstd_1_1hash_3_01nlohmann_1_1json_01_4-members.html b/help/html/structstd_1_1hash_3_01nlohmann_1_1json_01_4-members.html deleted file mode 100644 index 9ef9893..0000000 --- a/help/html/structstd_1_1hash_3_01nlohmann_1_1json_01_4-members.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    std::hash< nlohmann::json > Member List
    -
    -
    - -

    This is the complete list of members for std::hash< nlohmann::json >, including all inherited members.

    - - - -
    operator()(const nlohmann::json &j) conststd::hash< nlohmann::json >inline
    operator()(const nlohmann::json &j) conststd::hash< nlohmann::json >inline
    - - - - diff --git a/help/html/structstd_1_1hash_3_01nlohmann_1_1json_01_4.html b/help/html/structstd_1_1hash_3_01nlohmann_1_1json_01_4.html deleted file mode 100644 index ada4e98..0000000 --- a/help/html/structstd_1_1hash_3_01nlohmann_1_1json_01_4.html +++ /dev/null @@ -1,162 +0,0 @@ - - - - - - - -CocoaTweet: std::hash< nlohmann::json > Struct Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    std::hash< nlohmann::json > Struct Reference
    -
    -
    - -

    hash value for JSON objects - More...

    - -

    #include <json.hpp>

    - - - - - - - - -

    -Public Member Functions

    std::size_t operator() (const nlohmann::json &j) const
     return a hash value for a JSON object More...
     
    std::size_t operator() (const nlohmann::json &j) const
     return a hash value for a JSON object More...
     
    -

    Detailed Description

    -

    hash value for JSON objects

    -

    Member Function Documentation

    - -

    ◆ operator()() [1/2]

    - -
    -
    - - - - - -
    - - - - - - - - -
    std::size_t std::hash< nlohmann::json >::operator() (const nlohmann::jsonj) const
    -
    -inline
    -
    - -

    return a hash value for a JSON object

    -
    Since
    version 1.0.0
    - -
    -
    - -

    ◆ operator()() [2/2]

    - -
    -
    - - - - - -
    - - - - - - - - -
    std::size_t std::hash< nlohmann::json >::operator() (const nlohmann::jsonj) const
    -
    -inline
    -
    - -

    return a hash value for a JSON object

    -
    Since
    version 1.0.0
    - -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • build/_deps/json-src/include/nlohmann/json.hpp
    • -
    -
    - - - - diff --git a/help/html/structstd_1_1less_3_1_1nlohmann_1_1detail_1_1value__t_01_4-members.html b/help/html/structstd_1_1less_3_1_1nlohmann_1_1detail_1_1value__t_01_4-members.html deleted file mode 100644 index 43a2516..0000000 --- a/help/html/structstd_1_1less_3_1_1nlohmann_1_1detail_1_1value__t_01_4-members.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - - -CocoaTweet: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    std::less<::nlohmann::detail::value_t > Member List
    -
    -
    - -

    This is the complete list of members for std::less<::nlohmann::detail::value_t >, including all inherited members.

    - - - -
    operator()(nlohmann::detail::value_t lhs, nlohmann::detail::value_t rhs) const noexceptstd::less<::nlohmann::detail::value_t >inline
    operator()(nlohmann::detail::value_t lhs, nlohmann::detail::value_t rhs) const noexceptstd::less<::nlohmann::detail::value_t >inline
    - - - - diff --git a/help/html/structstd_1_1less_3_1_1nlohmann_1_1detail_1_1value__t_01_4.html b/help/html/structstd_1_1less_3_1_1nlohmann_1_1detail_1_1value__t_01_4.html deleted file mode 100644 index 9b0ba35..0000000 --- a/help/html/structstd_1_1less_3_1_1nlohmann_1_1detail_1_1value__t_01_4.html +++ /dev/null @@ -1,179 +0,0 @@ - - - - - - - -CocoaTweet: std::less<::nlohmann::detail::value_t > Struct Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    std::less<::nlohmann::detail::value_t > Struct Reference
    -
    -
    - -

    #include <json.hpp>

    - - - - - - - - -

    -Public Member Functions

    bool operator() (nlohmann::detail::value_t lhs, nlohmann::detail::value_t rhs) const noexcept
     compare two value_t enum values More...
     
    bool operator() (nlohmann::detail::value_t lhs, nlohmann::detail::value_t rhs) const noexcept
     compare two value_t enum values More...
     
    -

    Detailed Description

    -

    specialization for std::less<value_t>

    Note
    : do not remove the space after '<', see https://github.com/nlohmann/json/pull/679
    -

    Member Function Documentation

    - -

    ◆ operator()() [1/2]

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    bool std::less<::nlohmann::detail::value_t >::operator() (nlohmann::detail::value_t lhs,
    nlohmann::detail::value_t rhs 
    ) const
    -
    -inlinenoexcept
    -
    - -

    compare two value_t enum values

    -
    Since
    version 3.0.0
    - -
    -
    - -

    ◆ operator()() [2/2]

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    bool std::less<::nlohmann::detail::value_t >::operator() (nlohmann::detail::value_t lhs,
    nlohmann::detail::value_t rhs 
    ) const
    -
    -inlinenoexcept
    -
    - -

    compare two value_t enum values

    -
    Since
    version 3.0.0
    - -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • build/_deps/json-src/include/nlohmann/json.hpp
    • -
    -
    - - - - diff --git a/help/html/sync_off.png b/help/html/sync_off.png deleted file mode 100644 index 3b443fc..0000000 Binary files a/help/html/sync_off.png and /dev/null differ diff --git a/help/html/sync_on.png b/help/html/sync_on.png deleted file mode 100644 index e08320f..0000000 Binary files a/help/html/sync_on.png and /dev/null differ diff --git a/help/html/tab_a.png b/help/html/tab_a.png deleted file mode 100644 index 3b725c4..0000000 Binary files a/help/html/tab_a.png and /dev/null differ diff --git a/help/html/tab_b.png b/help/html/tab_b.png deleted file mode 100644 index e2b4a86..0000000 Binary files a/help/html/tab_b.png and /dev/null differ diff --git a/help/html/tab_h.png b/help/html/tab_h.png deleted file mode 100644 index fd5cb70..0000000 Binary files a/help/html/tab_h.png and /dev/null differ diff --git a/help/html/tab_s.png b/help/html/tab_s.png deleted file mode 100644 index ab478c9..0000000 Binary files a/help/html/tab_s.png and /dev/null differ diff --git a/help/html/tabs.css b/help/html/tabs.css deleted file mode 100644 index 7d45d36..0000000 --- a/help/html/tabs.css +++ /dev/null @@ -1 +0,0 @@ -.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0px/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.sm-dox{background-image:url("tab_b.png")}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0px 12px;padding-right:43px;font-family:"Lucida Grande","Geneva","Helvetica",Arial,sans-serif;font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:0px 1px 1px rgba(255,255,255,0.9);color:#283A5D;outline:none}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox a.current{color:#D23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace !important;text-align:center;text-shadow:none;background:rgba(255,255,255,0.5);border-radius:5px}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{border-radius:0}.sm-dox ul{background:rgba(162,162,162,0.1)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:white;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media (min-width: 768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:url("tab_b.png");line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:#283A5D transparent transparent transparent;background:transparent;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0px 12px;background-image:url("tab_s.png");background-repeat:no-repeat;background-position:right;border-radius:0 !important}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox a:hover span.sub-arrow{border-color:#fff transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent #fff transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:#fff;border-radius:5px !important;box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #555;border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:#555;background-image:none;border:0 !important;color:#555;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent #fff}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:#fff;height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #D23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#D23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent #555 transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:#555 transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px !important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:url("tab_b.png")}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:#fff}} diff --git a/help/html/test_2CMakeLists_8txt.html b/help/html/test_2CMakeLists_8txt.html deleted file mode 100644 index dfccd8a..0000000 --- a/help/html/test_2CMakeLists_8txt.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - -CocoaTweet: test/CMakeLists.txt File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    -
    -
    test/CMakeLists.txt File Reference
    -
    -
    -
    - - - - diff --git a/help/html/test_2api_2model_2tweet_8cc.html b/help/html/test_2api_2model_2tweet_8cc.html deleted file mode 100644 index fdf9993..0000000 --- a/help/html/test_2api_2model_2tweet_8cc.html +++ /dev/null @@ -1,273 +0,0 @@ - - - - - - - -CocoaTweet: test/api/model/tweet.cc File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    tweet.cc File Reference
    -
    -
    -
    #include <boost/test/included/unit_test.hpp>
    -#include "nlohmann/json.hpp"
    -#include "cocoatweet/api/model/tweet.h"
    -#include "cocoatweet/exception/authenticateException.h"
    -#include "cocoatweet/exception/rateLimitException.h"
    -#include "cocoatweet/exception/tweetTooLongException.h"
    -#include "cocoatweet/exception/tweetDuplicateException.h"
    -
    -Include dependency graph for tweet.cc:
    -
    -
    - - - - - - - - - - - - - -
    -
    - - - -

    -Macros

    #define BOOST_TEST_DYN_LINK
     
    - - - - - - - - - - - - - - - -

    -Functions

     BOOST_AUTO_TEST_CASE (test01)
     
     BOOST_AUTO_TEST_CASE (test02)
     
     BOOST_AUTO_TEST_CASE (test03)
     
     BOOST_AUTO_TEST_CASE (test04)
     
     BOOST_AUTO_TEST_CASE (test05)
     
     BOOST_AUTO_TEST_CASE (test06)
     
     BOOST_AUTO_TEST_CASE (test07)
     
    -

    Macro Definition Documentation

    - -

    ◆ BOOST_TEST_DYN_LINK

    - -
    -
    - - - - -
    #define BOOST_TEST_DYN_LINK
    -
    - -
    -
    -

    Function Documentation

    - -

    ◆ BOOST_AUTO_TEST_CASE() [1/7]

    - -
    -
    - - - - - - - - -
    BOOST_AUTO_TEST_CASE (test01 )
    -
    - -
    -
    - -

    ◆ BOOST_AUTO_TEST_CASE() [2/7]

    - -
    -
    - - - - - - - - -
    BOOST_AUTO_TEST_CASE (test02 )
    -
    - -
    -
    - -

    ◆ BOOST_AUTO_TEST_CASE() [3/7]

    - -
    -
    - - - - - - - - -
    BOOST_AUTO_TEST_CASE (test03 )
    -
    - -
    -
    - -

    ◆ BOOST_AUTO_TEST_CASE() [4/7]

    - -
    -
    - - - - - - - - -
    BOOST_AUTO_TEST_CASE (test04 )
    -
    - -
    -
    - -

    ◆ BOOST_AUTO_TEST_CASE() [5/7]

    - -
    -
    - - - - - - - - -
    BOOST_AUTO_TEST_CASE (test05 )
    -
    - -
    -
    - -

    ◆ BOOST_AUTO_TEST_CASE() [6/7]

    - -
    -
    - - - - - - - - -
    BOOST_AUTO_TEST_CASE (test06 )
    -
    - -
    -
    - -

    ◆ BOOST_AUTO_TEST_CASE() [7/7]

    - -
    -
    - - - - - - - - -
    BOOST_AUTO_TEST_CASE (test07 )
    -
    - -
    -
    -
    - - - - diff --git a/help/html/test_2api_2model_2tweet_8cc__incl.map b/help/html/test_2api_2model_2tweet_8cc__incl.map deleted file mode 100644 index 61ab468..0000000 --- a/help/html/test_2api_2model_2tweet_8cc__incl.map +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/help/html/test_2api_2model_2tweet_8cc__incl.md5 b/help/html/test_2api_2model_2tweet_8cc__incl.md5 deleted file mode 100644 index 34192ad..0000000 --- a/help/html/test_2api_2model_2tweet_8cc__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -12d80b7482dc235a0966ace21dd4ae9c \ No newline at end of file diff --git a/help/html/test_2api_2model_2tweet_8cc__incl.png b/help/html/test_2api_2model_2tweet_8cc__incl.png deleted file mode 100644 index a459e63..0000000 Binary files a/help/html/test_2api_2model_2tweet_8cc__incl.png and /dev/null differ diff --git a/help/html/test_2oauth_2key_8cc.html b/help/html/test_2oauth_2key_8cc.html deleted file mode 100644 index ecaef77..0000000 --- a/help/html/test_2oauth_2key_8cc.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - - -CocoaTweet: test/oauth/key.cc File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    key.cc File Reference
    -
    -
    -
    #include <boost/test/included/unit_test.hpp>
    -#include "cocoatweet/oauth/key.h"
    -
    -Include dependency graph for key.cc:
    -
    -
    - - - - - - -
    -
    - - - -

    -Macros

    #define BOOST_TEST_DYN_LINK
     
    - - - - - -

    -Functions

     BOOST_AUTO_TEST_CASE (test01)
     
     BOOST_AUTO_TEST_CASE (test02)
     
    -

    Macro Definition Documentation

    - -

    ◆ BOOST_TEST_DYN_LINK

    - -
    -
    - - - - -
    #define BOOST_TEST_DYN_LINK
    -
    - -
    -
    -

    Function Documentation

    - -

    ◆ BOOST_AUTO_TEST_CASE() [1/2]

    - -
    -
    - - - - - - - - -
    BOOST_AUTO_TEST_CASE (test01 )
    -
    - -
    -
    - -

    ◆ BOOST_AUTO_TEST_CASE() [2/2]

    - -
    -
    - - - - - - - - -
    BOOST_AUTO_TEST_CASE (test02 )
    -
    - -
    -
    -
    - - - - diff --git a/help/html/test_2oauth_2key_8cc__incl.map b/help/html/test_2oauth_2key_8cc__incl.map deleted file mode 100644 index d7eaadf..0000000 --- a/help/html/test_2oauth_2key_8cc__incl.map +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/help/html/test_2oauth_2key_8cc__incl.md5 b/help/html/test_2oauth_2key_8cc__incl.md5 deleted file mode 100644 index 0a271b0..0000000 --- a/help/html/test_2oauth_2key_8cc__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -791d216e5391f6b9cd9fe158c08fa333 \ No newline at end of file diff --git a/help/html/test_2oauth_2key_8cc__incl.png b/help/html/test_2oauth_2key_8cc__incl.png deleted file mode 100644 index 391e3c9..0000000 Binary files a/help/html/test_2oauth_2key_8cc__incl.png and /dev/null differ diff --git a/help/html/third_2nlohmann_2json_8hpp.html b/help/html/third_2nlohmann_2json_8hpp.html deleted file mode 100644 index 1dbf47e..0000000 --- a/help/html/third_2nlohmann_2json_8hpp.html +++ /dev/null @@ -1,18567 +0,0 @@ - - - - - - - -CocoaTweet: third/nlohmann/json.hpp File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    json.hpp File Reference
    -
    -
    -
    #include <algorithm>
    -#include <cstddef>
    -#include <functional>
    -#include <initializer_list>
    -#include <iosfwd>
    -#include <iterator>
    -#include <memory>
    -#include <numeric>
    -#include <string>
    -#include <utility>
    -#include <vector>
    -#include <array>
    -#include <forward_list>
    -#include <map>
    -#include <tuple>
    -#include <type_traits>
    -#include <unordered_map>
    -#include <valarray>
    -#include <exception>
    -#include <stdexcept>
    -#include <cstdlib>
    -#include <cassert>
    -#include <limits>
    -#include <cstdint>
    -#include <cmath>
    -#include <cstdio>
    -#include <cstring>
    -#include <istream>
    -#include <clocale>
    -#include <cctype>
    -#include <ios>
    -#include <ostream>
    -
    -Include dependency graph for json.hpp:
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    -This graph shows which files directly or indirectly include this file:
    -
    -
    - - - - - -
    -
    -

    Go to the source code of this file.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Classes

    struct  nlohmann::detail::position_t
     struct to capture the start position of the current token More...
     
    class  nlohmann::detail::exception
     general exception of the basic_json class More...
     
    class  nlohmann::detail::parse_error
     exception indicating a parse error More...
     
    class  nlohmann::detail::invalid_iterator
     exception indicating errors with iterators More...
     
    class  nlohmann::detail::type_error
     exception indicating executing a member function with a wrong type More...
     
    class  nlohmann::detail::out_of_range
     exception indicating access out of the defined range More...
     
    class  nlohmann::detail::other_error
     exception indicating other library errors More...
     
    struct  nlohmann::detail::index_sequence< Ints >
     
    struct  nlohmann::detail::merge_and_renumber< Sequence1, Sequence2 >
     
    struct  nlohmann::detail::merge_and_renumber< index_sequence< I1... >, index_sequence< I2... > >
     
    struct  nlohmann::detail::make_index_sequence< N >
     
    struct  nlohmann::detail::make_index_sequence< 0 >
     
    struct  nlohmann::detail::make_index_sequence< 1 >
     
    struct  nlohmann::detail::priority_tag< N >
     
    struct  nlohmann::detail::priority_tag< 0 >
     
    struct  nlohmann::detail::static_const< T >
     
    struct  nlohmann::detail::make_void< Ts >
     
    struct  nlohmann::detail::iterator_types< It, typename >
     
    struct  nlohmann::detail::iterator_types< It, void_t< typename It::difference_type, typename It::value_type, typename It::pointer, typename It::reference, typename It::iterator_category > >
     
    struct  nlohmann::detail::iterator_traits< T, typename >
     
    struct  nlohmann::detail::iterator_traits< T, enable_if_t< !std::is_pointer< T >::value > >
     
    struct  nlohmann::detail::iterator_traits< T *, enable_if_t< std::is_object< T >::value > >
     
    struct  nlohmann::detail::nonesuch
     
    struct  nlohmann::detail::detector< Default, AlwaysVoid, Op, Args >
     
    struct  nlohmann::detail::detector< Default, void_t< Op< Args... > >, Op, Args... >
     
    struct  nlohmann::adl_serializer< typename, typename >
     default JSONSerializer template argument More...
     
    class  nlohmann::basic_json
     a class to store JSON values More...
     
    class  nlohmann::json_pointer< BasicJsonType >
     JSON Pointer. More...
     
    struct  nlohmann::ordered_map< Key, T, IgnoredLess, Allocator >
     
    struct  nlohmann::detail::is_basic_json< typename >
     
    struct  nlohmann::detail::is_basic_json< NLOHMANN_BASIC_JSON_TPL >
     
    class  nlohmann::detail::json_ref< BasicJsonType >
     
    struct  nlohmann::detail::is_json_ref< typename >
     
    struct  nlohmann::detail::is_json_ref< json_ref< T > >
     
    struct  nlohmann::detail::has_from_json< BasicJsonType, T, typename >
     
    struct  nlohmann::detail::is_getable< BasicJsonType, T >
     
    struct  nlohmann::detail::has_from_json< BasicJsonType, T, enable_if_t< !is_basic_json< T >::value > >
     
    struct  nlohmann::detail::has_non_default_from_json< BasicJsonType, T, typename >
     
    struct  nlohmann::detail::has_non_default_from_json< BasicJsonType, T, enable_if_t< !is_basic_json< T >::value > >
     
    struct  nlohmann::detail::has_to_json< BasicJsonType, T, typename >
     
    struct  nlohmann::detail::has_to_json< BasicJsonType, T, enable_if_t< !is_basic_json< T >::value > >
     
    struct  nlohmann::detail::is_iterator_traits< T, typename >
     
    struct  nlohmann::detail::is_iterator_traits< iterator_traits< T > >
     
    struct  nlohmann::detail::is_complete_type< T, typename >
     
    struct  nlohmann::detail::is_complete_type< T, decltype(void(sizeof(T)))>
     
    struct  nlohmann::detail::is_compatible_object_type_impl< BasicJsonType, CompatibleObjectType, typename >
     
    struct  nlohmann::detail::is_compatible_object_type_impl< BasicJsonType, CompatibleObjectType, enable_if_t< is_detected< mapped_type_t, CompatibleObjectType >::value &&is_detected< key_type_t, CompatibleObjectType >::value > >
     
    struct  nlohmann::detail::is_compatible_object_type< BasicJsonType, CompatibleObjectType >
     
    struct  nlohmann::detail::is_constructible_object_type_impl< BasicJsonType, ConstructibleObjectType, typename >
     
    struct  nlohmann::detail::is_constructible_object_type_impl< BasicJsonType, ConstructibleObjectType, enable_if_t< is_detected< mapped_type_t, ConstructibleObjectType >::value &&is_detected< key_type_t, ConstructibleObjectType >::value > >
     
    struct  nlohmann::detail::is_constructible_object_type< BasicJsonType, ConstructibleObjectType >
     
    struct  nlohmann::detail::is_compatible_string_type_impl< BasicJsonType, CompatibleStringType, typename >
     
    struct  nlohmann::detail::is_compatible_string_type_impl< BasicJsonType, CompatibleStringType, enable_if_t< is_detected_exact< typename BasicJsonType::string_t::value_type, value_type_t, CompatibleStringType >::value > >
     
    struct  nlohmann::detail::is_compatible_string_type< BasicJsonType, ConstructibleStringType >
     
    struct  nlohmann::detail::is_constructible_string_type_impl< BasicJsonType, ConstructibleStringType, typename >
     
    struct  nlohmann::detail::is_constructible_string_type_impl< BasicJsonType, ConstructibleStringType, enable_if_t< is_detected_exact< typename BasicJsonType::string_t::value_type, value_type_t, ConstructibleStringType >::value > >
     
    struct  nlohmann::detail::is_constructible_string_type< BasicJsonType, ConstructibleStringType >
     
    struct  nlohmann::detail::is_compatible_array_type_impl< BasicJsonType, CompatibleArrayType, typename >
     
    struct  nlohmann::detail::is_compatible_array_type_impl< BasicJsonType, CompatibleArrayType, enable_if_t< is_detected< value_type_t, CompatibleArrayType >::value &&is_detected< iterator_t, CompatibleArrayType >::value &&!is_iterator_traits< iterator_traits< CompatibleArrayType > >::value > >
     
    struct  nlohmann::detail::is_compatible_array_type< BasicJsonType, CompatibleArrayType >
     
    struct  nlohmann::detail::is_constructible_array_type_impl< BasicJsonType, ConstructibleArrayType, typename >
     
    struct  nlohmann::detail::is_constructible_array_type_impl< BasicJsonType, ConstructibleArrayType, enable_if_t< std::is_same< ConstructibleArrayType, typename BasicJsonType::value_type >::value > >
     
    struct  nlohmann::detail::is_constructible_array_type_impl< BasicJsonType, ConstructibleArrayType, enable_if_t< !std::is_same< ConstructibleArrayType, typename BasicJsonType::value_type >::value &&std::is_default_constructible< ConstructibleArrayType >::value &&(std::is_move_assignable< ConstructibleArrayType >::value||std::is_copy_assignable< ConstructibleArrayType >::value)&&is_detected< value_type_t, ConstructibleArrayType >::value &&is_detected< iterator_t, ConstructibleArrayType >::value &&is_complete_type< detected_t< value_type_t, ConstructibleArrayType > >::value > >
     
    struct  nlohmann::detail::is_constructible_array_type< BasicJsonType, ConstructibleArrayType >
     
    struct  nlohmann::detail::is_compatible_integer_type_impl< RealIntegerType, CompatibleNumberIntegerType, typename >
     
    struct  nlohmann::detail::is_compatible_integer_type_impl< RealIntegerType, CompatibleNumberIntegerType, enable_if_t< std::is_integral< RealIntegerType >::value &&std::is_integral< CompatibleNumberIntegerType >::value &&!std::is_same< bool, CompatibleNumberIntegerType >::value > >
     
    struct  nlohmann::detail::is_compatible_integer_type< RealIntegerType, CompatibleNumberIntegerType >
     
    struct  nlohmann::detail::is_compatible_type_impl< BasicJsonType, CompatibleType, typename >
     
    struct  nlohmann::detail::is_compatible_type_impl< BasicJsonType, CompatibleType, enable_if_t< is_complete_type< CompatibleType >::value > >
     
    struct  nlohmann::detail::is_compatible_type< BasicJsonType, CompatibleType >
     
    struct  nlohmann::detail::conjunction<... >
     
    struct  nlohmann::detail::conjunction< B1 >
     
    struct  nlohmann::detail::conjunction< B1, Bn... >
     
    struct  nlohmann::detail::is_constructible_tuple< T1, T2 >
     
    struct  nlohmann::detail::is_constructible_tuple< T1, std::tuple< Args... > >
     
    struct  nlohmann::detail::from_json_fn
     
    class  nlohmann::detail::iteration_proxy_value< IteratorType >
     
    class  nlohmann::detail::iteration_proxy< IteratorType >
     proxy class for the items() function More...
     
    class  std::tuple_size<::nlohmann::detail::iteration_proxy_value< IteratorType > >
     
    class  std::tuple_element< N, ::nlohmann::detail::iteration_proxy_value< IteratorType > >
     
    struct  nlohmann::detail::external_constructor< value_t >
     
    struct  nlohmann::detail::external_constructor< value_t::boolean >
     
    struct  nlohmann::detail::external_constructor< value_t::string >
     
    struct  nlohmann::detail::external_constructor< value_t::binary >
     
    struct  nlohmann::detail::external_constructor< value_t::number_float >
     
    struct  nlohmann::detail::external_constructor< value_t::number_unsigned >
     
    struct  nlohmann::detail::external_constructor< value_t::number_integer >
     
    struct  nlohmann::detail::external_constructor< value_t::array >
     
    struct  nlohmann::detail::external_constructor< value_t::object >
     
    struct  nlohmann::detail::to_json_fn
     
    struct  nlohmann::adl_serializer< typename, typename >
     default JSONSerializer template argument More...
     
    class  nlohmann::byte_container_with_subtype< BinaryType >
     an internal type for a backed binary type More...
     
    class  nlohmann::detail::file_input_adapter
     
    class  nlohmann::detail::input_stream_adapter
     
    class  nlohmann::detail::iterator_input_adapter< IteratorType >
     
    struct  nlohmann::detail::wide_string_input_helper< WideStringType, T >
     
    struct  nlohmann::detail::wide_string_input_helper< BaseInputAdapter, 4 >
     
    struct  nlohmann::detail::wide_string_input_helper< BaseInputAdapter, 2 >
     
    class  nlohmann::detail::wide_string_input_adapter< WideStringType >
     
    struct  nlohmann::detail::iterator_input_adapter_factory< IteratorType, Enable >
     
    struct  nlohmann::detail::is_iterator_of_multibyte< T >
     
    struct  nlohmann::detail::iterator_input_adapter_factory< IteratorType, enable_if_t< is_iterator_of_multibyte< IteratorType >::value > >
     
    class  nlohmann::detail::span_input_adapter
     
    struct  nlohmann::json_sax< BasicJsonType >
     SAX interface. More...
     
    class  nlohmann::detail::json_sax_dom_parser< BasicJsonType >
     SAX implementation to create a JSON value from SAX events. More...
     
    class  nlohmann::detail::json_sax_dom_callback_parser< BasicJsonType >
     
    class  nlohmann::detail::json_sax_acceptor< BasicJsonType >
     
    class  nlohmann::detail::lexer_base< BasicJsonType >
     
    class  nlohmann::detail::lexer< BasicJsonType >
     lexical analysis More...
     
    struct  nlohmann::detail::is_sax< SAX, BasicJsonType >
     
    struct  nlohmann::detail::is_sax_static_asserts< SAX, BasicJsonType >
     
    class  nlohmann::detail::binary_reader< BasicJsonType, SAX >
     deserialization of CBOR, MessagePack, and UBJSON values More...
     
    class  nlohmann::detail::parser< BasicJsonType >
     syntax analysis More...
     
    class  nlohmann::detail::primitive_iterator_t
     
    struct  nlohmann::detail::internal_iterator< BasicJsonType >
     an iterator value More...
     
    class  nlohmann::detail::iteration_proxy< IteratorType >
     proxy class for the items() function More...
     
    class  nlohmann::detail::iteration_proxy_value< IteratorType >
     
    class  nlohmann::detail::iter_impl< BasicJsonType >
     a template for a bidirectional iterator for the basic_json class This class implements a both iterators (iterator and const_iterator) for the basic_json class. More...
     
    class  nlohmann::detail::json_reverse_iterator< Base >
     a template for a reverse iterator class More...
     
    class  nlohmann::json_pointer< BasicJsonType >
     JSON Pointer. More...
     
    class  nlohmann::detail::json_ref< BasicJsonType >
     
    struct  nlohmann::detail::output_adapter_protocol< CharType >
     abstract output adapter interface More...
     
    class  nlohmann::detail::output_vector_adapter< CharType >
     output adapter for byte vectors More...
     
    class  nlohmann::detail::output_stream_adapter< CharType >
     output adapter for output streams More...
     
    class  nlohmann::detail::output_string_adapter< CharType, StringType >
     output adapter for basic_string More...
     
    class  nlohmann::detail::output_adapter< CharType, StringType >
     
    class  nlohmann::detail::binary_writer< BasicJsonType, CharType >
     serialization to CBOR and MessagePack values More...
     
    struct  nlohmann::detail::dtoa_impl::diyfp
     
    struct  nlohmann::detail::dtoa_impl::boundaries
     
    struct  nlohmann::detail::dtoa_impl::cached_power
     
    class  nlohmann::detail::serializer< BasicJsonType >
     
    struct  nlohmann::ordered_map< Key, T, IgnoredLess, Allocator >
     
    class  nlohmann::basic_json
     a class to store JSON values More...
     
    struct  std::hash< nlohmann::json >
     hash value for JSON objects More...
     
    struct  std::less<::nlohmann::detail::value_t >
     
    - - - - - - - - - - - - -

    -Namespaces

     nlohmann
     namespace for Niels Lohmann
     
     nlohmann::detail
     detail namespace with internal helper functions
     
     std
     
     nlohmann::detail::dtoa_impl
     implements the Grisu2 algorithm for binary to decimal floating-point conversion.
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Macros

    #define NLOHMANN_JSON_VERSION_MAJOR   3
     
    #define NLOHMANN_JSON_VERSION_MINOR   9
     
    #define NLOHMANN_JSON_VERSION_PATCH   1
     
    #define JSON_HEDLEY_VERSION   13
     
    #define JSON_HEDLEY_STRINGIFY_EX(x)   #x
     
    #define JSON_HEDLEY_STRINGIFY(x)   JSON_HEDLEY_STRINGIFY_EX(x)
     
    #define JSON_HEDLEY_CONCAT_EX(a, b)   a##b
     
    #define JSON_HEDLEY_CONCAT(a, b)   JSON_HEDLEY_CONCAT_EX(a,b)
     
    #define JSON_HEDLEY_CONCAT3_EX(a, b, c)   a##b##c
     
    #define JSON_HEDLEY_CONCAT3(a, b, c)   JSON_HEDLEY_CONCAT3_EX(a,b,c)
     
    #define JSON_HEDLEY_VERSION_ENCODE(major, minor, revision)   (((major) * 1000000) + ((minor) * 1000) + (revision))
     
    #define JSON_HEDLEY_VERSION_DECODE_MAJOR(version)   ((version) / 1000000)
     
    #define JSON_HEDLEY_VERSION_DECODE_MINOR(version)   (((version) % 1000000) / 1000)
     
    #define JSON_HEDLEY_VERSION_DECODE_REVISION(version)   ((version) % 1000)
     
    #define JSON_HEDLEY_GNUC_VERSION_CHECK(major, minor, patch)   (0)
     
    #define JSON_HEDLEY_MSVC_VERSION_CHECK(major, minor, patch)   (0)
     
    #define JSON_HEDLEY_INTEL_VERSION_CHECK(major, minor, patch)   (0)
     
    #define JSON_HEDLEY_PGI_VERSION_CHECK(major, minor, patch)   (0)
     
    #define JSON_HEDLEY_SUNPRO_VERSION_CHECK(major, minor, patch)   (0)
     
    #define JSON_HEDLEY_EMSCRIPTEN_VERSION_CHECK(major, minor, patch)   (0)
     
    #define JSON_HEDLEY_ARM_VERSION_CHECK(major, minor, patch)   (0)
     
    #define JSON_HEDLEY_IBM_VERSION_CHECK(major, minor, patch)   (0)
     
    #define JSON_HEDLEY_TI_VERSION_CHECK(major, minor, patch)   (0)
     
    #define JSON_HEDLEY_TI_CL2000_VERSION_CHECK(major, minor, patch)   (0)
     
    #define JSON_HEDLEY_TI_CL430_VERSION_CHECK(major, minor, patch)   (0)
     
    #define JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(major, minor, patch)   (0)
     
    #define JSON_HEDLEY_TI_CL6X_VERSION_CHECK(major, minor, patch)   (0)
     
    #define JSON_HEDLEY_TI_CL7X_VERSION_CHECK(major, minor, patch)   (0)
     
    #define JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(major, minor, patch)   (0)
     
    #define JSON_HEDLEY_CRAY_VERSION_CHECK(major, minor, patch)   (0)
     
    #define JSON_HEDLEY_IAR_VERSION_CHECK(major, minor, patch)   (0)
     
    #define JSON_HEDLEY_TINYC_VERSION_CHECK(major, minor, patch)   (0)
     
    #define JSON_HEDLEY_DMC_VERSION_CHECK(major, minor, patch)   (0)
     
    #define JSON_HEDLEY_COMPCERT_VERSION_CHECK(major, minor, patch)   (0)
     
    #define JSON_HEDLEY_PELLES_VERSION_CHECK(major, minor, patch)   (0)
     
    #define JSON_HEDLEY_GCC_VERSION_CHECK(major, minor, patch)   (0)
     
    #define JSON_HEDLEY_HAS_ATTRIBUTE(attribute)   (0)
     
    #define JSON_HEDLEY_GNUC_HAS_ATTRIBUTE(attribute, major, minor, patch)   JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch)
     
    #define JSON_HEDLEY_GCC_HAS_ATTRIBUTE(attribute, major, minor, patch)   JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch)
     
    #define JSON_HEDLEY_HAS_CPP_ATTRIBUTE(attribute)   (0)
     
    #define JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS(ns, attribute)   (0)
     
    #define JSON_HEDLEY_GNUC_HAS_CPP_ATTRIBUTE(attribute, major, minor, patch)   JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch)
     
    #define JSON_HEDLEY_GCC_HAS_CPP_ATTRIBUTE(attribute, major, minor, patch)   JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch)
     
    #define JSON_HEDLEY_HAS_BUILTIN(builtin)   (0)
     
    #define JSON_HEDLEY_GNUC_HAS_BUILTIN(builtin, major, minor, patch)   JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch)
     
    #define JSON_HEDLEY_GCC_HAS_BUILTIN(builtin, major, minor, patch)   JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch)
     
    #define JSON_HEDLEY_HAS_FEATURE(feature)   (0)
     
    #define JSON_HEDLEY_GNUC_HAS_FEATURE(feature, major, minor, patch)   JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch)
     
    #define JSON_HEDLEY_GCC_HAS_FEATURE(feature, major, minor, patch)   JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch)
     
    #define JSON_HEDLEY_HAS_EXTENSION(extension)   (0)
     
    #define JSON_HEDLEY_GNUC_HAS_EXTENSION(extension, major, minor, patch)   JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch)
     
    #define JSON_HEDLEY_GCC_HAS_EXTENSION(extension, major, minor, patch)   JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch)
     
    #define JSON_HEDLEY_HAS_DECLSPEC_ATTRIBUTE(attribute)   (0)
     
    #define JSON_HEDLEY_GNUC_HAS_DECLSPEC_ATTRIBUTE(attribute, major, minor, patch)   JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch)
     
    #define JSON_HEDLEY_GCC_HAS_DECLSPEC_ATTRIBUTE(attribute, major, minor, patch)   JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch)
     
    #define JSON_HEDLEY_HAS_WARNING(warning)   (0)
     
    #define JSON_HEDLEY_GNUC_HAS_WARNING(warning, major, minor, patch)   JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch)
     
    #define JSON_HEDLEY_GCC_HAS_WARNING(warning, major, minor, patch)   JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch)
     
    #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(x)   x
     
    #define JSON_HEDLEY_CONST_CAST(T, expr)   ((T) (expr))
     
    #define JSON_HEDLEY_REINTERPRET_CAST(T, expr)   ((T) (expr))
     
    #define JSON_HEDLEY_STATIC_CAST(T, expr)   ((T) (expr))
     
    #define JSON_HEDLEY_CPP_CAST(T, expr)   (expr)
     
    #define JSON_HEDLEY_PRAGMA(value)
     
    #define JSON_HEDLEY_DIAGNOSTIC_PUSH
     
    #define JSON_HEDLEY_DIAGNOSTIC_POP
     
    #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED
     
    #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS
     
    #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES
     
    #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL
     
    #define JSON_HEDLEY_DEPRECATED(since)
     
    #define JSON_HEDLEY_DEPRECATED_FOR(since, replacement)
     
    #define JSON_HEDLEY_UNAVAILABLE(available_since)
     
    #define JSON_HEDLEY_WARN_UNUSED_RESULT
     
    #define JSON_HEDLEY_WARN_UNUSED_RESULT_MSG(msg)
     
    #define JSON_HEDLEY_SENTINEL(position)
     
    #define JSON_HEDLEY_NO_RETURN
     
    #define JSON_HEDLEY_NO_ESCAPE
     
    #define JSON_HEDLEY_ASSUME(expr)   JSON_HEDLEY_STATIC_CAST(void, expr)
     
    #define JSON_HEDLEY_UNREACHABLE_RETURN(value)   return (value)
     
    #define JSON_HEDLEY_UNREACHABLE()   JSON_HEDLEY_ASSUME(0)
     
    #define JSON_HEDLEY_NON_NULL(...)
     
    #define JSON_HEDLEY_PRINTF_FORMAT(string_idx, first_to_check)
     
    #define JSON_HEDLEY_CONSTEXPR
     
    #define JSON_HEDLEY_PREDICT(expr, expected, probability)   (JSON_HEDLEY_STATIC_CAST(void, expected), (expr))
     
    #define JSON_HEDLEY_PREDICT_TRUE(expr, probability)   (!!(expr))
     
    #define JSON_HEDLEY_PREDICT_FALSE(expr, probability)   (!!(expr))
     
    #define JSON_HEDLEY_LIKELY(expr)   (!!(expr))
     
    #define JSON_HEDLEY_UNLIKELY(expr)   (!!(expr))
     
    #define JSON_HEDLEY_UNPREDICTABLE(expr)   JSON_HEDLEY_PREDICT(expr, 1, 0.5)
     
    #define JSON_HEDLEY_MALLOC
     
    #define JSON_HEDLEY_PURE
     
    #define JSON_HEDLEY_CONST   JSON_HEDLEY_PURE
     
    #define JSON_HEDLEY_RESTRICT
     
    #define JSON_HEDLEY_INLINE
     
    #define JSON_HEDLEY_ALWAYS_INLINE   JSON_HEDLEY_INLINE
     
    #define JSON_HEDLEY_NEVER_INLINE
     
    #define JSON_HEDLEY_PRIVATE
     
    #define JSON_HEDLEY_PUBLIC
     
    #define JSON_HEDLEY_IMPORT   extern
     
    #define JSON_HEDLEY_NO_THROW
     
    #define JSON_HEDLEY_FALL_THROUGH
     
    #define JSON_HEDLEY_RETURNS_NON_NULL
     
    #define JSON_HEDLEY_ARRAY_PARAM(name)
     
    #define JSON_HEDLEY_IS_CONSTANT(expr)   (0)
     
    #define JSON_HEDLEY_REQUIRE_CONSTEXPR(expr)   (expr)
     
    #define JSON_HEDLEY_BEGIN_C_DECLS
     
    #define JSON_HEDLEY_END_C_DECLS
     
    #define JSON_HEDLEY_C_DECL
     
    #define JSON_HEDLEY_STATIC_ASSERT(expr, message)
     
    #define JSON_HEDLEY_NULL   ((void*) 0)
     
    #define JSON_HEDLEY_MESSAGE(msg)
     
    #define JSON_HEDLEY_WARNING(msg)   JSON_HEDLEY_MESSAGE(msg)
     
    #define JSON_HEDLEY_REQUIRE(expr)
     
    #define JSON_HEDLEY_REQUIRE_MSG(expr, msg)
     
    #define JSON_HEDLEY_FLAGS_CAST(T, expr)   JSON_HEDLEY_STATIC_CAST(T, expr)
     
    #define JSON_HEDLEY_EMPTY_BASES
     
    #define JSON_HEDLEY_GCC_NOT_CLANG_VERSION_CHECK(major, minor, patch)   JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch)
     
    #define JSON_HEDLEY_CLANG_HAS_ATTRIBUTE(attribute)   JSON_HEDLEY_HAS_ATTRIBUTE(attribute)
     
    #define JSON_HEDLEY_CLANG_HAS_CPP_ATTRIBUTE(attribute)   JSON_HEDLEY_HAS_CPP_ATTRIBUTE(attribute)
     
    #define JSON_HEDLEY_CLANG_HAS_BUILTIN(builtin)   JSON_HEDLEY_HAS_BUILTIN(builtin)
     
    #define JSON_HEDLEY_CLANG_HAS_FEATURE(feature)   JSON_HEDLEY_HAS_FEATURE(feature)
     
    #define JSON_HEDLEY_CLANG_HAS_EXTENSION(extension)   JSON_HEDLEY_HAS_EXTENSION(extension)
     
    #define JSON_HEDLEY_CLANG_HAS_DECLSPEC_ATTRIBUTE(attribute)   JSON_HEDLEY_HAS_DECLSPEC_ATTRIBUTE(attribute)
     
    #define JSON_HEDLEY_CLANG_HAS_WARNING(warning)   JSON_HEDLEY_HAS_WARNING(warning)
     
    #define JSON_THROW(exception)   std::abort()
     
    #define JSON_TRY   if(true)
     
    #define JSON_CATCH(exception)   if(false)
     
    #define JSON_INTERNAL_CATCH(exception)   if(false)
     
    #define JSON_ASSERT(x)   assert(x)
     
    #define NLOHMANN_JSON_SERIALIZE_ENUM(ENUM_TYPE, ...)
     macro to briefly define a mapping between an enum and JSON More...
     
    #define NLOHMANN_BASIC_JSON_TPL_DECLARATION
     
    #define NLOHMANN_BASIC_JSON_TPL
     
    #define NLOHMANN_JSON_EXPAND(x)   x
     
    #define NLOHMANN_JSON_GET_MACRO(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63, _64, NAME, ...)   NAME
     
    #define NLOHMANN_JSON_PASTE(...)
     
    #define NLOHMANN_JSON_PASTE2(func, v1)   func(v1)
     
    #define NLOHMANN_JSON_PASTE3(func, v1, v2)   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE2(func, v2)
     
    #define NLOHMANN_JSON_PASTE4(func, v1, v2, v3)   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE3(func, v2, v3)
     
    #define NLOHMANN_JSON_PASTE5(func, v1, v2, v3, v4)   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE4(func, v2, v3, v4)
     
    #define NLOHMANN_JSON_PASTE6(func, v1, v2, v3, v4, v5)   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE5(func, v2, v3, v4, v5)
     
    #define NLOHMANN_JSON_PASTE7(func, v1, v2, v3, v4, v5, v6)   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE6(func, v2, v3, v4, v5, v6)
     
    #define NLOHMANN_JSON_PASTE8(func, v1, v2, v3, v4, v5, v6, v7)   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE7(func, v2, v3, v4, v5, v6, v7)
     
    #define NLOHMANN_JSON_PASTE9(func, v1, v2, v3, v4, v5, v6, v7, v8)   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE8(func, v2, v3, v4, v5, v6, v7, v8)
     
    #define NLOHMANN_JSON_PASTE10(func, v1, v2, v3, v4, v5, v6, v7, v8, v9)   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE9(func, v2, v3, v4, v5, v6, v7, v8, v9)
     
    #define NLOHMANN_JSON_PASTE11(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10)   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE10(func, v2, v3, v4, v5, v6, v7, v8, v9, v10)
     
    #define NLOHMANN_JSON_PASTE12(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11)   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE11(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11)
     
    #define NLOHMANN_JSON_PASTE13(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12)   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE12(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12)
     
    #define NLOHMANN_JSON_PASTE14(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13)   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE13(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13)
     
    #define NLOHMANN_JSON_PASTE15(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14)   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE14(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14)
     
    #define NLOHMANN_JSON_PASTE16(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15)   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE15(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15)
     
    #define NLOHMANN_JSON_PASTE17(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16)   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE16(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16)
     
    #define NLOHMANN_JSON_PASTE18(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17)   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE17(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17)
     
    #define NLOHMANN_JSON_PASTE19(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18)   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE18(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18)
     
    #define NLOHMANN_JSON_PASTE20(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19)   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE19(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19)
     
    #define NLOHMANN_JSON_PASTE21(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20)   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE20(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20)
     
    #define NLOHMANN_JSON_PASTE22(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21)   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE21(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21)
     
    #define NLOHMANN_JSON_PASTE23(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22)   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE22(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22)
     
    #define NLOHMANN_JSON_PASTE24(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23)   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE23(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23)
     
    #define NLOHMANN_JSON_PASTE25(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24)   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE24(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24)
     
    #define NLOHMANN_JSON_PASTE26(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25)   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE25(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25)
     
    #define NLOHMANN_JSON_PASTE27(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26)   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE26(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26)
     
    #define NLOHMANN_JSON_PASTE28(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27)   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE27(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27)
     
    #define NLOHMANN_JSON_PASTE29(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28)   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE28(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28)
     
    #define NLOHMANN_JSON_PASTE30(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29)   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE29(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29)
     
    #define NLOHMANN_JSON_PASTE31(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30)   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE30(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30)
     
    #define NLOHMANN_JSON_PASTE32(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31)   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE31(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31)
     
    #define NLOHMANN_JSON_PASTE33(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32)   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE32(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32)
     
    #define NLOHMANN_JSON_PASTE34(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33)   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE33(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33)
     
    #define NLOHMANN_JSON_PASTE35(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34)   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE34(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34)
     
    #define NLOHMANN_JSON_PASTE36(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35)   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE35(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35)
     
    #define NLOHMANN_JSON_PASTE37(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36)   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE36(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36)
     
    #define NLOHMANN_JSON_PASTE38(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37)   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE37(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37)
     
    #define NLOHMANN_JSON_PASTE39(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38)   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE38(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38)
     
    #define NLOHMANN_JSON_PASTE40(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39)   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE39(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39)
     
    #define NLOHMANN_JSON_PASTE41(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40)   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE40(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40)
     
    #define NLOHMANN_JSON_PASTE42(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41)   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE41(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41)
     
    #define NLOHMANN_JSON_PASTE43(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42)   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE42(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42)
     
    #define NLOHMANN_JSON_PASTE44(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43)   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE43(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43)
     
    #define NLOHMANN_JSON_PASTE45(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44)   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE44(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44)
     
    #define NLOHMANN_JSON_PASTE46(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45)   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE45(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45)
     
    #define NLOHMANN_JSON_PASTE47(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46)   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE46(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46)
     
    #define NLOHMANN_JSON_PASTE48(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47)   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE47(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47)
     
    #define NLOHMANN_JSON_PASTE49(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48)   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE48(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48)
     
    #define NLOHMANN_JSON_PASTE50(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49)   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE49(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49)
     
    #define NLOHMANN_JSON_PASTE51(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50)   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE50(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50)
     
    #define NLOHMANN_JSON_PASTE52(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51)   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE51(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51)
     
    #define NLOHMANN_JSON_PASTE53(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52)   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE52(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52)
     
    #define NLOHMANN_JSON_PASTE54(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53)   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE53(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53)
     
    #define NLOHMANN_JSON_PASTE55(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54)   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE54(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54)
     
    #define NLOHMANN_JSON_PASTE56(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55)   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE55(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55)
     
    #define NLOHMANN_JSON_PASTE57(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56)   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE56(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56)
     
    #define NLOHMANN_JSON_PASTE58(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57)   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE57(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57)
     
    #define NLOHMANN_JSON_PASTE59(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58)   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE58(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58)
     
    #define NLOHMANN_JSON_PASTE60(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59)   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE59(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59)
     
    #define NLOHMANN_JSON_PASTE61(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60)   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE60(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60)
     
    #define NLOHMANN_JSON_PASTE62(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60, v61)   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE61(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60, v61)
     
    #define NLOHMANN_JSON_PASTE63(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60, v61, v62)   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE62(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60, v61, v62)
     
    #define NLOHMANN_JSON_PASTE64(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60, v61, v62, v63)   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE63(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60, v61, v62, v63)
     
    #define NLOHMANN_JSON_TO(v1)   nlohmann_json_j[#v1] = nlohmann_json_t.v1;
     
    #define NLOHMANN_JSON_FROM(v1)   nlohmann_json_j.at(#v1).get_to(nlohmann_json_t.v1);
     
    #define NLOHMANN_DEFINE_TYPE_INTRUSIVE(Type, ...)
     macro More...
     
    #define NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE(Type, ...)
     macro More...
     
    #define JSON_USE_IMPLICIT_CONVERSIONS   1
     
    #define JSON_EXPLICIT
     
    #define INCLUDE_NLOHMANN_JSON_FWD_HPP_
     
    - - - - - - - - - - - - -

    -Typedefs

    using nlohmann::ordered_json = basic_json< nlohmann::ordered_map >
     ordered JSON class More...
     
    using nlohmann::detail::contiguous_bytes_input_adapter = decltype(input_adapter(std::declval< const char * >(), std::declval< const char * >()))
     
    template<typename T , typename Binary >
    using nlohmann::detail::binary_function_t = decltype(std::declval< T & >().binary(std::declval< Binary & >()))
     
    template<typename BasicJsonType >
    using nlohmann::detail::parser_callback_t = std::function< bool(int depth, parse_event_t event, BasicJsonType &parsed)>
     
    - - - - - - - - - - - - - - - -

    -Enumerations

    enum  nlohmann::detail::value_t : std::uint8_t {
    -  nlohmann::detail::value_t::null, -nlohmann::detail::value_t::object, -nlohmann::detail::value_t::array, -nlohmann::detail::value_t::string, -
    -  nlohmann::detail::value_t::boolean, -nlohmann::detail::value_t::number_integer, -nlohmann::detail::value_t::number_unsigned, -nlohmann::detail::value_t::number_float, -
    -  nlohmann::detail::value_t::discarded, -nlohmann::detail::value_t::null, -nlohmann::detail::value_t::object, -nlohmann::detail::value_t::array, -
    -  nlohmann::detail::value_t::string, -nlohmann::detail::value_t::boolean, -nlohmann::detail::value_t::number_integer, -nlohmann::detail::value_t::number_unsigned, -
    -  nlohmann::detail::value_t::number_float, -nlohmann::detail::value_t::binary, -nlohmann::detail::value_t::discarded -
    - }
     the JSON type enumeration More...
     
    enum  nlohmann::detail::input_format_t {
    -  nlohmann::detail::input_format_t::json, -nlohmann::detail::input_format_t::cbor, -nlohmann::detail::input_format_t::msgpack, -nlohmann::detail::input_format_t::ubjson, -
    -  nlohmann::detail::input_format_t::bson, -nlohmann::detail::input_format_t::json, -nlohmann::detail::input_format_t::cbor, -nlohmann::detail::input_format_t::msgpack, -
    -  nlohmann::detail::input_format_t::ubjson, -nlohmann::detail::input_format_t::bson -
    - }
     the supported input formats More...
     
    enum  nlohmann::detail::cbor_tag_handler_t { nlohmann::detail::cbor_tag_handler_t::error, -nlohmann::detail::cbor_tag_handler_t::ignore - }
     how to treat CBOR tags More...
     
    enum  nlohmann::detail::parse_event_t : uint8_t {
    -  nlohmann::detail::parse_event_t::object_start, -nlohmann::detail::parse_event_t::object_end, -nlohmann::detail::parse_event_t::array_start, -nlohmann::detail::parse_event_t::array_end, -
    -  nlohmann::detail::parse_event_t::key, -nlohmann::detail::parse_event_t::value -
    - }
     
    enum  nlohmann::detail::error_handler_t {
    -  nlohmann::detail::error_handler_t::strict, -nlohmann::detail::error_handler_t::replace, -nlohmann::detail::error_handler_t::ignore, -nlohmann::detail::error_handler_t::strict, -
    -  nlohmann::detail::error_handler_t::replace, -nlohmann::detail::error_handler_t::ignore -
    - }
     how to treat decoding errors More...
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Functions

    bool nlohmann::detail::operator< (const value_t lhs, const value_t rhs) noexcept
     comparison operator for JSON types More...
     
    template<typename BasicJsonType >
    void nlohmann::detail::from_json (const BasicJsonType &j, typename std::nullptr_t &n)
     
    template<typename BasicJsonType , typename ArithmeticType , enable_if_t< std::is_arithmetic< ArithmeticType >::value and not std::is_same< ArithmeticType, typename BasicJsonType::boolean_t >::value, int > = 0>
    void nlohmann::detail::get_arithmetic_value (const BasicJsonType &j, ArithmeticType &val)
     
    template<typename BasicJsonType >
    void nlohmann::detail::from_json (const BasicJsonType &j, typename BasicJsonType::boolean_t &b)
     
    template<typename BasicJsonType >
    void nlohmann::detail::from_json (const BasicJsonType &j, typename BasicJsonType::string_t &s)
     
    template<typename BasicJsonType , typename ConstructibleStringType , enable_if_t< is_constructible_string_type< BasicJsonType, ConstructibleStringType >::value and not std::is_same< typename BasicJsonType::string_t, ConstructibleStringType >::value, int > = 0>
    void nlohmann::detail::from_json (const BasicJsonType &j, ConstructibleStringType &s)
     
    template<typename BasicJsonType >
    void nlohmann::detail::from_json (const BasicJsonType &j, typename BasicJsonType::number_float_t &val)
     
    template<typename BasicJsonType >
    void nlohmann::detail::from_json (const BasicJsonType &j, typename BasicJsonType::number_unsigned_t &val)
     
    template<typename BasicJsonType >
    void nlohmann::detail::from_json (const BasicJsonType &j, typename BasicJsonType::number_integer_t &val)
     
    template<typename BasicJsonType , typename EnumType , enable_if_t< std::is_enum< EnumType >::value, int > = 0>
    void nlohmann::detail::from_json (const BasicJsonType &j, EnumType &e)
     
    template<typename BasicJsonType , typename T , typename Allocator , enable_if_t< std::is_convertible< BasicJsonType, T >::value, int > = 0>
    void nlohmann::detail::from_json (const BasicJsonType &j, std::forward_list< T, Allocator > &l)
     
    template<typename BasicJsonType , typename T , enable_if_t< std::is_convertible< BasicJsonType, T >::value, int > = 0>
    void nlohmann::detail::from_json (const BasicJsonType &j, std::valarray< T > &l)
     
    template<typename BasicJsonType , typename T , std::size_t N>
    auto nlohmann::detail::from_json (const BasicJsonType &j, T(&arr)[N]) -> decltype(j.template get< T >(), void())
     
    template<typename BasicJsonType >
    void nlohmann::detail::from_json_array_impl (const BasicJsonType &j, typename BasicJsonType::array_t &arr, priority_tag< 3 >)
     
    template<typename BasicJsonType , typename T , std::size_t N>
    auto nlohmann::detail::from_json_array_impl (const BasicJsonType &j, std::array< T, N > &arr, priority_tag< 2 >) -> decltype(j.template get< T >(), void())
     
    template<typename BasicJsonType , typename ConstructibleArrayType >
    auto nlohmann::detail::from_json_array_impl (const BasicJsonType &j, ConstructibleArrayType &arr, priority_tag< 1 >) -> decltype(arr.reserve(std::declval< typename ConstructibleArrayType::size_type >()), j.template get< typename ConstructibleArrayType::value_type >(), void())
     
    template<typename BasicJsonType , typename ConstructibleArrayType >
    void nlohmann::detail::from_json_array_impl (const BasicJsonType &j, ConstructibleArrayType &arr, priority_tag< 0 >)
     
    template<typename BasicJsonType , typename ConstructibleArrayType , enable_if_t< is_constructible_array_type< BasicJsonType, ConstructibleArrayType >::value and not is_constructible_object_type< BasicJsonType, ConstructibleArrayType >::value and not is_constructible_string_type< BasicJsonType, ConstructibleArrayType >::value and not is_basic_json< ConstructibleArrayType >::value, int > = 0>
    auto nlohmann::detail::from_json (const BasicJsonType &j, ConstructibleArrayType &arr) -> decltype(from_json_array_impl(j, arr, priority_tag< 3 >
     
    j template nlohmann::detail::get< typename ConstructibleArrayType::value_type > ()
     
    j template nlohmann::detail::void ())
     
    template<typename BasicJsonType >
    void nlohmann::detail::from_json (const BasicJsonType &j, typename BasicJsonType::binary_t &bin)
     
    template<typename BasicJsonType , typename ConstructibleObjectType , enable_if_t< is_constructible_object_type< BasicJsonType, ConstructibleObjectType >::value, int > = 0>
    void nlohmann::detail::from_json (const BasicJsonType &j, ConstructibleObjectType &obj)
     
    template<typename BasicJsonType , typename ArithmeticType , enable_if_t< std::is_arithmetic< ArithmeticType >::value and not std::is_same< ArithmeticType, typename BasicJsonType::number_unsigned_t >::value and not std::is_same< ArithmeticType, typename BasicJsonType::number_integer_t >::value and not std::is_same< ArithmeticType, typename BasicJsonType::number_float_t >::value and not std::is_same< ArithmeticType, typename BasicJsonType::boolean_t >::value, int > = 0>
    void nlohmann::detail::from_json (const BasicJsonType &j, ArithmeticType &val)
     
    template<typename BasicJsonType , typename A1 , typename A2 >
    void nlohmann::detail::from_json (const BasicJsonType &j, std::pair< A1, A2 > &p)
     
    template<typename BasicJsonType , typename Tuple , std::size_t... Idx>
    void nlohmann::detail::from_json_tuple_impl (const BasicJsonType &j, Tuple &t, index_sequence< Idx... >)
     
    template<typename BasicJsonType , typename... Args>
    void nlohmann::detail::from_json (const BasicJsonType &j, std::tuple< Args... > &t)
     
    template<typename BasicJsonType , typename Key , typename Value , typename Compare , typename Allocator , typename = enable_if_t<not std::is_constructible< typename BasicJsonType::string_t, Key>::value>>
    void nlohmann::detail::from_json (const BasicJsonType &j, std::map< Key, Value, Compare, Allocator > &m)
     
    template<typename BasicJsonType , typename Key , typename Value , typename Hash , typename KeyEqual , typename Allocator , typename = enable_if_t<not std::is_constructible< typename BasicJsonType::string_t, Key>::value>>
    void nlohmann::detail::from_json (const BasicJsonType &j, std::unordered_map< Key, Value, Hash, KeyEqual, Allocator > &m)
     
    template<typename string_type >
    void nlohmann::detail::int_to_string (string_type &target, std::size_t value)
     
    template<std::size_t N, typename IteratorType , enable_if_t< N==0, int > = 0>
    auto nlohmann::detail::get (const nlohmann::detail::iteration_proxy_value< IteratorType > &i) -> decltype(i.key())
     
    template<typename BasicJsonType , typename T , enable_if_t< std::is_same< T, typename BasicJsonType::boolean_t >::value, int > = 0>
    void nlohmann::detail::to_json (BasicJsonType &j, T b) noexcept
     
    template<typename BasicJsonType , typename CompatibleString , enable_if_t< std::is_constructible< typename BasicJsonType::string_t, CompatibleString >::value, int > = 0>
    void nlohmann::detail::to_json (BasicJsonType &j, const CompatibleString &s)
     
    template<typename BasicJsonType >
    void nlohmann::detail::to_json (BasicJsonType &j, typename BasicJsonType::string_t &&s)
     
    template<typename BasicJsonType , typename FloatType , enable_if_t< std::is_floating_point< FloatType >::value, int > = 0>
    void nlohmann::detail::to_json (BasicJsonType &j, FloatType val) noexcept
     
    template<typename BasicJsonType , typename CompatibleNumberUnsignedType , enable_if_t< is_compatible_integer_type< typename BasicJsonType::number_unsigned_t, CompatibleNumberUnsignedType >::value, int > = 0>
    void nlohmann::detail::to_json (BasicJsonType &j, CompatibleNumberUnsignedType val) noexcept
     
    template<typename BasicJsonType , typename CompatibleNumberIntegerType , enable_if_t< is_compatible_integer_type< typename BasicJsonType::number_integer_t, CompatibleNumberIntegerType >::value, int > = 0>
    void nlohmann::detail::to_json (BasicJsonType &j, CompatibleNumberIntegerType val) noexcept
     
    template<typename BasicJsonType , typename EnumType , enable_if_t< std::is_enum< EnumType >::value, int > = 0>
    void nlohmann::detail::to_json (BasicJsonType &j, EnumType e) noexcept
     
    template<typename BasicJsonType >
    void nlohmann::detail::to_json (BasicJsonType &j, const std::vector< bool > &e)
     
    template<typename BasicJsonType , typename CompatibleArrayType , enable_if_t< is_compatible_array_type< BasicJsonType, CompatibleArrayType >::value and not is_compatible_object_type< BasicJsonType, CompatibleArrayType >::value and not is_compatible_string_type< BasicJsonType, CompatibleArrayType >::value and not is_basic_json< CompatibleArrayType >::value, int > = 0>
    void nlohmann::detail::to_json (BasicJsonType &j, const CompatibleArrayType &arr)
     
    template<typename BasicJsonType >
    void nlohmann::detail::to_json (BasicJsonType &j, const typename BasicJsonType::binary_t &bin)
     
    template<typename BasicJsonType , typename T , enable_if_t< std::is_convertible< T, BasicJsonType >::value, int > = 0>
    void nlohmann::detail::to_json (BasicJsonType &j, const std::valarray< T > &arr)
     
    template<typename BasicJsonType >
    void nlohmann::detail::to_json (BasicJsonType &j, typename BasicJsonType::array_t &&arr)
     
    template<typename BasicJsonType , typename CompatibleObjectType , enable_if_t< is_compatible_object_type< BasicJsonType, CompatibleObjectType >::value and not is_basic_json< CompatibleObjectType >::value, int > = 0>
    void nlohmann::detail::to_json (BasicJsonType &j, const CompatibleObjectType &obj)
     
    template<typename BasicJsonType >
    void nlohmann::detail::to_json (BasicJsonType &j, typename BasicJsonType::object_t &&obj)
     
    template<typename BasicJsonType , typename T , std::size_t N, enable_if_t< not std::is_constructible< typename BasicJsonType::string_t, const T(&)[N]>::value, int > = 0>
    void nlohmann::detail::to_json (BasicJsonType &j, const T(&arr)[N])
     
    template<typename BasicJsonType , typename T1 , typename T2 , enable_if_t< std::is_constructible< BasicJsonType, T1 >::value &&std::is_constructible< BasicJsonType, T2 >::value, int > = 0>
    void nlohmann::detail::to_json (BasicJsonType &j, const std::pair< T1, T2 > &p)
     
    template<typename BasicJsonType , typename T , enable_if_t< std::is_same< T, iteration_proxy_value< typename BasicJsonType::iterator >>::value, int > = 0>
    void nlohmann::detail::to_json (BasicJsonType &j, const T &b)
     
    template<typename BasicJsonType , typename Tuple , std::size_t... Idx>
    void nlohmann::detail::to_json_tuple_impl (BasicJsonType &j, const Tuple &t, index_sequence< Idx... >)
     
    std::size_t nlohmann::detail::combine (std::size_t seed, std::size_t h) noexcept
     
    template<typename BasicJsonType >
    std::size_t nlohmann::detail::hash (const BasicJsonType &j)
     hash a JSON value More...
     
    template<typename IteratorType >
    iterator_input_adapter_factory< IteratorType >::adapter_type nlohmann::detail::input_adapter (IteratorType first, IteratorType last)
     
    template<typename ContainerType >
    auto nlohmann::detail::input_adapter (const ContainerType &container) -> decltype(input_adapter(begin(container), end(container)))
     
    file_input_adapter nlohmann::detail::input_adapter (std::FILE *file)
     
    input_stream_adapter nlohmann::detail::input_adapter (std::istream &stream)
     
    input_stream_adapter nlohmann::detail::input_adapter (std::istream &&stream)
     
    template<typename CharT , typename std::enable_if< std::is_pointer< CharT >::value &&!std::is_array< CharT >::value &&std::is_integral< typename std::remove_pointer< CharT >::type >::value &&sizeof(typename std::remove_pointer< CharT >::type)==1, int >::type = 0>
    contiguous_bytes_input_adapter nlohmann::detail::input_adapter (CharT b)
     
    template<typename T , std::size_t N>
    auto nlohmann::detail::input_adapter (T(&array)[N]) -> decltype(input_adapter(array, array+N))
     
    template<typename Target , typename Source >
    Target nlohmann::detail::dtoa_impl::reinterpret_bits (const Source source)
     
    template<typename FloatType >
    boundaries nlohmann::detail::dtoa_impl::compute_boundaries (FloatType value)
     
    cached_power nlohmann::detail::dtoa_impl::get_cached_power_for_binary_exponent (int e)
     
    int nlohmann::detail::dtoa_impl::find_largest_pow10 (const std::uint32_t n, std::uint32_t &pow10)
     
    void nlohmann::detail::dtoa_impl::grisu2_round (char *buf, int len, std::uint64_t dist, std::uint64_t delta, std::uint64_t rest, std::uint64_t ten_k)
     
    void nlohmann::detail::dtoa_impl::grisu2_digit_gen (char *buffer, int &length, int &decimal_exponent, diyfp M_minus, diyfp w, diyfp M_plus)
     
    void nlohmann::detail::dtoa_impl::grisu2 (char *buf, int &len, int &decimal_exponent, diyfp m_minus, diyfp v, diyfp m_plus)
     
    template<typename FloatType >
    void nlohmann::detail::dtoa_impl::grisu2 (char *buf, int &len, int &decimal_exponent, FloatType value)
     
    JSON_HEDLEY_RETURNS_NON_NULL char * nlohmann::detail::dtoa_impl::append_exponent (char *buf, int e)
     appends a decimal representation of e to buf More...
     
    JSON_HEDLEY_RETURNS_NON_NULL char * nlohmann::detail::dtoa_impl::format_buffer (char *buf, int len, int decimal_exponent, int min_exp, int max_exp)
     prettify v = buf * 10^decimal_exponent More...
     
    template<typename FloatType >
    JSON_HEDLEY_RETURNS_NON_NULL char * nlohmann::detail::to_chars (char *first, const char *last, FloatType value)
     generates a decimal representation of the floating-point number value in [first, last). More...
     
    NLOHMANN_BASIC_JSON_TPL_DECLARATION std::string nlohmann::to_string (const NLOHMANN_BASIC_JSON_TPL &j)
     user-defined to_string function for JSON values More...
     
    template<>
    void std::swap< nlohmann::json > (nlohmann::json &j1, nlohmann::json &j2) noexcept(is_nothrow_move_constructible< nlohmann::json >::value and is_nothrow_move_assignable< nlohmann::json >::value)
     exchanges the values of two JSON objects More...
     
    nlohmann::json operator""_json (const char *s, std::size_t n)
     user-defined string literal for JSON values More...
     
    nlohmann::json::json_pointer operator""_json_pointer (const char *s, std::size_t n)
     user-defined string literal for JSON pointer More...
     
    -

    Macro Definition Documentation

    - -

    ◆ INCLUDE_NLOHMANN_JSON_FWD_HPP_

    - -
    -
    - - - - -
    #define INCLUDE_NLOHMANN_JSON_FWD_HPP_
    -
    - -
    -
    - -

    ◆ JSON_ASSERT

    - -
    -
    - - - - - - - - -
    #define JSON_ASSERT( x)   assert(x)
    -
    - -
    -
    - -

    ◆ JSON_CATCH

    - -
    -
    - - - - - - - - -
    #define JSON_CATCH( exception)   if(false)
    -
    - -
    -
    - -

    ◆ JSON_EXPLICIT

    - -
    -
    - - - - -
    #define JSON_EXPLICIT
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_ALWAYS_INLINE

    - -
    -
    - - - - -
    #define JSON_HEDLEY_ALWAYS_INLINE   JSON_HEDLEY_INLINE
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_ARM_VERSION_CHECK

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    #define JSON_HEDLEY_ARM_VERSION_CHECK( major,
     minor,
     patch 
    )   (0)
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_ARRAY_PARAM

    - -
    -
    - - - - - - - - -
    #define JSON_HEDLEY_ARRAY_PARAM( name)
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_ASSUME

    - -
    -
    - - - - - - - - -
    #define JSON_HEDLEY_ASSUME( expr)   JSON_HEDLEY_STATIC_CAST(void, expr)
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_BEGIN_C_DECLS

    - -
    -
    - - - - -
    #define JSON_HEDLEY_BEGIN_C_DECLS
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_C_DECL

    - -
    -
    - - - - -
    #define JSON_HEDLEY_C_DECL
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_CLANG_HAS_ATTRIBUTE

    - -
    -
    - - - - - - - - -
    #define JSON_HEDLEY_CLANG_HAS_ATTRIBUTE( attribute)   JSON_HEDLEY_HAS_ATTRIBUTE(attribute)
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_CLANG_HAS_BUILTIN

    - -
    -
    - - - - - - - - -
    #define JSON_HEDLEY_CLANG_HAS_BUILTIN( builtin)   JSON_HEDLEY_HAS_BUILTIN(builtin)
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_CLANG_HAS_CPP_ATTRIBUTE

    - -
    -
    - - - - - - - - -
    #define JSON_HEDLEY_CLANG_HAS_CPP_ATTRIBUTE( attribute)   JSON_HEDLEY_HAS_CPP_ATTRIBUTE(attribute)
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_CLANG_HAS_DECLSPEC_ATTRIBUTE

    - -
    -
    - - - - - - - - -
    #define JSON_HEDLEY_CLANG_HAS_DECLSPEC_ATTRIBUTE( attribute)   JSON_HEDLEY_HAS_DECLSPEC_ATTRIBUTE(attribute)
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_CLANG_HAS_EXTENSION

    - -
    -
    - - - - - - - - -
    #define JSON_HEDLEY_CLANG_HAS_EXTENSION( extension)   JSON_HEDLEY_HAS_EXTENSION(extension)
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_CLANG_HAS_FEATURE

    - -
    -
    - - - - - - - - -
    #define JSON_HEDLEY_CLANG_HAS_FEATURE( feature)   JSON_HEDLEY_HAS_FEATURE(feature)
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_CLANG_HAS_WARNING

    - -
    -
    - - - - - - - - -
    #define JSON_HEDLEY_CLANG_HAS_WARNING( warning)   JSON_HEDLEY_HAS_WARNING(warning)
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_COMPCERT_VERSION_CHECK

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    #define JSON_HEDLEY_COMPCERT_VERSION_CHECK( major,
     minor,
     patch 
    )   (0)
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_CONCAT

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    #define JSON_HEDLEY_CONCAT( a,
     
    )   JSON_HEDLEY_CONCAT_EX(a,b)
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_CONCAT3

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    #define JSON_HEDLEY_CONCAT3( a,
     b,
     
    )   JSON_HEDLEY_CONCAT3_EX(a,b,c)
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_CONCAT3_EX

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    #define JSON_HEDLEY_CONCAT3_EX( a,
     b,
     
    )   a##b##c
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_CONCAT_EX

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    #define JSON_HEDLEY_CONCAT_EX( a,
     
    )   a##b
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_CONST

    - -
    -
    - - - - -
    #define JSON_HEDLEY_CONST   JSON_HEDLEY_PURE
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_CONST_CAST

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    #define JSON_HEDLEY_CONST_CAST( T,
     expr 
    )   ((T) (expr))
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_CONSTEXPR

    - -
    -
    - - - - -
    #define JSON_HEDLEY_CONSTEXPR
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_CPP_CAST

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    #define JSON_HEDLEY_CPP_CAST( T,
     expr 
    )   (expr)
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_CRAY_VERSION_CHECK

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    #define JSON_HEDLEY_CRAY_VERSION_CHECK( major,
     minor,
     patch 
    )   (0)
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_DEPRECATED

    - -
    -
    - - - - - - - - -
    #define JSON_HEDLEY_DEPRECATED( since)
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_DEPRECATED_FOR

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    #define JSON_HEDLEY_DEPRECATED_FOR( since,
     replacement 
    )
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL

    - -
    -
    - - - - -
    #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_

    - -
    -
    - - - - - - - - -
    #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_( x)   x
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED

    - -
    -
    - - - - -
    #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES

    - -
    -
    - - - - -
    #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS

    - -
    -
    - - - - -
    #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_DIAGNOSTIC_POP

    - -
    -
    - - - - -
    #define JSON_HEDLEY_DIAGNOSTIC_POP
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_DIAGNOSTIC_PUSH

    - -
    -
    - - - - -
    #define JSON_HEDLEY_DIAGNOSTIC_PUSH
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_DMC_VERSION_CHECK

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    #define JSON_HEDLEY_DMC_VERSION_CHECK( major,
     minor,
     patch 
    )   (0)
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_EMPTY_BASES

    - -
    -
    - - - - -
    #define JSON_HEDLEY_EMPTY_BASES
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_EMSCRIPTEN_VERSION_CHECK

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    #define JSON_HEDLEY_EMSCRIPTEN_VERSION_CHECK( major,
     minor,
     patch 
    )   (0)
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_END_C_DECLS

    - -
    -
    - - - - -
    #define JSON_HEDLEY_END_C_DECLS
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_FALL_THROUGH

    - -
    -
    - - - - -
    #define JSON_HEDLEY_FALL_THROUGH
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_FLAGS_CAST

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    #define JSON_HEDLEY_FLAGS_CAST( T,
     expr 
    )   JSON_HEDLEY_STATIC_CAST(T, expr)
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_GCC_HAS_ATTRIBUTE

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #define JSON_HEDLEY_GCC_HAS_ATTRIBUTE( attribute,
     major,
     minor,
     patch 
    )   JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch)
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_GCC_HAS_BUILTIN

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #define JSON_HEDLEY_GCC_HAS_BUILTIN( builtin,
     major,
     minor,
     patch 
    )   JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch)
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_GCC_HAS_CPP_ATTRIBUTE

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #define JSON_HEDLEY_GCC_HAS_CPP_ATTRIBUTE( attribute,
     major,
     minor,
     patch 
    )   JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch)
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_GCC_HAS_DECLSPEC_ATTRIBUTE

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #define JSON_HEDLEY_GCC_HAS_DECLSPEC_ATTRIBUTE( attribute,
     major,
     minor,
     patch 
    )   JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch)
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_GCC_HAS_EXTENSION

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #define JSON_HEDLEY_GCC_HAS_EXTENSION( extension,
     major,
     minor,
     patch 
    )   JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch)
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_GCC_HAS_FEATURE

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #define JSON_HEDLEY_GCC_HAS_FEATURE( feature,
     major,
     minor,
     patch 
    )   JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch)
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_GCC_HAS_WARNING

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #define JSON_HEDLEY_GCC_HAS_WARNING( warning,
     major,
     minor,
     patch 
    )   JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch)
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_GCC_NOT_CLANG_VERSION_CHECK

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    #define JSON_HEDLEY_GCC_NOT_CLANG_VERSION_CHECK( major,
     minor,
     patch 
    )   JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch)
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_GCC_VERSION_CHECK

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    #define JSON_HEDLEY_GCC_VERSION_CHECK( major,
     minor,
     patch 
    )   (0)
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_GNUC_HAS_ATTRIBUTE

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #define JSON_HEDLEY_GNUC_HAS_ATTRIBUTE( attribute,
     major,
     minor,
     patch 
    )   JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch)
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_GNUC_HAS_BUILTIN

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #define JSON_HEDLEY_GNUC_HAS_BUILTIN( builtin,
     major,
     minor,
     patch 
    )   JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch)
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_GNUC_HAS_CPP_ATTRIBUTE

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #define JSON_HEDLEY_GNUC_HAS_CPP_ATTRIBUTE( attribute,
     major,
     minor,
     patch 
    )   JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch)
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_GNUC_HAS_DECLSPEC_ATTRIBUTE

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #define JSON_HEDLEY_GNUC_HAS_DECLSPEC_ATTRIBUTE( attribute,
     major,
     minor,
     patch 
    )   JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch)
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_GNUC_HAS_EXTENSION

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #define JSON_HEDLEY_GNUC_HAS_EXTENSION( extension,
     major,
     minor,
     patch 
    )   JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch)
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_GNUC_HAS_FEATURE

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #define JSON_HEDLEY_GNUC_HAS_FEATURE( feature,
     major,
     minor,
     patch 
    )   JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch)
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_GNUC_HAS_WARNING

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #define JSON_HEDLEY_GNUC_HAS_WARNING( warning,
     major,
     minor,
     patch 
    )   JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch)
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_GNUC_VERSION_CHECK

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    #define JSON_HEDLEY_GNUC_VERSION_CHECK( major,
     minor,
     patch 
    )   (0)
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_HAS_ATTRIBUTE

    - -
    -
    - - - - - - - - -
    #define JSON_HEDLEY_HAS_ATTRIBUTE( attribute)   (0)
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_HAS_BUILTIN

    - -
    -
    - - - - - - - - -
    #define JSON_HEDLEY_HAS_BUILTIN( builtin)   (0)
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_HAS_CPP_ATTRIBUTE

    - -
    -
    - - - - - - - - -
    #define JSON_HEDLEY_HAS_CPP_ATTRIBUTE( attribute)   (0)
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    #define JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS( ns,
     attribute 
    )   (0)
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_HAS_DECLSPEC_ATTRIBUTE

    - -
    -
    - - - - - - - - -
    #define JSON_HEDLEY_HAS_DECLSPEC_ATTRIBUTE( attribute)   (0)
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_HAS_EXTENSION

    - -
    -
    - - - - - - - - -
    #define JSON_HEDLEY_HAS_EXTENSION( extension)   (0)
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_HAS_FEATURE

    - -
    -
    - - - - - - - - -
    #define JSON_HEDLEY_HAS_FEATURE( feature)   (0)
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_HAS_WARNING

    - -
    -
    - - - - - - - - -
    #define JSON_HEDLEY_HAS_WARNING( warning)   (0)
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_IAR_VERSION_CHECK

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    #define JSON_HEDLEY_IAR_VERSION_CHECK( major,
     minor,
     patch 
    )   (0)
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_IBM_VERSION_CHECK

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    #define JSON_HEDLEY_IBM_VERSION_CHECK( major,
     minor,
     patch 
    )   (0)
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_IMPORT

    - -
    -
    - - - - -
    #define JSON_HEDLEY_IMPORT   extern
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_INLINE

    - -
    -
    - - - - -
    #define JSON_HEDLEY_INLINE
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_INTEL_VERSION_CHECK

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    #define JSON_HEDLEY_INTEL_VERSION_CHECK( major,
     minor,
     patch 
    )   (0)
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_IS_CONSTANT

    - -
    -
    - - - - - - - - -
    #define JSON_HEDLEY_IS_CONSTANT( expr)   (0)
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_LIKELY

    - -
    -
    - - - - - - - - -
    #define JSON_HEDLEY_LIKELY( expr)   (!!(expr))
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_MALLOC

    - -
    -
    - - - - -
    #define JSON_HEDLEY_MALLOC
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_MESSAGE

    - -
    -
    - - - - - - - - -
    #define JSON_HEDLEY_MESSAGE( msg)
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_MSVC_VERSION_CHECK

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    #define JSON_HEDLEY_MSVC_VERSION_CHECK( major,
     minor,
     patch 
    )   (0)
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_NEVER_INLINE

    - -
    -
    - - - - -
    #define JSON_HEDLEY_NEVER_INLINE
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_NO_ESCAPE

    - -
    -
    - - - - -
    #define JSON_HEDLEY_NO_ESCAPE
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_NO_RETURN

    - -
    -
    - - - - -
    #define JSON_HEDLEY_NO_RETURN
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_NO_THROW

    - -
    -
    - - - - -
    #define JSON_HEDLEY_NO_THROW
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_NON_NULL

    - -
    -
    - - - - - - - - -
    #define JSON_HEDLEY_NON_NULL( ...)
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_NULL

    - -
    -
    - - - - -
    #define JSON_HEDLEY_NULL   ((void*) 0)
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_PELLES_VERSION_CHECK

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    #define JSON_HEDLEY_PELLES_VERSION_CHECK( major,
     minor,
     patch 
    )   (0)
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_PGI_VERSION_CHECK

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    #define JSON_HEDLEY_PGI_VERSION_CHECK( major,
     minor,
     patch 
    )   (0)
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_PRAGMA

    - -
    -
    - - - - - - - - -
    #define JSON_HEDLEY_PRAGMA( value)
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_PREDICT

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    #define JSON_HEDLEY_PREDICT( expr,
     expected,
     probability 
    )   (JSON_HEDLEY_STATIC_CAST(void, expected), (expr))
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_PREDICT_FALSE

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    #define JSON_HEDLEY_PREDICT_FALSE( expr,
     probability 
    )   (!!(expr))
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_PREDICT_TRUE

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    #define JSON_HEDLEY_PREDICT_TRUE( expr,
     probability 
    )   (!!(expr))
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_PRINTF_FORMAT

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    #define JSON_HEDLEY_PRINTF_FORMAT( string_idx,
     first_to_check 
    )
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_PRIVATE

    - -
    -
    - - - - -
    #define JSON_HEDLEY_PRIVATE
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_PUBLIC

    - -
    -
    - - - - -
    #define JSON_HEDLEY_PUBLIC
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_PURE

    - -
    -
    - - - - -
    #define JSON_HEDLEY_PURE
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_REINTERPRET_CAST

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    #define JSON_HEDLEY_REINTERPRET_CAST( T,
     expr 
    )   ((T) (expr))
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_REQUIRE

    - -
    -
    - - - - - - - - -
    #define JSON_HEDLEY_REQUIRE( expr)
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_REQUIRE_CONSTEXPR

    - -
    -
    - - - - - - - - -
    #define JSON_HEDLEY_REQUIRE_CONSTEXPR( expr)   (expr)
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_REQUIRE_MSG

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    #define JSON_HEDLEY_REQUIRE_MSG( expr,
     msg 
    )
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_RESTRICT

    - -
    -
    - - - - -
    #define JSON_HEDLEY_RESTRICT
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_RETURNS_NON_NULL

    - -
    -
    - - - - -
    #define JSON_HEDLEY_RETURNS_NON_NULL
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_SENTINEL

    - -
    -
    - - - - - - - - -
    #define JSON_HEDLEY_SENTINEL( position)
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_STATIC_ASSERT

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    #define JSON_HEDLEY_STATIC_ASSERT( expr,
     message 
    )
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_STATIC_CAST

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    #define JSON_HEDLEY_STATIC_CAST( T,
     expr 
    )   ((T) (expr))
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_STRINGIFY

    - -
    -
    - - - - - - - - -
    #define JSON_HEDLEY_STRINGIFY( x)   JSON_HEDLEY_STRINGIFY_EX(x)
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_STRINGIFY_EX

    - -
    -
    - - - - - - - - -
    #define JSON_HEDLEY_STRINGIFY_EX( x)   #x
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_SUNPRO_VERSION_CHECK

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    #define JSON_HEDLEY_SUNPRO_VERSION_CHECK( major,
     minor,
     patch 
    )   (0)
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_TI_ARMCL_VERSION_CHECK

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    #define JSON_HEDLEY_TI_ARMCL_VERSION_CHECK( major,
     minor,
     patch 
    )   (0)
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_TI_CL2000_VERSION_CHECK

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    #define JSON_HEDLEY_TI_CL2000_VERSION_CHECK( major,
     minor,
     patch 
    )   (0)
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_TI_CL430_VERSION_CHECK

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    #define JSON_HEDLEY_TI_CL430_VERSION_CHECK( major,
     minor,
     patch 
    )   (0)
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_TI_CL6X_VERSION_CHECK

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    #define JSON_HEDLEY_TI_CL6X_VERSION_CHECK( major,
     minor,
     patch 
    )   (0)
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_TI_CL7X_VERSION_CHECK

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    #define JSON_HEDLEY_TI_CL7X_VERSION_CHECK( major,
     minor,
     patch 
    )   (0)
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_TI_CLPRU_VERSION_CHECK

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    #define JSON_HEDLEY_TI_CLPRU_VERSION_CHECK( major,
     minor,
     patch 
    )   (0)
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_TI_VERSION_CHECK

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    #define JSON_HEDLEY_TI_VERSION_CHECK( major,
     minor,
     patch 
    )   (0)
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_TINYC_VERSION_CHECK

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    #define JSON_HEDLEY_TINYC_VERSION_CHECK( major,
     minor,
     patch 
    )   (0)
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_UNAVAILABLE

    - -
    -
    - - - - - - - - -
    #define JSON_HEDLEY_UNAVAILABLE( available_since)
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_UNLIKELY

    - -
    -
    - - - - - - - - -
    #define JSON_HEDLEY_UNLIKELY( expr)   (!!(expr))
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_UNPREDICTABLE

    - -
    -
    - - - - - - - - -
    #define JSON_HEDLEY_UNPREDICTABLE( expr)   JSON_HEDLEY_PREDICT(expr, 1, 0.5)
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_UNREACHABLE

    - -
    -
    - - - - - - - -
    #define JSON_HEDLEY_UNREACHABLE()   JSON_HEDLEY_ASSUME(0)
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_UNREACHABLE_RETURN

    - -
    -
    - - - - - - - - -
    #define JSON_HEDLEY_UNREACHABLE_RETURN( value)   return (value)
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_VERSION

    - -
    -
    - - - - -
    #define JSON_HEDLEY_VERSION   13
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_VERSION_DECODE_MAJOR

    - -
    -
    - - - - - - - - -
    #define JSON_HEDLEY_VERSION_DECODE_MAJOR( version)   ((version) / 1000000)
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_VERSION_DECODE_MINOR

    - -
    -
    - - - - - - - - -
    #define JSON_HEDLEY_VERSION_DECODE_MINOR( version)   (((version) % 1000000) / 1000)
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_VERSION_DECODE_REVISION

    - -
    -
    - - - - - - - - -
    #define JSON_HEDLEY_VERSION_DECODE_REVISION( version)   ((version) % 1000)
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_VERSION_ENCODE

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    #define JSON_HEDLEY_VERSION_ENCODE( major,
     minor,
     revision 
    )   (((major) * 1000000) + ((minor) * 1000) + (revision))
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_WARN_UNUSED_RESULT

    - -
    -
    - - - - -
    #define JSON_HEDLEY_WARN_UNUSED_RESULT
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_WARN_UNUSED_RESULT_MSG

    - -
    -
    - - - - - - - - -
    #define JSON_HEDLEY_WARN_UNUSED_RESULT_MSG( msg)
    -
    - -
    -
    - -

    ◆ JSON_HEDLEY_WARNING

    - -
    -
    - - - - - - - - -
    #define JSON_HEDLEY_WARNING( msg)   JSON_HEDLEY_MESSAGE(msg)
    -
    - -
    -
    - -

    ◆ JSON_INTERNAL_CATCH

    - -
    -
    - - - - - - - - -
    #define JSON_INTERNAL_CATCH( exception)   if(false)
    -
    - -
    -
    - -

    ◆ JSON_THROW

    - -
    -
    - - - - - - - - -
    #define JSON_THROW( exception)   std::abort()
    -
    - -
    -
    - -

    ◆ JSON_TRY

    - -
    -
    - - - - -
    #define JSON_TRY   if(true)
    -
    - -
    -
    - -

    ◆ JSON_USE_IMPLICIT_CONVERSIONS

    - -
    -
    - - - - -
    #define JSON_USE_IMPLICIT_CONVERSIONS   1
    -
    - -
    -
    - -

    ◆ NLOHMANN_BASIC_JSON_TPL

    - -
    -
    - - - - -
    #define NLOHMANN_BASIC_JSON_TPL
    -
    -Value:
    basic_json<ObjectType, ArrayType, StringType, BooleanType, \
    -
    NumberIntegerType, NumberUnsignedType, NumberFloatType, \
    -
    AllocatorType, JSONSerializer, BinaryType>
    -
    -
    -
    - -

    ◆ NLOHMANN_BASIC_JSON_TPL_DECLARATION

    - -
    -
    - - - - -
    #define NLOHMANN_BASIC_JSON_TPL_DECLARATION
    -
    -Value:
    template<template<typename, typename, typename...> class ObjectType, \
    -
    template<typename, typename...> class ArrayType, \
    -
    class StringType, class BooleanType, class NumberIntegerType, \
    -
    class NumberUnsignedType, class NumberFloatType, \
    -
    template<typename> class AllocatorType, \
    -
    template<typename, typename = void> class JSONSerializer, \
    -
    class BinaryType>
    -
    -
    -
    - -

    ◆ NLOHMANN_DEFINE_TYPE_INTRUSIVE

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    #define NLOHMANN_DEFINE_TYPE_INTRUSIVE( Type,
     ... 
    )
    -
    -Value:
    friend void to_json(nlohmann::json& nlohmann_json_j, const Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_TO, __VA_ARGS__)) } \
    -
    friend void from_json(const nlohmann::json& nlohmann_json_j, Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_FROM, __VA_ARGS__)) }
    -
    -

    macro

    -
    Since
    version 3.9.0
    - -
    -
    - -

    ◆ NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    #define NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE( Type,
     ... 
    )
    -
    -Value:
    inline void to_json(nlohmann::json& nlohmann_json_j, const Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_TO, __VA_ARGS__)) } \
    -
    inline void from_json(const nlohmann::json& nlohmann_json_j, Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_FROM, __VA_ARGS__)) }
    -
    -

    macro

    -
    Since
    version 3.9.0
    - -
    -
    - -

    ◆ NLOHMANN_JSON_EXPAND

    - -
    -
    - - - - - - - - -
    #define NLOHMANN_JSON_EXPAND( x)   x
    -
    - -
    -
    - -

    ◆ NLOHMANN_JSON_FROM

    - -
    -
    - - - - - - - - -
    #define NLOHMANN_JSON_FROM( v1)   nlohmann_json_j.at(#v1).get_to(nlohmann_json_t.v1);
    -
    - -
    -
    - -

    ◆ NLOHMANN_JSON_GET_MACRO

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #define NLOHMANN_JSON_GET_MACRO( _1,
     _2,
     _3,
     _4,
     _5,
     _6,
     _7,
     _8,
     _9,
     _10,
     _11,
     _12,
     _13,
     _14,
     _15,
     _16,
     _17,
     _18,
     _19,
     _20,
     _21,
     _22,
     _23,
     _24,
     _25,
     _26,
     _27,
     _28,
     _29,
     _30,
     _31,
     _32,
     _33,
     _34,
     _35,
     _36,
     _37,
     _38,
     _39,
     _40,
     _41,
     _42,
     _43,
     _44,
     _45,
     _46,
     _47,
     _48,
     _49,
     _50,
     _51,
     _52,
     _53,
     _54,
     _55,
     _56,
     _57,
     _58,
     _59,
     _60,
     _61,
     _62,
     _63,
     _64,
     NAME,
     ... 
    )   NAME
    -
    - -
    -
    - -

    ◆ NLOHMANN_JSON_PASTE

    - -
    -
    - - - - - - - - -
    #define NLOHMANN_JSON_PASTE( ...)
    -
    - -
    -
    - -

    ◆ NLOHMANN_JSON_PASTE10

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #define NLOHMANN_JSON_PASTE10( func,
     v1,
     v2,
     v3,
     v4,
     v5,
     v6,
     v7,
     v8,
     v9 
    )   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE9(func, v2, v3, v4, v5, v6, v7, v8, v9)
    -
    - -
    -
    - -

    ◆ NLOHMANN_JSON_PASTE11

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #define NLOHMANN_JSON_PASTE11( func,
     v1,
     v2,
     v3,
     v4,
     v5,
     v6,
     v7,
     v8,
     v9,
     v10 
    )   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE10(func, v2, v3, v4, v5, v6, v7, v8, v9, v10)
    -
    - -
    -
    - -

    ◆ NLOHMANN_JSON_PASTE12

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #define NLOHMANN_JSON_PASTE12( func,
     v1,
     v2,
     v3,
     v4,
     v5,
     v6,
     v7,
     v8,
     v9,
     v10,
     v11 
    )   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE11(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11)
    -
    - -
    -
    - -

    ◆ NLOHMANN_JSON_PASTE13

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #define NLOHMANN_JSON_PASTE13( func,
     v1,
     v2,
     v3,
     v4,
     v5,
     v6,
     v7,
     v8,
     v9,
     v10,
     v11,
     v12 
    )   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE12(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12)
    -
    - -
    -
    - -

    ◆ NLOHMANN_JSON_PASTE14

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #define NLOHMANN_JSON_PASTE14( func,
     v1,
     v2,
     v3,
     v4,
     v5,
     v6,
     v7,
     v8,
     v9,
     v10,
     v11,
     v12,
     v13 
    )   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE13(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13)
    -
    - -
    -
    - -

    ◆ NLOHMANN_JSON_PASTE15

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #define NLOHMANN_JSON_PASTE15( func,
     v1,
     v2,
     v3,
     v4,
     v5,
     v6,
     v7,
     v8,
     v9,
     v10,
     v11,
     v12,
     v13,
     v14 
    )   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE14(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14)
    -
    - -
    -
    - -

    ◆ NLOHMANN_JSON_PASTE16

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #define NLOHMANN_JSON_PASTE16( func,
     v1,
     v2,
     v3,
     v4,
     v5,
     v6,
     v7,
     v8,
     v9,
     v10,
     v11,
     v12,
     v13,
     v14,
     v15 
    )   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE15(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15)
    -
    - -
    -
    - -

    ◆ NLOHMANN_JSON_PASTE17

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #define NLOHMANN_JSON_PASTE17( func,
     v1,
     v2,
     v3,
     v4,
     v5,
     v6,
     v7,
     v8,
     v9,
     v10,
     v11,
     v12,
     v13,
     v14,
     v15,
     v16 
    )   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE16(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16)
    -
    - -
    -
    - -

    ◆ NLOHMANN_JSON_PASTE18

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #define NLOHMANN_JSON_PASTE18( func,
     v1,
     v2,
     v3,
     v4,
     v5,
     v6,
     v7,
     v8,
     v9,
     v10,
     v11,
     v12,
     v13,
     v14,
     v15,
     v16,
     v17 
    )   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE17(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17)
    -
    - -
    -
    - -

    ◆ NLOHMANN_JSON_PASTE19

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #define NLOHMANN_JSON_PASTE19( func,
     v1,
     v2,
     v3,
     v4,
     v5,
     v6,
     v7,
     v8,
     v9,
     v10,
     v11,
     v12,
     v13,
     v14,
     v15,
     v16,
     v17,
     v18 
    )   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE18(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18)
    -
    - -
    -
    - -

    ◆ NLOHMANN_JSON_PASTE2

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    #define NLOHMANN_JSON_PASTE2( func,
     v1 
    )   func(v1)
    -
    - -
    -
    - -

    ◆ NLOHMANN_JSON_PASTE20

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #define NLOHMANN_JSON_PASTE20( func,
     v1,
     v2,
     v3,
     v4,
     v5,
     v6,
     v7,
     v8,
     v9,
     v10,
     v11,
     v12,
     v13,
     v14,
     v15,
     v16,
     v17,
     v18,
     v19 
    )   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE19(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19)
    -
    - -
    -
    - -

    ◆ NLOHMANN_JSON_PASTE21

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #define NLOHMANN_JSON_PASTE21( func,
     v1,
     v2,
     v3,
     v4,
     v5,
     v6,
     v7,
     v8,
     v9,
     v10,
     v11,
     v12,
     v13,
     v14,
     v15,
     v16,
     v17,
     v18,
     v19,
     v20 
    )   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE20(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20)
    -
    - -
    -
    - -

    ◆ NLOHMANN_JSON_PASTE22

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #define NLOHMANN_JSON_PASTE22( func,
     v1,
     v2,
     v3,
     v4,
     v5,
     v6,
     v7,
     v8,
     v9,
     v10,
     v11,
     v12,
     v13,
     v14,
     v15,
     v16,
     v17,
     v18,
     v19,
     v20,
     v21 
    )   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE21(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21)
    -
    - -
    -
    - -

    ◆ NLOHMANN_JSON_PASTE23

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #define NLOHMANN_JSON_PASTE23( func,
     v1,
     v2,
     v3,
     v4,
     v5,
     v6,
     v7,
     v8,
     v9,
     v10,
     v11,
     v12,
     v13,
     v14,
     v15,
     v16,
     v17,
     v18,
     v19,
     v20,
     v21,
     v22 
    )   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE22(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22)
    -
    - -
    -
    - -

    ◆ NLOHMANN_JSON_PASTE24

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #define NLOHMANN_JSON_PASTE24( func,
     v1,
     v2,
     v3,
     v4,
     v5,
     v6,
     v7,
     v8,
     v9,
     v10,
     v11,
     v12,
     v13,
     v14,
     v15,
     v16,
     v17,
     v18,
     v19,
     v20,
     v21,
     v22,
     v23 
    )   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE23(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23)
    -
    - -
    -
    - -

    ◆ NLOHMANN_JSON_PASTE25

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #define NLOHMANN_JSON_PASTE25( func,
     v1,
     v2,
     v3,
     v4,
     v5,
     v6,
     v7,
     v8,
     v9,
     v10,
     v11,
     v12,
     v13,
     v14,
     v15,
     v16,
     v17,
     v18,
     v19,
     v20,
     v21,
     v22,
     v23,
     v24 
    )   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE24(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24)
    -
    - -
    -
    - -

    ◆ NLOHMANN_JSON_PASTE26

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #define NLOHMANN_JSON_PASTE26( func,
     v1,
     v2,
     v3,
     v4,
     v5,
     v6,
     v7,
     v8,
     v9,
     v10,
     v11,
     v12,
     v13,
     v14,
     v15,
     v16,
     v17,
     v18,
     v19,
     v20,
     v21,
     v22,
     v23,
     v24,
     v25 
    )   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE25(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25)
    -
    - -
    -
    - -

    ◆ NLOHMANN_JSON_PASTE27

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #define NLOHMANN_JSON_PASTE27( func,
     v1,
     v2,
     v3,
     v4,
     v5,
     v6,
     v7,
     v8,
     v9,
     v10,
     v11,
     v12,
     v13,
     v14,
     v15,
     v16,
     v17,
     v18,
     v19,
     v20,
     v21,
     v22,
     v23,
     v24,
     v25,
     v26 
    )   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE26(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26)
    -
    - -
    -
    - -

    ◆ NLOHMANN_JSON_PASTE28

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #define NLOHMANN_JSON_PASTE28( func,
     v1,
     v2,
     v3,
     v4,
     v5,
     v6,
     v7,
     v8,
     v9,
     v10,
     v11,
     v12,
     v13,
     v14,
     v15,
     v16,
     v17,
     v18,
     v19,
     v20,
     v21,
     v22,
     v23,
     v24,
     v25,
     v26,
     v27 
    )   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE27(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27)
    -
    - -
    -
    - -

    ◆ NLOHMANN_JSON_PASTE29

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #define NLOHMANN_JSON_PASTE29( func,
     v1,
     v2,
     v3,
     v4,
     v5,
     v6,
     v7,
     v8,
     v9,
     v10,
     v11,
     v12,
     v13,
     v14,
     v15,
     v16,
     v17,
     v18,
     v19,
     v20,
     v21,
     v22,
     v23,
     v24,
     v25,
     v26,
     v27,
     v28 
    )   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE28(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28)
    -
    - -
    -
    - -

    ◆ NLOHMANN_JSON_PASTE3

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    #define NLOHMANN_JSON_PASTE3( func,
     v1,
     v2 
    )   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE2(func, v2)
    -
    - -
    -
    - -

    ◆ NLOHMANN_JSON_PASTE30

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #define NLOHMANN_JSON_PASTE30( func,
     v1,
     v2,
     v3,
     v4,
     v5,
     v6,
     v7,
     v8,
     v9,
     v10,
     v11,
     v12,
     v13,
     v14,
     v15,
     v16,
     v17,
     v18,
     v19,
     v20,
     v21,
     v22,
     v23,
     v24,
     v25,
     v26,
     v27,
     v28,
     v29 
    )   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE29(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29)
    -
    - -
    -
    - -

    ◆ NLOHMANN_JSON_PASTE31

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #define NLOHMANN_JSON_PASTE31( func,
     v1,
     v2,
     v3,
     v4,
     v5,
     v6,
     v7,
     v8,
     v9,
     v10,
     v11,
     v12,
     v13,
     v14,
     v15,
     v16,
     v17,
     v18,
     v19,
     v20,
     v21,
     v22,
     v23,
     v24,
     v25,
     v26,
     v27,
     v28,
     v29,
     v30 
    )   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE30(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30)
    -
    - -
    -
    - -

    ◆ NLOHMANN_JSON_PASTE32

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #define NLOHMANN_JSON_PASTE32( func,
     v1,
     v2,
     v3,
     v4,
     v5,
     v6,
     v7,
     v8,
     v9,
     v10,
     v11,
     v12,
     v13,
     v14,
     v15,
     v16,
     v17,
     v18,
     v19,
     v20,
     v21,
     v22,
     v23,
     v24,
     v25,
     v26,
     v27,
     v28,
     v29,
     v30,
     v31 
    )   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE31(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31)
    -
    - -
    -
    - -

    ◆ NLOHMANN_JSON_PASTE33

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #define NLOHMANN_JSON_PASTE33( func,
     v1,
     v2,
     v3,
     v4,
     v5,
     v6,
     v7,
     v8,
     v9,
     v10,
     v11,
     v12,
     v13,
     v14,
     v15,
     v16,
     v17,
     v18,
     v19,
     v20,
     v21,
     v22,
     v23,
     v24,
     v25,
     v26,
     v27,
     v28,
     v29,
     v30,
     v31,
     v32 
    )   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE32(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32)
    -
    - -
    -
    - -

    ◆ NLOHMANN_JSON_PASTE34

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #define NLOHMANN_JSON_PASTE34( func,
     v1,
     v2,
     v3,
     v4,
     v5,
     v6,
     v7,
     v8,
     v9,
     v10,
     v11,
     v12,
     v13,
     v14,
     v15,
     v16,
     v17,
     v18,
     v19,
     v20,
     v21,
     v22,
     v23,
     v24,
     v25,
     v26,
     v27,
     v28,
     v29,
     v30,
     v31,
     v32,
     v33 
    )   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE33(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33)
    -
    - -
    -
    - -

    ◆ NLOHMANN_JSON_PASTE35

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #define NLOHMANN_JSON_PASTE35( func,
     v1,
     v2,
     v3,
     v4,
     v5,
     v6,
     v7,
     v8,
     v9,
     v10,
     v11,
     v12,
     v13,
     v14,
     v15,
     v16,
     v17,
     v18,
     v19,
     v20,
     v21,
     v22,
     v23,
     v24,
     v25,
     v26,
     v27,
     v28,
     v29,
     v30,
     v31,
     v32,
     v33,
     v34 
    )   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE34(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34)
    -
    - -
    -
    - -

    ◆ NLOHMANN_JSON_PASTE36

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #define NLOHMANN_JSON_PASTE36( func,
     v1,
     v2,
     v3,
     v4,
     v5,
     v6,
     v7,
     v8,
     v9,
     v10,
     v11,
     v12,
     v13,
     v14,
     v15,
     v16,
     v17,
     v18,
     v19,
     v20,
     v21,
     v22,
     v23,
     v24,
     v25,
     v26,
     v27,
     v28,
     v29,
     v30,
     v31,
     v32,
     v33,
     v34,
     v35 
    )   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE35(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35)
    -
    - -
    -
    - -

    ◆ NLOHMANN_JSON_PASTE37

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #define NLOHMANN_JSON_PASTE37( func,
     v1,
     v2,
     v3,
     v4,
     v5,
     v6,
     v7,
     v8,
     v9,
     v10,
     v11,
     v12,
     v13,
     v14,
     v15,
     v16,
     v17,
     v18,
     v19,
     v20,
     v21,
     v22,
     v23,
     v24,
     v25,
     v26,
     v27,
     v28,
     v29,
     v30,
     v31,
     v32,
     v33,
     v34,
     v35,
     v36 
    )   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE36(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36)
    -
    - -
    -
    - -

    ◆ NLOHMANN_JSON_PASTE38

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #define NLOHMANN_JSON_PASTE38( func,
     v1,
     v2,
     v3,
     v4,
     v5,
     v6,
     v7,
     v8,
     v9,
     v10,
     v11,
     v12,
     v13,
     v14,
     v15,
     v16,
     v17,
     v18,
     v19,
     v20,
     v21,
     v22,
     v23,
     v24,
     v25,
     v26,
     v27,
     v28,
     v29,
     v30,
     v31,
     v32,
     v33,
     v34,
     v35,
     v36,
     v37 
    )   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE37(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37)
    -
    - -
    -
    - -

    ◆ NLOHMANN_JSON_PASTE39

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #define NLOHMANN_JSON_PASTE39( func,
     v1,
     v2,
     v3,
     v4,
     v5,
     v6,
     v7,
     v8,
     v9,
     v10,
     v11,
     v12,
     v13,
     v14,
     v15,
     v16,
     v17,
     v18,
     v19,
     v20,
     v21,
     v22,
     v23,
     v24,
     v25,
     v26,
     v27,
     v28,
     v29,
     v30,
     v31,
     v32,
     v33,
     v34,
     v35,
     v36,
     v37,
     v38 
    )   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE38(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38)
    -
    - -
    -
    - -

    ◆ NLOHMANN_JSON_PASTE4

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #define NLOHMANN_JSON_PASTE4( func,
     v1,
     v2,
     v3 
    )   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE3(func, v2, v3)
    -
    - -
    -
    - -

    ◆ NLOHMANN_JSON_PASTE40

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #define NLOHMANN_JSON_PASTE40( func,
     v1,
     v2,
     v3,
     v4,
     v5,
     v6,
     v7,
     v8,
     v9,
     v10,
     v11,
     v12,
     v13,
     v14,
     v15,
     v16,
     v17,
     v18,
     v19,
     v20,
     v21,
     v22,
     v23,
     v24,
     v25,
     v26,
     v27,
     v28,
     v29,
     v30,
     v31,
     v32,
     v33,
     v34,
     v35,
     v36,
     v37,
     v38,
     v39 
    )   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE39(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39)
    -
    - -
    -
    - -

    ◆ NLOHMANN_JSON_PASTE41

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #define NLOHMANN_JSON_PASTE41( func,
     v1,
     v2,
     v3,
     v4,
     v5,
     v6,
     v7,
     v8,
     v9,
     v10,
     v11,
     v12,
     v13,
     v14,
     v15,
     v16,
     v17,
     v18,
     v19,
     v20,
     v21,
     v22,
     v23,
     v24,
     v25,
     v26,
     v27,
     v28,
     v29,
     v30,
     v31,
     v32,
     v33,
     v34,
     v35,
     v36,
     v37,
     v38,
     v39,
     v40 
    )   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE40(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40)
    -
    - -
    -
    - -

    ◆ NLOHMANN_JSON_PASTE42

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #define NLOHMANN_JSON_PASTE42( func,
     v1,
     v2,
     v3,
     v4,
     v5,
     v6,
     v7,
     v8,
     v9,
     v10,
     v11,
     v12,
     v13,
     v14,
     v15,
     v16,
     v17,
     v18,
     v19,
     v20,
     v21,
     v22,
     v23,
     v24,
     v25,
     v26,
     v27,
     v28,
     v29,
     v30,
     v31,
     v32,
     v33,
     v34,
     v35,
     v36,
     v37,
     v38,
     v39,
     v40,
     v41 
    )   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE41(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41)
    -
    - -
    -
    - -

    ◆ NLOHMANN_JSON_PASTE43

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #define NLOHMANN_JSON_PASTE43( func,
     v1,
     v2,
     v3,
     v4,
     v5,
     v6,
     v7,
     v8,
     v9,
     v10,
     v11,
     v12,
     v13,
     v14,
     v15,
     v16,
     v17,
     v18,
     v19,
     v20,
     v21,
     v22,
     v23,
     v24,
     v25,
     v26,
     v27,
     v28,
     v29,
     v30,
     v31,
     v32,
     v33,
     v34,
     v35,
     v36,
     v37,
     v38,
     v39,
     v40,
     v41,
     v42 
    )   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE42(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42)
    -
    - -
    -
    - -

    ◆ NLOHMANN_JSON_PASTE44

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #define NLOHMANN_JSON_PASTE44( func,
     v1,
     v2,
     v3,
     v4,
     v5,
     v6,
     v7,
     v8,
     v9,
     v10,
     v11,
     v12,
     v13,
     v14,
     v15,
     v16,
     v17,
     v18,
     v19,
     v20,
     v21,
     v22,
     v23,
     v24,
     v25,
     v26,
     v27,
     v28,
     v29,
     v30,
     v31,
     v32,
     v33,
     v34,
     v35,
     v36,
     v37,
     v38,
     v39,
     v40,
     v41,
     v42,
     v43 
    )   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE43(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43)
    -
    - -
    -
    - -

    ◆ NLOHMANN_JSON_PASTE45

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #define NLOHMANN_JSON_PASTE45( func,
     v1,
     v2,
     v3,
     v4,
     v5,
     v6,
     v7,
     v8,
     v9,
     v10,
     v11,
     v12,
     v13,
     v14,
     v15,
     v16,
     v17,
     v18,
     v19,
     v20,
     v21,
     v22,
     v23,
     v24,
     v25,
     v26,
     v27,
     v28,
     v29,
     v30,
     v31,
     v32,
     v33,
     v34,
     v35,
     v36,
     v37,
     v38,
     v39,
     v40,
     v41,
     v42,
     v43,
     v44 
    )   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE44(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44)
    -
    - -
    -
    - -

    ◆ NLOHMANN_JSON_PASTE46

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #define NLOHMANN_JSON_PASTE46( func,
     v1,
     v2,
     v3,
     v4,
     v5,
     v6,
     v7,
     v8,
     v9,
     v10,
     v11,
     v12,
     v13,
     v14,
     v15,
     v16,
     v17,
     v18,
     v19,
     v20,
     v21,
     v22,
     v23,
     v24,
     v25,
     v26,
     v27,
     v28,
     v29,
     v30,
     v31,
     v32,
     v33,
     v34,
     v35,
     v36,
     v37,
     v38,
     v39,
     v40,
     v41,
     v42,
     v43,
     v44,
     v45 
    )   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE45(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45)
    -
    - -
    -
    - -

    ◆ NLOHMANN_JSON_PASTE47

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #define NLOHMANN_JSON_PASTE47( func,
     v1,
     v2,
     v3,
     v4,
     v5,
     v6,
     v7,
     v8,
     v9,
     v10,
     v11,
     v12,
     v13,
     v14,
     v15,
     v16,
     v17,
     v18,
     v19,
     v20,
     v21,
     v22,
     v23,
     v24,
     v25,
     v26,
     v27,
     v28,
     v29,
     v30,
     v31,
     v32,
     v33,
     v34,
     v35,
     v36,
     v37,
     v38,
     v39,
     v40,
     v41,
     v42,
     v43,
     v44,
     v45,
     v46 
    )   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE46(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46)
    -
    - -
    -
    - -

    ◆ NLOHMANN_JSON_PASTE48

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #define NLOHMANN_JSON_PASTE48( func,
     v1,
     v2,
     v3,
     v4,
     v5,
     v6,
     v7,
     v8,
     v9,
     v10,
     v11,
     v12,
     v13,
     v14,
     v15,
     v16,
     v17,
     v18,
     v19,
     v20,
     v21,
     v22,
     v23,
     v24,
     v25,
     v26,
     v27,
     v28,
     v29,
     v30,
     v31,
     v32,
     v33,
     v34,
     v35,
     v36,
     v37,
     v38,
     v39,
     v40,
     v41,
     v42,
     v43,
     v44,
     v45,
     v46,
     v47 
    )   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE47(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47)
    -
    - -
    -
    - -

    ◆ NLOHMANN_JSON_PASTE49

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #define NLOHMANN_JSON_PASTE49( func,
     v1,
     v2,
     v3,
     v4,
     v5,
     v6,
     v7,
     v8,
     v9,
     v10,
     v11,
     v12,
     v13,
     v14,
     v15,
     v16,
     v17,
     v18,
     v19,
     v20,
     v21,
     v22,
     v23,
     v24,
     v25,
     v26,
     v27,
     v28,
     v29,
     v30,
     v31,
     v32,
     v33,
     v34,
     v35,
     v36,
     v37,
     v38,
     v39,
     v40,
     v41,
     v42,
     v43,
     v44,
     v45,
     v46,
     v47,
     v48 
    )   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE48(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48)
    -
    - -
    -
    - -

    ◆ NLOHMANN_JSON_PASTE5

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #define NLOHMANN_JSON_PASTE5( func,
     v1,
     v2,
     v3,
     v4 
    )   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE4(func, v2, v3, v4)
    -
    - -
    -
    - -

    ◆ NLOHMANN_JSON_PASTE50

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #define NLOHMANN_JSON_PASTE50( func,
     v1,
     v2,
     v3,
     v4,
     v5,
     v6,
     v7,
     v8,
     v9,
     v10,
     v11,
     v12,
     v13,
     v14,
     v15,
     v16,
     v17,
     v18,
     v19,
     v20,
     v21,
     v22,
     v23,
     v24,
     v25,
     v26,
     v27,
     v28,
     v29,
     v30,
     v31,
     v32,
     v33,
     v34,
     v35,
     v36,
     v37,
     v38,
     v39,
     v40,
     v41,
     v42,
     v43,
     v44,
     v45,
     v46,
     v47,
     v48,
     v49 
    )   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE49(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49)
    -
    - -
    -
    - -

    ◆ NLOHMANN_JSON_PASTE51

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #define NLOHMANN_JSON_PASTE51( func,
     v1,
     v2,
     v3,
     v4,
     v5,
     v6,
     v7,
     v8,
     v9,
     v10,
     v11,
     v12,
     v13,
     v14,
     v15,
     v16,
     v17,
     v18,
     v19,
     v20,
     v21,
     v22,
     v23,
     v24,
     v25,
     v26,
     v27,
     v28,
     v29,
     v30,
     v31,
     v32,
     v33,
     v34,
     v35,
     v36,
     v37,
     v38,
     v39,
     v40,
     v41,
     v42,
     v43,
     v44,
     v45,
     v46,
     v47,
     v48,
     v49,
     v50 
    )   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE50(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50)
    -
    - -
    -
    - -

    ◆ NLOHMANN_JSON_PASTE52

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #define NLOHMANN_JSON_PASTE52( func,
     v1,
     v2,
     v3,
     v4,
     v5,
     v6,
     v7,
     v8,
     v9,
     v10,
     v11,
     v12,
     v13,
     v14,
     v15,
     v16,
     v17,
     v18,
     v19,
     v20,
     v21,
     v22,
     v23,
     v24,
     v25,
     v26,
     v27,
     v28,
     v29,
     v30,
     v31,
     v32,
     v33,
     v34,
     v35,
     v36,
     v37,
     v38,
     v39,
     v40,
     v41,
     v42,
     v43,
     v44,
     v45,
     v46,
     v47,
     v48,
     v49,
     v50,
     v51 
    )   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE51(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51)
    -
    - -
    -
    - -

    ◆ NLOHMANN_JSON_PASTE53

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #define NLOHMANN_JSON_PASTE53( func,
     v1,
     v2,
     v3,
     v4,
     v5,
     v6,
     v7,
     v8,
     v9,
     v10,
     v11,
     v12,
     v13,
     v14,
     v15,
     v16,
     v17,
     v18,
     v19,
     v20,
     v21,
     v22,
     v23,
     v24,
     v25,
     v26,
     v27,
     v28,
     v29,
     v30,
     v31,
     v32,
     v33,
     v34,
     v35,
     v36,
     v37,
     v38,
     v39,
     v40,
     v41,
     v42,
     v43,
     v44,
     v45,
     v46,
     v47,
     v48,
     v49,
     v50,
     v51,
     v52 
    )   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE52(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52)
    -
    - -
    -
    - -

    ◆ NLOHMANN_JSON_PASTE54

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #define NLOHMANN_JSON_PASTE54( func,
     v1,
     v2,
     v3,
     v4,
     v5,
     v6,
     v7,
     v8,
     v9,
     v10,
     v11,
     v12,
     v13,
     v14,
     v15,
     v16,
     v17,
     v18,
     v19,
     v20,
     v21,
     v22,
     v23,
     v24,
     v25,
     v26,
     v27,
     v28,
     v29,
     v30,
     v31,
     v32,
     v33,
     v34,
     v35,
     v36,
     v37,
     v38,
     v39,
     v40,
     v41,
     v42,
     v43,
     v44,
     v45,
     v46,
     v47,
     v48,
     v49,
     v50,
     v51,
     v52,
     v53 
    )   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE53(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53)
    -
    - -
    -
    - -

    ◆ NLOHMANN_JSON_PASTE55

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #define NLOHMANN_JSON_PASTE55( func,
     v1,
     v2,
     v3,
     v4,
     v5,
     v6,
     v7,
     v8,
     v9,
     v10,
     v11,
     v12,
     v13,
     v14,
     v15,
     v16,
     v17,
     v18,
     v19,
     v20,
     v21,
     v22,
     v23,
     v24,
     v25,
     v26,
     v27,
     v28,
     v29,
     v30,
     v31,
     v32,
     v33,
     v34,
     v35,
     v36,
     v37,
     v38,
     v39,
     v40,
     v41,
     v42,
     v43,
     v44,
     v45,
     v46,
     v47,
     v48,
     v49,
     v50,
     v51,
     v52,
     v53,
     v54 
    )   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE54(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54)
    -
    - -
    -
    - -

    ◆ NLOHMANN_JSON_PASTE56

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #define NLOHMANN_JSON_PASTE56( func,
     v1,
     v2,
     v3,
     v4,
     v5,
     v6,
     v7,
     v8,
     v9,
     v10,
     v11,
     v12,
     v13,
     v14,
     v15,
     v16,
     v17,
     v18,
     v19,
     v20,
     v21,
     v22,
     v23,
     v24,
     v25,
     v26,
     v27,
     v28,
     v29,
     v30,
     v31,
     v32,
     v33,
     v34,
     v35,
     v36,
     v37,
     v38,
     v39,
     v40,
     v41,
     v42,
     v43,
     v44,
     v45,
     v46,
     v47,
     v48,
     v49,
     v50,
     v51,
     v52,
     v53,
     v54,
     v55 
    )   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE55(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55)
    -
    - -
    -
    - -

    ◆ NLOHMANN_JSON_PASTE57

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #define NLOHMANN_JSON_PASTE57( func,
     v1,
     v2,
     v3,
     v4,
     v5,
     v6,
     v7,
     v8,
     v9,
     v10,
     v11,
     v12,
     v13,
     v14,
     v15,
     v16,
     v17,
     v18,
     v19,
     v20,
     v21,
     v22,
     v23,
     v24,
     v25,
     v26,
     v27,
     v28,
     v29,
     v30,
     v31,
     v32,
     v33,
     v34,
     v35,
     v36,
     v37,
     v38,
     v39,
     v40,
     v41,
     v42,
     v43,
     v44,
     v45,
     v46,
     v47,
     v48,
     v49,
     v50,
     v51,
     v52,
     v53,
     v54,
     v55,
     v56 
    )   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE56(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56)
    -
    - -
    -
    - -

    ◆ NLOHMANN_JSON_PASTE58

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #define NLOHMANN_JSON_PASTE58( func,
     v1,
     v2,
     v3,
     v4,
     v5,
     v6,
     v7,
     v8,
     v9,
     v10,
     v11,
     v12,
     v13,
     v14,
     v15,
     v16,
     v17,
     v18,
     v19,
     v20,
     v21,
     v22,
     v23,
     v24,
     v25,
     v26,
     v27,
     v28,
     v29,
     v30,
     v31,
     v32,
     v33,
     v34,
     v35,
     v36,
     v37,
     v38,
     v39,
     v40,
     v41,
     v42,
     v43,
     v44,
     v45,
     v46,
     v47,
     v48,
     v49,
     v50,
     v51,
     v52,
     v53,
     v54,
     v55,
     v56,
     v57 
    )   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE57(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57)
    -
    - -
    -
    - -

    ◆ NLOHMANN_JSON_PASTE59

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #define NLOHMANN_JSON_PASTE59( func,
     v1,
     v2,
     v3,
     v4,
     v5,
     v6,
     v7,
     v8,
     v9,
     v10,
     v11,
     v12,
     v13,
     v14,
     v15,
     v16,
     v17,
     v18,
     v19,
     v20,
     v21,
     v22,
     v23,
     v24,
     v25,
     v26,
     v27,
     v28,
     v29,
     v30,
     v31,
     v32,
     v33,
     v34,
     v35,
     v36,
     v37,
     v38,
     v39,
     v40,
     v41,
     v42,
     v43,
     v44,
     v45,
     v46,
     v47,
     v48,
     v49,
     v50,
     v51,
     v52,
     v53,
     v54,
     v55,
     v56,
     v57,
     v58 
    )   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE58(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58)
    -
    - -
    -
    - -

    ◆ NLOHMANN_JSON_PASTE6

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #define NLOHMANN_JSON_PASTE6( func,
     v1,
     v2,
     v3,
     v4,
     v5 
    )   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE5(func, v2, v3, v4, v5)
    -
    - -
    -
    - -

    ◆ NLOHMANN_JSON_PASTE60

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #define NLOHMANN_JSON_PASTE60( func,
     v1,
     v2,
     v3,
     v4,
     v5,
     v6,
     v7,
     v8,
     v9,
     v10,
     v11,
     v12,
     v13,
     v14,
     v15,
     v16,
     v17,
     v18,
     v19,
     v20,
     v21,
     v22,
     v23,
     v24,
     v25,
     v26,
     v27,
     v28,
     v29,
     v30,
     v31,
     v32,
     v33,
     v34,
     v35,
     v36,
     v37,
     v38,
     v39,
     v40,
     v41,
     v42,
     v43,
     v44,
     v45,
     v46,
     v47,
     v48,
     v49,
     v50,
     v51,
     v52,
     v53,
     v54,
     v55,
     v56,
     v57,
     v58,
     v59 
    )   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE59(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59)
    -
    - -
    -
    - -

    ◆ NLOHMANN_JSON_PASTE61

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #define NLOHMANN_JSON_PASTE61( func,
     v1,
     v2,
     v3,
     v4,
     v5,
     v6,
     v7,
     v8,
     v9,
     v10,
     v11,
     v12,
     v13,
     v14,
     v15,
     v16,
     v17,
     v18,
     v19,
     v20,
     v21,
     v22,
     v23,
     v24,
     v25,
     v26,
     v27,
     v28,
     v29,
     v30,
     v31,
     v32,
     v33,
     v34,
     v35,
     v36,
     v37,
     v38,
     v39,
     v40,
     v41,
     v42,
     v43,
     v44,
     v45,
     v46,
     v47,
     v48,
     v49,
     v50,
     v51,
     v52,
     v53,
     v54,
     v55,
     v56,
     v57,
     v58,
     v59,
     v60 
    )   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE60(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60)
    -
    - -
    -
    - -

    ◆ NLOHMANN_JSON_PASTE62

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #define NLOHMANN_JSON_PASTE62( func,
     v1,
     v2,
     v3,
     v4,
     v5,
     v6,
     v7,
     v8,
     v9,
     v10,
     v11,
     v12,
     v13,
     v14,
     v15,
     v16,
     v17,
     v18,
     v19,
     v20,
     v21,
     v22,
     v23,
     v24,
     v25,
     v26,
     v27,
     v28,
     v29,
     v30,
     v31,
     v32,
     v33,
     v34,
     v35,
     v36,
     v37,
     v38,
     v39,
     v40,
     v41,
     v42,
     v43,
     v44,
     v45,
     v46,
     v47,
     v48,
     v49,
     v50,
     v51,
     v52,
     v53,
     v54,
     v55,
     v56,
     v57,
     v58,
     v59,
     v60,
     v61 
    )   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE61(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60, v61)
    -
    - -
    -
    - -

    ◆ NLOHMANN_JSON_PASTE63

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #define NLOHMANN_JSON_PASTE63( func,
     v1,
     v2,
     v3,
     v4,
     v5,
     v6,
     v7,
     v8,
     v9,
     v10,
     v11,
     v12,
     v13,
     v14,
     v15,
     v16,
     v17,
     v18,
     v19,
     v20,
     v21,
     v22,
     v23,
     v24,
     v25,
     v26,
     v27,
     v28,
     v29,
     v30,
     v31,
     v32,
     v33,
     v34,
     v35,
     v36,
     v37,
     v38,
     v39,
     v40,
     v41,
     v42,
     v43,
     v44,
     v45,
     v46,
     v47,
     v48,
     v49,
     v50,
     v51,
     v52,
     v53,
     v54,
     v55,
     v56,
     v57,
     v58,
     v59,
     v60,
     v61,
     v62 
    )   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE62(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60, v61, v62)
    -
    - -
    -
    - -

    ◆ NLOHMANN_JSON_PASTE64

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #define NLOHMANN_JSON_PASTE64( func,
     v1,
     v2,
     v3,
     v4,
     v5,
     v6,
     v7,
     v8,
     v9,
     v10,
     v11,
     v12,
     v13,
     v14,
     v15,
     v16,
     v17,
     v18,
     v19,
     v20,
     v21,
     v22,
     v23,
     v24,
     v25,
     v26,
     v27,
     v28,
     v29,
     v30,
     v31,
     v32,
     v33,
     v34,
     v35,
     v36,
     v37,
     v38,
     v39,
     v40,
     v41,
     v42,
     v43,
     v44,
     v45,
     v46,
     v47,
     v48,
     v49,
     v50,
     v51,
     v52,
     v53,
     v54,
     v55,
     v56,
     v57,
     v58,
     v59,
     v60,
     v61,
     v62,
     v63 
    )   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE63(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60, v61, v62, v63)
    -
    - -
    -
    - -

    ◆ NLOHMANN_JSON_PASTE7

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #define NLOHMANN_JSON_PASTE7( func,
     v1,
     v2,
     v3,
     v4,
     v5,
     v6 
    )   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE6(func, v2, v3, v4, v5, v6)
    -
    - -
    -
    - -

    ◆ NLOHMANN_JSON_PASTE8

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #define NLOHMANN_JSON_PASTE8( func,
     v1,
     v2,
     v3,
     v4,
     v5,
     v6,
     v7 
    )   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE7(func, v2, v3, v4, v5, v6, v7)
    -
    - -
    -
    - -

    ◆ NLOHMANN_JSON_PASTE9

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #define NLOHMANN_JSON_PASTE9( func,
     v1,
     v2,
     v3,
     v4,
     v5,
     v6,
     v7,
     v8 
    )   NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE8(func, v2, v3, v4, v5, v6, v7, v8)
    -
    - -
    -
    - -

    ◆ NLOHMANN_JSON_SERIALIZE_ENUM

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    #define NLOHMANN_JSON_SERIALIZE_ENUM( ENUM_TYPE,
     ... 
    )
    -
    -Value:
    template<typename BasicJsonType> \
    -
    inline void to_json(BasicJsonType& j, const ENUM_TYPE& e) \
    -
    { \
    -
    static_assert(std::is_enum<ENUM_TYPE>::value, #ENUM_TYPE " must be an enum!"); \
    -
    static const std::pair<ENUM_TYPE, BasicJsonType> m[] = __VA_ARGS__; \
    -
    auto it = std::find_if(std::begin(m), std::end(m), \
    -
    [e](const std::pair<ENUM_TYPE, BasicJsonType>& ej_pair) -> bool \
    -
    { \
    -
    return ej_pair.first == e; \
    -
    }); \
    -
    j = ((it != std::end(m)) ? it : std::begin(m))->second; \
    -
    } \
    -
    template<typename BasicJsonType> \
    -
    inline void from_json(const BasicJsonType& j, ENUM_TYPE& e) \
    -
    { \
    -
    static_assert(std::is_enum<ENUM_TYPE>::value, #ENUM_TYPE " must be an enum!"); \
    -
    static const std::pair<ENUM_TYPE, BasicJsonType> m[] = __VA_ARGS__; \
    -
    auto it = std::find_if(std::begin(m), std::end(m), \
    -
    [&j](const std::pair<ENUM_TYPE, BasicJsonType>& ej_pair) -> bool \
    -
    { \
    -
    return ej_pair.second == j; \
    -
    }); \
    -
    e = ((it != std::end(m)) ? it : std::begin(m))->first; \
    -
    }
    -
    -

    macro to briefly define a mapping between an enum and JSON

    -
    Since
    version 3.4.0
    - -
    -
    - -

    ◆ NLOHMANN_JSON_TO

    - -
    -
    - - - - - - - - -
    #define NLOHMANN_JSON_TO( v1)   nlohmann_json_j[#v1] = nlohmann_json_t.v1;
    -
    - -
    -
    - -

    ◆ NLOHMANN_JSON_VERSION_MAJOR

    - -
    -
    - - - - -
    #define NLOHMANN_JSON_VERSION_MAJOR   3
    -
    - -
    -
    - -

    ◆ NLOHMANN_JSON_VERSION_MINOR

    - -
    -
    - - - - -
    #define NLOHMANN_JSON_VERSION_MINOR   9
    -
    - -
    -
    - -

    ◆ NLOHMANN_JSON_VERSION_PATCH

    - -
    -
    - - - - -
    #define NLOHMANN_JSON_VERSION_PATCH   1
    -
    - -
    -
    -

    Function Documentation

    - -

    ◆ operator""_json()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    nlohmann::json operator""_json (const char * s,
    std::size_t n 
    )
    -
    -inline
    -
    - -

    user-defined string literal for JSON values

    -

    This operator implements a user-defined string literal for JSON objects. It can be used by adding "_json" to a string literal and returns a JSON object if no parse error occurred.

    -
    Parameters
    - - - -
    [in]sa string representation of a JSON object
    [in]nthe length of string s
    -
    -
    -
    Returns
    a JSON object
    -
    Since
    version 1.0.0
    - -
    -
    - -

    ◆ operator""_json_pointer()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    nlohmann::json::json_pointer operator""_json_pointer (const char * s,
    std::size_t n 
    )
    -
    -inline
    -
    - -

    user-defined string literal for JSON pointer

    -

    This operator implements a user-defined string literal for JSON Pointers. It can be used by adding "_json_pointer" to a string literal and returns a JSON pointer object if no parse error occurred.

    -
    Parameters
    - - - -
    [in]sa string representation of a JSON Pointer
    [in]nthe length of string s
    -
    -
    -
    Returns
    a JSON pointer object
    -
    Since
    version 2.0.0
    - -
    -
    -
    -
    void from_json(const BasicJsonType &j, typename BasicJsonType::binary_t &bin)
    Definition: json.hpp:3652
    -
    #define NLOHMANN_JSON_TO(v1)
    Definition: json.hpp:2284
    -
    #define NLOHMANN_JSON_FROM(v1)
    Definition: json.hpp:2285
    -
    void to_json(BasicJsonType &j, const typename BasicJsonType::binary_t &bin)
    Definition: json.hpp:4280
    -
    a class to store JSON values
    Definition: json.hpp:2421
    -
    #define NLOHMANN_JSON_PASTE(...)
    Definition: json.hpp:2155
    -
    #define NLOHMANN_JSON_EXPAND(x)
    Definition: json.hpp:2153
    - - - - diff --git a/help/html/third_2nlohmann_2json_8hpp__dep__incl.map b/help/html/third_2nlohmann_2json_8hpp__dep__incl.map deleted file mode 100644 index c03684b..0000000 --- a/help/html/third_2nlohmann_2json_8hpp__dep__incl.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/help/html/third_2nlohmann_2json_8hpp__dep__incl.md5 b/help/html/third_2nlohmann_2json_8hpp__dep__incl.md5 deleted file mode 100644 index 34590e5..0000000 --- a/help/html/third_2nlohmann_2json_8hpp__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -817d009baa26e6ce41036dc8756506a2 \ No newline at end of file diff --git a/help/html/third_2nlohmann_2json_8hpp__dep__incl.png b/help/html/third_2nlohmann_2json_8hpp__dep__incl.png deleted file mode 100644 index fae1d58..0000000 Binary files a/help/html/third_2nlohmann_2json_8hpp__dep__incl.png and /dev/null differ diff --git a/help/html/third_2nlohmann_2json_8hpp__incl.map b/help/html/third_2nlohmann_2json_8hpp__incl.map deleted file mode 100644 index 782400e..0000000 --- a/help/html/third_2nlohmann_2json_8hpp__incl.map +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/help/html/third_2nlohmann_2json_8hpp__incl.md5 b/help/html/third_2nlohmann_2json_8hpp__incl.md5 deleted file mode 100644 index bdc3cec..0000000 --- a/help/html/third_2nlohmann_2json_8hpp__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -79ca85fc8f4a67f660c25da73120fb31 \ No newline at end of file diff --git a/help/html/third_2nlohmann_2json_8hpp__incl.png b/help/html/third_2nlohmann_2json_8hpp__incl.png deleted file mode 100644 index 9ff0fa4..0000000 Binary files a/help/html/third_2nlohmann_2json_8hpp__incl.png and /dev/null differ diff --git a/help/html/third_2nlohmann_2json_8hpp_source.html b/help/html/third_2nlohmann_2json_8hpp_source.html deleted file mode 100644 index ef5fa52..0000000 --- a/help/html/third_2nlohmann_2json_8hpp_source.html +++ /dev/null @@ -1,19297 +0,0 @@ - - - - - - - -CocoaTweet: third/nlohmann/json.hpp Source File - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    json.hpp
    -
    -
    -Go to the documentation of this file.
    1 /*
    -
    2  __ _____ _____ _____
    -
    3  __| | __| | | | JSON for Modern C++
    -
    4 | | |__ | | | | | | version 3.9.1
    -
    5 |_____|_____|_____|_|___| https://github.com/nlohmann/json
    -
    6 
    -
    7 Licensed under the MIT License <http://opensource.org/licenses/MIT>.
    -
    8 SPDX-License-Identifier: MIT
    -
    9 Copyright (c) 2013-2019 Niels Lohmann <http://nlohmann.me>.
    -
    10 
    -
    11 Permission is hereby granted, free of charge, to any person obtaining a copy
    -
    12 of this software and associated documentation files (the "Software"), to deal
    -
    13 in the Software without restriction, including without limitation the rights
    -
    14 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
    -
    15 copies of the Software, and to permit persons to whom the Software is
    -
    16 furnished to do so, subject to the following conditions:
    -
    17 
    -
    18 The above copyright notice and this permission notice shall be included in all
    -
    19 copies or substantial portions of the Software.
    -
    20 
    -
    21 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
    -
    22 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    -
    23 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
    -
    24 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
    -
    25 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
    -
    26 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
    -
    27 SOFTWARE.
    -
    28 */
    -
    29 
    -
    30 #ifndef INCLUDE_NLOHMANN_JSON_HPP_
    -
    31 #define INCLUDE_NLOHMANN_JSON_HPP_
    -
    32 
    -
    33 #define NLOHMANN_JSON_VERSION_MAJOR 3
    -
    34 #define NLOHMANN_JSON_VERSION_MINOR 9
    -
    35 #define NLOHMANN_JSON_VERSION_PATCH 1
    -
    36 
    -
    37 #include <algorithm> // all_of, find, for_each
    -
    38 #include <cstddef> // nullptr_t, ptrdiff_t, size_t
    -
    39 #include <functional> // hash, less
    -
    40 #include <initializer_list> // initializer_list
    -
    41 #include <iosfwd> // istream, ostream
    -
    42 #include <iterator> // random_access_iterator_tag
    -
    43 #include <memory> // unique_ptr
    -
    44 #include <numeric> // accumulate
    -
    45 #include <string> // string, stoi, to_string
    -
    46 #include <utility> // declval, forward, move, pair, swap
    -
    47 #include <vector> // vector
    -
    48 
    -
    49 // #include <nlohmann/adl_serializer.hpp>
    -
    50 
    -
    51 
    -
    52 #include <utility>
    -
    53 
    -
    54 // #include <nlohmann/detail/conversions/from_json.hpp>
    -
    55 
    -
    56 
    -
    57 #include <algorithm> // transform
    -
    58 #include <array> // array
    -
    59 #include <forward_list> // forward_list
    -
    60 #include <iterator> // inserter, front_inserter, end
    -
    61 #include <map> // map
    -
    62 #include <string> // string
    -
    63 #include <tuple> // tuple, make_tuple
    -
    64 #include <type_traits> // is_arithmetic, is_same, is_enum, underlying_type, is_convertible
    -
    65 #include <unordered_map> // unordered_map
    -
    66 #include <utility> // pair, declval
    -
    67 #include <valarray> // valarray
    -
    68 
    -
    69 // #include <nlohmann/detail/exceptions.hpp>
    -
    70 
    -
    71 
    -
    72 #include <exception> // exception
    -
    73 #include <stdexcept> // runtime_error
    -
    74 #include <string> // to_string
    -
    75 
    -
    76 // #include <nlohmann/detail/input/position_t.hpp>
    -
    77 
    -
    78 
    -
    79 #include <cstddef> // size_t
    -
    80 
    -
    81 namespace nlohmann
    -
    82 {
    -
    83 namespace detail
    -
    84 {
    -
    86 struct position_t
    -
    87 {
    -
    89  std::size_t chars_read_total = 0;
    -
    91  std::size_t chars_read_current_line = 0;
    -
    93  std::size_t lines_read = 0;
    -
    94 
    -
    96  constexpr operator size_t() const
    -
    97  {
    -
    98  return chars_read_total;
    -
    99  }
    -
    100 };
    -
    101 
    -
    102 } // namespace detail
    -
    103 } // namespace nlohmann
    -
    104 
    -
    105 // #include <nlohmann/detail/macro_scope.hpp>
    -
    106 
    -
    107 
    -
    108 #include <utility> // pair
    -
    109 // #include <nlohmann/thirdparty/hedley/hedley.hpp>
    -
    110 /* Hedley - https://nemequ.github.io/hedley
    -
    111  * Created by Evan Nemerson <evan@nemerson.com>
    -
    112  *
    -
    113  * To the extent possible under law, the author(s) have dedicated all
    -
    114  * copyright and related and neighboring rights to this software to
    -
    115  * the public domain worldwide. This software is distributed without
    -
    116  * any warranty.
    -
    117  *
    -
    118  * For details, see <http://creativecommons.org/publicdomain/zero/1.0/>.
    -
    119  * SPDX-License-Identifier: CC0-1.0
    -
    120  */
    -
    121 
    -
    122 #if !defined(JSON_HEDLEY_VERSION) || (JSON_HEDLEY_VERSION < 13)
    -
    123 #if defined(JSON_HEDLEY_VERSION)
    -
    124  #undef JSON_HEDLEY_VERSION
    -
    125 #endif
    -
    126 #define JSON_HEDLEY_VERSION 13
    -
    127 
    -
    128 #if defined(JSON_HEDLEY_STRINGIFY_EX)
    -
    129  #undef JSON_HEDLEY_STRINGIFY_EX
    -
    130 #endif
    -
    131 #define JSON_HEDLEY_STRINGIFY_EX(x) #x
    -
    132 
    -
    133 #if defined(JSON_HEDLEY_STRINGIFY)
    -
    134  #undef JSON_HEDLEY_STRINGIFY
    -
    135 #endif
    -
    136 #define JSON_HEDLEY_STRINGIFY(x) JSON_HEDLEY_STRINGIFY_EX(x)
    -
    137 
    -
    138 #if defined(JSON_HEDLEY_CONCAT_EX)
    -
    139  #undef JSON_HEDLEY_CONCAT_EX
    -
    140 #endif
    -
    141 #define JSON_HEDLEY_CONCAT_EX(a,b) a##b
    -
    142 
    -
    143 #if defined(JSON_HEDLEY_CONCAT)
    -
    144  #undef JSON_HEDLEY_CONCAT
    -
    145 #endif
    -
    146 #define JSON_HEDLEY_CONCAT(a,b) JSON_HEDLEY_CONCAT_EX(a,b)
    -
    147 
    -
    148 #if defined(JSON_HEDLEY_CONCAT3_EX)
    -
    149  #undef JSON_HEDLEY_CONCAT3_EX
    -
    150 #endif
    -
    151 #define JSON_HEDLEY_CONCAT3_EX(a,b,c) a##b##c
    -
    152 
    -
    153 #if defined(JSON_HEDLEY_CONCAT3)
    -
    154  #undef JSON_HEDLEY_CONCAT3
    -
    155 #endif
    -
    156 #define JSON_HEDLEY_CONCAT3(a,b,c) JSON_HEDLEY_CONCAT3_EX(a,b,c)
    -
    157 
    -
    158 #if defined(JSON_HEDLEY_VERSION_ENCODE)
    -
    159  #undef JSON_HEDLEY_VERSION_ENCODE
    -
    160 #endif
    -
    161 #define JSON_HEDLEY_VERSION_ENCODE(major,minor,revision) (((major) * 1000000) + ((minor) * 1000) + (revision))
    -
    162 
    -
    163 #if defined(JSON_HEDLEY_VERSION_DECODE_MAJOR)
    -
    164  #undef JSON_HEDLEY_VERSION_DECODE_MAJOR
    -
    165 #endif
    -
    166 #define JSON_HEDLEY_VERSION_DECODE_MAJOR(version) ((version) / 1000000)
    -
    167 
    -
    168 #if defined(JSON_HEDLEY_VERSION_DECODE_MINOR)
    -
    169  #undef JSON_HEDLEY_VERSION_DECODE_MINOR
    -
    170 #endif
    -
    171 #define JSON_HEDLEY_VERSION_DECODE_MINOR(version) (((version) % 1000000) / 1000)
    -
    172 
    -
    173 #if defined(JSON_HEDLEY_VERSION_DECODE_REVISION)
    -
    174  #undef JSON_HEDLEY_VERSION_DECODE_REVISION
    -
    175 #endif
    -
    176 #define JSON_HEDLEY_VERSION_DECODE_REVISION(version) ((version) % 1000)
    -
    177 
    -
    178 #if defined(JSON_HEDLEY_GNUC_VERSION)
    -
    179  #undef JSON_HEDLEY_GNUC_VERSION
    -
    180 #endif
    -
    181 #if defined(__GNUC__) && defined(__GNUC_PATCHLEVEL__)
    -
    182  #define JSON_HEDLEY_GNUC_VERSION JSON_HEDLEY_VERSION_ENCODE(__GNUC__, __GNUC_MINOR__, __GNUC_PATCHLEVEL__)
    -
    183 #elif defined(__GNUC__)
    -
    184  #define JSON_HEDLEY_GNUC_VERSION JSON_HEDLEY_VERSION_ENCODE(__GNUC__, __GNUC_MINOR__, 0)
    -
    185 #endif
    -
    186 
    -
    187 #if defined(JSON_HEDLEY_GNUC_VERSION_CHECK)
    -
    188  #undef JSON_HEDLEY_GNUC_VERSION_CHECK
    -
    189 #endif
    -
    190 #if defined(JSON_HEDLEY_GNUC_VERSION)
    -
    191  #define JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_GNUC_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch))
    -
    192 #else
    -
    193  #define JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch) (0)
    -
    194 #endif
    -
    195 
    -
    196 #if defined(JSON_HEDLEY_MSVC_VERSION)
    -
    197  #undef JSON_HEDLEY_MSVC_VERSION
    -
    198 #endif
    -
    199 #if defined(_MSC_FULL_VER) && (_MSC_FULL_VER >= 140000000)
    -
    200  #define JSON_HEDLEY_MSVC_VERSION JSON_HEDLEY_VERSION_ENCODE(_MSC_FULL_VER / 10000000, (_MSC_FULL_VER % 10000000) / 100000, (_MSC_FULL_VER % 100000) / 100)
    -
    201 #elif defined(_MSC_FULL_VER)
    -
    202  #define JSON_HEDLEY_MSVC_VERSION JSON_HEDLEY_VERSION_ENCODE(_MSC_FULL_VER / 1000000, (_MSC_FULL_VER % 1000000) / 10000, (_MSC_FULL_VER % 10000) / 10)
    -
    203 #elif defined(_MSC_VER)
    -
    204  #define JSON_HEDLEY_MSVC_VERSION JSON_HEDLEY_VERSION_ENCODE(_MSC_VER / 100, _MSC_VER % 100, 0)
    -
    205 #endif
    -
    206 
    -
    207 #if defined(JSON_HEDLEY_MSVC_VERSION_CHECK)
    -
    208  #undef JSON_HEDLEY_MSVC_VERSION_CHECK
    -
    209 #endif
    -
    210 #if !defined(_MSC_VER)
    -
    211  #define JSON_HEDLEY_MSVC_VERSION_CHECK(major,minor,patch) (0)
    -
    212 #elif defined(_MSC_VER) && (_MSC_VER >= 1400)
    -
    213  #define JSON_HEDLEY_MSVC_VERSION_CHECK(major,minor,patch) (_MSC_FULL_VER >= ((major * 10000000) + (minor * 100000) + (patch)))
    -
    214 #elif defined(_MSC_VER) && (_MSC_VER >= 1200)
    -
    215  #define JSON_HEDLEY_MSVC_VERSION_CHECK(major,minor,patch) (_MSC_FULL_VER >= ((major * 1000000) + (minor * 10000) + (patch)))
    -
    216 #else
    -
    217  #define JSON_HEDLEY_MSVC_VERSION_CHECK(major,minor,patch) (_MSC_VER >= ((major * 100) + (minor)))
    -
    218 #endif
    -
    219 
    -
    220 #if defined(JSON_HEDLEY_INTEL_VERSION)
    -
    221  #undef JSON_HEDLEY_INTEL_VERSION
    -
    222 #endif
    -
    223 #if defined(__INTEL_COMPILER) && defined(__INTEL_COMPILER_UPDATE)
    -
    224  #define JSON_HEDLEY_INTEL_VERSION JSON_HEDLEY_VERSION_ENCODE(__INTEL_COMPILER / 100, __INTEL_COMPILER % 100, __INTEL_COMPILER_UPDATE)
    -
    225 #elif defined(__INTEL_COMPILER)
    -
    226  #define JSON_HEDLEY_INTEL_VERSION JSON_HEDLEY_VERSION_ENCODE(__INTEL_COMPILER / 100, __INTEL_COMPILER % 100, 0)
    -
    227 #endif
    -
    228 
    -
    229 #if defined(JSON_HEDLEY_INTEL_VERSION_CHECK)
    -
    230  #undef JSON_HEDLEY_INTEL_VERSION_CHECK
    -
    231 #endif
    -
    232 #if defined(JSON_HEDLEY_INTEL_VERSION)
    -
    233  #define JSON_HEDLEY_INTEL_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_INTEL_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch))
    -
    234 #else
    -
    235  #define JSON_HEDLEY_INTEL_VERSION_CHECK(major,minor,patch) (0)
    -
    236 #endif
    -
    237 
    -
    238 #if defined(JSON_HEDLEY_PGI_VERSION)
    -
    239  #undef JSON_HEDLEY_PGI_VERSION
    -
    240 #endif
    -
    241 #if defined(__PGI) && defined(__PGIC__) && defined(__PGIC_MINOR__) && defined(__PGIC_PATCHLEVEL__)
    -
    242  #define JSON_HEDLEY_PGI_VERSION JSON_HEDLEY_VERSION_ENCODE(__PGIC__, __PGIC_MINOR__, __PGIC_PATCHLEVEL__)
    -
    243 #endif
    -
    244 
    -
    245 #if defined(JSON_HEDLEY_PGI_VERSION_CHECK)
    -
    246  #undef JSON_HEDLEY_PGI_VERSION_CHECK
    -
    247 #endif
    -
    248 #if defined(JSON_HEDLEY_PGI_VERSION)
    -
    249  #define JSON_HEDLEY_PGI_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_PGI_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch))
    -
    250 #else
    -
    251  #define JSON_HEDLEY_PGI_VERSION_CHECK(major,minor,patch) (0)
    -
    252 #endif
    -
    253 
    -
    254 #if defined(JSON_HEDLEY_SUNPRO_VERSION)
    -
    255  #undef JSON_HEDLEY_SUNPRO_VERSION
    -
    256 #endif
    -
    257 #if defined(__SUNPRO_C) && (__SUNPRO_C > 0x1000)
    -
    258  #define JSON_HEDLEY_SUNPRO_VERSION JSON_HEDLEY_VERSION_ENCODE((((__SUNPRO_C >> 16) & 0xf) * 10) + ((__SUNPRO_C >> 12) & 0xf), (((__SUNPRO_C >> 8) & 0xf) * 10) + ((__SUNPRO_C >> 4) & 0xf), (__SUNPRO_C & 0xf) * 10)
    -
    259 #elif defined(__SUNPRO_C)
    -
    260  #define JSON_HEDLEY_SUNPRO_VERSION JSON_HEDLEY_VERSION_ENCODE((__SUNPRO_C >> 8) & 0xf, (__SUNPRO_C >> 4) & 0xf, (__SUNPRO_C) & 0xf)
    -
    261 #elif defined(__SUNPRO_CC) && (__SUNPRO_CC > 0x1000)
    -
    262  #define JSON_HEDLEY_SUNPRO_VERSION JSON_HEDLEY_VERSION_ENCODE((((__SUNPRO_CC >> 16) & 0xf) * 10) + ((__SUNPRO_CC >> 12) & 0xf), (((__SUNPRO_CC >> 8) & 0xf) * 10) + ((__SUNPRO_CC >> 4) & 0xf), (__SUNPRO_CC & 0xf) * 10)
    -
    263 #elif defined(__SUNPRO_CC)
    -
    264  #define JSON_HEDLEY_SUNPRO_VERSION JSON_HEDLEY_VERSION_ENCODE((__SUNPRO_CC >> 8) & 0xf, (__SUNPRO_CC >> 4) & 0xf, (__SUNPRO_CC) & 0xf)
    -
    265 #endif
    -
    266 
    -
    267 #if defined(JSON_HEDLEY_SUNPRO_VERSION_CHECK)
    -
    268  #undef JSON_HEDLEY_SUNPRO_VERSION_CHECK
    -
    269 #endif
    -
    270 #if defined(JSON_HEDLEY_SUNPRO_VERSION)
    -
    271  #define JSON_HEDLEY_SUNPRO_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_SUNPRO_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch))
    -
    272 #else
    -
    273  #define JSON_HEDLEY_SUNPRO_VERSION_CHECK(major,minor,patch) (0)
    -
    274 #endif
    -
    275 
    -
    276 #if defined(JSON_HEDLEY_EMSCRIPTEN_VERSION)
    -
    277  #undef JSON_HEDLEY_EMSCRIPTEN_VERSION
    -
    278 #endif
    -
    279 #if defined(__EMSCRIPTEN__)
    -
    280  #define JSON_HEDLEY_EMSCRIPTEN_VERSION JSON_HEDLEY_VERSION_ENCODE(__EMSCRIPTEN_major__, __EMSCRIPTEN_minor__, __EMSCRIPTEN_tiny__)
    -
    281 #endif
    -
    282 
    -
    283 #if defined(JSON_HEDLEY_EMSCRIPTEN_VERSION_CHECK)
    -
    284  #undef JSON_HEDLEY_EMSCRIPTEN_VERSION_CHECK
    -
    285 #endif
    -
    286 #if defined(JSON_HEDLEY_EMSCRIPTEN_VERSION)
    -
    287  #define JSON_HEDLEY_EMSCRIPTEN_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_EMSCRIPTEN_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch))
    -
    288 #else
    -
    289  #define JSON_HEDLEY_EMSCRIPTEN_VERSION_CHECK(major,minor,patch) (0)
    -
    290 #endif
    -
    291 
    -
    292 #if defined(JSON_HEDLEY_ARM_VERSION)
    -
    293  #undef JSON_HEDLEY_ARM_VERSION
    -
    294 #endif
    -
    295 #if defined(__CC_ARM) && defined(__ARMCOMPILER_VERSION)
    -
    296  #define JSON_HEDLEY_ARM_VERSION JSON_HEDLEY_VERSION_ENCODE(__ARMCOMPILER_VERSION / 1000000, (__ARMCOMPILER_VERSION % 1000000) / 10000, (__ARMCOMPILER_VERSION % 10000) / 100)
    -
    297 #elif defined(__CC_ARM) && defined(__ARMCC_VERSION)
    -
    298  #define JSON_HEDLEY_ARM_VERSION JSON_HEDLEY_VERSION_ENCODE(__ARMCC_VERSION / 1000000, (__ARMCC_VERSION % 1000000) / 10000, (__ARMCC_VERSION % 10000) / 100)
    -
    299 #endif
    -
    300 
    -
    301 #if defined(JSON_HEDLEY_ARM_VERSION_CHECK)
    -
    302  #undef JSON_HEDLEY_ARM_VERSION_CHECK
    -
    303 #endif
    -
    304 #if defined(JSON_HEDLEY_ARM_VERSION)
    -
    305  #define JSON_HEDLEY_ARM_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_ARM_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch))
    -
    306 #else
    -
    307  #define JSON_HEDLEY_ARM_VERSION_CHECK(major,minor,patch) (0)
    -
    308 #endif
    -
    309 
    -
    310 #if defined(JSON_HEDLEY_IBM_VERSION)
    -
    311  #undef JSON_HEDLEY_IBM_VERSION
    -
    312 #endif
    -
    313 #if defined(__ibmxl__)
    -
    314  #define JSON_HEDLEY_IBM_VERSION JSON_HEDLEY_VERSION_ENCODE(__ibmxl_version__, __ibmxl_release__, __ibmxl_modification__)
    -
    315 #elif defined(__xlC__) && defined(__xlC_ver__)
    -
    316  #define JSON_HEDLEY_IBM_VERSION JSON_HEDLEY_VERSION_ENCODE(__xlC__ >> 8, __xlC__ & 0xff, (__xlC_ver__ >> 8) & 0xff)
    -
    317 #elif defined(__xlC__)
    -
    318  #define JSON_HEDLEY_IBM_VERSION JSON_HEDLEY_VERSION_ENCODE(__xlC__ >> 8, __xlC__ & 0xff, 0)
    -
    319 #endif
    -
    320 
    -
    321 #if defined(JSON_HEDLEY_IBM_VERSION_CHECK)
    -
    322  #undef JSON_HEDLEY_IBM_VERSION_CHECK
    -
    323 #endif
    -
    324 #if defined(JSON_HEDLEY_IBM_VERSION)
    -
    325  #define JSON_HEDLEY_IBM_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_IBM_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch))
    -
    326 #else
    -
    327  #define JSON_HEDLEY_IBM_VERSION_CHECK(major,minor,patch) (0)
    -
    328 #endif
    -
    329 
    -
    330 #if defined(JSON_HEDLEY_TI_VERSION)
    -
    331  #undef JSON_HEDLEY_TI_VERSION
    -
    332 #endif
    -
    333 #if \
    -
    334  defined(__TI_COMPILER_VERSION__) && \
    -
    335  ( \
    -
    336  defined(__TMS470__) || defined(__TI_ARM__) || \
    -
    337  defined(__MSP430__) || \
    -
    338  defined(__TMS320C2000__) \
    -
    339  )
    -
    340 #if (__TI_COMPILER_VERSION__ >= 16000000)
    -
    341  #define JSON_HEDLEY_TI_VERSION JSON_HEDLEY_VERSION_ENCODE(__TI_COMPILER_VERSION__ / 1000000, (__TI_COMPILER_VERSION__ % 1000000) / 1000, (__TI_COMPILER_VERSION__ % 1000))
    -
    342 #endif
    -
    343 #endif
    -
    344 
    -
    345 #if defined(JSON_HEDLEY_TI_VERSION_CHECK)
    -
    346  #undef JSON_HEDLEY_TI_VERSION_CHECK
    -
    347 #endif
    -
    348 #if defined(JSON_HEDLEY_TI_VERSION)
    -
    349  #define JSON_HEDLEY_TI_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_TI_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch))
    -
    350 #else
    -
    351  #define JSON_HEDLEY_TI_VERSION_CHECK(major,minor,patch) (0)
    -
    352 #endif
    -
    353 
    -
    354 #if defined(JSON_HEDLEY_TI_CL2000_VERSION)
    -
    355  #undef JSON_HEDLEY_TI_CL2000_VERSION
    -
    356 #endif
    -
    357 #if defined(__TI_COMPILER_VERSION__) && defined(__TMS320C2000__)
    -
    358  #define JSON_HEDLEY_TI_CL2000_VERSION JSON_HEDLEY_VERSION_ENCODE(__TI_COMPILER_VERSION__ / 1000000, (__TI_COMPILER_VERSION__ % 1000000) / 1000, (__TI_COMPILER_VERSION__ % 1000))
    -
    359 #endif
    -
    360 
    -
    361 #if defined(JSON_HEDLEY_TI_CL2000_VERSION_CHECK)
    -
    362  #undef JSON_HEDLEY_TI_CL2000_VERSION_CHECK
    -
    363 #endif
    -
    364 #if defined(JSON_HEDLEY_TI_CL2000_VERSION)
    -
    365  #define JSON_HEDLEY_TI_CL2000_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_TI_CL2000_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch))
    -
    366 #else
    -
    367  #define JSON_HEDLEY_TI_CL2000_VERSION_CHECK(major,minor,patch) (0)
    -
    368 #endif
    -
    369 
    -
    370 #if defined(JSON_HEDLEY_TI_CL430_VERSION)
    -
    371  #undef JSON_HEDLEY_TI_CL430_VERSION
    -
    372 #endif
    -
    373 #if defined(__TI_COMPILER_VERSION__) && defined(__MSP430__)
    -
    374  #define JSON_HEDLEY_TI_CL430_VERSION JSON_HEDLEY_VERSION_ENCODE(__TI_COMPILER_VERSION__ / 1000000, (__TI_COMPILER_VERSION__ % 1000000) / 1000, (__TI_COMPILER_VERSION__ % 1000))
    -
    375 #endif
    -
    376 
    -
    377 #if defined(JSON_HEDLEY_TI_CL430_VERSION_CHECK)
    -
    378  #undef JSON_HEDLEY_TI_CL430_VERSION_CHECK
    -
    379 #endif
    -
    380 #if defined(JSON_HEDLEY_TI_CL430_VERSION)
    -
    381  #define JSON_HEDLEY_TI_CL430_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_TI_CL430_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch))
    -
    382 #else
    -
    383  #define JSON_HEDLEY_TI_CL430_VERSION_CHECK(major,minor,patch) (0)
    -
    384 #endif
    -
    385 
    -
    386 #if defined(JSON_HEDLEY_TI_ARMCL_VERSION)
    -
    387  #undef JSON_HEDLEY_TI_ARMCL_VERSION
    -
    388 #endif
    -
    389 #if defined(__TI_COMPILER_VERSION__) && (defined(__TMS470__) || defined(__TI_ARM__))
    -
    390  #define JSON_HEDLEY_TI_ARMCL_VERSION JSON_HEDLEY_VERSION_ENCODE(__TI_COMPILER_VERSION__ / 1000000, (__TI_COMPILER_VERSION__ % 1000000) / 1000, (__TI_COMPILER_VERSION__ % 1000))
    -
    391 #endif
    -
    392 
    -
    393 #if defined(JSON_HEDLEY_TI_ARMCL_VERSION_CHECK)
    -
    394  #undef JSON_HEDLEY_TI_ARMCL_VERSION_CHECK
    -
    395 #endif
    -
    396 #if defined(JSON_HEDLEY_TI_ARMCL_VERSION)
    -
    397  #define JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_TI_ARMCL_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch))
    -
    398 #else
    -
    399  #define JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(major,minor,patch) (0)
    -
    400 #endif
    -
    401 
    -
    402 #if defined(JSON_HEDLEY_TI_CL6X_VERSION)
    -
    403  #undef JSON_HEDLEY_TI_CL6X_VERSION
    -
    404 #endif
    -
    405 #if defined(__TI_COMPILER_VERSION__) && defined(__TMS320C6X__)
    -
    406  #define JSON_HEDLEY_TI_CL6X_VERSION JSON_HEDLEY_VERSION_ENCODE(__TI_COMPILER_VERSION__ / 1000000, (__TI_COMPILER_VERSION__ % 1000000) / 1000, (__TI_COMPILER_VERSION__ % 1000))
    -
    407 #endif
    -
    408 
    -
    409 #if defined(JSON_HEDLEY_TI_CL6X_VERSION_CHECK)
    -
    410  #undef JSON_HEDLEY_TI_CL6X_VERSION_CHECK
    -
    411 #endif
    -
    412 #if defined(JSON_HEDLEY_TI_CL6X_VERSION)
    -
    413  #define JSON_HEDLEY_TI_CL6X_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_TI_CL6X_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch))
    -
    414 #else
    -
    415  #define JSON_HEDLEY_TI_CL6X_VERSION_CHECK(major,minor,patch) (0)
    -
    416 #endif
    -
    417 
    -
    418 #if defined(JSON_HEDLEY_TI_CL7X_VERSION)
    -
    419  #undef JSON_HEDLEY_TI_CL7X_VERSION
    -
    420 #endif
    -
    421 #if defined(__TI_COMPILER_VERSION__) && defined(__C7000__)
    -
    422  #define JSON_HEDLEY_TI_CL7X_VERSION JSON_HEDLEY_VERSION_ENCODE(__TI_COMPILER_VERSION__ / 1000000, (__TI_COMPILER_VERSION__ % 1000000) / 1000, (__TI_COMPILER_VERSION__ % 1000))
    -
    423 #endif
    -
    424 
    -
    425 #if defined(JSON_HEDLEY_TI_CL7X_VERSION_CHECK)
    -
    426  #undef JSON_HEDLEY_TI_CL7X_VERSION_CHECK
    -
    427 #endif
    -
    428 #if defined(JSON_HEDLEY_TI_CL7X_VERSION)
    -
    429  #define JSON_HEDLEY_TI_CL7X_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_TI_CL7X_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch))
    -
    430 #else
    -
    431  #define JSON_HEDLEY_TI_CL7X_VERSION_CHECK(major,minor,patch) (0)
    -
    432 #endif
    -
    433 
    -
    434 #if defined(JSON_HEDLEY_TI_CLPRU_VERSION)
    -
    435  #undef JSON_HEDLEY_TI_CLPRU_VERSION
    -
    436 #endif
    -
    437 #if defined(__TI_COMPILER_VERSION__) && defined(__PRU__)
    -
    438  #define JSON_HEDLEY_TI_CLPRU_VERSION JSON_HEDLEY_VERSION_ENCODE(__TI_COMPILER_VERSION__ / 1000000, (__TI_COMPILER_VERSION__ % 1000000) / 1000, (__TI_COMPILER_VERSION__ % 1000))
    -
    439 #endif
    -
    440 
    -
    441 #if defined(JSON_HEDLEY_TI_CLPRU_VERSION_CHECK)
    -
    442  #undef JSON_HEDLEY_TI_CLPRU_VERSION_CHECK
    -
    443 #endif
    -
    444 #if defined(JSON_HEDLEY_TI_CLPRU_VERSION)
    -
    445  #define JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_TI_CLPRU_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch))
    -
    446 #else
    -
    447  #define JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(major,minor,patch) (0)
    -
    448 #endif
    -
    449 
    -
    450 #if defined(JSON_HEDLEY_CRAY_VERSION)
    -
    451  #undef JSON_HEDLEY_CRAY_VERSION
    -
    452 #endif
    -
    453 #if defined(_CRAYC)
    -
    454  #if defined(_RELEASE_PATCHLEVEL)
    -
    455  #define JSON_HEDLEY_CRAY_VERSION JSON_HEDLEY_VERSION_ENCODE(_RELEASE_MAJOR, _RELEASE_MINOR, _RELEASE_PATCHLEVEL)
    -
    456  #else
    -
    457  #define JSON_HEDLEY_CRAY_VERSION JSON_HEDLEY_VERSION_ENCODE(_RELEASE_MAJOR, _RELEASE_MINOR, 0)
    -
    458  #endif
    -
    459 #endif
    -
    460 
    -
    461 #if defined(JSON_HEDLEY_CRAY_VERSION_CHECK)
    -
    462  #undef JSON_HEDLEY_CRAY_VERSION_CHECK
    -
    463 #endif
    -
    464 #if defined(JSON_HEDLEY_CRAY_VERSION)
    -
    465  #define JSON_HEDLEY_CRAY_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_CRAY_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch))
    -
    466 #else
    -
    467  #define JSON_HEDLEY_CRAY_VERSION_CHECK(major,minor,patch) (0)
    -
    468 #endif
    -
    469 
    -
    470 #if defined(JSON_HEDLEY_IAR_VERSION)
    -
    471  #undef JSON_HEDLEY_IAR_VERSION
    -
    472 #endif
    -
    473 #if defined(__IAR_SYSTEMS_ICC__)
    -
    474  #if __VER__ > 1000
    -
    475  #define JSON_HEDLEY_IAR_VERSION JSON_HEDLEY_VERSION_ENCODE((__VER__ / 1000000), ((__VER__ / 1000) % 1000), (__VER__ % 1000))
    -
    476  #else
    -
    477  #define JSON_HEDLEY_IAR_VERSION JSON_HEDLEY_VERSION_ENCODE(VER / 100, __VER__ % 100, 0)
    -
    478  #endif
    -
    479 #endif
    -
    480 
    -
    481 #if defined(JSON_HEDLEY_IAR_VERSION_CHECK)
    -
    482  #undef JSON_HEDLEY_IAR_VERSION_CHECK
    -
    483 #endif
    -
    484 #if defined(JSON_HEDLEY_IAR_VERSION)
    -
    485  #define JSON_HEDLEY_IAR_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_IAR_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch))
    -
    486 #else
    -
    487  #define JSON_HEDLEY_IAR_VERSION_CHECK(major,minor,patch) (0)
    -
    488 #endif
    -
    489 
    -
    490 #if defined(JSON_HEDLEY_TINYC_VERSION)
    -
    491  #undef JSON_HEDLEY_TINYC_VERSION
    -
    492 #endif
    -
    493 #if defined(__TINYC__)
    -
    494  #define JSON_HEDLEY_TINYC_VERSION JSON_HEDLEY_VERSION_ENCODE(__TINYC__ / 1000, (__TINYC__ / 100) % 10, __TINYC__ % 100)
    -
    495 #endif
    -
    496 
    -
    497 #if defined(JSON_HEDLEY_TINYC_VERSION_CHECK)
    -
    498  #undef JSON_HEDLEY_TINYC_VERSION_CHECK
    -
    499 #endif
    -
    500 #if defined(JSON_HEDLEY_TINYC_VERSION)
    -
    501  #define JSON_HEDLEY_TINYC_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_TINYC_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch))
    -
    502 #else
    -
    503  #define JSON_HEDLEY_TINYC_VERSION_CHECK(major,minor,patch) (0)
    -
    504 #endif
    -
    505 
    -
    506 #if defined(JSON_HEDLEY_DMC_VERSION)
    -
    507  #undef JSON_HEDLEY_DMC_VERSION
    -
    508 #endif
    -
    509 #if defined(__DMC__)
    -
    510  #define JSON_HEDLEY_DMC_VERSION JSON_HEDLEY_VERSION_ENCODE(__DMC__ >> 8, (__DMC__ >> 4) & 0xf, __DMC__ & 0xf)
    -
    511 #endif
    -
    512 
    -
    513 #if defined(JSON_HEDLEY_DMC_VERSION_CHECK)
    -
    514  #undef JSON_HEDLEY_DMC_VERSION_CHECK
    -
    515 #endif
    -
    516 #if defined(JSON_HEDLEY_DMC_VERSION)
    -
    517  #define JSON_HEDLEY_DMC_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_DMC_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch))
    -
    518 #else
    -
    519  #define JSON_HEDLEY_DMC_VERSION_CHECK(major,minor,patch) (0)
    -
    520 #endif
    -
    521 
    -
    522 #if defined(JSON_HEDLEY_COMPCERT_VERSION)
    -
    523  #undef JSON_HEDLEY_COMPCERT_VERSION
    -
    524 #endif
    -
    525 #if defined(__COMPCERT_VERSION__)
    -
    526  #define JSON_HEDLEY_COMPCERT_VERSION JSON_HEDLEY_VERSION_ENCODE(__COMPCERT_VERSION__ / 10000, (__COMPCERT_VERSION__ / 100) % 100, __COMPCERT_VERSION__ % 100)
    -
    527 #endif
    -
    528 
    -
    529 #if defined(JSON_HEDLEY_COMPCERT_VERSION_CHECK)
    -
    530  #undef JSON_HEDLEY_COMPCERT_VERSION_CHECK
    -
    531 #endif
    -
    532 #if defined(JSON_HEDLEY_COMPCERT_VERSION)
    -
    533  #define JSON_HEDLEY_COMPCERT_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_COMPCERT_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch))
    -
    534 #else
    -
    535  #define JSON_HEDLEY_COMPCERT_VERSION_CHECK(major,minor,patch) (0)
    -
    536 #endif
    -
    537 
    -
    538 #if defined(JSON_HEDLEY_PELLES_VERSION)
    -
    539  #undef JSON_HEDLEY_PELLES_VERSION
    -
    540 #endif
    -
    541 #if defined(__POCC__)
    -
    542  #define JSON_HEDLEY_PELLES_VERSION JSON_HEDLEY_VERSION_ENCODE(__POCC__ / 100, __POCC__ % 100, 0)
    -
    543 #endif
    -
    544 
    -
    545 #if defined(JSON_HEDLEY_PELLES_VERSION_CHECK)
    -
    546  #undef JSON_HEDLEY_PELLES_VERSION_CHECK
    -
    547 #endif
    -
    548 #if defined(JSON_HEDLEY_PELLES_VERSION)
    -
    549  #define JSON_HEDLEY_PELLES_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_PELLES_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch))
    -
    550 #else
    -
    551  #define JSON_HEDLEY_PELLES_VERSION_CHECK(major,minor,patch) (0)
    -
    552 #endif
    -
    553 
    -
    554 #if defined(JSON_HEDLEY_GCC_VERSION)
    -
    555  #undef JSON_HEDLEY_GCC_VERSION
    -
    556 #endif
    -
    557 #if \
    -
    558  defined(JSON_HEDLEY_GNUC_VERSION) && \
    -
    559  !defined(__clang__) && \
    -
    560  !defined(JSON_HEDLEY_INTEL_VERSION) && \
    -
    561  !defined(JSON_HEDLEY_PGI_VERSION) && \
    -
    562  !defined(JSON_HEDLEY_ARM_VERSION) && \
    -
    563  !defined(JSON_HEDLEY_TI_VERSION) && \
    -
    564  !defined(JSON_HEDLEY_TI_ARMCL_VERSION) && \
    -
    565  !defined(JSON_HEDLEY_TI_CL430_VERSION) && \
    -
    566  !defined(JSON_HEDLEY_TI_CL2000_VERSION) && \
    -
    567  !defined(JSON_HEDLEY_TI_CL6X_VERSION) && \
    -
    568  !defined(JSON_HEDLEY_TI_CL7X_VERSION) && \
    -
    569  !defined(JSON_HEDLEY_TI_CLPRU_VERSION) && \
    -
    570  !defined(__COMPCERT__)
    -
    571  #define JSON_HEDLEY_GCC_VERSION JSON_HEDLEY_GNUC_VERSION
    -
    572 #endif
    -
    573 
    -
    574 #if defined(JSON_HEDLEY_GCC_VERSION_CHECK)
    -
    575  #undef JSON_HEDLEY_GCC_VERSION_CHECK
    -
    576 #endif
    -
    577 #if defined(JSON_HEDLEY_GCC_VERSION)
    -
    578  #define JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_GCC_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch))
    -
    579 #else
    -
    580  #define JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) (0)
    -
    581 #endif
    -
    582 
    -
    583 #if defined(JSON_HEDLEY_HAS_ATTRIBUTE)
    -
    584  #undef JSON_HEDLEY_HAS_ATTRIBUTE
    -
    585 #endif
    -
    586 #if defined(__has_attribute)
    -
    587  #define JSON_HEDLEY_HAS_ATTRIBUTE(attribute) __has_attribute(attribute)
    -
    588 #else
    -
    589  #define JSON_HEDLEY_HAS_ATTRIBUTE(attribute) (0)
    -
    590 #endif
    -
    591 
    -
    592 #if defined(JSON_HEDLEY_GNUC_HAS_ATTRIBUTE)
    -
    593  #undef JSON_HEDLEY_GNUC_HAS_ATTRIBUTE
    -
    594 #endif
    -
    595 #if defined(__has_attribute)
    -
    596  #define JSON_HEDLEY_GNUC_HAS_ATTRIBUTE(attribute,major,minor,patch) __has_attribute(attribute)
    -
    597 #else
    -
    598  #define JSON_HEDLEY_GNUC_HAS_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch)
    -
    599 #endif
    -
    600 
    -
    601 #if defined(JSON_HEDLEY_GCC_HAS_ATTRIBUTE)
    -
    602  #undef JSON_HEDLEY_GCC_HAS_ATTRIBUTE
    -
    603 #endif
    -
    604 #if defined(__has_attribute)
    -
    605  #define JSON_HEDLEY_GCC_HAS_ATTRIBUTE(attribute,major,minor,patch) __has_attribute(attribute)
    -
    606 #else
    -
    607  #define JSON_HEDLEY_GCC_HAS_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch)
    -
    608 #endif
    -
    609 
    -
    610 #if defined(JSON_HEDLEY_HAS_CPP_ATTRIBUTE)
    -
    611  #undef JSON_HEDLEY_HAS_CPP_ATTRIBUTE
    -
    612 #endif
    -
    613 #if \
    -
    614  defined(__has_cpp_attribute) && \
    -
    615  defined(__cplusplus) && \
    -
    616  (!defined(JSON_HEDLEY_SUNPRO_VERSION) || JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,15,0))
    -
    617  #define JSON_HEDLEY_HAS_CPP_ATTRIBUTE(attribute) __has_cpp_attribute(attribute)
    -
    618 #else
    -
    619  #define JSON_HEDLEY_HAS_CPP_ATTRIBUTE(attribute) (0)
    -
    620 #endif
    -
    621 
    -
    622 #if defined(JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS)
    -
    623  #undef JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS
    -
    624 #endif
    -
    625 #if !defined(__cplusplus) || !defined(__has_cpp_attribute)
    -
    626  #define JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS(ns,attribute) (0)
    -
    627 #elif \
    -
    628  !defined(JSON_HEDLEY_PGI_VERSION) && \
    -
    629  !defined(JSON_HEDLEY_IAR_VERSION) && \
    -
    630  (!defined(JSON_HEDLEY_SUNPRO_VERSION) || JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,15,0)) && \
    -
    631  (!defined(JSON_HEDLEY_MSVC_VERSION) || JSON_HEDLEY_MSVC_VERSION_CHECK(19,20,0))
    -
    632  #define JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS(ns,attribute) JSON_HEDLEY_HAS_CPP_ATTRIBUTE(ns::attribute)
    -
    633 #else
    -
    634  #define JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS(ns,attribute) (0)
    -
    635 #endif
    -
    636 
    -
    637 #if defined(JSON_HEDLEY_GNUC_HAS_CPP_ATTRIBUTE)
    -
    638  #undef JSON_HEDLEY_GNUC_HAS_CPP_ATTRIBUTE
    -
    639 #endif
    -
    640 #if defined(__has_cpp_attribute) && defined(__cplusplus)
    -
    641  #define JSON_HEDLEY_GNUC_HAS_CPP_ATTRIBUTE(attribute,major,minor,patch) __has_cpp_attribute(attribute)
    -
    642 #else
    -
    643  #define JSON_HEDLEY_GNUC_HAS_CPP_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch)
    -
    644 #endif
    -
    645 
    -
    646 #if defined(JSON_HEDLEY_GCC_HAS_CPP_ATTRIBUTE)
    -
    647  #undef JSON_HEDLEY_GCC_HAS_CPP_ATTRIBUTE
    -
    648 #endif
    -
    649 #if defined(__has_cpp_attribute) && defined(__cplusplus)
    -
    650  #define JSON_HEDLEY_GCC_HAS_CPP_ATTRIBUTE(attribute,major,minor,patch) __has_cpp_attribute(attribute)
    -
    651 #else
    -
    652  #define JSON_HEDLEY_GCC_HAS_CPP_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch)
    -
    653 #endif
    -
    654 
    -
    655 #if defined(JSON_HEDLEY_HAS_BUILTIN)
    -
    656  #undef JSON_HEDLEY_HAS_BUILTIN
    -
    657 #endif
    -
    658 #if defined(__has_builtin)
    -
    659  #define JSON_HEDLEY_HAS_BUILTIN(builtin) __has_builtin(builtin)
    -
    660 #else
    -
    661  #define JSON_HEDLEY_HAS_BUILTIN(builtin) (0)
    -
    662 #endif
    -
    663 
    -
    664 #if defined(JSON_HEDLEY_GNUC_HAS_BUILTIN)
    -
    665  #undef JSON_HEDLEY_GNUC_HAS_BUILTIN
    -
    666 #endif
    -
    667 #if defined(__has_builtin)
    -
    668  #define JSON_HEDLEY_GNUC_HAS_BUILTIN(builtin,major,minor,patch) __has_builtin(builtin)
    -
    669 #else
    -
    670  #define JSON_HEDLEY_GNUC_HAS_BUILTIN(builtin,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch)
    -
    671 #endif
    -
    672 
    -
    673 #if defined(JSON_HEDLEY_GCC_HAS_BUILTIN)
    -
    674  #undef JSON_HEDLEY_GCC_HAS_BUILTIN
    -
    675 #endif
    -
    676 #if defined(__has_builtin)
    -
    677  #define JSON_HEDLEY_GCC_HAS_BUILTIN(builtin,major,minor,patch) __has_builtin(builtin)
    -
    678 #else
    -
    679  #define JSON_HEDLEY_GCC_HAS_BUILTIN(builtin,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch)
    -
    680 #endif
    -
    681 
    -
    682 #if defined(JSON_HEDLEY_HAS_FEATURE)
    -
    683  #undef JSON_HEDLEY_HAS_FEATURE
    -
    684 #endif
    -
    685 #if defined(__has_feature)
    -
    686  #define JSON_HEDLEY_HAS_FEATURE(feature) __has_feature(feature)
    -
    687 #else
    -
    688  #define JSON_HEDLEY_HAS_FEATURE(feature) (0)
    -
    689 #endif
    -
    690 
    -
    691 #if defined(JSON_HEDLEY_GNUC_HAS_FEATURE)
    -
    692  #undef JSON_HEDLEY_GNUC_HAS_FEATURE
    -
    693 #endif
    -
    694 #if defined(__has_feature)
    -
    695  #define JSON_HEDLEY_GNUC_HAS_FEATURE(feature,major,minor,patch) __has_feature(feature)
    -
    696 #else
    -
    697  #define JSON_HEDLEY_GNUC_HAS_FEATURE(feature,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch)
    -
    698 #endif
    -
    699 
    -
    700 #if defined(JSON_HEDLEY_GCC_HAS_FEATURE)
    -
    701  #undef JSON_HEDLEY_GCC_HAS_FEATURE
    -
    702 #endif
    -
    703 #if defined(__has_feature)
    -
    704  #define JSON_HEDLEY_GCC_HAS_FEATURE(feature,major,minor,patch) __has_feature(feature)
    -
    705 #else
    -
    706  #define JSON_HEDLEY_GCC_HAS_FEATURE(feature,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch)
    -
    707 #endif
    -
    708 
    -
    709 #if defined(JSON_HEDLEY_HAS_EXTENSION)
    -
    710  #undef JSON_HEDLEY_HAS_EXTENSION
    -
    711 #endif
    -
    712 #if defined(__has_extension)
    -
    713  #define JSON_HEDLEY_HAS_EXTENSION(extension) __has_extension(extension)
    -
    714 #else
    -
    715  #define JSON_HEDLEY_HAS_EXTENSION(extension) (0)
    -
    716 #endif
    -
    717 
    -
    718 #if defined(JSON_HEDLEY_GNUC_HAS_EXTENSION)
    -
    719  #undef JSON_HEDLEY_GNUC_HAS_EXTENSION
    -
    720 #endif
    -
    721 #if defined(__has_extension)
    -
    722  #define JSON_HEDLEY_GNUC_HAS_EXTENSION(extension,major,minor,patch) __has_extension(extension)
    -
    723 #else
    -
    724  #define JSON_HEDLEY_GNUC_HAS_EXTENSION(extension,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch)
    -
    725 #endif
    -
    726 
    -
    727 #if defined(JSON_HEDLEY_GCC_HAS_EXTENSION)
    -
    728  #undef JSON_HEDLEY_GCC_HAS_EXTENSION
    -
    729 #endif
    -
    730 #if defined(__has_extension)
    -
    731  #define JSON_HEDLEY_GCC_HAS_EXTENSION(extension,major,minor,patch) __has_extension(extension)
    -
    732 #else
    -
    733  #define JSON_HEDLEY_GCC_HAS_EXTENSION(extension,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch)
    -
    734 #endif
    -
    735 
    -
    736 #if defined(JSON_HEDLEY_HAS_DECLSPEC_ATTRIBUTE)
    -
    737  #undef JSON_HEDLEY_HAS_DECLSPEC_ATTRIBUTE
    -
    738 #endif
    -
    739 #if defined(__has_declspec_attribute)
    -
    740  #define JSON_HEDLEY_HAS_DECLSPEC_ATTRIBUTE(attribute) __has_declspec_attribute(attribute)
    -
    741 #else
    -
    742  #define JSON_HEDLEY_HAS_DECLSPEC_ATTRIBUTE(attribute) (0)
    -
    743 #endif
    -
    744 
    -
    745 #if defined(JSON_HEDLEY_GNUC_HAS_DECLSPEC_ATTRIBUTE)
    -
    746  #undef JSON_HEDLEY_GNUC_HAS_DECLSPEC_ATTRIBUTE
    -
    747 #endif
    -
    748 #if defined(__has_declspec_attribute)
    -
    749  #define JSON_HEDLEY_GNUC_HAS_DECLSPEC_ATTRIBUTE(attribute,major,minor,patch) __has_declspec_attribute(attribute)
    -
    750 #else
    -
    751  #define JSON_HEDLEY_GNUC_HAS_DECLSPEC_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch)
    -
    752 #endif
    -
    753 
    -
    754 #if defined(JSON_HEDLEY_GCC_HAS_DECLSPEC_ATTRIBUTE)
    -
    755  #undef JSON_HEDLEY_GCC_HAS_DECLSPEC_ATTRIBUTE
    -
    756 #endif
    -
    757 #if defined(__has_declspec_attribute)
    -
    758  #define JSON_HEDLEY_GCC_HAS_DECLSPEC_ATTRIBUTE(attribute,major,minor,patch) __has_declspec_attribute(attribute)
    -
    759 #else
    -
    760  #define JSON_HEDLEY_GCC_HAS_DECLSPEC_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch)
    -
    761 #endif
    -
    762 
    -
    763 #if defined(JSON_HEDLEY_HAS_WARNING)
    -
    764  #undef JSON_HEDLEY_HAS_WARNING
    -
    765 #endif
    -
    766 #if defined(__has_warning)
    -
    767  #define JSON_HEDLEY_HAS_WARNING(warning) __has_warning(warning)
    -
    768 #else
    -
    769  #define JSON_HEDLEY_HAS_WARNING(warning) (0)
    -
    770 #endif
    -
    771 
    -
    772 #if defined(JSON_HEDLEY_GNUC_HAS_WARNING)
    -
    773  #undef JSON_HEDLEY_GNUC_HAS_WARNING
    -
    774 #endif
    -
    775 #if defined(__has_warning)
    -
    776  #define JSON_HEDLEY_GNUC_HAS_WARNING(warning,major,minor,patch) __has_warning(warning)
    -
    777 #else
    -
    778  #define JSON_HEDLEY_GNUC_HAS_WARNING(warning,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch)
    -
    779 #endif
    -
    780 
    -
    781 #if defined(JSON_HEDLEY_GCC_HAS_WARNING)
    -
    782  #undef JSON_HEDLEY_GCC_HAS_WARNING
    -
    783 #endif
    -
    784 #if defined(__has_warning)
    -
    785  #define JSON_HEDLEY_GCC_HAS_WARNING(warning,major,minor,patch) __has_warning(warning)
    -
    786 #else
    -
    787  #define JSON_HEDLEY_GCC_HAS_WARNING(warning,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch)
    -
    788 #endif
    -
    789 
    -
    790 /* JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_ is for
    -
    791  HEDLEY INTERNAL USE ONLY. API subject to change without notice. */
    -
    792 #if defined(JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_)
    -
    793  #undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_
    -
    794 #endif
    -
    795 #if defined(__cplusplus)
    -
    796 # if JSON_HEDLEY_HAS_WARNING("-Wc++98-compat")
    -
    797 # if JSON_HEDLEY_HAS_WARNING("-Wc++17-extensions")
    -
    798 # define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(xpr) \
    -
    799  JSON_HEDLEY_DIAGNOSTIC_PUSH \
    -
    800  _Pragma("clang diagnostic ignored \"-Wc++98-compat\"") \
    -
    801  _Pragma("clang diagnostic ignored \"-Wc++17-extensions\"") \
    -
    802  xpr \
    -
    803  JSON_HEDLEY_DIAGNOSTIC_POP
    -
    804 # else
    -
    805 # define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(xpr) \
    -
    806  JSON_HEDLEY_DIAGNOSTIC_PUSH \
    -
    807  _Pragma("clang diagnostic ignored \"-Wc++98-compat\"") \
    -
    808  xpr \
    -
    809  JSON_HEDLEY_DIAGNOSTIC_POP
    -
    810 # endif
    -
    811 # endif
    -
    812 #endif
    -
    813 #if !defined(JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_)
    -
    814  #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(x) x
    -
    815 #endif
    -
    816 
    -
    817 #if defined(JSON_HEDLEY_CONST_CAST)
    -
    818  #undef JSON_HEDLEY_CONST_CAST
    -
    819 #endif
    -
    820 #if defined(__cplusplus)
    -
    821 # define JSON_HEDLEY_CONST_CAST(T, expr) (const_cast<T>(expr))
    -
    822 #elif \
    -
    823  JSON_HEDLEY_HAS_WARNING("-Wcast-qual") || \
    -
    824  JSON_HEDLEY_GCC_VERSION_CHECK(4,6,0) || \
    -
    825  JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0)
    -
    826 # define JSON_HEDLEY_CONST_CAST(T, expr) (__extension__ ({ \
    -
    827  JSON_HEDLEY_DIAGNOSTIC_PUSH \
    -
    828  JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL \
    -
    829  ((T) (expr)); \
    -
    830  JSON_HEDLEY_DIAGNOSTIC_POP \
    -
    831  }))
    -
    832 #else
    -
    833 # define JSON_HEDLEY_CONST_CAST(T, expr) ((T) (expr))
    -
    834 #endif
    -
    835 
    -
    836 #if defined(JSON_HEDLEY_REINTERPRET_CAST)
    -
    837  #undef JSON_HEDLEY_REINTERPRET_CAST
    -
    838 #endif
    -
    839 #if defined(__cplusplus)
    -
    840  #define JSON_HEDLEY_REINTERPRET_CAST(T, expr) (reinterpret_cast<T>(expr))
    -
    841 #else
    -
    842  #define JSON_HEDLEY_REINTERPRET_CAST(T, expr) ((T) (expr))
    -
    843 #endif
    -
    844 
    -
    845 #if defined(JSON_HEDLEY_STATIC_CAST)
    -
    846  #undef JSON_HEDLEY_STATIC_CAST
    -
    847 #endif
    -
    848 #if defined(__cplusplus)
    -
    849  #define JSON_HEDLEY_STATIC_CAST(T, expr) (static_cast<T>(expr))
    -
    850 #else
    -
    851  #define JSON_HEDLEY_STATIC_CAST(T, expr) ((T) (expr))
    -
    852 #endif
    -
    853 
    -
    854 #if defined(JSON_HEDLEY_CPP_CAST)
    -
    855  #undef JSON_HEDLEY_CPP_CAST
    -
    856 #endif
    -
    857 #if defined(__cplusplus)
    -
    858 # if JSON_HEDLEY_HAS_WARNING("-Wold-style-cast")
    -
    859 # define JSON_HEDLEY_CPP_CAST(T, expr) \
    -
    860  JSON_HEDLEY_DIAGNOSTIC_PUSH \
    -
    861  _Pragma("clang diagnostic ignored \"-Wold-style-cast\"") \
    -
    862  ((T) (expr)) \
    -
    863  JSON_HEDLEY_DIAGNOSTIC_POP
    -
    864 # elif JSON_HEDLEY_IAR_VERSION_CHECK(8,3,0)
    -
    865 # define JSON_HEDLEY_CPP_CAST(T, expr) \
    -
    866  JSON_HEDLEY_DIAGNOSTIC_PUSH \
    -
    867  _Pragma("diag_suppress=Pe137") \
    -
    868  JSON_HEDLEY_DIAGNOSTIC_POP \
    -
    869 # else
    -
    870 # define JSON_HEDLEY_CPP_CAST(T, expr) ((T) (expr))
    -
    871 # endif
    -
    872 #else
    -
    873 # define JSON_HEDLEY_CPP_CAST(T, expr) (expr)
    -
    874 #endif
    -
    875 
    -
    876 #if \
    -
    877  (defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || \
    -
    878  defined(__clang__) || \
    -
    879  JSON_HEDLEY_GCC_VERSION_CHECK(3,0,0) || \
    -
    880  JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \
    -
    881  JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) || \
    -
    882  JSON_HEDLEY_PGI_VERSION_CHECK(18,4,0) || \
    -
    883  JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \
    -
    884  JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \
    -
    885  JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,7,0) || \
    -
    886  JSON_HEDLEY_TI_CL430_VERSION_CHECK(2,0,1) || \
    -
    887  JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,1,0) || \
    -
    888  JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,0,0) || \
    -
    889  JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \
    -
    890  JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \
    -
    891  JSON_HEDLEY_CRAY_VERSION_CHECK(5,0,0) || \
    -
    892  JSON_HEDLEY_TINYC_VERSION_CHECK(0,9,17) || \
    -
    893  JSON_HEDLEY_SUNPRO_VERSION_CHECK(8,0,0) || \
    -
    894  (JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) && defined(__C99_PRAGMA_OPERATOR))
    -
    895  #define JSON_HEDLEY_PRAGMA(value) _Pragma(#value)
    -
    896 #elif JSON_HEDLEY_MSVC_VERSION_CHECK(15,0,0)
    -
    897  #define JSON_HEDLEY_PRAGMA(value) __pragma(value)
    -
    898 #else
    -
    899  #define JSON_HEDLEY_PRAGMA(value)
    -
    900 #endif
    -
    901 
    -
    902 #if defined(JSON_HEDLEY_DIAGNOSTIC_PUSH)
    -
    903  #undef JSON_HEDLEY_DIAGNOSTIC_PUSH
    -
    904 #endif
    -
    905 #if defined(JSON_HEDLEY_DIAGNOSTIC_POP)
    -
    906  #undef JSON_HEDLEY_DIAGNOSTIC_POP
    -
    907 #endif
    -
    908 #if defined(__clang__)
    -
    909  #define JSON_HEDLEY_DIAGNOSTIC_PUSH _Pragma("clang diagnostic push")
    -
    910  #define JSON_HEDLEY_DIAGNOSTIC_POP _Pragma("clang diagnostic pop")
    -
    911 #elif JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0)
    -
    912  #define JSON_HEDLEY_DIAGNOSTIC_PUSH _Pragma("warning(push)")
    -
    913  #define JSON_HEDLEY_DIAGNOSTIC_POP _Pragma("warning(pop)")
    -
    914 #elif JSON_HEDLEY_GCC_VERSION_CHECK(4,6,0)
    -
    915  #define JSON_HEDLEY_DIAGNOSTIC_PUSH _Pragma("GCC diagnostic push")
    -
    916  #define JSON_HEDLEY_DIAGNOSTIC_POP _Pragma("GCC diagnostic pop")
    -
    917 #elif JSON_HEDLEY_MSVC_VERSION_CHECK(15,0,0)
    -
    918  #define JSON_HEDLEY_DIAGNOSTIC_PUSH __pragma(warning(push))
    -
    919  #define JSON_HEDLEY_DIAGNOSTIC_POP __pragma(warning(pop))
    -
    920 #elif JSON_HEDLEY_ARM_VERSION_CHECK(5,6,0)
    -
    921  #define JSON_HEDLEY_DIAGNOSTIC_PUSH _Pragma("push")
    -
    922  #define JSON_HEDLEY_DIAGNOSTIC_POP _Pragma("pop")
    -
    923 #elif \
    -
    924  JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \
    -
    925  JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \
    -
    926  JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,4,0) || \
    -
    927  JSON_HEDLEY_TI_CL6X_VERSION_CHECK(8,1,0) || \
    -
    928  JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \
    -
    929  JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0)
    -
    930  #define JSON_HEDLEY_DIAGNOSTIC_PUSH _Pragma("diag_push")
    -
    931  #define JSON_HEDLEY_DIAGNOSTIC_POP _Pragma("diag_pop")
    -
    932 #elif JSON_HEDLEY_PELLES_VERSION_CHECK(2,90,0)
    -
    933  #define JSON_HEDLEY_DIAGNOSTIC_PUSH _Pragma("warning(push)")
    -
    934  #define JSON_HEDLEY_DIAGNOSTIC_POP _Pragma("warning(pop)")
    -
    935 #else
    -
    936  #define JSON_HEDLEY_DIAGNOSTIC_PUSH
    -
    937  #define JSON_HEDLEY_DIAGNOSTIC_POP
    -
    938 #endif
    -
    939 
    -
    940 #if defined(JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED)
    -
    941  #undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED
    -
    942 #endif
    -
    943 #if JSON_HEDLEY_HAS_WARNING("-Wdeprecated-declarations")
    -
    944  #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("clang diagnostic ignored \"-Wdeprecated-declarations\"")
    -
    945 #elif JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0)
    -
    946  #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("warning(disable:1478 1786)")
    -
    947 #elif JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0)
    -
    948  #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("diag_suppress 1215,1444")
    -
    949 #elif JSON_HEDLEY_GCC_VERSION_CHECK(4,3,0)
    -
    950  #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("GCC diagnostic ignored \"-Wdeprecated-declarations\"")
    -
    951 #elif JSON_HEDLEY_MSVC_VERSION_CHECK(15,0,0)
    -
    952  #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED __pragma(warning(disable:4996))
    -
    953 #elif \
    -
    954  JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \
    -
    955  (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \
    -
    956  JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \
    -
    957  (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \
    -
    958  JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \
    -
    959  (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \
    -
    960  JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \
    -
    961  (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \
    -
    962  JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \
    -
    963  JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \
    -
    964  JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0)
    -
    965  #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("diag_suppress 1291,1718")
    -
    966 #elif JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,13,0) && !defined(__cplusplus)
    -
    967  #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("error_messages(off,E_DEPRECATED_ATT,E_DEPRECATED_ATT_MESS)")
    -
    968 #elif JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,13,0) && defined(__cplusplus)
    -
    969  #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("error_messages(off,symdeprecated,symdeprecated2)")
    -
    970 #elif JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0)
    -
    971  #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("diag_suppress=Pe1444,Pe1215")
    -
    972 #elif JSON_HEDLEY_PELLES_VERSION_CHECK(2,90,0)
    -
    973  #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("warn(disable:2241)")
    -
    974 #else
    -
    975  #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED
    -
    976 #endif
    -
    977 
    -
    978 #if defined(JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS)
    -
    979  #undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS
    -
    980 #endif
    -
    981 #if JSON_HEDLEY_HAS_WARNING("-Wunknown-pragmas")
    -
    982  #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("clang diagnostic ignored \"-Wunknown-pragmas\"")
    -
    983 #elif JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0)
    -
    984  #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("warning(disable:161)")
    -
    985 #elif JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0)
    -
    986  #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("diag_suppress 1675")
    -
    987 #elif JSON_HEDLEY_GCC_VERSION_CHECK(4,3,0)
    -
    988  #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("GCC diagnostic ignored \"-Wunknown-pragmas\"")
    -
    989 #elif JSON_HEDLEY_MSVC_VERSION_CHECK(15,0,0)
    -
    990  #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS __pragma(warning(disable:4068))
    -
    991 #elif \
    -
    992  JSON_HEDLEY_TI_VERSION_CHECK(16,9,0) || \
    -
    993  JSON_HEDLEY_TI_CL6X_VERSION_CHECK(8,0,0) || \
    -
    994  JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \
    -
    995  JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,3,0)
    -
    996  #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("diag_suppress 163")
    -
    997 #elif JSON_HEDLEY_TI_CL6X_VERSION_CHECK(8,0,0)
    -
    998  #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("diag_suppress 163")
    -
    999 #elif JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0)
    -
    1000  #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("diag_suppress=Pe161")
    -
    1001 #else
    -
    1002  #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS
    -
    1003 #endif
    -
    1004 
    -
    1005 #if defined(JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES)
    -
    1006  #undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES
    -
    1007 #endif
    -
    1008 #if JSON_HEDLEY_HAS_WARNING("-Wunknown-attributes")
    -
    1009  #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("clang diagnostic ignored \"-Wunknown-attributes\"")
    -
    1010 #elif JSON_HEDLEY_GCC_VERSION_CHECK(4,6,0)
    -
    1011  #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("GCC diagnostic ignored \"-Wdeprecated-declarations\"")
    -
    1012 #elif JSON_HEDLEY_INTEL_VERSION_CHECK(17,0,0)
    -
    1013  #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("warning(disable:1292)")
    -
    1014 #elif JSON_HEDLEY_MSVC_VERSION_CHECK(19,0,0)
    -
    1015  #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES __pragma(warning(disable:5030))
    -
    1016 #elif JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0)
    -
    1017  #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("diag_suppress 1097")
    -
    1018 #elif JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,14,0) && defined(__cplusplus)
    -
    1019  #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("error_messages(off,attrskipunsup)")
    -
    1020 #elif \
    -
    1021  JSON_HEDLEY_TI_VERSION_CHECK(18,1,0) || \
    -
    1022  JSON_HEDLEY_TI_CL6X_VERSION_CHECK(8,3,0) || \
    -
    1023  JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0)
    -
    1024  #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("diag_suppress 1173")
    -
    1025 #elif JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0)
    -
    1026  #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("diag_suppress=Pe1097")
    -
    1027 #else
    -
    1028  #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES
    -
    1029 #endif
    -
    1030 
    -
    1031 #if defined(JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL)
    -
    1032  #undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL
    -
    1033 #endif
    -
    1034 #if JSON_HEDLEY_HAS_WARNING("-Wcast-qual")
    -
    1035  #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL _Pragma("clang diagnostic ignored \"-Wcast-qual\"")
    -
    1036 #elif JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0)
    -
    1037  #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL _Pragma("warning(disable:2203 2331)")
    -
    1038 #elif JSON_HEDLEY_GCC_VERSION_CHECK(3,0,0)
    -
    1039  #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL _Pragma("GCC diagnostic ignored \"-Wcast-qual\"")
    -
    1040 #else
    -
    1041  #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL
    -
    1042 #endif
    -
    1043 
    -
    1044 #if defined(JSON_HEDLEY_DEPRECATED)
    -
    1045  #undef JSON_HEDLEY_DEPRECATED
    -
    1046 #endif
    -
    1047 #if defined(JSON_HEDLEY_DEPRECATED_FOR)
    -
    1048  #undef JSON_HEDLEY_DEPRECATED_FOR
    -
    1049 #endif
    -
    1050 #if JSON_HEDLEY_MSVC_VERSION_CHECK(14,0,0)
    -
    1051  #define JSON_HEDLEY_DEPRECATED(since) __declspec(deprecated("Since " # since))
    -
    1052  #define JSON_HEDLEY_DEPRECATED_FOR(since, replacement) __declspec(deprecated("Since " #since "; use " #replacement))
    -
    1053 #elif defined(__cplusplus) && (__cplusplus >= 201402L)
    -
    1054  #define JSON_HEDLEY_DEPRECATED(since) JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[deprecated("Since " #since)]])
    -
    1055  #define JSON_HEDLEY_DEPRECATED_FOR(since, replacement) JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[deprecated("Since " #since "; use " #replacement)]])
    -
    1056 #elif \
    -
    1057  JSON_HEDLEY_HAS_EXTENSION(attribute_deprecated_with_message) || \
    -
    1058  JSON_HEDLEY_GCC_VERSION_CHECK(4,5,0) || \
    -
    1059  JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \
    -
    1060  JSON_HEDLEY_ARM_VERSION_CHECK(5,6,0) || \
    -
    1061  JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,13,0) || \
    -
    1062  JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0) || \
    -
    1063  JSON_HEDLEY_TI_VERSION_CHECK(18,1,0) || \
    -
    1064  JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(18,1,0) || \
    -
    1065  JSON_HEDLEY_TI_CL6X_VERSION_CHECK(8,3,0) || \
    -
    1066  JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \
    -
    1067  JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,3,0)
    -
    1068  #define JSON_HEDLEY_DEPRECATED(since) __attribute__((__deprecated__("Since " #since)))
    -
    1069  #define JSON_HEDLEY_DEPRECATED_FOR(since, replacement) __attribute__((__deprecated__("Since " #since "; use " #replacement)))
    -
    1070 #elif \
    -
    1071  JSON_HEDLEY_HAS_ATTRIBUTE(deprecated) || \
    -
    1072  JSON_HEDLEY_GCC_VERSION_CHECK(3,1,0) || \
    -
    1073  JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \
    -
    1074  JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \
    -
    1075  (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \
    -
    1076  JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \
    -
    1077  (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \
    -
    1078  JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \
    -
    1079  (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \
    -
    1080  JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \
    -
    1081  (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \
    -
    1082  JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \
    -
    1083  JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \
    -
    1084  JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0)
    -
    1085  #define JSON_HEDLEY_DEPRECATED(since) __attribute__((__deprecated__))
    -
    1086  #define JSON_HEDLEY_DEPRECATED_FOR(since, replacement) __attribute__((__deprecated__))
    -
    1087 #elif \
    -
    1088  JSON_HEDLEY_MSVC_VERSION_CHECK(13,10,0) || \
    -
    1089  JSON_HEDLEY_PELLES_VERSION_CHECK(6,50,0)
    -
    1090  #define JSON_HEDLEY_DEPRECATED(since) __declspec(deprecated)
    -
    1091  #define JSON_HEDLEY_DEPRECATED_FOR(since, replacement) __declspec(deprecated)
    -
    1092 #elif JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0)
    -
    1093  #define JSON_HEDLEY_DEPRECATED(since) _Pragma("deprecated")
    -
    1094  #define JSON_HEDLEY_DEPRECATED_FOR(since, replacement) _Pragma("deprecated")
    -
    1095 #else
    -
    1096  #define JSON_HEDLEY_DEPRECATED(since)
    -
    1097  #define JSON_HEDLEY_DEPRECATED_FOR(since, replacement)
    -
    1098 #endif
    -
    1099 
    -
    1100 #if defined(JSON_HEDLEY_UNAVAILABLE)
    -
    1101  #undef JSON_HEDLEY_UNAVAILABLE
    -
    1102 #endif
    -
    1103 #if \
    -
    1104  JSON_HEDLEY_HAS_ATTRIBUTE(warning) || \
    -
    1105  JSON_HEDLEY_GCC_VERSION_CHECK(4,3,0) || \
    -
    1106  JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0)
    -
    1107  #define JSON_HEDLEY_UNAVAILABLE(available_since) __attribute__((__warning__("Not available until " #available_since)))
    -
    1108 #else
    -
    1109  #define JSON_HEDLEY_UNAVAILABLE(available_since)
    -
    1110 #endif
    -
    1111 
    -
    1112 #if defined(JSON_HEDLEY_WARN_UNUSED_RESULT)
    -
    1113  #undef JSON_HEDLEY_WARN_UNUSED_RESULT
    -
    1114 #endif
    -
    1115 #if defined(JSON_HEDLEY_WARN_UNUSED_RESULT_MSG)
    -
    1116  #undef JSON_HEDLEY_WARN_UNUSED_RESULT_MSG
    -
    1117 #endif
    -
    1118 #if (JSON_HEDLEY_HAS_CPP_ATTRIBUTE(nodiscard) >= 201907L)
    -
    1119  #define JSON_HEDLEY_WARN_UNUSED_RESULT JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[nodiscard]])
    -
    1120  #define JSON_HEDLEY_WARN_UNUSED_RESULT_MSG(msg) JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[nodiscard(msg)]])
    -
    1121 #elif JSON_HEDLEY_HAS_CPP_ATTRIBUTE(nodiscard)
    -
    1122  #define JSON_HEDLEY_WARN_UNUSED_RESULT JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[nodiscard]])
    -
    1123  #define JSON_HEDLEY_WARN_UNUSED_RESULT_MSG(msg) JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[nodiscard]])
    -
    1124 #elif \
    -
    1125  JSON_HEDLEY_HAS_ATTRIBUTE(warn_unused_result) || \
    -
    1126  JSON_HEDLEY_GCC_VERSION_CHECK(3,4,0) || \
    -
    1127  JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \
    -
    1128  JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \
    -
    1129  (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \
    -
    1130  JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \
    -
    1131  (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \
    -
    1132  JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \
    -
    1133  (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \
    -
    1134  JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \
    -
    1135  (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \
    -
    1136  JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \
    -
    1137  JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \
    -
    1138  JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \
    -
    1139  (JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,15,0) && defined(__cplusplus)) || \
    -
    1140  JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0)
    -
    1141  #define JSON_HEDLEY_WARN_UNUSED_RESULT __attribute__((__warn_unused_result__))
    -
    1142  #define JSON_HEDLEY_WARN_UNUSED_RESULT_MSG(msg) __attribute__((__warn_unused_result__))
    -
    1143 #elif defined(_Check_return_) /* SAL */
    -
    1144  #define JSON_HEDLEY_WARN_UNUSED_RESULT _Check_return_
    -
    1145  #define JSON_HEDLEY_WARN_UNUSED_RESULT_MSG(msg) _Check_return_
    -
    1146 #else
    -
    1147  #define JSON_HEDLEY_WARN_UNUSED_RESULT
    -
    1148  #define JSON_HEDLEY_WARN_UNUSED_RESULT_MSG(msg)
    -
    1149 #endif
    -
    1150 
    -
    1151 #if defined(JSON_HEDLEY_SENTINEL)
    -
    1152  #undef JSON_HEDLEY_SENTINEL
    -
    1153 #endif
    -
    1154 #if \
    -
    1155  JSON_HEDLEY_HAS_ATTRIBUTE(sentinel) || \
    -
    1156  JSON_HEDLEY_GCC_VERSION_CHECK(4,0,0) || \
    -
    1157  JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \
    -
    1158  JSON_HEDLEY_ARM_VERSION_CHECK(5,4,0)
    -
    1159  #define JSON_HEDLEY_SENTINEL(position) __attribute__((__sentinel__(position)))
    -
    1160 #else
    -
    1161  #define JSON_HEDLEY_SENTINEL(position)
    -
    1162 #endif
    -
    1163 
    -
    1164 #if defined(JSON_HEDLEY_NO_RETURN)
    -
    1165  #undef JSON_HEDLEY_NO_RETURN
    -
    1166 #endif
    -
    1167 #if JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0)
    -
    1168  #define JSON_HEDLEY_NO_RETURN __noreturn
    -
    1169 #elif JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0)
    -
    1170  #define JSON_HEDLEY_NO_RETURN __attribute__((__noreturn__))
    -
    1171 #elif defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L
    -
    1172  #define JSON_HEDLEY_NO_RETURN _Noreturn
    -
    1173 #elif defined(__cplusplus) && (__cplusplus >= 201103L)
    -
    1174  #define JSON_HEDLEY_NO_RETURN JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[noreturn]])
    -
    1175 #elif \
    -
    1176  JSON_HEDLEY_HAS_ATTRIBUTE(noreturn) || \
    -
    1177  JSON_HEDLEY_GCC_VERSION_CHECK(3,2,0) || \
    -
    1178  JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \
    -
    1179  JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \
    -
    1180  JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \
    -
    1181  JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \
    -
    1182  (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \
    -
    1183  JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \
    -
    1184  (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \
    -
    1185  JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \
    -
    1186  (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \
    -
    1187  JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \
    -
    1188  (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \
    -
    1189  JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \
    -
    1190  JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \
    -
    1191  JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0)
    -
    1192  #define JSON_HEDLEY_NO_RETURN __attribute__((__noreturn__))
    -
    1193 #elif JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,10,0)
    -
    1194  #define JSON_HEDLEY_NO_RETURN _Pragma("does_not_return")
    -
    1195 #elif JSON_HEDLEY_MSVC_VERSION_CHECK(13,10,0)
    -
    1196  #define JSON_HEDLEY_NO_RETURN __declspec(noreturn)
    -
    1197 #elif JSON_HEDLEY_TI_CL6X_VERSION_CHECK(6,0,0) && defined(__cplusplus)
    -
    1198  #define JSON_HEDLEY_NO_RETURN _Pragma("FUNC_NEVER_RETURNS;")
    -
    1199 #elif JSON_HEDLEY_COMPCERT_VERSION_CHECK(3,2,0)
    -
    1200  #define JSON_HEDLEY_NO_RETURN __attribute((noreturn))
    -
    1201 #elif JSON_HEDLEY_PELLES_VERSION_CHECK(9,0,0)
    -
    1202  #define JSON_HEDLEY_NO_RETURN __declspec(noreturn)
    -
    1203 #else
    -
    1204  #define JSON_HEDLEY_NO_RETURN
    -
    1205 #endif
    -
    1206 
    -
    1207 #if defined(JSON_HEDLEY_NO_ESCAPE)
    -
    1208  #undef JSON_HEDLEY_NO_ESCAPE
    -
    1209 #endif
    -
    1210 #if JSON_HEDLEY_HAS_ATTRIBUTE(noescape)
    -
    1211  #define JSON_HEDLEY_NO_ESCAPE __attribute__((__noescape__))
    -
    1212 #else
    -
    1213  #define JSON_HEDLEY_NO_ESCAPE
    -
    1214 #endif
    -
    1215 
    -
    1216 #if defined(JSON_HEDLEY_UNREACHABLE)
    -
    1217  #undef JSON_HEDLEY_UNREACHABLE
    -
    1218 #endif
    -
    1219 #if defined(JSON_HEDLEY_UNREACHABLE_RETURN)
    -
    1220  #undef JSON_HEDLEY_UNREACHABLE_RETURN
    -
    1221 #endif
    -
    1222 #if defined(JSON_HEDLEY_ASSUME)
    -
    1223  #undef JSON_HEDLEY_ASSUME
    -
    1224 #endif
    -
    1225 #if \
    -
    1226  JSON_HEDLEY_MSVC_VERSION_CHECK(13,10,0) || \
    -
    1227  JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0)
    -
    1228  #define JSON_HEDLEY_ASSUME(expr) __assume(expr)
    -
    1229 #elif JSON_HEDLEY_HAS_BUILTIN(__builtin_assume)
    -
    1230  #define JSON_HEDLEY_ASSUME(expr) __builtin_assume(expr)
    -
    1231 #elif \
    -
    1232  JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,2,0) || \
    -
    1233  JSON_HEDLEY_TI_CL6X_VERSION_CHECK(4,0,0)
    -
    1234  #if defined(__cplusplus)
    -
    1235  #define JSON_HEDLEY_ASSUME(expr) std::_nassert(expr)
    -
    1236  #else
    -
    1237  #define JSON_HEDLEY_ASSUME(expr) _nassert(expr)
    -
    1238  #endif
    -
    1239 #endif
    -
    1240 #if \
    -
    1241  (JSON_HEDLEY_HAS_BUILTIN(__builtin_unreachable) && (!defined(JSON_HEDLEY_ARM_VERSION))) || \
    -
    1242  JSON_HEDLEY_GCC_VERSION_CHECK(4,5,0) || \
    -
    1243  JSON_HEDLEY_PGI_VERSION_CHECK(18,10,0) || \
    -
    1244  JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \
    -
    1245  JSON_HEDLEY_IBM_VERSION_CHECK(13,1,5)
    -
    1246  #define JSON_HEDLEY_UNREACHABLE() __builtin_unreachable()
    -
    1247 #elif defined(JSON_HEDLEY_ASSUME)
    -
    1248  #define JSON_HEDLEY_UNREACHABLE() JSON_HEDLEY_ASSUME(0)
    -
    1249 #endif
    -
    1250 #if !defined(JSON_HEDLEY_ASSUME)
    -
    1251  #if defined(JSON_HEDLEY_UNREACHABLE)
    -
    1252  #define JSON_HEDLEY_ASSUME(expr) JSON_HEDLEY_STATIC_CAST(void, ((expr) ? 1 : (JSON_HEDLEY_UNREACHABLE(), 1)))
    -
    1253  #else
    -
    1254  #define JSON_HEDLEY_ASSUME(expr) JSON_HEDLEY_STATIC_CAST(void, expr)
    -
    1255  #endif
    -
    1256 #endif
    -
    1257 #if defined(JSON_HEDLEY_UNREACHABLE)
    -
    1258  #if \
    -
    1259  JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,2,0) || \
    -
    1260  JSON_HEDLEY_TI_CL6X_VERSION_CHECK(4,0,0)
    -
    1261  #define JSON_HEDLEY_UNREACHABLE_RETURN(value) return (JSON_HEDLEY_STATIC_CAST(void, JSON_HEDLEY_ASSUME(0)), (value))
    -
    1262  #else
    -
    1263  #define JSON_HEDLEY_UNREACHABLE_RETURN(value) JSON_HEDLEY_UNREACHABLE()
    -
    1264  #endif
    -
    1265 #else
    -
    1266  #define JSON_HEDLEY_UNREACHABLE_RETURN(value) return (value)
    -
    1267 #endif
    -
    1268 #if !defined(JSON_HEDLEY_UNREACHABLE)
    -
    1269  #define JSON_HEDLEY_UNREACHABLE() JSON_HEDLEY_ASSUME(0)
    -
    1270 #endif
    -
    1271 
    - -
    1273 #if JSON_HEDLEY_HAS_WARNING("-Wpedantic")
    -
    1274  #pragma clang diagnostic ignored "-Wpedantic"
    -
    1275 #endif
    -
    1276 #if JSON_HEDLEY_HAS_WARNING("-Wc++98-compat-pedantic") && defined(__cplusplus)
    -
    1277  #pragma clang diagnostic ignored "-Wc++98-compat-pedantic"
    -
    1278 #endif
    -
    1279 #if JSON_HEDLEY_GCC_HAS_WARNING("-Wvariadic-macros",4,0,0)
    -
    1280  #if defined(__clang__)
    -
    1281  #pragma clang diagnostic ignored "-Wvariadic-macros"
    -
    1282  #elif defined(JSON_HEDLEY_GCC_VERSION)
    -
    1283  #pragma GCC diagnostic ignored "-Wvariadic-macros"
    -
    1284  #endif
    -
    1285 #endif
    -
    1286 #if defined(JSON_HEDLEY_NON_NULL)
    -
    1287  #undef JSON_HEDLEY_NON_NULL
    -
    1288 #endif
    -
    1289 #if \
    -
    1290  JSON_HEDLEY_HAS_ATTRIBUTE(nonnull) || \
    -
    1291  JSON_HEDLEY_GCC_VERSION_CHECK(3,3,0) || \
    -
    1292  JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \
    -
    1293  JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0)
    -
    1294  #define JSON_HEDLEY_NON_NULL(...) __attribute__((__nonnull__(__VA_ARGS__)))
    -
    1295 #else
    -
    1296  #define JSON_HEDLEY_NON_NULL(...)
    -
    1297 #endif
    - -
    1299 
    -
    1300 #if defined(JSON_HEDLEY_PRINTF_FORMAT)
    -
    1301  #undef JSON_HEDLEY_PRINTF_FORMAT
    -
    1302 #endif
    -
    1303 #if defined(__MINGW32__) && JSON_HEDLEY_GCC_HAS_ATTRIBUTE(format,4,4,0) && !defined(__USE_MINGW_ANSI_STDIO)
    -
    1304  #define JSON_HEDLEY_PRINTF_FORMAT(string_idx,first_to_check) __attribute__((__format__(ms_printf, string_idx, first_to_check)))
    -
    1305 #elif defined(__MINGW32__) && JSON_HEDLEY_GCC_HAS_ATTRIBUTE(format,4,4,0) && defined(__USE_MINGW_ANSI_STDIO)
    -
    1306  #define JSON_HEDLEY_PRINTF_FORMAT(string_idx,first_to_check) __attribute__((__format__(gnu_printf, string_idx, first_to_check)))
    -
    1307 #elif \
    -
    1308  JSON_HEDLEY_HAS_ATTRIBUTE(format) || \
    -
    1309  JSON_HEDLEY_GCC_VERSION_CHECK(3,1,0) || \
    -
    1310  JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \
    -
    1311  JSON_HEDLEY_ARM_VERSION_CHECK(5,6,0) || \
    -
    1312  JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \
    -
    1313  JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \
    -
    1314  (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \
    -
    1315  JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \
    -
    1316  (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \
    -
    1317  JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \
    -
    1318  (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \
    -
    1319  JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \
    -
    1320  (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \
    -
    1321  JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \
    -
    1322  JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \
    -
    1323  JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0)
    -
    1324  #define JSON_HEDLEY_PRINTF_FORMAT(string_idx,first_to_check) __attribute__((__format__(__printf__, string_idx, first_to_check)))
    -
    1325 #elif JSON_HEDLEY_PELLES_VERSION_CHECK(6,0,0)
    -
    1326  #define JSON_HEDLEY_PRINTF_FORMAT(string_idx,first_to_check) __declspec(vaformat(printf,string_idx,first_to_check))
    -
    1327 #else
    -
    1328  #define JSON_HEDLEY_PRINTF_FORMAT(string_idx,first_to_check)
    -
    1329 #endif
    -
    1330 
    -
    1331 #if defined(JSON_HEDLEY_CONSTEXPR)
    -
    1332  #undef JSON_HEDLEY_CONSTEXPR
    -
    1333 #endif
    -
    1334 #if defined(__cplusplus)
    -
    1335  #if __cplusplus >= 201103L
    -
    1336  #define JSON_HEDLEY_CONSTEXPR JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(constexpr)
    -
    1337  #endif
    -
    1338 #endif
    -
    1339 #if !defined(JSON_HEDLEY_CONSTEXPR)
    -
    1340  #define JSON_HEDLEY_CONSTEXPR
    -
    1341 #endif
    -
    1342 
    -
    1343 #if defined(JSON_HEDLEY_PREDICT)
    -
    1344  #undef JSON_HEDLEY_PREDICT
    -
    1345 #endif
    -
    1346 #if defined(JSON_HEDLEY_LIKELY)
    -
    1347  #undef JSON_HEDLEY_LIKELY
    -
    1348 #endif
    -
    1349 #if defined(JSON_HEDLEY_UNLIKELY)
    -
    1350  #undef JSON_HEDLEY_UNLIKELY
    -
    1351 #endif
    -
    1352 #if defined(JSON_HEDLEY_UNPREDICTABLE)
    -
    1353  #undef JSON_HEDLEY_UNPREDICTABLE
    -
    1354 #endif
    -
    1355 #if JSON_HEDLEY_HAS_BUILTIN(__builtin_unpredictable)
    -
    1356  #define JSON_HEDLEY_UNPREDICTABLE(expr) __builtin_unpredictable((expr))
    -
    1357 #endif
    -
    1358 #if \
    -
    1359  JSON_HEDLEY_HAS_BUILTIN(__builtin_expect_with_probability) || \
    -
    1360  JSON_HEDLEY_GCC_VERSION_CHECK(9,0,0)
    -
    1361 # define JSON_HEDLEY_PREDICT(expr, value, probability) __builtin_expect_with_probability( (expr), (value), (probability))
    -
    1362 # define JSON_HEDLEY_PREDICT_TRUE(expr, probability) __builtin_expect_with_probability(!!(expr), 1 , (probability))
    -
    1363 # define JSON_HEDLEY_PREDICT_FALSE(expr, probability) __builtin_expect_with_probability(!!(expr), 0 , (probability))
    -
    1364 # define JSON_HEDLEY_LIKELY(expr) __builtin_expect (!!(expr), 1 )
    -
    1365 # define JSON_HEDLEY_UNLIKELY(expr) __builtin_expect (!!(expr), 0 )
    -
    1366 #elif \
    -
    1367  JSON_HEDLEY_HAS_BUILTIN(__builtin_expect) || \
    -
    1368  JSON_HEDLEY_GCC_VERSION_CHECK(3,0,0) || \
    -
    1369  JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \
    -
    1370  (JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,15,0) && defined(__cplusplus)) || \
    -
    1371  JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \
    -
    1372  JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \
    -
    1373  JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \
    -
    1374  JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,7,0) || \
    -
    1375  JSON_HEDLEY_TI_CL430_VERSION_CHECK(3,1,0) || \
    -
    1376  JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,1,0) || \
    -
    1377  JSON_HEDLEY_TI_CL6X_VERSION_CHECK(6,1,0) || \
    -
    1378  JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \
    -
    1379  JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \
    -
    1380  JSON_HEDLEY_TINYC_VERSION_CHECK(0,9,27) || \
    -
    1381  JSON_HEDLEY_CRAY_VERSION_CHECK(8,1,0)
    -
    1382 # define JSON_HEDLEY_PREDICT(expr, expected, probability) \
    -
    1383  (((probability) >= 0.9) ? __builtin_expect((expr), (expected)) : (JSON_HEDLEY_STATIC_CAST(void, expected), (expr)))
    -
    1384 # define JSON_HEDLEY_PREDICT_TRUE(expr, probability) \
    -
    1385  (__extension__ ({ \
    -
    1386  double hedley_probability_ = (probability); \
    -
    1387  ((hedley_probability_ >= 0.9) ? __builtin_expect(!!(expr), 1) : ((hedley_probability_ <= 0.1) ? __builtin_expect(!!(expr), 0) : !!(expr))); \
    -
    1388  }))
    -
    1389 # define JSON_HEDLEY_PREDICT_FALSE(expr, probability) \
    -
    1390  (__extension__ ({ \
    -
    1391  double hedley_probability_ = (probability); \
    -
    1392  ((hedley_probability_ >= 0.9) ? __builtin_expect(!!(expr), 0) : ((hedley_probability_ <= 0.1) ? __builtin_expect(!!(expr), 1) : !!(expr))); \
    -
    1393  }))
    -
    1394 # define JSON_HEDLEY_LIKELY(expr) __builtin_expect(!!(expr), 1)
    -
    1395 # define JSON_HEDLEY_UNLIKELY(expr) __builtin_expect(!!(expr), 0)
    -
    1396 #else
    -
    1397 # define JSON_HEDLEY_PREDICT(expr, expected, probability) (JSON_HEDLEY_STATIC_CAST(void, expected), (expr))
    -
    1398 # define JSON_HEDLEY_PREDICT_TRUE(expr, probability) (!!(expr))
    -
    1399 # define JSON_HEDLEY_PREDICT_FALSE(expr, probability) (!!(expr))
    -
    1400 # define JSON_HEDLEY_LIKELY(expr) (!!(expr))
    -
    1401 # define JSON_HEDLEY_UNLIKELY(expr) (!!(expr))
    -
    1402 #endif
    -
    1403 #if !defined(JSON_HEDLEY_UNPREDICTABLE)
    -
    1404  #define JSON_HEDLEY_UNPREDICTABLE(expr) JSON_HEDLEY_PREDICT(expr, 1, 0.5)
    -
    1405 #endif
    -
    1406 
    -
    1407 #if defined(JSON_HEDLEY_MALLOC)
    -
    1408  #undef JSON_HEDLEY_MALLOC
    -
    1409 #endif
    -
    1410 #if \
    -
    1411  JSON_HEDLEY_HAS_ATTRIBUTE(malloc) || \
    -
    1412  JSON_HEDLEY_GCC_VERSION_CHECK(3,1,0) || \
    -
    1413  JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \
    -
    1414  JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \
    -
    1415  JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \
    -
    1416  JSON_HEDLEY_IBM_VERSION_CHECK(12,1,0) || \
    -
    1417  JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \
    -
    1418  (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \
    -
    1419  JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \
    -
    1420  (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \
    -
    1421  JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \
    -
    1422  (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \
    -
    1423  JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \
    -
    1424  (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \
    -
    1425  JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \
    -
    1426  JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \
    -
    1427  JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0)
    -
    1428  #define JSON_HEDLEY_MALLOC __attribute__((__malloc__))
    -
    1429 #elif JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,10,0)
    -
    1430  #define JSON_HEDLEY_MALLOC _Pragma("returns_new_memory")
    -
    1431 #elif JSON_HEDLEY_MSVC_VERSION_CHECK(14, 0, 0)
    -
    1432  #define JSON_HEDLEY_MALLOC __declspec(restrict)
    -
    1433 #else
    -
    1434  #define JSON_HEDLEY_MALLOC
    -
    1435 #endif
    -
    1436 
    -
    1437 #if defined(JSON_HEDLEY_PURE)
    -
    1438  #undef JSON_HEDLEY_PURE
    -
    1439 #endif
    -
    1440 #if \
    -
    1441  JSON_HEDLEY_HAS_ATTRIBUTE(pure) || \
    -
    1442  JSON_HEDLEY_GCC_VERSION_CHECK(2,96,0) || \
    -
    1443  JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \
    -
    1444  JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \
    -
    1445  JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \
    -
    1446  JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \
    -
    1447  JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \
    -
    1448  (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \
    -
    1449  JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \
    -
    1450  (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \
    -
    1451  JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \
    -
    1452  (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \
    -
    1453  JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \
    -
    1454  (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \
    -
    1455  JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \
    -
    1456  JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \
    -
    1457  JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \
    -
    1458  JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0)
    -
    1459 # define JSON_HEDLEY_PURE __attribute__((__pure__))
    -
    1460 #elif JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,10,0)
    -
    1461 # define JSON_HEDLEY_PURE _Pragma("does_not_write_global_data")
    -
    1462 #elif defined(__cplusplus) && \
    -
    1463  ( \
    -
    1464  JSON_HEDLEY_TI_CL430_VERSION_CHECK(2,0,1) || \
    -
    1465  JSON_HEDLEY_TI_CL6X_VERSION_CHECK(4,0,0) || \
    -
    1466  JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) \
    -
    1467  )
    -
    1468 # define JSON_HEDLEY_PURE _Pragma("FUNC_IS_PURE;")
    -
    1469 #else
    -
    1470 # define JSON_HEDLEY_PURE
    -
    1471 #endif
    -
    1472 
    -
    1473 #if defined(JSON_HEDLEY_CONST)
    -
    1474  #undef JSON_HEDLEY_CONST
    -
    1475 #endif
    -
    1476 #if \
    -
    1477  JSON_HEDLEY_HAS_ATTRIBUTE(const) || \
    -
    1478  JSON_HEDLEY_GCC_VERSION_CHECK(2,5,0) || \
    -
    1479  JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \
    -
    1480  JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \
    -
    1481  JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \
    -
    1482  JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \
    -
    1483  JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \
    -
    1484  (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \
    -
    1485  JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \
    -
    1486  (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \
    -
    1487  JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \
    -
    1488  (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \
    -
    1489  JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \
    -
    1490  (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \
    -
    1491  JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \
    -
    1492  JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \
    -
    1493  JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \
    -
    1494  JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0)
    -
    1495  #define JSON_HEDLEY_CONST __attribute__((__const__))
    -
    1496 #elif \
    -
    1497  JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,10,0)
    -
    1498  #define JSON_HEDLEY_CONST _Pragma("no_side_effect")
    -
    1499 #else
    -
    1500  #define JSON_HEDLEY_CONST JSON_HEDLEY_PURE
    -
    1501 #endif
    -
    1502 
    -
    1503 #if defined(JSON_HEDLEY_RESTRICT)
    -
    1504  #undef JSON_HEDLEY_RESTRICT
    -
    1505 #endif
    -
    1506 #if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) && !defined(__cplusplus)
    -
    1507  #define JSON_HEDLEY_RESTRICT restrict
    -
    1508 #elif \
    -
    1509  JSON_HEDLEY_GCC_VERSION_CHECK(3,1,0) || \
    -
    1510  JSON_HEDLEY_MSVC_VERSION_CHECK(14,0,0) || \
    -
    1511  JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \
    -
    1512  JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \
    -
    1513  JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \
    -
    1514  JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0) || \
    -
    1515  JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \
    -
    1516  JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,2,4) || \
    -
    1517  JSON_HEDLEY_TI_CL6X_VERSION_CHECK(8,1,0) || \
    -
    1518  JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \
    -
    1519  (JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,14,0) && defined(__cplusplus)) || \
    -
    1520  JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) || \
    -
    1521  defined(__clang__)
    -
    1522  #define JSON_HEDLEY_RESTRICT __restrict
    -
    1523 #elif JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,3,0) && !defined(__cplusplus)
    -
    1524  #define JSON_HEDLEY_RESTRICT _Restrict
    -
    1525 #else
    -
    1526  #define JSON_HEDLEY_RESTRICT
    -
    1527 #endif
    -
    1528 
    -
    1529 #if defined(JSON_HEDLEY_INLINE)
    -
    1530  #undef JSON_HEDLEY_INLINE
    -
    1531 #endif
    -
    1532 #if \
    -
    1533  (defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || \
    -
    1534  (defined(__cplusplus) && (__cplusplus >= 199711L))
    -
    1535  #define JSON_HEDLEY_INLINE inline
    -
    1536 #elif \
    -
    1537  defined(JSON_HEDLEY_GCC_VERSION) || \
    -
    1538  JSON_HEDLEY_ARM_VERSION_CHECK(6,2,0)
    -
    1539  #define JSON_HEDLEY_INLINE __inline__
    -
    1540 #elif \
    -
    1541  JSON_HEDLEY_MSVC_VERSION_CHECK(12,0,0) || \
    -
    1542  JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \
    -
    1543  JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,1,0) || \
    -
    1544  JSON_HEDLEY_TI_CL430_VERSION_CHECK(3,1,0) || \
    -
    1545  JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,2,0) || \
    -
    1546  JSON_HEDLEY_TI_CL6X_VERSION_CHECK(8,0,0) || \
    -
    1547  JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \
    -
    1548  JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0)
    -
    1549  #define JSON_HEDLEY_INLINE __inline
    -
    1550 #else
    -
    1551  #define JSON_HEDLEY_INLINE
    -
    1552 #endif
    -
    1553 
    -
    1554 #if defined(JSON_HEDLEY_ALWAYS_INLINE)
    -
    1555  #undef JSON_HEDLEY_ALWAYS_INLINE
    -
    1556 #endif
    -
    1557 #if \
    -
    1558  JSON_HEDLEY_HAS_ATTRIBUTE(always_inline) || \
    -
    1559  JSON_HEDLEY_GCC_VERSION_CHECK(4,0,0) || \
    -
    1560  JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \
    -
    1561  JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \
    -
    1562  JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \
    -
    1563  JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \
    -
    1564  JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \
    -
    1565  (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \
    -
    1566  JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \
    -
    1567  (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \
    -
    1568  JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \
    -
    1569  (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \
    -
    1570  JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \
    -
    1571  (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \
    -
    1572  JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \
    -
    1573  JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \
    -
    1574  JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0)
    -
    1575 # define JSON_HEDLEY_ALWAYS_INLINE __attribute__((__always_inline__)) JSON_HEDLEY_INLINE
    -
    1576 #elif JSON_HEDLEY_MSVC_VERSION_CHECK(12,0,0)
    -
    1577 # define JSON_HEDLEY_ALWAYS_INLINE __forceinline
    -
    1578 #elif defined(__cplusplus) && \
    -
    1579  ( \
    -
    1580  JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \
    -
    1581  JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \
    -
    1582  JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \
    -
    1583  JSON_HEDLEY_TI_CL6X_VERSION_CHECK(6,1,0) || \
    -
    1584  JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \
    -
    1585  JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) \
    -
    1586  )
    -
    1587 # define JSON_HEDLEY_ALWAYS_INLINE _Pragma("FUNC_ALWAYS_INLINE;")
    -
    1588 #elif JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0)
    -
    1589 # define JSON_HEDLEY_ALWAYS_INLINE _Pragma("inline=forced")
    -
    1590 #else
    -
    1591 # define JSON_HEDLEY_ALWAYS_INLINE JSON_HEDLEY_INLINE
    -
    1592 #endif
    -
    1593 
    -
    1594 #if defined(JSON_HEDLEY_NEVER_INLINE)
    -
    1595  #undef JSON_HEDLEY_NEVER_INLINE
    -
    1596 #endif
    -
    1597 #if \
    -
    1598  JSON_HEDLEY_HAS_ATTRIBUTE(noinline) || \
    -
    1599  JSON_HEDLEY_GCC_VERSION_CHECK(4,0,0) || \
    -
    1600  JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \
    -
    1601  JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \
    -
    1602  JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \
    -
    1603  JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \
    -
    1604  JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \
    -
    1605  (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \
    -
    1606  JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \
    -
    1607  (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \
    -
    1608  JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \
    -
    1609  (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \
    -
    1610  JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \
    -
    1611  (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \
    -
    1612  JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \
    -
    1613  JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \
    -
    1614  JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0)
    -
    1615  #define JSON_HEDLEY_NEVER_INLINE __attribute__((__noinline__))
    -
    1616 #elif JSON_HEDLEY_MSVC_VERSION_CHECK(13,10,0)
    -
    1617  #define JSON_HEDLEY_NEVER_INLINE __declspec(noinline)
    -
    1618 #elif JSON_HEDLEY_PGI_VERSION_CHECK(10,2,0)
    -
    1619  #define JSON_HEDLEY_NEVER_INLINE _Pragma("noinline")
    -
    1620 #elif JSON_HEDLEY_TI_CL6X_VERSION_CHECK(6,0,0) && defined(__cplusplus)
    -
    1621  #define JSON_HEDLEY_NEVER_INLINE _Pragma("FUNC_CANNOT_INLINE;")
    -
    1622 #elif JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0)
    -
    1623  #define JSON_HEDLEY_NEVER_INLINE _Pragma("inline=never")
    -
    1624 #elif JSON_HEDLEY_COMPCERT_VERSION_CHECK(3,2,0)
    -
    1625  #define JSON_HEDLEY_NEVER_INLINE __attribute((noinline))
    -
    1626 #elif JSON_HEDLEY_PELLES_VERSION_CHECK(9,0,0)
    -
    1627  #define JSON_HEDLEY_NEVER_INLINE __declspec(noinline)
    -
    1628 #else
    -
    1629  #define JSON_HEDLEY_NEVER_INLINE
    -
    1630 #endif
    -
    1631 
    -
    1632 #if defined(JSON_HEDLEY_PRIVATE)
    -
    1633  #undef JSON_HEDLEY_PRIVATE
    -
    1634 #endif
    -
    1635 #if defined(JSON_HEDLEY_PUBLIC)
    -
    1636  #undef JSON_HEDLEY_PUBLIC
    -
    1637 #endif
    -
    1638 #if defined(JSON_HEDLEY_IMPORT)
    -
    1639  #undef JSON_HEDLEY_IMPORT
    -
    1640 #endif
    -
    1641 #if defined(_WIN32) || defined(__CYGWIN__)
    -
    1642 # define JSON_HEDLEY_PRIVATE
    -
    1643 # define JSON_HEDLEY_PUBLIC __declspec(dllexport)
    -
    1644 # define JSON_HEDLEY_IMPORT __declspec(dllimport)
    -
    1645 #else
    -
    1646 # if \
    -
    1647  JSON_HEDLEY_HAS_ATTRIBUTE(visibility) || \
    -
    1648  JSON_HEDLEY_GCC_VERSION_CHECK(3,3,0) || \
    -
    1649  JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \
    -
    1650  JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \
    -
    1651  JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \
    -
    1652  JSON_HEDLEY_IBM_VERSION_CHECK(13,1,0) || \
    -
    1653  ( \
    -
    1654  defined(__TI_EABI__) && \
    -
    1655  ( \
    -
    1656  (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \
    -
    1657  JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) \
    -
    1658  ) \
    -
    1659  )
    -
    1660 # define JSON_HEDLEY_PRIVATE __attribute__((__visibility__("hidden")))
    -
    1661 # define JSON_HEDLEY_PUBLIC __attribute__((__visibility__("default")))
    -
    1662 # else
    -
    1663 # define JSON_HEDLEY_PRIVATE
    -
    1664 # define JSON_HEDLEY_PUBLIC
    -
    1665 # endif
    -
    1666 # define JSON_HEDLEY_IMPORT extern
    -
    1667 #endif
    -
    1668 
    -
    1669 #if defined(JSON_HEDLEY_NO_THROW)
    -
    1670  #undef JSON_HEDLEY_NO_THROW
    -
    1671 #endif
    -
    1672 #if \
    -
    1673  JSON_HEDLEY_HAS_ATTRIBUTE(nothrow) || \
    -
    1674  JSON_HEDLEY_GCC_VERSION_CHECK(3,3,0) || \
    -
    1675  JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0)
    -
    1676  #define JSON_HEDLEY_NO_THROW __attribute__((__nothrow__))
    -
    1677 #elif \
    -
    1678  JSON_HEDLEY_MSVC_VERSION_CHECK(13,1,0) || \
    -
    1679  JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0)
    -
    1680  #define JSON_HEDLEY_NO_THROW __declspec(nothrow)
    -
    1681 #else
    -
    1682  #define JSON_HEDLEY_NO_THROW
    -
    1683 #endif
    -
    1684 
    -
    1685 #if defined(JSON_HEDLEY_FALL_THROUGH)
    -
    1686  #undef JSON_HEDLEY_FALL_THROUGH
    -
    1687 #endif
    -
    1688 #if \
    -
    1689  JSON_HEDLEY_HAS_ATTRIBUTE(fallthrough) || \
    -
    1690  JSON_HEDLEY_GCC_VERSION_CHECK(7,0,0)
    -
    1691  #define JSON_HEDLEY_FALL_THROUGH __attribute__((__fallthrough__))
    -
    1692 #elif JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS(clang,fallthrough)
    -
    1693  #define JSON_HEDLEY_FALL_THROUGH JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[clang::fallthrough]])
    -
    1694 #elif JSON_HEDLEY_HAS_CPP_ATTRIBUTE(fallthrough)
    -
    1695  #define JSON_HEDLEY_FALL_THROUGH JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[fallthrough]])
    -
    1696 #elif defined(__fallthrough) /* SAL */
    -
    1697  #define JSON_HEDLEY_FALL_THROUGH __fallthrough
    -
    1698 #else
    -
    1699  #define JSON_HEDLEY_FALL_THROUGH
    -
    1700 #endif
    -
    1701 
    -
    1702 #if defined(JSON_HEDLEY_RETURNS_NON_NULL)
    -
    1703  #undef JSON_HEDLEY_RETURNS_NON_NULL
    -
    1704 #endif
    -
    1705 #if \
    -
    1706  JSON_HEDLEY_HAS_ATTRIBUTE(returns_nonnull) || \
    -
    1707  JSON_HEDLEY_GCC_VERSION_CHECK(4,9,0)
    -
    1708  #define JSON_HEDLEY_RETURNS_NON_NULL __attribute__((__returns_nonnull__))
    -
    1709 #elif defined(_Ret_notnull_) /* SAL */
    -
    1710  #define JSON_HEDLEY_RETURNS_NON_NULL _Ret_notnull_
    -
    1711 #else
    -
    1712  #define JSON_HEDLEY_RETURNS_NON_NULL
    -
    1713 #endif
    -
    1714 
    -
    1715 #if defined(JSON_HEDLEY_ARRAY_PARAM)
    -
    1716  #undef JSON_HEDLEY_ARRAY_PARAM
    -
    1717 #endif
    -
    1718 #if \
    -
    1719  defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) && \
    -
    1720  !defined(__STDC_NO_VLA__) && \
    -
    1721  !defined(__cplusplus) && \
    -
    1722  !defined(JSON_HEDLEY_PGI_VERSION) && \
    -
    1723  !defined(JSON_HEDLEY_TINYC_VERSION)
    -
    1724  #define JSON_HEDLEY_ARRAY_PARAM(name) (name)
    -
    1725 #else
    -
    1726  #define JSON_HEDLEY_ARRAY_PARAM(name)
    -
    1727 #endif
    -
    1728 
    -
    1729 #if defined(JSON_HEDLEY_IS_CONSTANT)
    -
    1730  #undef JSON_HEDLEY_IS_CONSTANT
    -
    1731 #endif
    -
    1732 #if defined(JSON_HEDLEY_REQUIRE_CONSTEXPR)
    -
    1733  #undef JSON_HEDLEY_REQUIRE_CONSTEXPR
    -
    1734 #endif
    -
    1735 /* JSON_HEDLEY_IS_CONSTEXPR_ is for
    -
    1736  HEDLEY INTERNAL USE ONLY. API subject to change without notice. */
    -
    1737 #if defined(JSON_HEDLEY_IS_CONSTEXPR_)
    -
    1738  #undef JSON_HEDLEY_IS_CONSTEXPR_
    -
    1739 #endif
    -
    1740 #if \
    -
    1741  JSON_HEDLEY_HAS_BUILTIN(__builtin_constant_p) || \
    -
    1742  JSON_HEDLEY_GCC_VERSION_CHECK(3,4,0) || \
    -
    1743  JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \
    -
    1744  JSON_HEDLEY_TINYC_VERSION_CHECK(0,9,19) || \
    -
    1745  JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \
    -
    1746  JSON_HEDLEY_IBM_VERSION_CHECK(13,1,0) || \
    -
    1747  JSON_HEDLEY_TI_CL6X_VERSION_CHECK(6,1,0) || \
    -
    1748  (JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,10,0) && !defined(__cplusplus)) || \
    -
    1749  JSON_HEDLEY_CRAY_VERSION_CHECK(8,1,0)
    -
    1750  #define JSON_HEDLEY_IS_CONSTANT(expr) __builtin_constant_p(expr)
    -
    1751 #endif
    -
    1752 #if !defined(__cplusplus)
    -
    1753 # if \
    -
    1754  JSON_HEDLEY_HAS_BUILTIN(__builtin_types_compatible_p) || \
    -
    1755  JSON_HEDLEY_GCC_VERSION_CHECK(3,4,0) || \
    -
    1756  JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \
    -
    1757  JSON_HEDLEY_IBM_VERSION_CHECK(13,1,0) || \
    -
    1758  JSON_HEDLEY_CRAY_VERSION_CHECK(8,1,0) || \
    -
    1759  JSON_HEDLEY_ARM_VERSION_CHECK(5,4,0) || \
    -
    1760  JSON_HEDLEY_TINYC_VERSION_CHECK(0,9,24)
    -
    1761 #if defined(__INTPTR_TYPE__)
    -
    1762  #define JSON_HEDLEY_IS_CONSTEXPR_(expr) __builtin_types_compatible_p(__typeof__((1 ? (void*) ((__INTPTR_TYPE__) ((expr) * 0)) : (int*) 0)), int*)
    -
    1763 #else
    -
    1764  #include <stdint.h>
    -
    1765  #define JSON_HEDLEY_IS_CONSTEXPR_(expr) __builtin_types_compatible_p(__typeof__((1 ? (void*) ((intptr_t) ((expr) * 0)) : (int*) 0)), int*)
    -
    1766 #endif
    -
    1767 # elif \
    -
    1768  ( \
    -
    1769  defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 201112L) && \
    -
    1770  !defined(JSON_HEDLEY_SUNPRO_VERSION) && \
    -
    1771  !defined(JSON_HEDLEY_PGI_VERSION) && \
    -
    1772  !defined(JSON_HEDLEY_IAR_VERSION)) || \
    -
    1773  JSON_HEDLEY_HAS_EXTENSION(c_generic_selections) || \
    -
    1774  JSON_HEDLEY_GCC_VERSION_CHECK(4,9,0) || \
    -
    1775  JSON_HEDLEY_INTEL_VERSION_CHECK(17,0,0) || \
    -
    1776  JSON_HEDLEY_IBM_VERSION_CHECK(12,1,0) || \
    -
    1777  JSON_HEDLEY_ARM_VERSION_CHECK(5,3,0)
    -
    1778 #if defined(__INTPTR_TYPE__)
    -
    1779  #define JSON_HEDLEY_IS_CONSTEXPR_(expr) _Generic((1 ? (void*) ((__INTPTR_TYPE__) ((expr) * 0)) : (int*) 0), int*: 1, void*: 0)
    -
    1780 #else
    -
    1781  #include <stdint.h>
    -
    1782  #define JSON_HEDLEY_IS_CONSTEXPR_(expr) _Generic((1 ? (void*) ((intptr_t) * 0) : (int*) 0), int*: 1, void*: 0)
    -
    1783 #endif
    -
    1784 # elif \
    -
    1785  defined(JSON_HEDLEY_GCC_VERSION) || \
    -
    1786  defined(JSON_HEDLEY_INTEL_VERSION) || \
    -
    1787  defined(JSON_HEDLEY_TINYC_VERSION) || \
    -
    1788  defined(JSON_HEDLEY_TI_ARMCL_VERSION) || \
    -
    1789  JSON_HEDLEY_TI_CL430_VERSION_CHECK(18,12,0) || \
    -
    1790  defined(JSON_HEDLEY_TI_CL2000_VERSION) || \
    -
    1791  defined(JSON_HEDLEY_TI_CL6X_VERSION) || \
    -
    1792  defined(JSON_HEDLEY_TI_CL7X_VERSION) || \
    -
    1793  defined(JSON_HEDLEY_TI_CLPRU_VERSION) || \
    -
    1794  defined(__clang__)
    -
    1795 # define JSON_HEDLEY_IS_CONSTEXPR_(expr) ( \
    -
    1796  sizeof(void) != \
    -
    1797  sizeof(*( \
    -
    1798  1 ? \
    -
    1799  ((void*) ((expr) * 0L) ) : \
    -
    1800 ((struct { char v[sizeof(void) * 2]; } *) 1) \
    -
    1801  ) \
    -
    1802  ) \
    -
    1803  )
    -
    1804 # endif
    -
    1805 #endif
    -
    1806 #if defined(JSON_HEDLEY_IS_CONSTEXPR_)
    -
    1807  #if !defined(JSON_HEDLEY_IS_CONSTANT)
    -
    1808  #define JSON_HEDLEY_IS_CONSTANT(expr) JSON_HEDLEY_IS_CONSTEXPR_(expr)
    -
    1809  #endif
    -
    1810  #define JSON_HEDLEY_REQUIRE_CONSTEXPR(expr) (JSON_HEDLEY_IS_CONSTEXPR_(expr) ? (expr) : (-1))
    -
    1811 #else
    -
    1812  #if !defined(JSON_HEDLEY_IS_CONSTANT)
    -
    1813  #define JSON_HEDLEY_IS_CONSTANT(expr) (0)
    -
    1814  #endif
    -
    1815  #define JSON_HEDLEY_REQUIRE_CONSTEXPR(expr) (expr)
    -
    1816 #endif
    -
    1817 
    -
    1818 #if defined(JSON_HEDLEY_BEGIN_C_DECLS)
    -
    1819  #undef JSON_HEDLEY_BEGIN_C_DECLS
    -
    1820 #endif
    -
    1821 #if defined(JSON_HEDLEY_END_C_DECLS)
    -
    1822  #undef JSON_HEDLEY_END_C_DECLS
    -
    1823 #endif
    -
    1824 #if defined(JSON_HEDLEY_C_DECL)
    -
    1825  #undef JSON_HEDLEY_C_DECL
    -
    1826 #endif
    -
    1827 #if defined(__cplusplus)
    -
    1828  #define JSON_HEDLEY_BEGIN_C_DECLS extern "C" {
    -
    1829  #define JSON_HEDLEY_END_C_DECLS }
    -
    1830  #define JSON_HEDLEY_C_DECL extern "C"
    -
    1831 #else
    -
    1832  #define JSON_HEDLEY_BEGIN_C_DECLS
    -
    1833  #define JSON_HEDLEY_END_C_DECLS
    -
    1834  #define JSON_HEDLEY_C_DECL
    -
    1835 #endif
    -
    1836 
    -
    1837 #if defined(JSON_HEDLEY_STATIC_ASSERT)
    -
    1838  #undef JSON_HEDLEY_STATIC_ASSERT
    -
    1839 #endif
    -
    1840 #if \
    -
    1841  !defined(__cplusplus) && ( \
    -
    1842  (defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 201112L)) || \
    -
    1843  JSON_HEDLEY_HAS_FEATURE(c_static_assert) || \
    -
    1844  JSON_HEDLEY_GCC_VERSION_CHECK(6,0,0) || \
    -
    1845  JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \
    -
    1846  defined(_Static_assert) \
    -
    1847  )
    -
    1848 # define JSON_HEDLEY_STATIC_ASSERT(expr, message) _Static_assert(expr, message)
    -
    1849 #elif \
    -
    1850  (defined(__cplusplus) && (__cplusplus >= 201103L)) || \
    -
    1851  JSON_HEDLEY_MSVC_VERSION_CHECK(16,0,0)
    -
    1852 # define JSON_HEDLEY_STATIC_ASSERT(expr, message) JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(static_assert(expr, message))
    -
    1853 #else
    -
    1854 # define JSON_HEDLEY_STATIC_ASSERT(expr, message)
    -
    1855 #endif
    -
    1856 
    -
    1857 #if defined(JSON_HEDLEY_NULL)
    -
    1858  #undef JSON_HEDLEY_NULL
    -
    1859 #endif
    -
    1860 #if defined(__cplusplus)
    -
    1861  #if __cplusplus >= 201103L
    -
    1862  #define JSON_HEDLEY_NULL JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(nullptr)
    -
    1863  #elif defined(NULL)
    -
    1864  #define JSON_HEDLEY_NULL NULL
    -
    1865  #else
    -
    1866  #define JSON_HEDLEY_NULL JSON_HEDLEY_STATIC_CAST(void*, 0)
    -
    1867  #endif
    -
    1868 #elif defined(NULL)
    -
    1869  #define JSON_HEDLEY_NULL NULL
    -
    1870 #else
    -
    1871  #define JSON_HEDLEY_NULL ((void*) 0)
    -
    1872 #endif
    -
    1873 
    -
    1874 #if defined(JSON_HEDLEY_MESSAGE)
    -
    1875  #undef JSON_HEDLEY_MESSAGE
    -
    1876 #endif
    -
    1877 #if JSON_HEDLEY_HAS_WARNING("-Wunknown-pragmas")
    -
    1878 # define JSON_HEDLEY_MESSAGE(msg) \
    -
    1879  JSON_HEDLEY_DIAGNOSTIC_PUSH \
    -
    1880  JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS \
    -
    1881  JSON_HEDLEY_PRAGMA(message msg) \
    -
    1882  JSON_HEDLEY_DIAGNOSTIC_POP
    -
    1883 #elif \
    -
    1884  JSON_HEDLEY_GCC_VERSION_CHECK(4,4,0) || \
    -
    1885  JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0)
    -
    1886 # define JSON_HEDLEY_MESSAGE(msg) JSON_HEDLEY_PRAGMA(message msg)
    -
    1887 #elif JSON_HEDLEY_CRAY_VERSION_CHECK(5,0,0)
    -
    1888 # define JSON_HEDLEY_MESSAGE(msg) JSON_HEDLEY_PRAGMA(_CRI message msg)
    -
    1889 #elif JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0)
    -
    1890 # define JSON_HEDLEY_MESSAGE(msg) JSON_HEDLEY_PRAGMA(message(msg))
    -
    1891 #elif JSON_HEDLEY_PELLES_VERSION_CHECK(2,0,0)
    -
    1892 # define JSON_HEDLEY_MESSAGE(msg) JSON_HEDLEY_PRAGMA(message(msg))
    -
    1893 #else
    -
    1894 # define JSON_HEDLEY_MESSAGE(msg)
    -
    1895 #endif
    -
    1896 
    -
    1897 #if defined(JSON_HEDLEY_WARNING)
    -
    1898  #undef JSON_HEDLEY_WARNING
    -
    1899 #endif
    -
    1900 #if JSON_HEDLEY_HAS_WARNING("-Wunknown-pragmas")
    -
    1901 # define JSON_HEDLEY_WARNING(msg) \
    -
    1902  JSON_HEDLEY_DIAGNOSTIC_PUSH \
    -
    1903  JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS \
    -
    1904  JSON_HEDLEY_PRAGMA(clang warning msg) \
    -
    1905  JSON_HEDLEY_DIAGNOSTIC_POP
    -
    1906 #elif \
    -
    1907  JSON_HEDLEY_GCC_VERSION_CHECK(4,8,0) || \
    -
    1908  JSON_HEDLEY_PGI_VERSION_CHECK(18,4,0) || \
    -
    1909  JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0)
    -
    1910 # define JSON_HEDLEY_WARNING(msg) JSON_HEDLEY_PRAGMA(GCC warning msg)
    -
    1911 #elif JSON_HEDLEY_MSVC_VERSION_CHECK(15,0,0)
    -
    1912 # define JSON_HEDLEY_WARNING(msg) JSON_HEDLEY_PRAGMA(message(msg))
    -
    1913 #else
    -
    1914 # define JSON_HEDLEY_WARNING(msg) JSON_HEDLEY_MESSAGE(msg)
    -
    1915 #endif
    -
    1916 
    -
    1917 #if defined(JSON_HEDLEY_REQUIRE)
    -
    1918  #undef JSON_HEDLEY_REQUIRE
    -
    1919 #endif
    -
    1920 #if defined(JSON_HEDLEY_REQUIRE_MSG)
    -
    1921  #undef JSON_HEDLEY_REQUIRE_MSG
    -
    1922 #endif
    -
    1923 #if JSON_HEDLEY_HAS_ATTRIBUTE(diagnose_if)
    -
    1924 # if JSON_HEDLEY_HAS_WARNING("-Wgcc-compat")
    -
    1925 # define JSON_HEDLEY_REQUIRE(expr) \
    -
    1926  JSON_HEDLEY_DIAGNOSTIC_PUSH \
    -
    1927  _Pragma("clang diagnostic ignored \"-Wgcc-compat\"") \
    -
    1928  __attribute__((diagnose_if(!(expr), #expr, "error"))) \
    -
    1929  JSON_HEDLEY_DIAGNOSTIC_POP
    -
    1930 # define JSON_HEDLEY_REQUIRE_MSG(expr,msg) \
    -
    1931  JSON_HEDLEY_DIAGNOSTIC_PUSH \
    -
    1932  _Pragma("clang diagnostic ignored \"-Wgcc-compat\"") \
    -
    1933  __attribute__((diagnose_if(!(expr), msg, "error"))) \
    -
    1934  JSON_HEDLEY_DIAGNOSTIC_POP
    -
    1935 # else
    -
    1936 # define JSON_HEDLEY_REQUIRE(expr) __attribute__((diagnose_if(!(expr), #expr, "error")))
    -
    1937 # define JSON_HEDLEY_REQUIRE_MSG(expr,msg) __attribute__((diagnose_if(!(expr), msg, "error")))
    -
    1938 # endif
    -
    1939 #else
    -
    1940 # define JSON_HEDLEY_REQUIRE(expr)
    -
    1941 # define JSON_HEDLEY_REQUIRE_MSG(expr,msg)
    -
    1942 #endif
    -
    1943 
    -
    1944 #if defined(JSON_HEDLEY_FLAGS)
    -
    1945  #undef JSON_HEDLEY_FLAGS
    -
    1946 #endif
    -
    1947 #if JSON_HEDLEY_HAS_ATTRIBUTE(flag_enum)
    -
    1948  #define JSON_HEDLEY_FLAGS __attribute__((__flag_enum__))
    -
    1949 #endif
    -
    1950 
    -
    1951 #if defined(JSON_HEDLEY_FLAGS_CAST)
    -
    1952  #undef JSON_HEDLEY_FLAGS_CAST
    -
    1953 #endif
    -
    1954 #if JSON_HEDLEY_INTEL_VERSION_CHECK(19,0,0)
    -
    1955 # define JSON_HEDLEY_FLAGS_CAST(T, expr) (__extension__ ({ \
    -
    1956  JSON_HEDLEY_DIAGNOSTIC_PUSH \
    -
    1957  _Pragma("warning(disable:188)") \
    -
    1958  ((T) (expr)); \
    -
    1959  JSON_HEDLEY_DIAGNOSTIC_POP \
    -
    1960  }))
    -
    1961 #else
    -
    1962 # define JSON_HEDLEY_FLAGS_CAST(T, expr) JSON_HEDLEY_STATIC_CAST(T, expr)
    -
    1963 #endif
    -
    1964 
    -
    1965 #if defined(JSON_HEDLEY_EMPTY_BASES)
    -
    1966  #undef JSON_HEDLEY_EMPTY_BASES
    -
    1967 #endif
    -
    1968 #if JSON_HEDLEY_MSVC_VERSION_CHECK(19,0,23918) && !JSON_HEDLEY_MSVC_VERSION_CHECK(20,0,0)
    -
    1969  #define JSON_HEDLEY_EMPTY_BASES __declspec(empty_bases)
    -
    1970 #else
    -
    1971  #define JSON_HEDLEY_EMPTY_BASES
    -
    1972 #endif
    -
    1973 
    -
    1974 /* Remaining macros are deprecated. */
    -
    1975 
    -
    1976 #if defined(JSON_HEDLEY_GCC_NOT_CLANG_VERSION_CHECK)
    -
    1977  #undef JSON_HEDLEY_GCC_NOT_CLANG_VERSION_CHECK
    -
    1978 #endif
    -
    1979 #if defined(__clang__)
    -
    1980  #define JSON_HEDLEY_GCC_NOT_CLANG_VERSION_CHECK(major,minor,patch) (0)
    -
    1981 #else
    -
    1982  #define JSON_HEDLEY_GCC_NOT_CLANG_VERSION_CHECK(major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch)
    -
    1983 #endif
    -
    1984 
    -
    1985 #if defined(JSON_HEDLEY_CLANG_HAS_ATTRIBUTE)
    -
    1986  #undef JSON_HEDLEY_CLANG_HAS_ATTRIBUTE
    -
    1987 #endif
    -
    1988 #define JSON_HEDLEY_CLANG_HAS_ATTRIBUTE(attribute) JSON_HEDLEY_HAS_ATTRIBUTE(attribute)
    -
    1989 
    -
    1990 #if defined(JSON_HEDLEY_CLANG_HAS_CPP_ATTRIBUTE)
    -
    1991  #undef JSON_HEDLEY_CLANG_HAS_CPP_ATTRIBUTE
    -
    1992 #endif
    -
    1993 #define JSON_HEDLEY_CLANG_HAS_CPP_ATTRIBUTE(attribute) JSON_HEDLEY_HAS_CPP_ATTRIBUTE(attribute)
    -
    1994 
    -
    1995 #if defined(JSON_HEDLEY_CLANG_HAS_BUILTIN)
    -
    1996  #undef JSON_HEDLEY_CLANG_HAS_BUILTIN
    -
    1997 #endif
    -
    1998 #define JSON_HEDLEY_CLANG_HAS_BUILTIN(builtin) JSON_HEDLEY_HAS_BUILTIN(builtin)
    -
    1999 
    -
    2000 #if defined(JSON_HEDLEY_CLANG_HAS_FEATURE)
    -
    2001  #undef JSON_HEDLEY_CLANG_HAS_FEATURE
    -
    2002 #endif
    -
    2003 #define JSON_HEDLEY_CLANG_HAS_FEATURE(feature) JSON_HEDLEY_HAS_FEATURE(feature)
    -
    2004 
    -
    2005 #if defined(JSON_HEDLEY_CLANG_HAS_EXTENSION)
    -
    2006  #undef JSON_HEDLEY_CLANG_HAS_EXTENSION
    -
    2007 #endif
    -
    2008 #define JSON_HEDLEY_CLANG_HAS_EXTENSION(extension) JSON_HEDLEY_HAS_EXTENSION(extension)
    -
    2009 
    -
    2010 #if defined(JSON_HEDLEY_CLANG_HAS_DECLSPEC_DECLSPEC_ATTRIBUTE)
    -
    2011  #undef JSON_HEDLEY_CLANG_HAS_DECLSPEC_DECLSPEC_ATTRIBUTE
    -
    2012 #endif
    -
    2013 #define JSON_HEDLEY_CLANG_HAS_DECLSPEC_ATTRIBUTE(attribute) JSON_HEDLEY_HAS_DECLSPEC_ATTRIBUTE(attribute)
    -
    2014 
    -
    2015 #if defined(JSON_HEDLEY_CLANG_HAS_WARNING)
    -
    2016  #undef JSON_HEDLEY_CLANG_HAS_WARNING
    -
    2017 #endif
    -
    2018 #define JSON_HEDLEY_CLANG_HAS_WARNING(warning) JSON_HEDLEY_HAS_WARNING(warning)
    -
    2019 
    -
    2020 #endif /* !defined(JSON_HEDLEY_VERSION) || (JSON_HEDLEY_VERSION < X) */
    -
    2021 
    -
    2022 
    -
    2023 // This file contains all internal macro definitions
    -
    2024 // You MUST include macro_unscope.hpp at the end of json.hpp to undef all of them
    -
    2025 
    -
    2026 // exclude unsupported compilers
    -
    2027 #if !defined(JSON_SKIP_UNSUPPORTED_COMPILER_CHECK)
    -
    2028  #if defined(__clang__)
    -
    2029  #if (__clang_major__ * 10000 + __clang_minor__ * 100 + __clang_patchlevel__) < 30400
    -
    2030  #error "unsupported Clang version - see https://github.com/nlohmann/json#supported-compilers"
    -
    2031  #endif
    -
    2032  #elif defined(__GNUC__) && !(defined(__ICC) || defined(__INTEL_COMPILER))
    -
    2033  #if (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) < 40800
    -
    2034  #error "unsupported GCC version - see https://github.com/nlohmann/json#supported-compilers"
    -
    2035  #endif
    -
    2036  #endif
    -
    2037 #endif
    -
    2038 
    -
    2039 // C++ language standard detection
    -
    2040 #if (defined(__cplusplus) && __cplusplus >= 202002L) || (defined(_MSVC_LANG) && _MSVC_LANG >= 202002L)
    -
    2041  #define JSON_HAS_CPP_20
    -
    2042  #define JSON_HAS_CPP_17
    -
    2043  #define JSON_HAS_CPP_14
    -
    2044 #elif (defined(__cplusplus) && __cplusplus >= 201703L) || (defined(_HAS_CXX17) && _HAS_CXX17 == 1) // fix for issue #464
    -
    2045  #define JSON_HAS_CPP_17
    -
    2046  #define JSON_HAS_CPP_14
    -
    2047 #elif (defined(__cplusplus) && __cplusplus >= 201402L) || (defined(_HAS_CXX14) && _HAS_CXX14 == 1)
    -
    2048  #define JSON_HAS_CPP_14
    -
    2049 #endif
    -
    2050 
    -
    2051 // disable float-equal warnings on GCC/clang
    -
    2052 #if defined(__clang__) || defined(__GNUC__) || defined(__GNUG__)
    -
    2053  #pragma GCC diagnostic push
    -
    2054  #pragma GCC diagnostic ignored "-Wfloat-equal"
    -
    2055 #endif
    -
    2056 
    -
    2057 // disable documentation warnings on clang
    -
    2058 #if defined(__clang__)
    -
    2059  #pragma GCC diagnostic push
    -
    2060  #pragma GCC diagnostic ignored "-Wdocumentation"
    -
    2061 #endif
    -
    2062 
    -
    2063 // allow to disable exceptions
    -
    2064 #if (defined(__cpp_exceptions) || defined(__EXCEPTIONS) || defined(_CPPUNWIND)) && !defined(JSON_NOEXCEPTION)
    -
    2065  #define JSON_THROW(exception) throw exception
    -
    2066  #define JSON_TRY try
    -
    2067  #define JSON_CATCH(exception) catch(exception)
    -
    2068  #define JSON_INTERNAL_CATCH(exception) catch(exception)
    -
    2069 #else
    -
    2070  #include <cstdlib>
    -
    2071  #define JSON_THROW(exception) std::abort()
    -
    2072  #define JSON_TRY if(true)
    -
    2073  #define JSON_CATCH(exception) if(false)
    -
    2074  #define JSON_INTERNAL_CATCH(exception) if(false)
    -
    2075 #endif
    -
    2076 
    -
    2077 // override exception macros
    -
    2078 #if defined(JSON_THROW_USER)
    -
    2079  #undef JSON_THROW
    -
    2080  #define JSON_THROW JSON_THROW_USER
    -
    2081 #endif
    -
    2082 #if defined(JSON_TRY_USER)
    -
    2083  #undef JSON_TRY
    -
    2084  #define JSON_TRY JSON_TRY_USER
    -
    2085 #endif
    -
    2086 #if defined(JSON_CATCH_USER)
    -
    2087  #undef JSON_CATCH
    -
    2088  #define JSON_CATCH JSON_CATCH_USER
    -
    2089  #undef JSON_INTERNAL_CATCH
    -
    2090  #define JSON_INTERNAL_CATCH JSON_CATCH_USER
    -
    2091 #endif
    -
    2092 #if defined(JSON_INTERNAL_CATCH_USER)
    -
    2093  #undef JSON_INTERNAL_CATCH
    -
    2094  #define JSON_INTERNAL_CATCH JSON_INTERNAL_CATCH_USER
    -
    2095 #endif
    -
    2096 
    -
    2097 // allow to override assert
    -
    2098 #if !defined(JSON_ASSERT)
    -
    2099  #include <cassert> // assert
    -
    2100  #define JSON_ASSERT(x) assert(x)
    -
    2101 #endif
    -
    2102 
    -
    2108 #define NLOHMANN_JSON_SERIALIZE_ENUM(ENUM_TYPE, ...) \
    -
    2109  template<typename BasicJsonType> \
    -
    2110  inline void to_json(BasicJsonType& j, const ENUM_TYPE& e) \
    -
    2111  { \
    -
    2112  static_assert(std::is_enum<ENUM_TYPE>::value, #ENUM_TYPE " must be an enum!"); \
    -
    2113  static const std::pair<ENUM_TYPE, BasicJsonType> m[] = __VA_ARGS__; \
    -
    2114  auto it = std::find_if(std::begin(m), std::end(m), \
    -
    2115  [e](const std::pair<ENUM_TYPE, BasicJsonType>& ej_pair) -> bool \
    -
    2116  { \
    -
    2117  return ej_pair.first == e; \
    -
    2118  }); \
    -
    2119  j = ((it != std::end(m)) ? it : std::begin(m))->second; \
    -
    2120  } \
    -
    2121  template<typename BasicJsonType> \
    -
    2122  inline void from_json(const BasicJsonType& j, ENUM_TYPE& e) \
    -
    2123  { \
    -
    2124  static_assert(std::is_enum<ENUM_TYPE>::value, #ENUM_TYPE " must be an enum!"); \
    -
    2125  static const std::pair<ENUM_TYPE, BasicJsonType> m[] = __VA_ARGS__; \
    -
    2126  auto it = std::find_if(std::begin(m), std::end(m), \
    -
    2127  [&j](const std::pair<ENUM_TYPE, BasicJsonType>& ej_pair) -> bool \
    -
    2128  { \
    -
    2129  return ej_pair.second == j; \
    -
    2130  }); \
    -
    2131  e = ((it != std::end(m)) ? it : std::begin(m))->first; \
    -
    2132  }
    -
    2133 
    -
    2134 // Ugly macros to avoid uglier copy-paste when specializing basic_json. They
    -
    2135 // may be removed in the future once the class is split.
    -
    2136 
    -
    2137 #define NLOHMANN_BASIC_JSON_TPL_DECLARATION \
    -
    2138  template<template<typename, typename, typename...> class ObjectType, \
    -
    2139  template<typename, typename...> class ArrayType, \
    -
    2140  class StringType, class BooleanType, class NumberIntegerType, \
    -
    2141  class NumberUnsignedType, class NumberFloatType, \
    -
    2142  template<typename> class AllocatorType, \
    -
    2143  template<typename, typename = void> class JSONSerializer, \
    -
    2144  class BinaryType>
    -
    2145 
    -
    2146 #define NLOHMANN_BASIC_JSON_TPL \
    -
    2147  basic_json<ObjectType, ArrayType, StringType, BooleanType, \
    -
    2148  NumberIntegerType, NumberUnsignedType, NumberFloatType, \
    -
    2149  AllocatorType, JSONSerializer, BinaryType>
    -
    2150 
    -
    2151 // Macros to simplify conversion from/to types
    -
    2152 
    -
    2153 #define NLOHMANN_JSON_EXPAND( x ) x
    -
    2154 #define NLOHMANN_JSON_GET_MACRO(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63, _64, NAME,...) NAME
    -
    2155 #define NLOHMANN_JSON_PASTE(...) NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_GET_MACRO(__VA_ARGS__, \
    -
    2156  NLOHMANN_JSON_PASTE64, \
    -
    2157  NLOHMANN_JSON_PASTE63, \
    -
    2158  NLOHMANN_JSON_PASTE62, \
    -
    2159  NLOHMANN_JSON_PASTE61, \
    -
    2160  NLOHMANN_JSON_PASTE60, \
    -
    2161  NLOHMANN_JSON_PASTE59, \
    -
    2162  NLOHMANN_JSON_PASTE58, \
    -
    2163  NLOHMANN_JSON_PASTE57, \
    -
    2164  NLOHMANN_JSON_PASTE56, \
    -
    2165  NLOHMANN_JSON_PASTE55, \
    -
    2166  NLOHMANN_JSON_PASTE54, \
    -
    2167  NLOHMANN_JSON_PASTE53, \
    -
    2168  NLOHMANN_JSON_PASTE52, \
    -
    2169  NLOHMANN_JSON_PASTE51, \
    -
    2170  NLOHMANN_JSON_PASTE50, \
    -
    2171  NLOHMANN_JSON_PASTE49, \
    -
    2172  NLOHMANN_JSON_PASTE48, \
    -
    2173  NLOHMANN_JSON_PASTE47, \
    -
    2174  NLOHMANN_JSON_PASTE46, \
    -
    2175  NLOHMANN_JSON_PASTE45, \
    -
    2176  NLOHMANN_JSON_PASTE44, \
    -
    2177  NLOHMANN_JSON_PASTE43, \
    -
    2178  NLOHMANN_JSON_PASTE42, \
    -
    2179  NLOHMANN_JSON_PASTE41, \
    -
    2180  NLOHMANN_JSON_PASTE40, \
    -
    2181  NLOHMANN_JSON_PASTE39, \
    -
    2182  NLOHMANN_JSON_PASTE38, \
    -
    2183  NLOHMANN_JSON_PASTE37, \
    -
    2184  NLOHMANN_JSON_PASTE36, \
    -
    2185  NLOHMANN_JSON_PASTE35, \
    -
    2186  NLOHMANN_JSON_PASTE34, \
    -
    2187  NLOHMANN_JSON_PASTE33, \
    -
    2188  NLOHMANN_JSON_PASTE32, \
    -
    2189  NLOHMANN_JSON_PASTE31, \
    -
    2190  NLOHMANN_JSON_PASTE30, \
    -
    2191  NLOHMANN_JSON_PASTE29, \
    -
    2192  NLOHMANN_JSON_PASTE28, \
    -
    2193  NLOHMANN_JSON_PASTE27, \
    -
    2194  NLOHMANN_JSON_PASTE26, \
    -
    2195  NLOHMANN_JSON_PASTE25, \
    -
    2196  NLOHMANN_JSON_PASTE24, \
    -
    2197  NLOHMANN_JSON_PASTE23, \
    -
    2198  NLOHMANN_JSON_PASTE22, \
    -
    2199  NLOHMANN_JSON_PASTE21, \
    -
    2200  NLOHMANN_JSON_PASTE20, \
    -
    2201  NLOHMANN_JSON_PASTE19, \
    -
    2202  NLOHMANN_JSON_PASTE18, \
    -
    2203  NLOHMANN_JSON_PASTE17, \
    -
    2204  NLOHMANN_JSON_PASTE16, \
    -
    2205  NLOHMANN_JSON_PASTE15, \
    -
    2206  NLOHMANN_JSON_PASTE14, \
    -
    2207  NLOHMANN_JSON_PASTE13, \
    -
    2208  NLOHMANN_JSON_PASTE12, \
    -
    2209  NLOHMANN_JSON_PASTE11, \
    -
    2210  NLOHMANN_JSON_PASTE10, \
    -
    2211  NLOHMANN_JSON_PASTE9, \
    -
    2212  NLOHMANN_JSON_PASTE8, \
    -
    2213  NLOHMANN_JSON_PASTE7, \
    -
    2214  NLOHMANN_JSON_PASTE6, \
    -
    2215  NLOHMANN_JSON_PASTE5, \
    -
    2216  NLOHMANN_JSON_PASTE4, \
    -
    2217  NLOHMANN_JSON_PASTE3, \
    -
    2218  NLOHMANN_JSON_PASTE2, \
    -
    2219  NLOHMANN_JSON_PASTE1)(__VA_ARGS__))
    -
    2220 #define NLOHMANN_JSON_PASTE2(func, v1) func(v1)
    -
    2221 #define NLOHMANN_JSON_PASTE3(func, v1, v2) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE2(func, v2)
    -
    2222 #define NLOHMANN_JSON_PASTE4(func, v1, v2, v3) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE3(func, v2, v3)
    -
    2223 #define NLOHMANN_JSON_PASTE5(func, v1, v2, v3, v4) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE4(func, v2, v3, v4)
    -
    2224 #define NLOHMANN_JSON_PASTE6(func, v1, v2, v3, v4, v5) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE5(func, v2, v3, v4, v5)
    -
    2225 #define NLOHMANN_JSON_PASTE7(func, v1, v2, v3, v4, v5, v6) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE6(func, v2, v3, v4, v5, v6)
    -
    2226 #define NLOHMANN_JSON_PASTE8(func, v1, v2, v3, v4, v5, v6, v7) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE7(func, v2, v3, v4, v5, v6, v7)
    -
    2227 #define NLOHMANN_JSON_PASTE9(func, v1, v2, v3, v4, v5, v6, v7, v8) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE8(func, v2, v3, v4, v5, v6, v7, v8)
    -
    2228 #define NLOHMANN_JSON_PASTE10(func, v1, v2, v3, v4, v5, v6, v7, v8, v9) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE9(func, v2, v3, v4, v5, v6, v7, v8, v9)
    -
    2229 #define NLOHMANN_JSON_PASTE11(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE10(func, v2, v3, v4, v5, v6, v7, v8, v9, v10)
    -
    2230 #define NLOHMANN_JSON_PASTE12(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE11(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11)
    -
    2231 #define NLOHMANN_JSON_PASTE13(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE12(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12)
    -
    2232 #define NLOHMANN_JSON_PASTE14(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE13(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13)
    -
    2233 #define NLOHMANN_JSON_PASTE15(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE14(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14)
    -
    2234 #define NLOHMANN_JSON_PASTE16(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE15(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15)
    -
    2235 #define NLOHMANN_JSON_PASTE17(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE16(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16)
    -
    2236 #define NLOHMANN_JSON_PASTE18(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE17(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17)
    -
    2237 #define NLOHMANN_JSON_PASTE19(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE18(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18)
    -
    2238 #define NLOHMANN_JSON_PASTE20(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE19(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19)
    -
    2239 #define NLOHMANN_JSON_PASTE21(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE20(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20)
    -
    2240 #define NLOHMANN_JSON_PASTE22(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE21(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21)
    -
    2241 #define NLOHMANN_JSON_PASTE23(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE22(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22)
    -
    2242 #define NLOHMANN_JSON_PASTE24(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE23(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23)
    -
    2243 #define NLOHMANN_JSON_PASTE25(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE24(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24)
    -
    2244 #define NLOHMANN_JSON_PASTE26(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE25(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25)
    -
    2245 #define NLOHMANN_JSON_PASTE27(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE26(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26)
    -
    2246 #define NLOHMANN_JSON_PASTE28(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE27(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27)
    -
    2247 #define NLOHMANN_JSON_PASTE29(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE28(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28)
    -
    2248 #define NLOHMANN_JSON_PASTE30(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE29(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29)
    -
    2249 #define NLOHMANN_JSON_PASTE31(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE30(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30)
    -
    2250 #define NLOHMANN_JSON_PASTE32(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE31(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31)
    -
    2251 #define NLOHMANN_JSON_PASTE33(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE32(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32)
    -
    2252 #define NLOHMANN_JSON_PASTE34(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE33(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33)
    -
    2253 #define NLOHMANN_JSON_PASTE35(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE34(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34)
    -
    2254 #define NLOHMANN_JSON_PASTE36(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE35(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35)
    -
    2255 #define NLOHMANN_JSON_PASTE37(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE36(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36)
    -
    2256 #define NLOHMANN_JSON_PASTE38(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE37(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37)
    -
    2257 #define NLOHMANN_JSON_PASTE39(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE38(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38)
    -
    2258 #define NLOHMANN_JSON_PASTE40(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE39(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39)
    -
    2259 #define NLOHMANN_JSON_PASTE41(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE40(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40)
    -
    2260 #define NLOHMANN_JSON_PASTE42(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE41(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41)
    -
    2261 #define NLOHMANN_JSON_PASTE43(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE42(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42)
    -
    2262 #define NLOHMANN_JSON_PASTE44(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE43(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43)
    -
    2263 #define NLOHMANN_JSON_PASTE45(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE44(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44)
    -
    2264 #define NLOHMANN_JSON_PASTE46(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE45(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45)
    -
    2265 #define NLOHMANN_JSON_PASTE47(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE46(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46)
    -
    2266 #define NLOHMANN_JSON_PASTE48(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE47(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47)
    -
    2267 #define NLOHMANN_JSON_PASTE49(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE48(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48)
    -
    2268 #define NLOHMANN_JSON_PASTE50(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE49(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49)
    -
    2269 #define NLOHMANN_JSON_PASTE51(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE50(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50)
    -
    2270 #define NLOHMANN_JSON_PASTE52(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE51(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51)
    -
    2271 #define NLOHMANN_JSON_PASTE53(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE52(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52)
    -
    2272 #define NLOHMANN_JSON_PASTE54(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE53(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53)
    -
    2273 #define NLOHMANN_JSON_PASTE55(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE54(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54)
    -
    2274 #define NLOHMANN_JSON_PASTE56(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE55(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55)
    -
    2275 #define NLOHMANN_JSON_PASTE57(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE56(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56)
    -
    2276 #define NLOHMANN_JSON_PASTE58(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE57(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57)
    -
    2277 #define NLOHMANN_JSON_PASTE59(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE58(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58)
    -
    2278 #define NLOHMANN_JSON_PASTE60(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE59(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59)
    -
    2279 #define NLOHMANN_JSON_PASTE61(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE60(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60)
    -
    2280 #define NLOHMANN_JSON_PASTE62(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60, v61) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE61(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60, v61)
    -
    2281 #define NLOHMANN_JSON_PASTE63(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60, v61, v62) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE62(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60, v61, v62)
    -
    2282 #define NLOHMANN_JSON_PASTE64(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60, v61, v62, v63) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE63(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60, v61, v62, v63)
    -
    2283 
    -
    2284 #define NLOHMANN_JSON_TO(v1) nlohmann_json_j[#v1] = nlohmann_json_t.v1;
    -
    2285 #define NLOHMANN_JSON_FROM(v1) nlohmann_json_j.at(#v1).get_to(nlohmann_json_t.v1);
    -
    2286 
    -
    2292 #define NLOHMANN_DEFINE_TYPE_INTRUSIVE(Type, ...) \
    -
    2293  friend void to_json(nlohmann::json& nlohmann_json_j, const Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_TO, __VA_ARGS__)) } \
    -
    2294  friend void from_json(const nlohmann::json& nlohmann_json_j, Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_FROM, __VA_ARGS__)) }
    -
    2295 
    -
    2301 #define NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE(Type, ...) \
    -
    2302  inline void to_json(nlohmann::json& nlohmann_json_j, const Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_TO, __VA_ARGS__)) } \
    -
    2303  inline void from_json(const nlohmann::json& nlohmann_json_j, Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_FROM, __VA_ARGS__)) }
    -
    2304 
    -
    2305 #ifndef JSON_USE_IMPLICIT_CONVERSIONS
    -
    2306  #define JSON_USE_IMPLICIT_CONVERSIONS 1
    -
    2307 #endif
    -
    2308 
    -
    2309 #if JSON_USE_IMPLICIT_CONVERSIONS
    -
    2310  #define JSON_EXPLICIT
    -
    2311 #else
    -
    2312  #define JSON_EXPLICIT explicit
    -
    2313 #endif
    -
    2314 
    -
    2315 
    -
    2316 namespace nlohmann
    -
    2317 {
    -
    2318 namespace detail
    -
    2319 {
    -
    2321 // exceptions //
    -
    2323 
    -
    2352 class exception : public std::exception
    -
    2353 {
    -
    2354  public:
    - -
    2357  const char* what() const noexcept override
    -
    2358  {
    -
    2359  return m.what();
    -
    2360  }
    -
    2361 
    -
    2363  const int id;
    -
    2364 
    -
    2365  protected:
    - -
    2367  exception(int id_, const char* what_arg) : id(id_), m(what_arg) {}
    -
    2368 
    -
    2369  static std::string name(const std::string& ename, int id_)
    -
    2370  {
    -
    2371  return "[json.exception." + ename + "." + std::to_string(id_) + "] ";
    -
    2372  }
    -
    2373 
    -
    2374  private:
    -
    2376  std::runtime_error m;
    -
    2377 };
    -
    2378 
    -
    2424 class parse_error : public exception
    -
    2425 {
    -
    2426  public:
    -
    2436  static parse_error create(int id_, const position_t& pos, const std::string& what_arg)
    -
    2437  {
    -
    2438  std::string w = exception::name("parse_error", id_) + "parse error" +
    -
    2439  position_string(pos) + ": " + what_arg;
    -
    2440  return parse_error(id_, pos.chars_read_total, w.c_str());
    -
    2441  }
    -
    2442 
    -
    2443  static parse_error create(int id_, std::size_t byte_, const std::string& what_arg)
    -
    2444  {
    -
    2445  std::string w = exception::name("parse_error", id_) + "parse error" +
    -
    2446  (byte_ != 0 ? (" at byte " + std::to_string(byte_)) : "") +
    -
    2447  ": " + what_arg;
    -
    2448  return parse_error(id_, byte_, w.c_str());
    -
    2449  }
    -
    2450 
    -
    2460  const std::size_t byte;
    -
    2461 
    -
    2462  private:
    -
    2463  parse_error(int id_, std::size_t byte_, const char* what_arg)
    -
    2464  : exception(id_, what_arg), byte(byte_) {}
    -
    2465 
    -
    2466  static std::string position_string(const position_t& pos)
    -
    2467  {
    -
    2468  return " at line " + std::to_string(pos.lines_read + 1) +
    -
    2469  ", column " + std::to_string(pos.chars_read_current_line);
    -
    2470  }
    -
    2471 };
    -
    2472 
    -
    2510 class invalid_iterator : public exception
    -
    2511 {
    -
    2512  public:
    -
    2513  static invalid_iterator create(int id_, const std::string& what_arg)
    -
    2514  {
    -
    2515  std::string w = exception::name("invalid_iterator", id_) + what_arg;
    -
    2516  return invalid_iterator(id_, w.c_str());
    -
    2517  }
    -
    2518 
    -
    2519  private:
    - -
    2521  invalid_iterator(int id_, const char* what_arg)
    -
    2522  : exception(id_, what_arg) {}
    -
    2523 };
    -
    2524 
    -
    2564 class type_error : public exception
    -
    2565 {
    -
    2566  public:
    -
    2567  static type_error create(int id_, const std::string& what_arg)
    -
    2568  {
    -
    2569  std::string w = exception::name("type_error", id_) + what_arg;
    -
    2570  return type_error(id_, w.c_str());
    -
    2571  }
    -
    2572 
    -
    2573  private:
    - -
    2575  type_error(int id_, const char* what_arg) : exception(id_, what_arg) {}
    -
    2576 };
    -
    2577 
    -
    2611 class out_of_range : public exception
    -
    2612 {
    -
    2613  public:
    -
    2614  static out_of_range create(int id_, const std::string& what_arg)
    -
    2615  {
    -
    2616  std::string w = exception::name("out_of_range", id_) + what_arg;
    -
    2617  return out_of_range(id_, w.c_str());
    -
    2618  }
    -
    2619 
    -
    2620  private:
    - -
    2622  out_of_range(int id_, const char* what_arg) : exception(id_, what_arg) {}
    -
    2623 };
    -
    2624 
    -
    2649 class other_error : public exception
    -
    2650 {
    -
    2651  public:
    -
    2652  static other_error create(int id_, const std::string& what_arg)
    -
    2653  {
    -
    2654  std::string w = exception::name("other_error", id_) + what_arg;
    -
    2655  return other_error(id_, w.c_str());
    -
    2656  }
    -
    2657 
    -
    2658  private:
    - -
    2660  other_error(int id_, const char* what_arg) : exception(id_, what_arg) {}
    -
    2661 };
    -
    2662 } // namespace detail
    -
    2663 } // namespace nlohmann
    -
    2664 
    -
    2665 // #include <nlohmann/detail/macro_scope.hpp>
    -
    2666 
    -
    2667 // #include <nlohmann/detail/meta/cpp_future.hpp>
    -
    2668 
    -
    2669 
    -
    2670 #include <cstddef> // size_t
    -
    2671 #include <type_traits> // conditional, enable_if, false_type, integral_constant, is_constructible, is_integral, is_same, remove_cv, remove_reference, true_type
    -
    2672 
    -
    2673 namespace nlohmann
    -
    2674 {
    -
    2675 namespace detail
    -
    2676 {
    -
    2677 // alias templates to reduce boilerplate
    -
    2678 template<bool B, typename T = void>
    -
    2679 using enable_if_t = typename std::enable_if<B, T>::type;
    -
    2680 
    -
    2681 template<typename T>
    -
    2682 using uncvref_t = typename std::remove_cv<typename std::remove_reference<T>::type>::type;
    -
    2683 
    -
    2684 // implementation of C++14 index_sequence and affiliates
    -
    2685 // source: https://stackoverflow.com/a/32223343
    -
    2686 template<std::size_t... Ints>
    -
    2687 struct index_sequence
    -
    2688 {
    - -
    2690  using value_type = std::size_t;
    -
    2691  static constexpr std::size_t size() noexcept
    -
    2692  {
    -
    2693  return sizeof...(Ints);
    -
    2694  }
    -
    2695 };
    -
    2696 
    -
    2697 template<class Sequence1, class Sequence2>
    -
    2698 struct merge_and_renumber;
    -
    2699 
    -
    2700 template<std::size_t... I1, std::size_t... I2>
    -
    2701 struct merge_and_renumber<index_sequence<I1...>, index_sequence<I2...>>
    -
    2702  : index_sequence < I1..., (sizeof...(I1) + I2)... > {};
    -
    2703 
    -
    2704 template<std::size_t N>
    -
    2705 struct make_index_sequence
    -
    2706  : merge_and_renumber < typename make_index_sequence < N / 2 >::type,
    -
    2707  typename make_index_sequence < N - N / 2 >::type > {};
    -
    2708 
    -
    2709 template<> struct make_index_sequence<0> : index_sequence<> {};
    -
    2710 template<> struct make_index_sequence<1> : index_sequence<0> {};
    -
    2711 
    -
    2712 template<typename... Ts>
    -
    2713 using index_sequence_for = make_index_sequence<sizeof...(Ts)>;
    -
    2714 
    -
    2715 // dispatch utility (taken from ranges-v3)
    -
    2716 template<unsigned N> struct priority_tag : priority_tag < N - 1 > {};
    -
    2717 template<> struct priority_tag<0> {};
    -
    2718 
    -
    2719 // taken from ranges-v3
    -
    2720 template<typename T>
    -
    2721 struct static_const
    -
    2722 {
    -
    2723  static constexpr T value{};
    -
    2724 };
    -
    2725 
    -
    2726 template<typename T>
    -
    2727 constexpr T static_const<T>::value;
    -
    2728 } // namespace detail
    -
    2729 } // namespace nlohmann
    -
    2730 
    -
    2731 // #include <nlohmann/detail/meta/type_traits.hpp>
    -
    2732 
    -
    2733 
    -
    2734 #include <limits> // numeric_limits
    -
    2735 #include <type_traits> // false_type, is_constructible, is_integral, is_same, true_type
    -
    2736 #include <utility> // declval
    -
    2737 
    -
    2738 // #include <nlohmann/detail/iterators/iterator_traits.hpp>
    -
    2739 
    -
    2740 
    -
    2741 #include <iterator> // random_access_iterator_tag
    -
    2742 
    -
    2743 // #include <nlohmann/detail/meta/void_t.hpp>
    -
    2744 
    -
    2745 
    -
    2746 namespace nlohmann
    -
    2747 {
    -
    2748 namespace detail
    -
    2749 {
    -
    2750 template<typename ...Ts> struct make_void
    -
    2751 {
    -
    2752  using type = void;
    -
    2753 };
    -
    2754 template<typename ...Ts> using void_t = typename make_void<Ts...>::type;
    -
    2755 } // namespace detail
    -
    2756 } // namespace nlohmann
    -
    2757 
    -
    2758 // #include <nlohmann/detail/meta/cpp_future.hpp>
    -
    2759 
    -
    2760 
    -
    2761 namespace nlohmann
    -
    2762 {
    -
    2763 namespace detail
    -
    2764 {
    -
    2765 template<typename It, typename = void>
    -
    2766 struct iterator_types {};
    -
    2767 
    -
    2768 template<typename It>
    -
    2769 struct iterator_types <
    -
    2770  It,
    -
    2771  void_t<typename It::difference_type, typename It::value_type, typename It::pointer,
    -
    2772  typename It::reference, typename It::iterator_category >>
    -
    2773 {
    -
    2774  using difference_type = typename It::difference_type;
    -
    2775  using value_type = typename It::value_type;
    -
    2776  using pointer = typename It::pointer;
    -
    2777  using reference = typename It::reference;
    -
    2778  using iterator_category = typename It::iterator_category;
    -
    2779 };
    -
    2780 
    -
    2781 // This is required as some compilers implement std::iterator_traits in a way that
    -
    2782 // doesn't work with SFINAE. See https://github.com/nlohmann/json/issues/1341.
    -
    2783 template<typename T, typename = void>
    -
    2784 struct iterator_traits
    -
    2785 {
    -
    2786 };
    -
    2787 
    -
    2788 template<typename T>
    -
    2789 struct iterator_traits < T, enable_if_t < !std::is_pointer<T>::value >>
    -
    2790  : iterator_types<T>
    -
    2791 {
    -
    2792 };
    -
    2793 
    -
    2794 template<typename T>
    -
    2795 struct iterator_traits<T*, enable_if_t<std::is_object<T>::value>>
    -
    2796 {
    -
    2797  using iterator_category = std::random_access_iterator_tag;
    -
    2798  using value_type = T;
    -
    2799  using difference_type = ptrdiff_t;
    -
    2800  using pointer = T*;
    -
    2801  using reference = T&;
    -
    2802 };
    -
    2803 } // namespace detail
    -
    2804 } // namespace nlohmann
    -
    2805 
    -
    2806 // #include <nlohmann/detail/macro_scope.hpp>
    -
    2807 
    -
    2808 // #include <nlohmann/detail/meta/cpp_future.hpp>
    -
    2809 
    -
    2810 // #include <nlohmann/detail/meta/detected.hpp>
    -
    2811 
    -
    2812 
    -
    2813 #include <type_traits>
    -
    2814 
    -
    2815 // #include <nlohmann/detail/meta/void_t.hpp>
    -
    2816 
    -
    2817 
    -
    2818 // https://en.cppreference.com/w/cpp/experimental/is_detected
    -
    2819 namespace nlohmann
    -
    2820 {
    -
    2821 namespace detail
    -
    2822 {
    -
    2823 struct nonesuch
    -
    2824 {
    -
    2825  nonesuch() = delete;
    -
    2826  ~nonesuch() = delete;
    -
    2827  nonesuch(nonesuch const&) = delete;
    -
    2828  nonesuch(nonesuch const&&) = delete;
    -
    2829  void operator=(nonesuch const&) = delete;
    -
    2830  void operator=(nonesuch&&) = delete;
    -
    2831 };
    -
    2832 
    -
    2833 template<class Default,
    -
    2834  class AlwaysVoid,
    -
    2835  template<class...> class Op,
    -
    2836  class... Args>
    -
    2837 struct detector
    -
    2838 {
    -
    2839  using value_t = std::false_type;
    -
    2840  using type = Default;
    -
    2841 };
    -
    2842 
    -
    2843 template<class Default, template<class...> class Op, class... Args>
    -
    2844 struct detector<Default, void_t<Op<Args...>>, Op, Args...>
    -
    2845 {
    -
    2846  using value_t = std::true_type;
    -
    2847  using type = Op<Args...>;
    -
    2848 };
    -
    2849 
    -
    2850 template<template<class...> class Op, class... Args>
    -
    2851 using is_detected = typename detector<nonesuch, void, Op, Args...>::value_t;
    -
    2852 
    -
    2853 template<template<class...> class Op, class... Args>
    -
    2854 using detected_t = typename detector<nonesuch, void, Op, Args...>::type;
    -
    2855 
    -
    2856 template<class Default, template<class...> class Op, class... Args>
    -
    2857 using detected_or = detector<Default, void, Op, Args...>;
    -
    2858 
    -
    2859 template<class Default, template<class...> class Op, class... Args>
    -
    2860 using detected_or_t = typename detected_or<Default, Op, Args...>::type;
    -
    2861 
    -
    2862 template<class Expected, template<class...> class Op, class... Args>
    -
    2863 using is_detected_exact = std::is_same<Expected, detected_t<Op, Args...>>;
    -
    2864 
    -
    2865 template<class To, template<class...> class Op, class... Args>
    - -
    2867  std::is_convertible<detected_t<Op, Args...>, To>;
    -
    2868 } // namespace detail
    -
    2869 } // namespace nlohmann
    -
    2870 
    -
    2871 // #include <nlohmann/json_fwd.hpp>
    -
    2872 #ifndef INCLUDE_NLOHMANN_JSON_FWD_HPP_
    -
    2873 #define INCLUDE_NLOHMANN_JSON_FWD_HPP_
    -
    2874 
    -
    2875 #include <cstdint> // int64_t, uint64_t
    -
    2876 #include <map> // map
    -
    2877 #include <memory> // allocator
    -
    2878 #include <string> // string
    -
    2879 #include <vector> // vector
    -
    2880 
    -
    2886 namespace nlohmann
    -
    2887 {
    -
    2895 template<typename T = void, typename SFINAE = void>
    -
    2896 struct adl_serializer;
    -
    2897 
    -
    2898 template<template<typename U, typename V, typename... Args> class ObjectType =
    -
    2899  std::map,
    -
    2900  template<typename U, typename... Args> class ArrayType = std::vector,
    -
    2901  class StringType = std::string, class BooleanType = bool,
    -
    2902  class NumberIntegerType = std::int64_t,
    -
    2903  class NumberUnsignedType = std::uint64_t,
    -
    2904  class NumberFloatType = double,
    -
    2905  template<typename U> class AllocatorType = std::allocator,
    -
    2906  template<typename T, typename SFINAE = void> class JSONSerializer =
    -
    2907  adl_serializer,
    -
    2908  class BinaryType = std::vector<std::uint8_t>>
    -
    2909 class basic_json;
    -
    2910 
    -
    2922 template<typename BasicJsonType>
    -
    2923 class json_pointer;
    -
    2924 
    -
    2933 using json = basic_json<>;
    -
    2934 
    -
    2935 template<class Key, class T, class IgnoredLess, class Allocator>
    - -
    2937 
    - -
    2946 
    -
    2947 } // namespace nlohmann
    -
    2948 
    -
    2949 #endif // INCLUDE_NLOHMANN_JSON_FWD_HPP_
    -
    2950 
    -
    2951 
    -
    2952 namespace nlohmann
    -
    2953 {
    -
    2962 namespace detail
    -
    2963 {
    -
    2965 // helpers //
    -
    2967 
    -
    2968 // Note to maintainers:
    -
    2969 //
    -
    2970 // Every trait in this file expects a non CV-qualified type.
    -
    2971 // The only exceptions are in the 'aliases for detected' section
    -
    2972 // (i.e. those of the form: decltype(T::member_function(std::declval<T>())))
    -
    2973 //
    -
    2974 // In this case, T has to be properly CV-qualified to constraint the function arguments
    -
    2975 // (e.g. to_json(BasicJsonType&, const T&))
    -
    2976 
    -
    2977 template<typename> struct is_basic_json : std::false_type {};
    -
    2978 
    - -
    2980 struct is_basic_json<NLOHMANN_BASIC_JSON_TPL> : std::true_type {};
    -
    2981 
    -
    2983 // json_ref helpers //
    -
    2985 
    -
    2986 template<typename>
    -
    2987 class json_ref;
    -
    2988 
    -
    2989 template<typename>
    -
    2990 struct is_json_ref : std::false_type {};
    -
    2991 
    -
    2992 template<typename T>
    -
    2993 struct is_json_ref<json_ref<T>> : std::true_type {};
    -
    2994 
    -
    2996 // aliases for detected //
    -
    2998 
    -
    2999 template<typename T>
    -
    3000 using mapped_type_t = typename T::mapped_type;
    -
    3001 
    -
    3002 template<typename T>
    -
    3003 using key_type_t = typename T::key_type;
    -
    3004 
    -
    3005 template<typename T>
    -
    3006 using value_type_t = typename T::value_type;
    -
    3007 
    -
    3008 template<typename T>
    -
    3009 using difference_type_t = typename T::difference_type;
    -
    3010 
    -
    3011 template<typename T>
    -
    3012 using pointer_t = typename T::pointer;
    -
    3013 
    -
    3014 template<typename T>
    -
    3015 using reference_t = typename T::reference;
    -
    3016 
    -
    3017 template<typename T>
    -
    3018 using iterator_category_t = typename T::iterator_category;
    -
    3019 
    -
    3020 template<typename T>
    -
    3021 using iterator_t = typename T::iterator;
    -
    3022 
    -
    3023 template<typename T, typename... Args>
    -
    3024 using to_json_function = decltype(T::to_json(std::declval<Args>()...));
    -
    3025 
    -
    3026 template<typename T, typename... Args>
    -
    3027 using from_json_function = decltype(T::from_json(std::declval<Args>()...));
    -
    3028 
    -
    3029 template<typename T, typename U>
    -
    3030 using get_template_function = decltype(std::declval<T>().template get<U>());
    -
    3031 
    -
    3032 // trait checking if JSONSerializer<T>::from_json(json const&, udt&) exists
    -
    3033 template<typename BasicJsonType, typename T, typename = void>
    -
    3034 struct has_from_json : std::false_type {};
    -
    3035 
    -
    3036 // trait checking if j.get<T> is valid
    -
    3037 // use this trait instead of std::is_constructible or std::is_convertible,
    -
    3038 // both rely on, or make use of implicit conversions, and thus fail when T
    -
    3039 // has several constructors/operator= (see https://github.com/nlohmann/json/issues/958)
    -
    3040 template <typename BasicJsonType, typename T>
    - -
    3042 {
    - -
    3044 };
    -
    3045 
    -
    3046 template<typename BasicJsonType, typename T>
    -
    3047 struct has_from_json < BasicJsonType, T,
    -
    3048  enable_if_t < !is_basic_json<T>::value >>
    -
    3049 {
    -
    3050  using serializer = typename BasicJsonType::template json_serializer<T, void>;
    -
    3051 
    -
    3052  static constexpr bool value =
    - -
    3054  const BasicJsonType&, T&>::value;
    -
    3055 };
    -
    3056 
    -
    3057 // This trait checks if JSONSerializer<T>::from_json(json const&) exists
    -
    3058 // this overload is used for non-default-constructible user-defined-types
    -
    3059 template<typename BasicJsonType, typename T, typename = void>
    -
    3060 struct has_non_default_from_json : std::false_type {};
    -
    3061 
    -
    3062 template<typename BasicJsonType, typename T>
    -
    3063 struct has_non_default_from_json < BasicJsonType, T, enable_if_t < !is_basic_json<T>::value >>
    -
    3064 {
    -
    3065  using serializer = typename BasicJsonType::template json_serializer<T, void>;
    -
    3066 
    -
    3067  static constexpr bool value =
    - -
    3069  const BasicJsonType&>::value;
    -
    3070 };
    -
    3071 
    -
    3072 // This trait checks if BasicJsonType::json_serializer<T>::to_json exists
    -
    3073 // Do not evaluate the trait when T is a basic_json type, to avoid template instantiation infinite recursion.
    -
    3074 template<typename BasicJsonType, typename T, typename = void>
    -
    3075 struct has_to_json : std::false_type {};
    -
    3076 
    -
    3077 template<typename BasicJsonType, typename T>
    -
    3078 struct has_to_json < BasicJsonType, T, enable_if_t < !is_basic_json<T>::value >>
    -
    3079 {
    -
    3080  using serializer = typename BasicJsonType::template json_serializer<T, void>;
    -
    3081 
    -
    3082  static constexpr bool value =
    - -
    3084  T>::value;
    -
    3085 };
    -
    3086 
    -
    3087 
    -
    3089 // is_ functions //
    -
    3091 
    -
    3092 template<typename T, typename = void>
    -
    3093 struct is_iterator_traits : std::false_type {};
    -
    3094 
    -
    3095 template<typename T>
    -
    3096 struct is_iterator_traits<iterator_traits<T>>
    -
    3097 {
    -
    3098  private:
    -
    3099  using traits = iterator_traits<T>;
    -
    3100 
    -
    3101  public:
    -
    3102  static constexpr auto value =
    -
    3103  is_detected<value_type_t, traits>::value &&
    -
    3104  is_detected<difference_type_t, traits>::value &&
    -
    3105  is_detected<pointer_t, traits>::value &&
    -
    3106  is_detected<iterator_category_t, traits>::value &&
    -
    3107  is_detected<reference_t, traits>::value;
    -
    3108 };
    -
    3109 
    -
    3110 // source: https://stackoverflow.com/a/37193089/4116453
    -
    3111 
    -
    3112 template<typename T, typename = void>
    -
    3113 struct is_complete_type : std::false_type {};
    -
    3114 
    -
    3115 template<typename T>
    -
    3116 struct is_complete_type<T, decltype(void(sizeof(T)))> : std::true_type {};
    -
    3117 
    -
    3118 template<typename BasicJsonType, typename CompatibleObjectType,
    -
    3119  typename = void>
    -
    3120 struct is_compatible_object_type_impl : std::false_type {};
    -
    3121 
    -
    3122 template<typename BasicJsonType, typename CompatibleObjectType>
    - -
    3124  BasicJsonType, CompatibleObjectType,
    -
    3125  enable_if_t < is_detected<mapped_type_t, CompatibleObjectType>::value&&
    -
    3126  is_detected<key_type_t, CompatibleObjectType>::value >>
    -
    3127 {
    -
    3128 
    -
    3129  using object_t = typename BasicJsonType::object_t;
    -
    3130 
    -
    3131  // macOS's is_constructible does not play well with nonesuch...
    -
    3132  static constexpr bool value =
    -
    3133  std::is_constructible<typename object_t::key_type,
    -
    3134  typename CompatibleObjectType::key_type>::value &&
    -
    3135  std::is_constructible<typename object_t::mapped_type,
    -
    3136  typename CompatibleObjectType::mapped_type>::value;
    -
    3137 };
    -
    3138 
    -
    3139 template<typename BasicJsonType, typename CompatibleObjectType>
    - -
    3141  : is_compatible_object_type_impl<BasicJsonType, CompatibleObjectType> {};
    -
    3142 
    -
    3143 template<typename BasicJsonType, typename ConstructibleObjectType,
    -
    3144  typename = void>
    -
    3145 struct is_constructible_object_type_impl : std::false_type {};
    -
    3146 
    -
    3147 template<typename BasicJsonType, typename ConstructibleObjectType>
    - -
    3149  BasicJsonType, ConstructibleObjectType,
    -
    3150  enable_if_t < is_detected<mapped_type_t, ConstructibleObjectType>::value&&
    -
    3151  is_detected<key_type_t, ConstructibleObjectType>::value >>
    -
    3152 {
    -
    3153  using object_t = typename BasicJsonType::object_t;
    -
    3154 
    -
    3155  static constexpr bool value =
    -
    3156  (std::is_default_constructible<ConstructibleObjectType>::value &&
    -
    3157  (std::is_move_assignable<ConstructibleObjectType>::value ||
    -
    3158  std::is_copy_assignable<ConstructibleObjectType>::value) &&
    -
    3159  (std::is_constructible<typename ConstructibleObjectType::key_type,
    -
    3160  typename object_t::key_type>::value &&
    -
    3161  std::is_same <
    -
    3162  typename object_t::mapped_type,
    -
    3163  typename ConstructibleObjectType::mapped_type >::value)) ||
    -
    3164  (has_from_json<BasicJsonType,
    -
    3165  typename ConstructibleObjectType::mapped_type>::value ||
    - -
    3167  BasicJsonType,
    -
    3168  typename ConstructibleObjectType::mapped_type >::value);
    -
    3169 };
    -
    3170 
    -
    3171 template<typename BasicJsonType, typename ConstructibleObjectType>
    - -
    3173  : is_constructible_object_type_impl<BasicJsonType,
    -
    3174  ConstructibleObjectType> {};
    -
    3175 
    -
    3176 template<typename BasicJsonType, typename CompatibleStringType,
    -
    3177  typename = void>
    -
    3178 struct is_compatible_string_type_impl : std::false_type {};
    -
    3179 
    -
    3180 template<typename BasicJsonType, typename CompatibleStringType>
    -
    3181 struct is_compatible_string_type_impl <
    -
    3182  BasicJsonType, CompatibleStringType,
    -
    3183  enable_if_t<is_detected_exact<typename BasicJsonType::string_t::value_type,
    -
    3184  value_type_t, CompatibleStringType>::value >>
    -
    3185 {
    -
    3186  static constexpr auto value =
    -
    3187  std::is_constructible<typename BasicJsonType::string_t, CompatibleStringType>::value;
    -
    3188 };
    -
    3189 
    -
    3190 template<typename BasicJsonType, typename ConstructibleStringType>
    -
    3191 struct is_compatible_string_type
    -
    3192  : is_compatible_string_type_impl<BasicJsonType, ConstructibleStringType> {};
    -
    3193 
    -
    3194 template<typename BasicJsonType, typename ConstructibleStringType,
    -
    3195  typename = void>
    -
    3196 struct is_constructible_string_type_impl : std::false_type {};
    -
    3197 
    -
    3198 template<typename BasicJsonType, typename ConstructibleStringType>
    -
    3199 struct is_constructible_string_type_impl <
    -
    3200  BasicJsonType, ConstructibleStringType,
    -
    3201  enable_if_t<is_detected_exact<typename BasicJsonType::string_t::value_type,
    -
    3202  value_type_t, ConstructibleStringType>::value >>
    -
    3203 {
    -
    3204  static constexpr auto value =
    -
    3205  std::is_constructible<ConstructibleStringType,
    -
    3206  typename BasicJsonType::string_t>::value;
    -
    3207 };
    -
    3208 
    -
    3209 template<typename BasicJsonType, typename ConstructibleStringType>
    -
    3210 struct is_constructible_string_type
    -
    3211  : is_constructible_string_type_impl<BasicJsonType, ConstructibleStringType> {};
    -
    3212 
    -
    3213 template<typename BasicJsonType, typename CompatibleArrayType, typename = void>
    -
    3214 struct is_compatible_array_type_impl : std::false_type {};
    -
    3215 
    -
    3216 template<typename BasicJsonType, typename CompatibleArrayType>
    - -
    3218  BasicJsonType, CompatibleArrayType,
    -
    3219  enable_if_t < is_detected<value_type_t, CompatibleArrayType>::value&&
    -
    3220  is_detected<iterator_t, CompatibleArrayType>::value&&
    -
    3221 // This is needed because json_reverse_iterator has a ::iterator type...
    -
    3222 // Therefore it is detected as a CompatibleArrayType.
    -
    3223 // The real fix would be to have an Iterable concept.
    - -
    3225  iterator_traits<CompatibleArrayType >>::value >>
    -
    3226 {
    -
    3227  static constexpr bool value =
    -
    3228  std::is_constructible<BasicJsonType,
    -
    3229  typename CompatibleArrayType::value_type>::value;
    -
    3230 };
    -
    3231 
    -
    3232 template<typename BasicJsonType, typename CompatibleArrayType>
    - -
    3234  : is_compatible_array_type_impl<BasicJsonType, CompatibleArrayType> {};
    -
    3235 
    -
    3236 template<typename BasicJsonType, typename ConstructibleArrayType, typename = void>
    -
    3237 struct is_constructible_array_type_impl : std::false_type {};
    -
    3238 
    -
    3239 template<typename BasicJsonType, typename ConstructibleArrayType>
    -
    3240 struct is_constructible_array_type_impl <
    -
    3241  BasicJsonType, ConstructibleArrayType,
    -
    3242  enable_if_t<std::is_same<ConstructibleArrayType,
    -
    3243  typename BasicJsonType::value_type>::value >>
    -
    3244  : std::true_type {};
    -
    3245 
    -
    3246 template<typename BasicJsonType, typename ConstructibleArrayType>
    - -
    3248  BasicJsonType, ConstructibleArrayType,
    -
    3249  enable_if_t < !std::is_same<ConstructibleArrayType,
    -
    3250  typename BasicJsonType::value_type>::value&&
    -
    3251  std::is_default_constructible<ConstructibleArrayType>::value&&
    -
    3252 (std::is_move_assignable<ConstructibleArrayType>::value ||
    -
    3253  std::is_copy_assignable<ConstructibleArrayType>::value)&&
    -
    3254 is_detected<value_type_t, ConstructibleArrayType>::value&&
    -
    3255 is_detected<iterator_t, ConstructibleArrayType>::value&&
    - -
    3257 detected_t<value_type_t, ConstructibleArrayType >>::value >>
    -
    3258 {
    -
    3259  static constexpr bool value =
    -
    3260  // This is needed because json_reverse_iterator has a ::iterator type,
    -
    3261  // furthermore, std::back_insert_iterator (and other iterators) have a
    -
    3262  // base class `iterator`... Therefore it is detected as a
    -
    3263  // ConstructibleArrayType. The real fix would be to have an Iterable
    -
    3264  // concept.
    - -
    3266 
    -
    3267  (std::is_same<typename ConstructibleArrayType::value_type,
    -
    3268  typename BasicJsonType::array_t::value_type>::value ||
    -
    3269  has_from_json<BasicJsonType,
    -
    3270  typename ConstructibleArrayType::value_type>::value ||
    - -
    3272  BasicJsonType, typename ConstructibleArrayType::value_type >::value);
    -
    3273 };
    -
    3274 
    -
    3275 template<typename BasicJsonType, typename ConstructibleArrayType>
    - -
    3277  : is_constructible_array_type_impl<BasicJsonType, ConstructibleArrayType> {};
    -
    3278 
    -
    3279 template<typename RealIntegerType, typename CompatibleNumberIntegerType,
    -
    3280  typename = void>
    -
    3281 struct is_compatible_integer_type_impl : std::false_type {};
    -
    3282 
    -
    3283 template<typename RealIntegerType, typename CompatibleNumberIntegerType>
    - -
    3285  RealIntegerType, CompatibleNumberIntegerType,
    -
    3286  enable_if_t < std::is_integral<RealIntegerType>::value&&
    -
    3287  std::is_integral<CompatibleNumberIntegerType>::value&&
    -
    3288  !std::is_same<bool, CompatibleNumberIntegerType>::value >>
    -
    3289 {
    -
    3290  // is there an assert somewhere on overflows?
    -
    3291  using RealLimits = std::numeric_limits<RealIntegerType>;
    -
    3292  using CompatibleLimits = std::numeric_limits<CompatibleNumberIntegerType>;
    -
    3293 
    -
    3294  static constexpr auto value =
    -
    3295  std::is_constructible<RealIntegerType,
    -
    3296  CompatibleNumberIntegerType>::value &&
    -
    3297  CompatibleLimits::is_integer &&
    -
    3298  RealLimits::is_signed == CompatibleLimits::is_signed;
    -
    3299 };
    -
    3300 
    -
    3301 template<typename RealIntegerType, typename CompatibleNumberIntegerType>
    - -
    3303  : is_compatible_integer_type_impl<RealIntegerType,
    -
    3304  CompatibleNumberIntegerType> {};
    -
    3305 
    -
    3306 template<typename BasicJsonType, typename CompatibleType, typename = void>
    -
    3307 struct is_compatible_type_impl: std::false_type {};
    -
    3308 
    -
    3309 template<typename BasicJsonType, typename CompatibleType>
    -
    3310 struct is_compatible_type_impl <
    -
    3311  BasicJsonType, CompatibleType,
    -
    3312  enable_if_t<is_complete_type<CompatibleType>::value >>
    -
    3313 {
    -
    3314  static constexpr bool value =
    -
    3315  has_to_json<BasicJsonType, CompatibleType>::value;
    -
    3316 };
    -
    3317 
    -
    3318 template<typename BasicJsonType, typename CompatibleType>
    -
    3319 struct is_compatible_type
    -
    3320  : is_compatible_type_impl<BasicJsonType, CompatibleType> {};
    -
    3321 
    -
    3322 // https://en.cppreference.com/w/cpp/types/conjunction
    -
    3323 template<class...> struct conjunction : std::true_type { };
    -
    3324 template<class B1> struct conjunction<B1> : B1 { };
    -
    3325 template<class B1, class... Bn>
    -
    3326 struct conjunction<B1, Bn...>
    -
    3327 : std::conditional<bool(B1::value), conjunction<Bn...>, B1>::type {};
    -
    3328 
    -
    3329 template<typename T1, typename T2>
    -
    3330 struct is_constructible_tuple : std::false_type {};
    -
    3331 
    -
    3332 template<typename T1, typename... Args>
    -
    3333 struct is_constructible_tuple<T1, std::tuple<Args...>> : conjunction<std::is_constructible<T1, Args>...> {};
    -
    3334 } // namespace detail
    -
    3335 } // namespace nlohmann
    -
    3336 
    -
    3337 // #include <nlohmann/detail/value_t.hpp>
    -
    3338 
    -
    3339 
    -
    3340 #include <array> // array
    -
    3341 #include <cstddef> // size_t
    -
    3342 #include <cstdint> // uint8_t
    -
    3343 #include <string> // string
    -
    3344 
    -
    3345 namespace nlohmann
    -
    3346 {
    -
    3347 namespace detail
    -
    3348 {
    -
    3350 // JSON type enumeration //
    -
    3352 
    -
    3377 enum class value_t : std::uint8_t
    -
    3378 {
    -
    3379  null,
    -
    3380  object,
    -
    3381  array,
    -
    3382  string,
    -
    3383  boolean,
    -
    3384  number_integer,
    -
    3385  number_unsigned,
    -
    3386  number_float,
    -
    3387  binary,
    -
    3388  discarded
    -
    3389 };
    -
    3390 
    -
    3404 inline bool operator<(const value_t lhs, const value_t rhs) noexcept
    -
    3405 {
    -
    3406  static constexpr std::array<std::uint8_t, 9> order = {{
    -
    3407  0 /* null */, 3 /* object */, 4 /* array */, 5 /* string */,
    -
    3408  1 /* boolean */, 2 /* integer */, 2 /* unsigned */, 2 /* float */,
    -
    3409  6 /* binary */
    -
    3410  }
    -
    3411  };
    -
    3412 
    -
    3413  const auto l_index = static_cast<std::size_t>(lhs);
    -
    3414  const auto r_index = static_cast<std::size_t>(rhs);
    -
    3415  return l_index < order.size() && r_index < order.size() && order[l_index] < order[r_index];
    -
    3416 }
    -
    3417 } // namespace detail
    -
    3418 } // namespace nlohmann
    -
    3419 
    -
    3420 
    -
    3421 namespace nlohmann
    -
    3422 {
    -
    3423 namespace detail
    -
    3424 {
    -
    3425 template<typename BasicJsonType>
    -
    3426 void from_json(const BasicJsonType& j, typename std::nullptr_t& n)
    -
    3427 {
    -
    3428  if (JSON_HEDLEY_UNLIKELY(!j.is_null()))
    -
    3429  {
    -
    3430  JSON_THROW(type_error::create(302, "type must be null, but is " + std::string(j.type_name())));
    -
    3431  }
    -
    3432  n = nullptr;
    -
    3433 }
    -
    3434 
    -
    3435 // overloads for basic_json template parameters
    -
    3436 template < typename BasicJsonType, typename ArithmeticType,
    -
    3437  enable_if_t < std::is_arithmetic<ArithmeticType>::value&&
    -
    3438  !std::is_same<ArithmeticType, typename BasicJsonType::boolean_t>::value,
    -
    3439  int > = 0 >
    -
    3440 void get_arithmetic_value(const BasicJsonType& j, ArithmeticType& val)
    -
    3441 {
    -
    3442  switch (static_cast<value_t>(j))
    -
    3443  {
    - -
    3445  {
    -
    3446  val = static_cast<ArithmeticType>(*j.template get_ptr<const typename BasicJsonType::number_unsigned_t*>());
    -
    3447  break;
    -
    3448  }
    - -
    3450  {
    -
    3451  val = static_cast<ArithmeticType>(*j.template get_ptr<const typename BasicJsonType::number_integer_t*>());
    -
    3452  break;
    -
    3453  }
    -
    3454  case value_t::number_float:
    -
    3455  {
    -
    3456  val = static_cast<ArithmeticType>(*j.template get_ptr<const typename BasicJsonType::number_float_t*>());
    -
    3457  break;
    -
    3458  }
    -
    3459 
    -
    3460  default:
    -
    3461  JSON_THROW(type_error::create(302, "type must be number, but is " + std::string(j.type_name())));
    -
    3462  }
    -
    3463 }
    -
    3464 
    -
    3465 template<typename BasicJsonType>
    -
    3466 void from_json(const BasicJsonType& j, typename BasicJsonType::boolean_t& b)
    -
    3467 {
    -
    3468  if (JSON_HEDLEY_UNLIKELY(!j.is_boolean()))
    -
    3469  {
    -
    3470  JSON_THROW(type_error::create(302, "type must be boolean, but is " + std::string(j.type_name())));
    -
    3471  }
    -
    3472  b = *j.template get_ptr<const typename BasicJsonType::boolean_t*>();
    -
    3473 }
    -
    3474 
    -
    3475 template<typename BasicJsonType>
    -
    3476 void from_json(const BasicJsonType& j, typename BasicJsonType::string_t& s)
    -
    3477 {
    -
    3478  if (JSON_HEDLEY_UNLIKELY(!j.is_string()))
    -
    3479  {
    -
    3480  JSON_THROW(type_error::create(302, "type must be string, but is " + std::string(j.type_name())));
    -
    3481  }
    -
    3482  s = *j.template get_ptr<const typename BasicJsonType::string_t*>();
    -
    3483 }
    -
    3484 
    -
    3485 template <
    -
    3486  typename BasicJsonType, typename ConstructibleStringType,
    -
    3487  enable_if_t <
    -
    3488  is_constructible_string_type<BasicJsonType, ConstructibleStringType>::value&&
    -
    3489  !std::is_same<typename BasicJsonType::string_t,
    -
    3490  ConstructibleStringType>::value,
    -
    3491  int > = 0 >
    -
    3492 void from_json(const BasicJsonType& j, ConstructibleStringType& s)
    -
    3493 {
    -
    3494  if (JSON_HEDLEY_UNLIKELY(!j.is_string()))
    -
    3495  {
    -
    3496  JSON_THROW(type_error::create(302, "type must be string, but is " + std::string(j.type_name())));
    -
    3497  }
    -
    3498 
    -
    3499  s = *j.template get_ptr<const typename BasicJsonType::string_t*>();
    -
    3500 }
    -
    3501 
    -
    3502 template<typename BasicJsonType>
    -
    3503 void from_json(const BasicJsonType& j, typename BasicJsonType::number_float_t& val)
    -
    3504 {
    -
    3505  get_arithmetic_value(j, val);
    -
    3506 }
    -
    3507 
    -
    3508 template<typename BasicJsonType>
    -
    3509 void from_json(const BasicJsonType& j, typename BasicJsonType::number_unsigned_t& val)
    -
    3510 {
    -
    3511  get_arithmetic_value(j, val);
    -
    3512 }
    -
    3513 
    -
    3514 template<typename BasicJsonType>
    -
    3515 void from_json(const BasicJsonType& j, typename BasicJsonType::number_integer_t& val)
    -
    3516 {
    -
    3517  get_arithmetic_value(j, val);
    -
    3518 }
    -
    3519 
    -
    3520 template<typename BasicJsonType, typename EnumType,
    -
    3521  enable_if_t<std::is_enum<EnumType>::value, int> = 0>
    -
    3522 void from_json(const BasicJsonType& j, EnumType& e)
    -
    3523 {
    -
    3524  typename std::underlying_type<EnumType>::type val;
    -
    3525  get_arithmetic_value(j, val);
    -
    3526  e = static_cast<EnumType>(val);
    -
    3527 }
    -
    3528 
    -
    3529 // forward_list doesn't have an insert method
    -
    3530 template<typename BasicJsonType, typename T, typename Allocator,
    -
    3531  enable_if_t<is_getable<BasicJsonType, T>::value, int> = 0>
    -
    3532 void from_json(const BasicJsonType& j, std::forward_list<T, Allocator>& l)
    -
    3533 {
    -
    3534  if (JSON_HEDLEY_UNLIKELY(!j.is_array()))
    -
    3535  {
    -
    3536  JSON_THROW(type_error::create(302, "type must be array, but is " + std::string(j.type_name())));
    -
    3537  }
    -
    3538  l.clear();
    -
    3539  std::transform(j.rbegin(), j.rend(),
    -
    3540  std::front_inserter(l), [](const BasicJsonType & i)
    -
    3541  {
    -
    3542  return i.template get<T>();
    -
    3543  });
    -
    3544 }
    -
    3545 
    -
    3546 // valarray doesn't have an insert method
    -
    3547 template<typename BasicJsonType, typename T,
    -
    3548  enable_if_t<is_getable<BasicJsonType, T>::value, int> = 0>
    -
    3549 void from_json(const BasicJsonType& j, std::valarray<T>& l)
    -
    3550 {
    -
    3551  if (JSON_HEDLEY_UNLIKELY(!j.is_array()))
    -
    3552  {
    -
    3553  JSON_THROW(type_error::create(302, "type must be array, but is " + std::string(j.type_name())));
    -
    3554  }
    -
    3555  l.resize(j.size());
    -
    3556  std::transform(j.begin(), j.end(), std::begin(l),
    -
    3557  [](const BasicJsonType & elem)
    -
    3558  {
    -
    3559  return elem.template get<T>();
    -
    3560  });
    -
    3561 }
    -
    3562 
    -
    3563 template<typename BasicJsonType, typename T, std::size_t N>
    -
    3564 auto from_json(const BasicJsonType& j, T (&arr)[N])
    -
    3565 -> decltype(j.template get<T>(), void())
    -
    3566 {
    -
    3567  for (std::size_t i = 0; i < N; ++i)
    -
    3568  {
    -
    3569  arr[i] = j.at(i).template get<T>();
    -
    3570  }
    -
    3571 }
    -
    3572 
    -
    3573 template<typename BasicJsonType>
    -
    3574 void from_json_array_impl(const BasicJsonType& j, typename BasicJsonType::array_t& arr, priority_tag<3> /*unused*/)
    -
    3575 {
    -
    3576  arr = *j.template get_ptr<const typename BasicJsonType::array_t*>();
    -
    3577 }
    -
    3578 
    -
    3579 template<typename BasicJsonType, typename T, std::size_t N>
    -
    3580 auto from_json_array_impl(const BasicJsonType& j, std::array<T, N>& arr,
    -
    3581  priority_tag<2> /*unused*/)
    -
    3582 -> decltype(j.template get<T>(), void())
    -
    3583 {
    -
    3584  for (std::size_t i = 0; i < N; ++i)
    -
    3585  {
    -
    3586  arr[i] = j.at(i).template get<T>();
    -
    3587  }
    -
    3588 }
    -
    3589 
    -
    3590 template<typename BasicJsonType, typename ConstructibleArrayType>
    -
    3591 auto from_json_array_impl(const BasicJsonType& j, ConstructibleArrayType& arr, priority_tag<1> /*unused*/)
    -
    3592 -> decltype(
    -
    3593  arr.reserve(std::declval<typename ConstructibleArrayType::size_type>()),
    -
    3594  j.template get<typename ConstructibleArrayType::value_type>(),
    -
    3595  void())
    -
    3596 {
    -
    3597  using std::end;
    -
    3598 
    -
    3599  ConstructibleArrayType ret;
    -
    3600  ret.reserve(j.size());
    -
    3601  std::transform(j.begin(), j.end(),
    -
    3602  std::inserter(ret, end(ret)), [](const BasicJsonType & i)
    -
    3603  {
    -
    3604  // get<BasicJsonType>() returns *this, this won't call a from_json
    -
    3605  // method when value_type is BasicJsonType
    -
    3606  return i.template get<typename ConstructibleArrayType::value_type>();
    -
    3607  });
    -
    3608  arr = std::move(ret);
    -
    3609 }
    -
    3610 
    -
    3611 template<typename BasicJsonType, typename ConstructibleArrayType>
    -
    3612 void from_json_array_impl(const BasicJsonType& j, ConstructibleArrayType& arr,
    -
    3613  priority_tag<0> /*unused*/)
    -
    3614 {
    -
    3615  using std::end;
    -
    3616 
    -
    3617  ConstructibleArrayType ret;
    -
    3618  std::transform(
    -
    3619  j.begin(), j.end(), std::inserter(ret, end(ret)),
    -
    3620  [](const BasicJsonType & i)
    -
    3621  {
    -
    3622  // get<BasicJsonType>() returns *this, this won't call a from_json
    -
    3623  // method when value_type is BasicJsonType
    -
    3624  return i.template get<typename ConstructibleArrayType::value_type>();
    -
    3625  });
    -
    3626  arr = std::move(ret);
    -
    3627 }
    -
    3628 
    -
    3629 template < typename BasicJsonType, typename ConstructibleArrayType,
    -
    3630  enable_if_t <
    -
    3631  is_constructible_array_type<BasicJsonType, ConstructibleArrayType>::value&&
    -
    3632  !is_constructible_object_type<BasicJsonType, ConstructibleArrayType>::value&&
    -
    3633  !is_constructible_string_type<BasicJsonType, ConstructibleArrayType>::value&&
    -
    3634  !std::is_same<ConstructibleArrayType, typename BasicJsonType::binary_t>::value&&
    -
    3635  !is_basic_json<ConstructibleArrayType>::value,
    -
    3636  int > = 0 >
    -
    3637 auto from_json(const BasicJsonType& j, ConstructibleArrayType& arr)
    -
    3638 -> decltype(from_json_array_impl(j, arr, priority_tag<3> {}),
    -
    3639 j.template get<typename ConstructibleArrayType::value_type>(),
    -
    3640 void())
    -
    3641 {
    -
    3642  if (JSON_HEDLEY_UNLIKELY(!j.is_array()))
    -
    3643  {
    -
    3644  JSON_THROW(type_error::create(302, "type must be array, but is " +
    -
    3645  std::string(j.type_name())));
    -
    3646  }
    -
    3647 
    -
    3648  from_json_array_impl(j, arr, priority_tag<3> {});
    -
    3649 }
    -
    3650 
    -
    3651 template<typename BasicJsonType>
    -
    3652 void from_json(const BasicJsonType& j, typename BasicJsonType::binary_t& bin)
    -
    3653 {
    -
    3654  if (JSON_HEDLEY_UNLIKELY(!j.is_binary()))
    -
    3655  {
    -
    3656  JSON_THROW(type_error::create(302, "type must be binary, but is " + std::string(j.type_name())));
    -
    3657  }
    -
    3658 
    -
    3659  bin = *j.template get_ptr<const typename BasicJsonType::binary_t*>();
    -
    3660 }
    -
    3661 
    -
    3662 template<typename BasicJsonType, typename ConstructibleObjectType,
    -
    3663  enable_if_t<is_constructible_object_type<BasicJsonType, ConstructibleObjectType>::value, int> = 0>
    -
    3664 void from_json(const BasicJsonType& j, ConstructibleObjectType& obj)
    -
    3665 {
    -
    3666  if (JSON_HEDLEY_UNLIKELY(!j.is_object()))
    -
    3667  {
    -
    3668  JSON_THROW(type_error::create(302, "type must be object, but is " + std::string(j.type_name())));
    -
    3669  }
    -
    3670 
    -
    3671  ConstructibleObjectType ret;
    -
    3672  auto inner_object = j.template get_ptr<const typename BasicJsonType::object_t*>();
    -
    3673  using value_type = typename ConstructibleObjectType::value_type;
    -
    3674  std::transform(
    -
    3675  inner_object->begin(), inner_object->end(),
    -
    3676  std::inserter(ret, ret.begin()),
    -
    3677  [](typename BasicJsonType::object_t::value_type const & p)
    -
    3678  {
    -
    3679  return value_type(p.first, p.second.template get<typename ConstructibleObjectType::mapped_type>());
    -
    3680  });
    -
    3681  obj = std::move(ret);
    -
    3682 }
    -
    3683 
    -
    3684 // overload for arithmetic types, not chosen for basic_json template arguments
    -
    3685 // (BooleanType, etc..); note: Is it really necessary to provide explicit
    -
    3686 // overloads for boolean_t etc. in case of a custom BooleanType which is not
    -
    3687 // an arithmetic type?
    -
    3688 template < typename BasicJsonType, typename ArithmeticType,
    -
    3689  enable_if_t <
    -
    3690  std::is_arithmetic<ArithmeticType>::value&&
    -
    3691  !std::is_same<ArithmeticType, typename BasicJsonType::number_unsigned_t>::value&&
    -
    3692  !std::is_same<ArithmeticType, typename BasicJsonType::number_integer_t>::value&&
    -
    3693  !std::is_same<ArithmeticType, typename BasicJsonType::number_float_t>::value&&
    -
    3694  !std::is_same<ArithmeticType, typename BasicJsonType::boolean_t>::value,
    -
    3695  int > = 0 >
    -
    3696 void from_json(const BasicJsonType& j, ArithmeticType& val)
    -
    3697 {
    -
    3698  switch (static_cast<value_t>(j))
    -
    3699  {
    - -
    3701  {
    -
    3702  val = static_cast<ArithmeticType>(*j.template get_ptr<const typename BasicJsonType::number_unsigned_t*>());
    -
    3703  break;
    -
    3704  }
    - -
    3706  {
    -
    3707  val = static_cast<ArithmeticType>(*j.template get_ptr<const typename BasicJsonType::number_integer_t*>());
    -
    3708  break;
    -
    3709  }
    -
    3710  case value_t::number_float:
    -
    3711  {
    -
    3712  val = static_cast<ArithmeticType>(*j.template get_ptr<const typename BasicJsonType::number_float_t*>());
    -
    3713  break;
    -
    3714  }
    -
    3715  case value_t::boolean:
    -
    3716  {
    -
    3717  val = static_cast<ArithmeticType>(*j.template get_ptr<const typename BasicJsonType::boolean_t*>());
    -
    3718  break;
    -
    3719  }
    -
    3720 
    -
    3721  default:
    -
    3722  JSON_THROW(type_error::create(302, "type must be number, but is " + std::string(j.type_name())));
    -
    3723  }
    -
    3724 }
    -
    3725 
    -
    3726 template<typename BasicJsonType, typename A1, typename A2>
    -
    3727 void from_json(const BasicJsonType& j, std::pair<A1, A2>& p)
    -
    3728 {
    -
    3729  p = {j.at(0).template get<A1>(), j.at(1).template get<A2>()};
    -
    3730 }
    -
    3731 
    -
    3732 template<typename BasicJsonType, typename Tuple, std::size_t... Idx>
    -
    3733 void from_json_tuple_impl(const BasicJsonType& j, Tuple& t, index_sequence<Idx...> /*unused*/)
    -
    3734 {
    -
    3735  t = std::make_tuple(j.at(Idx).template get<typename std::tuple_element<Idx, Tuple>::type>()...);
    -
    3736 }
    -
    3737 
    -
    3738 template<typename BasicJsonType, typename... Args>
    -
    3739 void from_json(const BasicJsonType& j, std::tuple<Args...>& t)
    -
    3740 {
    -
    3741  from_json_tuple_impl(j, t, index_sequence_for<Args...> {});
    -
    3742 }
    -
    3743 
    -
    3744 template < typename BasicJsonType, typename Key, typename Value, typename Compare, typename Allocator,
    -
    3745  typename = enable_if_t < !std::is_constructible <
    -
    3746  typename BasicJsonType::string_t, Key >::value >>
    -
    3747 void from_json(const BasicJsonType& j, std::map<Key, Value, Compare, Allocator>& m)
    -
    3748 {
    -
    3749  if (JSON_HEDLEY_UNLIKELY(!j.is_array()))
    -
    3750  {
    -
    3751  JSON_THROW(type_error::create(302, "type must be array, but is " + std::string(j.type_name())));
    -
    3752  }
    -
    3753  m.clear();
    -
    3754  for (const auto& p : j)
    -
    3755  {
    -
    3756  if (JSON_HEDLEY_UNLIKELY(!p.is_array()))
    -
    3757  {
    -
    3758  JSON_THROW(type_error::create(302, "type must be array, but is " + std::string(p.type_name())));
    -
    3759  }
    -
    3760  m.emplace(p.at(0).template get<Key>(), p.at(1).template get<Value>());
    -
    3761  }
    -
    3762 }
    -
    3763 
    -
    3764 template < typename BasicJsonType, typename Key, typename Value, typename Hash, typename KeyEqual, typename Allocator,
    -
    3765  typename = enable_if_t < !std::is_constructible <
    -
    3766  typename BasicJsonType::string_t, Key >::value >>
    -
    3767 void from_json(const BasicJsonType& j, std::unordered_map<Key, Value, Hash, KeyEqual, Allocator>& m)
    -
    3768 {
    -
    3769  if (JSON_HEDLEY_UNLIKELY(!j.is_array()))
    -
    3770  {
    -
    3771  JSON_THROW(type_error::create(302, "type must be array, but is " + std::string(j.type_name())));
    -
    3772  }
    -
    3773  m.clear();
    -
    3774  for (const auto& p : j)
    -
    3775  {
    -
    3776  if (JSON_HEDLEY_UNLIKELY(!p.is_array()))
    -
    3777  {
    -
    3778  JSON_THROW(type_error::create(302, "type must be array, but is " + std::string(p.type_name())));
    -
    3779  }
    -
    3780  m.emplace(p.at(0).template get<Key>(), p.at(1).template get<Value>());
    -
    3781  }
    -
    3782 }
    -
    3783 
    -
    3784 struct from_json_fn
    -
    3785 {
    -
    3786  template<typename BasicJsonType, typename T>
    -
    3787  auto operator()(const BasicJsonType& j, T& val) const
    -
    3788  noexcept(noexcept(from_json(j, val)))
    -
    3789  -> decltype(from_json(j, val), void())
    -
    3790  {
    -
    3791  return from_json(j, val);
    -
    3792  }
    -
    3793 };
    -
    3794 } // namespace detail
    -
    3795 
    -
    3799 namespace
    -
    3800 {
    - -
    3802 } // namespace
    -
    3803 } // namespace nlohmann
    -
    3804 
    -
    3805 // #include <nlohmann/detail/conversions/to_json.hpp>
    -
    3806 
    -
    3807 
    -
    3808 #include <algorithm> // copy
    -
    3809 #include <iterator> // begin, end
    -
    3810 #include <string> // string
    -
    3811 #include <tuple> // tuple, get
    -
    3812 #include <type_traits> // is_same, is_constructible, is_floating_point, is_enum, underlying_type
    -
    3813 #include <utility> // move, forward, declval, pair
    -
    3814 #include <valarray> // valarray
    -
    3815 #include <vector> // vector
    -
    3816 
    -
    3817 // #include <nlohmann/detail/iterators/iteration_proxy.hpp>
    -
    3818 
    -
    3819 
    -
    3820 #include <cstddef> // size_t
    -
    3821 #include <iterator> // input_iterator_tag
    -
    3822 #include <string> // string, to_string
    -
    3823 #include <tuple> // tuple_size, get, tuple_element
    -
    3824 
    -
    3825 // #include <nlohmann/detail/meta/type_traits.hpp>
    -
    3826 
    -
    3827 // #include <nlohmann/detail/value_t.hpp>
    -
    3828 
    -
    3829 
    -
    3830 namespace nlohmann
    -
    3831 {
    -
    3832 namespace detail
    -
    3833 {
    -
    3834 template<typename string_type>
    -
    3835 void int_to_string( string_type& target, std::size_t value )
    -
    3836 {
    -
    3837  // For ADL
    -
    3838  using std::to_string;
    -
    3839  target = to_string(value);
    -
    3840 }
    -
    3841 template<typename IteratorType> class iteration_proxy_value
    -
    3842 {
    -
    3843  public:
    -
    3844  using difference_type = std::ptrdiff_t;
    - -
    3846  using pointer = value_type * ;
    -
    3847  using reference = value_type & ;
    -
    3848  using iterator_category = std::input_iterator_tag;
    -
    3849  using string_type = typename std::remove_cv< typename std::remove_reference<decltype( std::declval<IteratorType>().key() ) >::type >::type;
    -
    3850 
    -
    3851  private:
    -
    3853  IteratorType anchor;
    -
    3855  std::size_t array_index = 0;
    -
    3857  mutable std::size_t array_index_last = 0;
    -
    3859  mutable string_type array_index_str = "0";
    -
    3861  const string_type empty_str = "";
    -
    3862 
    -
    3863  public:
    -
    3864  explicit iteration_proxy_value(IteratorType it) noexcept : anchor(it) {}
    -
    3865 
    - -
    3868  {
    -
    3869  return *this;
    -
    3870  }
    -
    3871 
    - -
    3874  {
    -
    3875  ++anchor;
    -
    3876  ++array_index;
    -
    3877 
    -
    3878  return *this;
    -
    3879  }
    -
    3880 
    -
    3882  bool operator==(const iteration_proxy_value& o) const
    -
    3883  {
    -
    3884  return anchor == o.anchor;
    -
    3885  }
    -
    3886 
    -
    3888  bool operator!=(const iteration_proxy_value& o) const
    -
    3889  {
    -
    3890  return anchor != o.anchor;
    -
    3891  }
    -
    3892 
    -
    3894  const string_type& key() const
    -
    3895  {
    -
    3896  JSON_ASSERT(anchor.m_object != nullptr);
    -
    3897 
    -
    3898  switch (anchor.m_object->type())
    -
    3899  {
    -
    3900  // use integer array index as key
    -
    3901  case value_t::array:
    -
    3902  {
    -
    3903  if (array_index != array_index_last)
    -
    3904  {
    -
    3905  int_to_string( array_index_str, array_index );
    -
    3906  array_index_last = array_index;
    -
    3907  }
    -
    3908  return array_index_str;
    -
    3909  }
    -
    3910 
    -
    3911  // use key from the object
    -
    3912  case value_t::object:
    -
    3913  return anchor.key();
    -
    3914 
    -
    3915  // use an empty key for all primitive types
    -
    3916  default:
    -
    3917  return empty_str;
    -
    3918  }
    -
    3919  }
    -
    3920 
    -
    3922  typename IteratorType::reference value() const
    -
    3923  {
    -
    3924  return anchor.value();
    -
    3925  }
    -
    3926 };
    -
    3927 
    -
    3929 template<typename IteratorType> class iteration_proxy
    -
    3930 {
    -
    3931  private:
    -
    3933  typename IteratorType::reference container;
    -
    3934 
    -
    3935  public:
    -
    3937  explicit iteration_proxy(typename IteratorType::reference cont) noexcept
    -
    3938  : container(cont) {}
    -
    3939 
    - -
    3942  {
    -
    3943  return iteration_proxy_value<IteratorType>(container.begin());
    -
    3944  }
    -
    3945 
    - -
    3948  {
    -
    3949  return iteration_proxy_value<IteratorType>(container.end());
    -
    3950  }
    -
    3951 };
    -
    3952 // Structured Bindings Support
    -
    3953 // For further reference see https://blog.tartanllama.xyz/structured-bindings/
    -
    3954 // And see https://github.com/nlohmann/json/pull/1391
    -
    3955 template<std::size_t N, typename IteratorType, enable_if_t<N == 0, int> = 0>
    -
    3956 auto get(const nlohmann::detail::iteration_proxy_value<IteratorType>& i) -> decltype(i.key())
    -
    3957 {
    -
    3958  return i.key();
    -
    3959 }
    -
    3960 // Structured Bindings Support
    -
    3961 // For further reference see https://blog.tartanllama.xyz/structured-bindings/
    -
    3962 // And see https://github.com/nlohmann/json/pull/1391
    -
    3963 template<std::size_t N, typename IteratorType, enable_if_t<N == 1, int> = 0>
    -
    3964 auto get(const nlohmann::detail::iteration_proxy_value<IteratorType>& i) -> decltype(i.value())
    -
    3965 {
    -
    3966  return i.value();
    -
    3967 }
    -
    3968 } // namespace detail
    -
    3969 } // namespace nlohmann
    -
    3970 
    -
    3971 // The Addition to the STD Namespace is required to add
    -
    3972 // Structured Bindings Support to the iteration_proxy_value class
    -
    3973 // For further reference see https://blog.tartanllama.xyz/structured-bindings/
    -
    3974 // And see https://github.com/nlohmann/json/pull/1391
    -
    3975 namespace std
    -
    3976 {
    -
    3977 #if defined(__clang__)
    -
    3978  // Fix: https://github.com/nlohmann/json/issues/1401
    -
    3979  #pragma clang diagnostic push
    -
    3980  #pragma clang diagnostic ignored "-Wmismatched-tags"
    -
    3981 #endif
    -
    3982 template<typename IteratorType>
    -
    3983 class tuple_size<::nlohmann::detail::iteration_proxy_value<IteratorType>>
    -
    3984  : public std::integral_constant<std::size_t, 2> {};
    -
    3985 
    -
    3986 template<std::size_t N, typename IteratorType>
    -
    3987 class tuple_element<N, ::nlohmann::detail::iteration_proxy_value<IteratorType >>
    -
    3988 {
    -
    3989  public:
    -
    3990  using type = decltype(
    -
    3991  get<N>(std::declval <
    - -
    3993 };
    -
    3994 #if defined(__clang__)
    -
    3995  #pragma clang diagnostic pop
    -
    3996 #endif
    -
    3997 } // namespace std
    -
    3998 
    -
    3999 // #include <nlohmann/detail/meta/cpp_future.hpp>
    -
    4000 
    -
    4001 // #include <nlohmann/detail/meta/type_traits.hpp>
    -
    4002 
    -
    4003 // #include <nlohmann/detail/value_t.hpp>
    -
    4004 
    -
    4005 
    -
    4006 namespace nlohmann
    -
    4007 {
    -
    4008 namespace detail
    -
    4009 {
    -
    4011 // constructors //
    -
    4013 
    -
    4014 template<value_t> struct external_constructor;
    -
    4015 
    -
    4016 template<>
    -
    4017 struct external_constructor<value_t::boolean>
    -
    4018 {
    -
    4019  template<typename BasicJsonType>
    -
    4020  static void construct(BasicJsonType& j, typename BasicJsonType::boolean_t b) noexcept
    -
    4021  {
    -
    4022  j.m_type = value_t::boolean;
    -
    4023  j.m_value = b;
    -
    4024  j.assert_invariant();
    -
    4025  }
    -
    4026 };
    -
    4027 
    -
    4028 template<>
    -
    4029 struct external_constructor<value_t::string>
    -
    4030 {
    -
    4031  template<typename BasicJsonType>
    -
    4032  static void construct(BasicJsonType& j, const typename BasicJsonType::string_t& s)
    -
    4033  {
    -
    4034  j.m_type = value_t::string;
    -
    4035  j.m_value = s;
    -
    4036  j.assert_invariant();
    -
    4037  }
    -
    4038 
    -
    4039  template<typename BasicJsonType>
    -
    4040  static void construct(BasicJsonType& j, typename BasicJsonType::string_t&& s)
    -
    4041  {
    -
    4042  j.m_type = value_t::string;
    -
    4043  j.m_value = std::move(s);
    -
    4044  j.assert_invariant();
    -
    4045  }
    -
    4046 
    -
    4047  template < typename BasicJsonType, typename CompatibleStringType,
    - -
    4049  int > = 0 >
    -
    4050  static void construct(BasicJsonType& j, const CompatibleStringType& str)
    -
    4051  {
    -
    4052  j.m_type = value_t::string;
    -
    4053  j.m_value.string = j.template create<typename BasicJsonType::string_t>(str);
    -
    4054  j.assert_invariant();
    -
    4055  }
    -
    4056 };
    -
    4057 
    -
    4058 template<>
    - -
    4060 {
    -
    4061  template<typename BasicJsonType>
    -
    4062  static void construct(BasicJsonType& j, const typename BasicJsonType::binary_t& b)
    -
    4063  {
    -
    4064  j.m_type = value_t::binary;
    -
    4065  typename BasicJsonType::binary_t value{b};
    -
    4066  j.m_value = value;
    -
    4067  j.assert_invariant();
    -
    4068  }
    -
    4069 
    -
    4070  template<typename BasicJsonType>
    -
    4071  static void construct(BasicJsonType& j, typename BasicJsonType::binary_t&& b)
    -
    4072  {
    -
    4073  j.m_type = value_t::binary;
    -
    4074  typename BasicJsonType::binary_t value{std::move(b)};
    -
    4075  j.m_value = value;
    -
    4076  j.assert_invariant();
    -
    4077  }
    -
    4078 };
    -
    4079 
    -
    4080 template<>
    -
    4081 struct external_constructor<value_t::number_float>
    -
    4082 {
    -
    4083  template<typename BasicJsonType>
    -
    4084  static void construct(BasicJsonType& j, typename BasicJsonType::number_float_t val) noexcept
    -
    4085  {
    -
    4086  j.m_type = value_t::number_float;
    -
    4087  j.m_value = val;
    -
    4088  j.assert_invariant();
    -
    4089  }
    -
    4090 };
    -
    4091 
    -
    4092 template<>
    -
    4093 struct external_constructor<value_t::number_unsigned>
    -
    4094 {
    -
    4095  template<typename BasicJsonType>
    -
    4096  static void construct(BasicJsonType& j, typename BasicJsonType::number_unsigned_t val) noexcept
    -
    4097  {
    -
    4098  j.m_type = value_t::number_unsigned;
    -
    4099  j.m_value = val;
    -
    4100  j.assert_invariant();
    -
    4101  }
    -
    4102 };
    -
    4103 
    -
    4104 template<>
    -
    4105 struct external_constructor<value_t::number_integer>
    -
    4106 {
    -
    4107  template<typename BasicJsonType>
    -
    4108  static void construct(BasicJsonType& j, typename BasicJsonType::number_integer_t val) noexcept
    -
    4109  {
    -
    4110  j.m_type = value_t::number_integer;
    -
    4111  j.m_value = val;
    -
    4112  j.assert_invariant();
    -
    4113  }
    -
    4114 };
    -
    4115 
    -
    4116 template<>
    -
    4117 struct external_constructor<value_t::array>
    -
    4118 {
    -
    4119  template<typename BasicJsonType>
    -
    4120  static void construct(BasicJsonType& j, const typename BasicJsonType::array_t& arr)
    -
    4121  {
    -
    4122  j.m_type = value_t::array;
    -
    4123  j.m_value = arr;
    -
    4124  j.assert_invariant();
    -
    4125  }
    -
    4126 
    -
    4127  template<typename BasicJsonType>
    -
    4128  static void construct(BasicJsonType& j, typename BasicJsonType::array_t&& arr)
    -
    4129  {
    -
    4130  j.m_type = value_t::array;
    -
    4131  j.m_value = std::move(arr);
    -
    4132  j.assert_invariant();
    -
    4133  }
    -
    4134 
    -
    4135  template < typename BasicJsonType, typename CompatibleArrayType,
    - -
    4137  int > = 0 >
    -
    4138  static void construct(BasicJsonType& j, const CompatibleArrayType& arr)
    -
    4139  {
    -
    4140  using std::begin;
    -
    4141  using std::end;
    -
    4142  j.m_type = value_t::array;
    -
    4143  j.m_value.array = j.template create<typename BasicJsonType::array_t>(begin(arr), end(arr));
    -
    4144  j.assert_invariant();
    -
    4145  }
    -
    4146 
    -
    4147  template<typename BasicJsonType>
    -
    4148  static void construct(BasicJsonType& j, const std::vector<bool>& arr)
    -
    4149  {
    -
    4150  j.m_type = value_t::array;
    -
    4151  j.m_value = value_t::array;
    -
    4152  j.m_value.array->reserve(arr.size());
    -
    4153  for (const bool x : arr)
    -
    4154  {
    -
    4155  j.m_value.array->push_back(x);
    -
    4156  }
    -
    4157  j.assert_invariant();
    -
    4158  }
    -
    4159 
    -
    4160  template<typename BasicJsonType, typename T,
    - -
    4162  static void construct(BasicJsonType& j, const std::valarray<T>& arr)
    -
    4163  {
    -
    4164  j.m_type = value_t::array;
    -
    4165  j.m_value = value_t::array;
    -
    4166  j.m_value.array->resize(arr.size());
    -
    4167  if (arr.size() > 0)
    -
    4168  {
    -
    4169  std::copy(std::begin(arr), std::end(arr), j.m_value.array->begin());
    -
    4170  }
    -
    4171  j.assert_invariant();
    -
    4172  }
    -
    4173 };
    -
    4174 
    -
    4175 template<>
    -
    4176 struct external_constructor<value_t::object>
    -
    4177 {
    -
    4178  template<typename BasicJsonType>
    -
    4179  static void construct(BasicJsonType& j, const typename BasicJsonType::object_t& obj)
    -
    4180  {
    -
    4181  j.m_type = value_t::object;
    -
    4182  j.m_value = obj;
    -
    4183  j.assert_invariant();
    -
    4184  }
    -
    4185 
    -
    4186  template<typename BasicJsonType>
    -
    4187  static void construct(BasicJsonType& j, typename BasicJsonType::object_t&& obj)
    -
    4188  {
    -
    4189  j.m_type = value_t::object;
    -
    4190  j.m_value = std::move(obj);
    -
    4191  j.assert_invariant();
    -
    4192  }
    -
    4193 
    -
    4194  template < typename BasicJsonType, typename CompatibleObjectType,
    - -
    4196  static void construct(BasicJsonType& j, const CompatibleObjectType& obj)
    -
    4197  {
    -
    4198  using std::begin;
    -
    4199  using std::end;
    -
    4200 
    -
    4201  j.m_type = value_t::object;
    -
    4202  j.m_value.object = j.template create<typename BasicJsonType::object_t>(begin(obj), end(obj));
    -
    4203  j.assert_invariant();
    -
    4204  }
    -
    4205 };
    -
    4206 
    -
    4208 // to_json //
    -
    4210 
    -
    4211 template<typename BasicJsonType, typename T,
    -
    4212  enable_if_t<std::is_same<T, typename BasicJsonType::boolean_t>::value, int> = 0>
    -
    4213 void to_json(BasicJsonType& j, T b) noexcept
    -
    4214 {
    - -
    4216 }
    -
    4217 
    -
    4218 template<typename BasicJsonType, typename CompatibleString,
    -
    4219  enable_if_t<std::is_constructible<typename BasicJsonType::string_t, CompatibleString>::value, int> = 0>
    -
    4220 void to_json(BasicJsonType& j, const CompatibleString& s)
    -
    4221 {
    - -
    4223 }
    -
    4224 
    -
    4225 template<typename BasicJsonType>
    -
    4226 void to_json(BasicJsonType& j, typename BasicJsonType::string_t&& s)
    -
    4227 {
    - -
    4229 }
    -
    4230 
    -
    4231 template<typename BasicJsonType, typename FloatType,
    -
    4232  enable_if_t<std::is_floating_point<FloatType>::value, int> = 0>
    -
    4233 void to_json(BasicJsonType& j, FloatType val) noexcept
    -
    4234 {
    -
    4235  external_constructor<value_t::number_float>::construct(j, static_cast<typename BasicJsonType::number_float_t>(val));
    -
    4236 }
    -
    4237 
    -
    4238 template<typename BasicJsonType, typename CompatibleNumberUnsignedType,
    -
    4239  enable_if_t<is_compatible_integer_type<typename BasicJsonType::number_unsigned_t, CompatibleNumberUnsignedType>::value, int> = 0>
    -
    4240 void to_json(BasicJsonType& j, CompatibleNumberUnsignedType val) noexcept
    -
    4241 {
    -
    4242  external_constructor<value_t::number_unsigned>::construct(j, static_cast<typename BasicJsonType::number_unsigned_t>(val));
    -
    4243 }
    -
    4244 
    -
    4245 template<typename BasicJsonType, typename CompatibleNumberIntegerType,
    -
    4246  enable_if_t<is_compatible_integer_type<typename BasicJsonType::number_integer_t, CompatibleNumberIntegerType>::value, int> = 0>
    -
    4247 void to_json(BasicJsonType& j, CompatibleNumberIntegerType val) noexcept
    -
    4248 {
    -
    4249  external_constructor<value_t::number_integer>::construct(j, static_cast<typename BasicJsonType::number_integer_t>(val));
    -
    4250 }
    -
    4251 
    -
    4252 template<typename BasicJsonType, typename EnumType,
    -
    4253  enable_if_t<std::is_enum<EnumType>::value, int> = 0>
    -
    4254 void to_json(BasicJsonType& j, EnumType e) noexcept
    -
    4255 {
    -
    4256  using underlying_type = typename std::underlying_type<EnumType>::type;
    -
    4257  external_constructor<value_t::number_integer>::construct(j, static_cast<underlying_type>(e));
    -
    4258 }
    -
    4259 
    -
    4260 template<typename BasicJsonType>
    -
    4261 void to_json(BasicJsonType& j, const std::vector<bool>& e)
    -
    4262 {
    - -
    4264 }
    -
    4265 
    -
    4266 template < typename BasicJsonType, typename CompatibleArrayType,
    -
    4267  enable_if_t < is_compatible_array_type<BasicJsonType,
    -
    4268  CompatibleArrayType>::value&&
    -
    4269  !is_compatible_object_type<BasicJsonType, CompatibleArrayType>::value&&
    -
    4270  !is_compatible_string_type<BasicJsonType, CompatibleArrayType>::value&&
    -
    4271  !std::is_same<typename BasicJsonType::binary_t, CompatibleArrayType>::value&&
    -
    4272  !is_basic_json<CompatibleArrayType>::value,
    -
    4273  int > = 0 >
    -
    4274 void to_json(BasicJsonType& j, const CompatibleArrayType& arr)
    -
    4275 {
    - -
    4277 }
    -
    4278 
    -
    4279 template<typename BasicJsonType>
    -
    4280 void to_json(BasicJsonType& j, const typename BasicJsonType::binary_t& bin)
    -
    4281 {
    - -
    4283 }
    -
    4284 
    -
    4285 template<typename BasicJsonType, typename T,
    -
    4286  enable_if_t<std::is_convertible<T, BasicJsonType>::value, int> = 0>
    -
    4287 void to_json(BasicJsonType& j, const std::valarray<T>& arr)
    -
    4288 {
    - -
    4290 }
    -
    4291 
    -
    4292 template<typename BasicJsonType>
    -
    4293 void to_json(BasicJsonType& j, typename BasicJsonType::array_t&& arr)
    -
    4294 {
    - -
    4296 }
    -
    4297 
    -
    4298 template < typename BasicJsonType, typename CompatibleObjectType,
    -
    4299  enable_if_t < is_compatible_object_type<BasicJsonType, CompatibleObjectType>::value&& !is_basic_json<CompatibleObjectType>::value, int > = 0 >
    -
    4300 void to_json(BasicJsonType& j, const CompatibleObjectType& obj)
    -
    4301 {
    - -
    4303 }
    -
    4304 
    -
    4305 template<typename BasicJsonType>
    -
    4306 void to_json(BasicJsonType& j, typename BasicJsonType::object_t&& obj)
    -
    4307 {
    - -
    4309 }
    -
    4310 
    -
    4311 template <
    -
    4312  typename BasicJsonType, typename T, std::size_t N,
    -
    4313  enable_if_t < !std::is_constructible<typename BasicJsonType::string_t,
    -
    4314  const T(&)[N]>::value,
    -
    4315  int > = 0 >
    -
    4316 void to_json(BasicJsonType& j, const T(&arr)[N])
    -
    4317 {
    - -
    4319 }
    -
    4320 
    -
    4321 template < typename BasicJsonType, typename T1, typename T2, enable_if_t < std::is_constructible<BasicJsonType, T1>::value&& std::is_constructible<BasicJsonType, T2>::value, int > = 0 >
    -
    4322 void to_json(BasicJsonType& j, const std::pair<T1, T2>& p)
    -
    4323 {
    -
    4324  j = { p.first, p.second };
    -
    4325 }
    -
    4326 
    -
    4327 // for https://github.com/nlohmann/json/pull/1134
    -
    4328 template<typename BasicJsonType, typename T,
    -
    4329  enable_if_t<std::is_same<T, iteration_proxy_value<typename BasicJsonType::iterator>>::value, int> = 0>
    -
    4330 void to_json(BasicJsonType& j, const T& b)
    -
    4331 {
    -
    4332  j = { {b.key(), b.value()} };
    -
    4333 }
    -
    4334 
    -
    4335 template<typename BasicJsonType, typename Tuple, std::size_t... Idx>
    -
    4336 void to_json_tuple_impl(BasicJsonType& j, const Tuple& t, index_sequence<Idx...> /*unused*/)
    -
    4337 {
    -
    4338  j = { std::get<Idx>(t)... };
    -
    4339 }
    -
    4340 
    -
    4341 template<typename BasicJsonType, typename T, enable_if_t<is_constructible_tuple<BasicJsonType, T>::value, int > = 0>
    -
    4342 void to_json(BasicJsonType& j, const T& t)
    -
    4343 {
    -
    4344  to_json_tuple_impl(j, t, make_index_sequence<std::tuple_size<T>::value> {});
    -
    4345 }
    -
    4346 
    -
    4347 struct to_json_fn
    -
    4348 {
    -
    4349  template<typename BasicJsonType, typename T>
    -
    4350  auto operator()(BasicJsonType& j, T&& val) const noexcept(noexcept(to_json(j, std::forward<T>(val))))
    -
    4351  -> decltype(to_json(j, std::forward<T>(val)), void())
    -
    4352  {
    -
    4353  return to_json(j, std::forward<T>(val));
    -
    4354  }
    -
    4355 };
    -
    4356 } // namespace detail
    -
    4357 
    -
    4359 namespace
    -
    4360 {
    - -
    4362 } // namespace
    -
    4363 } // namespace nlohmann
    -
    4364 
    -
    4365 
    -
    4366 namespace nlohmann
    -
    4367 {
    -
    4368 
    -
    4369 template<typename, typename>
    -
    4370 struct adl_serializer
    -
    4371 {
    -
    4381  template<typename BasicJsonType, typename ValueType>
    -
    4382  static auto from_json(BasicJsonType&& j, ValueType& val) noexcept(
    -
    4383  noexcept(::nlohmann::from_json(std::forward<BasicJsonType>(j), val)))
    -
    4384  -> decltype(::nlohmann::from_json(std::forward<BasicJsonType>(j), val), void())
    -
    4385  {
    -
    4386  ::nlohmann::from_json(std::forward<BasicJsonType>(j), val);
    -
    4387  }
    -
    4388 
    -
    4398  template<typename BasicJsonType, typename ValueType>
    -
    4399  static auto to_json(BasicJsonType& j, ValueType&& val) noexcept(
    -
    4400  noexcept(::nlohmann::to_json(j, std::forward<ValueType>(val))))
    -
    4401  -> decltype(::nlohmann::to_json(j, std::forward<ValueType>(val)), void())
    -
    4402  {
    -
    4403  ::nlohmann::to_json(j, std::forward<ValueType>(val));
    -
    4404  }
    -
    4405 };
    -
    4406 
    -
    4407 } // namespace nlohmann
    -
    4408 
    -
    4409 // #include <nlohmann/byte_container_with_subtype.hpp>
    -
    4410 
    -
    4411 
    -
    4412 #include <cstdint> // uint8_t
    -
    4413 #include <tuple> // tie
    -
    4414 #include <utility> // move
    -
    4415 
    -
    4416 namespace nlohmann
    -
    4417 {
    -
    4418 
    -
    4432 template<typename BinaryType>
    -
    4433 class byte_container_with_subtype : public BinaryType
    -
    4434 {
    -
    4435  public:
    -
    4437  using container_type = BinaryType;
    -
    4438 
    - -
    4440  : container_type()
    -
    4441  {}
    -
    4442 
    - -
    4444  : container_type(b)
    -
    4445  {}
    -
    4446 
    -
    4447  byte_container_with_subtype(container_type&& b) noexcept(noexcept(container_type(std::move(b))))
    -
    4448  : container_type(std::move(b))
    -
    4449  {}
    -
    4450 
    -
    4451  byte_container_with_subtype(const container_type& b, std::uint8_t subtype) noexcept(noexcept(container_type(b)))
    -
    4452  : container_type(b)
    -
    4453  , m_subtype(subtype)
    -
    4454  , m_has_subtype(true)
    -
    4455  {}
    -
    4456 
    -
    4457  byte_container_with_subtype(container_type&& b, std::uint8_t subtype) noexcept(noexcept(container_type(std::move(b))))
    -
    4458  : container_type(std::move(b))
    -
    4459  , m_subtype(subtype)
    -
    4460  , m_has_subtype(true)
    -
    4461  {}
    -
    4462 
    - -
    4464  {
    -
    4465  return std::tie(static_cast<const BinaryType&>(*this), m_subtype, m_has_subtype) ==
    -
    4466  std::tie(static_cast<const BinaryType&>(rhs), rhs.m_subtype, rhs.m_has_subtype);
    -
    4467  }
    -
    4468 
    - -
    4470  {
    -
    4471  return !(rhs == *this);
    -
    4472  }
    -
    4473 
    -
    4492  void set_subtype(std::uint8_t subtype) noexcept
    -
    4493  {
    -
    4494  m_subtype = subtype;
    -
    4495  m_has_subtype = true;
    -
    4496  }
    -
    4497 
    -
    4519  constexpr std::uint8_t subtype() const noexcept
    -
    4520  {
    -
    4521  return m_subtype;
    -
    4522  }
    -
    4523 
    -
    4540  constexpr bool has_subtype() const noexcept
    -
    4541  {
    -
    4542  return m_has_subtype;
    -
    4543  }
    -
    4544 
    -
    4564  void clear_subtype() noexcept
    -
    4565  {
    -
    4566  m_subtype = 0;
    -
    4567  m_has_subtype = false;
    -
    4568  }
    -
    4569 
    -
    4570  private:
    -
    4571  std::uint8_t m_subtype = 0;
    -
    4572  bool m_has_subtype = false;
    -
    4573 };
    -
    4574 
    -
    4575 } // namespace nlohmann
    -
    4576 
    -
    4577 // #include <nlohmann/detail/conversions/from_json.hpp>
    -
    4578 
    -
    4579 // #include <nlohmann/detail/conversions/to_json.hpp>
    -
    4580 
    -
    4581 // #include <nlohmann/detail/exceptions.hpp>
    -
    4582 
    -
    4583 // #include <nlohmann/detail/hash.hpp>
    -
    4584 
    -
    4585 
    -
    4586 #include <cstddef> // size_t, uint8_t
    -
    4587 #include <functional> // hash
    -
    4588 
    -
    4589 namespace nlohmann
    -
    4590 {
    -
    4591 namespace detail
    -
    4592 {
    -
    4593 
    -
    4594 // boost::hash_combine
    -
    4595 inline std::size_t combine(std::size_t seed, std::size_t h) noexcept
    -
    4596 {
    -
    4597  seed ^= h + 0x9e3779b9 + (seed << 6U) + (seed >> 2U);
    -
    4598  return seed;
    -
    4599 }
    -
    4600 
    -
    4612 template<typename BasicJsonType>
    -
    4613 std::size_t hash(const BasicJsonType& j)
    -
    4614 {
    -
    4615  using string_t = typename BasicJsonType::string_t;
    -
    4616  using number_integer_t = typename BasicJsonType::number_integer_t;
    -
    4617  using number_unsigned_t = typename BasicJsonType::number_unsigned_t;
    -
    4618  using number_float_t = typename BasicJsonType::number_float_t;
    -
    4619 
    -
    4620  const auto type = static_cast<std::size_t>(j.type());
    -
    4621  switch (j.type())
    -
    4622  {
    -
    4623  case BasicJsonType::value_t::null:
    -
    4624  case BasicJsonType::value_t::discarded:
    -
    4625  {
    -
    4626  return combine(type, 0);
    -
    4627  }
    -
    4628 
    -
    4629  case BasicJsonType::value_t::object:
    -
    4630  {
    -
    4631  auto seed = combine(type, j.size());
    -
    4632  for (const auto& element : j.items())
    -
    4633  {
    -
    4634  const auto h = std::hash<string_t> {}(element.key());
    -
    4635  seed = combine(seed, h);
    -
    4636  seed = combine(seed, hash(element.value()));
    -
    4637  }
    -
    4638  return seed;
    -
    4639  }
    -
    4640 
    -
    4641  case BasicJsonType::value_t::array:
    -
    4642  {
    -
    4643  auto seed = combine(type, j.size());
    -
    4644  for (const auto& element : j)
    -
    4645  {
    -
    4646  seed = combine(seed, hash(element));
    -
    4647  }
    -
    4648  return seed;
    -
    4649  }
    -
    4650 
    -
    4651  case BasicJsonType::value_t::string:
    -
    4652  {
    -
    4653  const auto h = std::hash<string_t> {}(j.template get_ref<const string_t&>());
    -
    4654  return combine(type, h);
    -
    4655  }
    -
    4656 
    -
    4657  case BasicJsonType::value_t::boolean:
    -
    4658  {
    -
    4659  const auto h = std::hash<bool> {}(j.template get<bool>());
    -
    4660  return combine(type, h);
    -
    4661  }
    -
    4662 
    -
    4663  case BasicJsonType::value_t::number_integer:
    -
    4664  {
    -
    4665  const auto h = std::hash<number_integer_t> {}(j.template get<number_integer_t>());
    -
    4666  return combine(type, h);
    -
    4667  }
    -
    4668 
    - -
    4670  {
    -
    4671  const auto h = std::hash<number_unsigned_t> {}(j.template get<number_unsigned_t>());
    -
    4672  return combine(type, h);
    -
    4673  }
    -
    4674 
    - -
    4676  {
    -
    4677  const auto h = std::hash<number_float_t> {}(j.template get<number_float_t>());
    -
    4678  return combine(type, h);
    -
    4679  }
    -
    4680 
    - -
    4682  {
    -
    4683  auto seed = combine(type, j.get_binary().size());
    -
    4684  const auto h = std::hash<bool> {}(j.get_binary().has_subtype());
    -
    4685  seed = combine(seed, h);
    -
    4686  seed = combine(seed, j.get_binary().subtype());
    -
    4687  for (const auto byte : j.get_binary())
    -
    4688  {
    -
    4689  seed = combine(seed, std::hash<std::uint8_t> {}(byte));
    -
    4690  }
    -
    4691  return seed;
    -
    4692  }
    -
    4693 
    -
    4694  default: // LCOV_EXCL_LINE
    -
    4695  JSON_ASSERT(false); // LCOV_EXCL_LINE
    -
    4696  }
    -
    4697 }
    -
    4698 
    -
    4699 } // namespace detail
    -
    4700 } // namespace nlohmann
    -
    4701 
    -
    4702 // #include <nlohmann/detail/input/binary_reader.hpp>
    -
    4703 
    -
    4704 
    -
    4705 #include <algorithm> // generate_n
    -
    4706 #include <array> // array
    -
    4707 #include <cmath> // ldexp
    -
    4708 #include <cstddef> // size_t
    -
    4709 #include <cstdint> // uint8_t, uint16_t, uint32_t, uint64_t
    -
    4710 #include <cstdio> // snprintf
    -
    4711 #include <cstring> // memcpy
    -
    4712 #include <iterator> // back_inserter
    -
    4713 #include <limits> // numeric_limits
    -
    4714 #include <string> // char_traits, string
    -
    4715 #include <utility> // make_pair, move
    -
    4716 
    -
    4717 // #include <nlohmann/detail/exceptions.hpp>
    -
    4718 
    -
    4719 // #include <nlohmann/detail/input/input_adapters.hpp>
    -
    4720 
    -
    4721 
    -
    4722 #include <array> // array
    -
    4723 #include <cstddef> // size_t
    -
    4724 #include <cstdio> //FILE *
    -
    4725 #include <cstring> // strlen
    -
    4726 #include <istream> // istream
    -
    4727 #include <iterator> // begin, end, iterator_traits, random_access_iterator_tag, distance, next
    -
    4728 #include <memory> // shared_ptr, make_shared, addressof
    -
    4729 #include <numeric> // accumulate
    -
    4730 #include <string> // string, char_traits
    -
    4731 #include <type_traits> // enable_if, is_base_of, is_pointer, is_integral, remove_pointer
    -
    4732 #include <utility> // pair, declval
    -
    4733 
    -
    4734 // #include <nlohmann/detail/iterators/iterator_traits.hpp>
    -
    4735 
    -
    4736 // #include <nlohmann/detail/macro_scope.hpp>
    -
    4737 
    -
    4738 
    -
    4739 namespace nlohmann
    -
    4740 {
    -
    4741 namespace detail
    -
    4742 {
    - -
    4745 
    -
    4747 // input adapters //
    -
    4749 
    -
    4754 class file_input_adapter
    -
    4755 {
    -
    4756  public:
    -
    4757  using char_type = char;
    -
    4758 
    - -
    4760  explicit file_input_adapter(std::FILE* f) noexcept
    -
    4761  : m_file(f)
    -
    4762  {}
    -
    4763 
    -
    4764  // make class move-only
    -
    4765  file_input_adapter(const file_input_adapter&) = delete;
    - - - -
    4769 
    -
    4770  std::char_traits<char>::int_type get_character() noexcept
    -
    4771  {
    -
    4772  return std::fgetc(m_file);
    -
    4773  }
    -
    4774 
    -
    4775  private:
    -
    4777  std::FILE* m_file;
    -
    4778 };
    -
    4779 
    -
    4780 
    -
    4790 class input_stream_adapter
    -
    4791 {
    -
    4792  public:
    -
    4793  using char_type = char;
    -
    4794 
    - -
    4796  {
    -
    4797  // clear stream flags; we use underlying streambuf I/O, do not
    -
    4798  // maintain ifstream flags, except eof
    -
    4799  if (is != nullptr)
    -
    4800  {
    -
    4801  is->clear(is->rdstate() & std::ios::eofbit);
    -
    4802  }
    -
    4803  }
    -
    4804 
    -
    4805  explicit input_stream_adapter(std::istream& i)
    -
    4806  : is(&i), sb(i.rdbuf())
    -
    4807  {}
    -
    4808 
    -
    4809  // delete because of pointer members
    -
    4810  input_stream_adapter(const input_stream_adapter&) = delete;
    - - -
    4813 
    -
    4814  input_stream_adapter(input_stream_adapter&& rhs) noexcept : is(rhs.is), sb(rhs.sb)
    -
    4815  {
    -
    4816  rhs.is = nullptr;
    -
    4817  rhs.sb = nullptr;
    -
    4818  }
    -
    4819 
    -
    4820  // std::istream/std::streambuf use std::char_traits<char>::to_int_type, to
    -
    4821  // ensure that std::char_traits<char>::eof() and the character 0xFF do not
    -
    4822  // end up as the same value, eg. 0xFFFFFFFF.
    -
    4823  std::char_traits<char>::int_type get_character()
    -
    4824  {
    -
    4825  auto res = sb->sbumpc();
    -
    4826  // set eof manually, as we don't use the istream interface.
    -
    4827  if (JSON_HEDLEY_UNLIKELY(res == EOF))
    -
    4828  {
    -
    4829  is->clear(is->rdstate() | std::ios::eofbit);
    -
    4830  }
    -
    4831  return res;
    -
    4832  }
    -
    4833 
    -
    4834  private:
    -
    4836  std::istream* is = nullptr;
    -
    4837  std::streambuf* sb = nullptr;
    -
    4838 };
    -
    4839 
    -
    4840 // General-purpose iterator-based adapter. It might not be as fast as
    -
    4841 // theoretically possible for some containers, but it is extremely versatile.
    -
    4842 template<typename IteratorType>
    - -
    4844 {
    -
    4845  public:
    -
    4846  using char_type = typename std::iterator_traits<IteratorType>::value_type;
    -
    4847 
    -
    4848  iterator_input_adapter(IteratorType first, IteratorType last)
    -
    4849  : current(std::move(first)), end(std::move(last)) {}
    -
    4850 
    -
    4851  typename std::char_traits<char_type>::int_type get_character()
    -
    4852  {
    -
    4853  if (JSON_HEDLEY_LIKELY(current != end))
    -
    4854  {
    -
    4855  auto result = std::char_traits<char_type>::to_int_type(*current);
    -
    4856  std::advance(current, 1);
    -
    4857  return result;
    -
    4858  }
    -
    4859  else
    -
    4860  {
    -
    4861  return std::char_traits<char_type>::eof();
    -
    4862  }
    -
    4863  }
    -
    4864 
    -
    4865  private:
    -
    4866  IteratorType current;
    -
    4867  IteratorType end;
    -
    4868 
    -
    4869  template<typename BaseInputAdapter, size_t T>
    - -
    4871 
    -
    4872  bool empty() const
    -
    4873  {
    -
    4874  return current == end;
    -
    4875  }
    -
    4876 
    -
    4877 };
    -
    4878 
    -
    4879 
    -
    4880 template<typename BaseInputAdapter, size_t T>
    -
    4881 struct wide_string_input_helper;
    -
    4882 
    -
    4883 template<typename BaseInputAdapter>
    -
    4884 struct wide_string_input_helper<BaseInputAdapter, 4>
    -
    4885 {
    -
    4886  // UTF-32
    -
    4887  static void fill_buffer(BaseInputAdapter& input,
    -
    4888  std::array<std::char_traits<char>::int_type, 4>& utf8_bytes,
    -
    4889  size_t& utf8_bytes_index,
    -
    4890  size_t& utf8_bytes_filled)
    -
    4891  {
    -
    4892  utf8_bytes_index = 0;
    -
    4893 
    -
    4894  if (JSON_HEDLEY_UNLIKELY(input.empty()))
    -
    4895  {
    -
    4896  utf8_bytes[0] = std::char_traits<char>::eof();
    -
    4897  utf8_bytes_filled = 1;
    -
    4898  }
    -
    4899  else
    -
    4900  {
    -
    4901  // get the current character
    -
    4902  const auto wc = input.get_character();
    -
    4903 
    -
    4904  // UTF-32 to UTF-8 encoding
    -
    4905  if (wc < 0x80)
    -
    4906  {
    -
    4907  utf8_bytes[0] = static_cast<std::char_traits<char>::int_type>(wc);
    -
    4908  utf8_bytes_filled = 1;
    -
    4909  }
    -
    4910  else if (wc <= 0x7FF)
    -
    4911  {
    -
    4912  utf8_bytes[0] = static_cast<std::char_traits<char>::int_type>(0xC0u | ((static_cast<unsigned int>(wc) >> 6u) & 0x1Fu));
    -
    4913  utf8_bytes[1] = static_cast<std::char_traits<char>::int_type>(0x80u | (static_cast<unsigned int>(wc) & 0x3Fu));
    -
    4914  utf8_bytes_filled = 2;
    -
    4915  }
    -
    4916  else if (wc <= 0xFFFF)
    -
    4917  {
    -
    4918  utf8_bytes[0] = static_cast<std::char_traits<char>::int_type>(0xE0u | ((static_cast<unsigned int>(wc) >> 12u) & 0x0Fu));
    -
    4919  utf8_bytes[1] = static_cast<std::char_traits<char>::int_type>(0x80u | ((static_cast<unsigned int>(wc) >> 6u) & 0x3Fu));
    -
    4920  utf8_bytes[2] = static_cast<std::char_traits<char>::int_type>(0x80u | (static_cast<unsigned int>(wc) & 0x3Fu));
    -
    4921  utf8_bytes_filled = 3;
    -
    4922  }
    -
    4923  else if (wc <= 0x10FFFF)
    -
    4924  {
    -
    4925  utf8_bytes[0] = static_cast<std::char_traits<char>::int_type>(0xF0u | ((static_cast<unsigned int>(wc) >> 18u) & 0x07u));
    -
    4926  utf8_bytes[1] = static_cast<std::char_traits<char>::int_type>(0x80u | ((static_cast<unsigned int>(wc) >> 12u) & 0x3Fu));
    -
    4927  utf8_bytes[2] = static_cast<std::char_traits<char>::int_type>(0x80u | ((static_cast<unsigned int>(wc) >> 6u) & 0x3Fu));
    -
    4928  utf8_bytes[3] = static_cast<std::char_traits<char>::int_type>(0x80u | (static_cast<unsigned int>(wc) & 0x3Fu));
    -
    4929  utf8_bytes_filled = 4;
    -
    4930  }
    -
    4931  else
    -
    4932  {
    -
    4933  // unknown character
    -
    4934  utf8_bytes[0] = static_cast<std::char_traits<char>::int_type>(wc);
    -
    4935  utf8_bytes_filled = 1;
    -
    4936  }
    -
    4937  }
    -
    4938  }
    -
    4939 };
    -
    4940 
    -
    4941 template<typename BaseInputAdapter>
    -
    4942 struct wide_string_input_helper<BaseInputAdapter, 2>
    -
    4943 {
    -
    4944  // UTF-16
    -
    4945  static void fill_buffer(BaseInputAdapter& input,
    -
    4946  std::array<std::char_traits<char>::int_type, 4>& utf8_bytes,
    -
    4947  size_t& utf8_bytes_index,
    -
    4948  size_t& utf8_bytes_filled)
    -
    4949  {
    -
    4950  utf8_bytes_index = 0;
    -
    4951 
    -
    4952  if (JSON_HEDLEY_UNLIKELY(input.empty()))
    -
    4953  {
    -
    4954  utf8_bytes[0] = std::char_traits<char>::eof();
    -
    4955  utf8_bytes_filled = 1;
    -
    4956  }
    -
    4957  else
    -
    4958  {
    -
    4959  // get the current character
    -
    4960  const auto wc = input.get_character();
    -
    4961 
    -
    4962  // UTF-16 to UTF-8 encoding
    -
    4963  if (wc < 0x80)
    -
    4964  {
    -
    4965  utf8_bytes[0] = static_cast<std::char_traits<char>::int_type>(wc);
    -
    4966  utf8_bytes_filled = 1;
    -
    4967  }
    -
    4968  else if (wc <= 0x7FF)
    -
    4969  {
    -
    4970  utf8_bytes[0] = static_cast<std::char_traits<char>::int_type>(0xC0u | ((static_cast<unsigned int>(wc) >> 6u)));
    -
    4971  utf8_bytes[1] = static_cast<std::char_traits<char>::int_type>(0x80u | (static_cast<unsigned int>(wc) & 0x3Fu));
    -
    4972  utf8_bytes_filled = 2;
    -
    4973  }
    -
    4974  else if (0xD800 > wc || wc >= 0xE000)
    -
    4975  {
    -
    4976  utf8_bytes[0] = static_cast<std::char_traits<char>::int_type>(0xE0u | ((static_cast<unsigned int>(wc) >> 12u)));
    -
    4977  utf8_bytes[1] = static_cast<std::char_traits<char>::int_type>(0x80u | ((static_cast<unsigned int>(wc) >> 6u) & 0x3Fu));
    -
    4978  utf8_bytes[2] = static_cast<std::char_traits<char>::int_type>(0x80u | (static_cast<unsigned int>(wc) & 0x3Fu));
    -
    4979  utf8_bytes_filled = 3;
    -
    4980  }
    -
    4981  else
    -
    4982  {
    -
    4983  if (JSON_HEDLEY_UNLIKELY(!input.empty()))
    -
    4984  {
    -
    4985  const auto wc2 = static_cast<unsigned int>(input.get_character());
    -
    4986  const auto charcode = 0x10000u + (((static_cast<unsigned int>(wc) & 0x3FFu) << 10u) | (wc2 & 0x3FFu));
    -
    4987  utf8_bytes[0] = static_cast<std::char_traits<char>::int_type>(0xF0u | (charcode >> 18u));
    -
    4988  utf8_bytes[1] = static_cast<std::char_traits<char>::int_type>(0x80u | ((charcode >> 12u) & 0x3Fu));
    -
    4989  utf8_bytes[2] = static_cast<std::char_traits<char>::int_type>(0x80u | ((charcode >> 6u) & 0x3Fu));
    -
    4990  utf8_bytes[3] = static_cast<std::char_traits<char>::int_type>(0x80u | (charcode & 0x3Fu));
    -
    4991  utf8_bytes_filled = 4;
    -
    4992  }
    -
    4993  else
    -
    4994  {
    -
    4995  utf8_bytes[0] = static_cast<std::char_traits<char>::int_type>(wc);
    -
    4996  utf8_bytes_filled = 1;
    -
    4997  }
    -
    4998  }
    -
    4999  }
    -
    5000  }
    -
    5001 };
    -
    5002 
    -
    5003 // Wraps another input apdater to convert wide character types into individual bytes.
    -
    5004 template<typename BaseInputAdapter, typename WideCharType>
    -
    5005 class wide_string_input_adapter
    -
    5006 {
    -
    5007  public:
    -
    5008  using char_type = char;
    -
    5009 
    -
    5010  wide_string_input_adapter(BaseInputAdapter base)
    -
    5011  : base_adapter(base) {}
    -
    5012 
    -
    5013  typename std::char_traits<char>::int_type get_character() noexcept
    -
    5014  {
    -
    5015  // check if buffer needs to be filled
    -
    5016  if (utf8_bytes_index == utf8_bytes_filled)
    -
    5017  {
    -
    5018  fill_buffer<sizeof(WideCharType)>();
    -
    5019 
    -
    5020  JSON_ASSERT(utf8_bytes_filled > 0);
    -
    5021  JSON_ASSERT(utf8_bytes_index == 0);
    -
    5022  }
    -
    5023 
    -
    5024  // use buffer
    -
    5025  JSON_ASSERT(utf8_bytes_filled > 0);
    -
    5026  JSON_ASSERT(utf8_bytes_index < utf8_bytes_filled);
    -
    5027  return utf8_bytes[utf8_bytes_index++];
    -
    5028  }
    -
    5029 
    -
    5030  private:
    -
    5031  BaseInputAdapter base_adapter;
    -
    5032 
    -
    5033  template<size_t T>
    -
    5034  void fill_buffer()
    -
    5035  {
    -
    5036  wide_string_input_helper<BaseInputAdapter, T>::fill_buffer(base_adapter, utf8_bytes, utf8_bytes_index, utf8_bytes_filled);
    -
    5037  }
    -
    5038 
    -
    5040  std::array<std::char_traits<char>::int_type, 4> utf8_bytes = {{0, 0, 0, 0}};
    -
    5041 
    -
    5043  std::size_t utf8_bytes_index = 0;
    -
    5045  std::size_t utf8_bytes_filled = 0;
    -
    5046 };
    -
    5047 
    -
    5048 
    -
    5049 template<typename IteratorType, typename Enable = void>
    - -
    5051 {
    -
    5052  using iterator_type = IteratorType;
    -
    5053  using char_type = typename std::iterator_traits<iterator_type>::value_type;
    - -
    5055 
    -
    5056  static adapter_type create(IteratorType first, IteratorType last)
    -
    5057  {
    -
    5058  return adapter_type(std::move(first), std::move(last));
    -
    5059  }
    -
    5060 };
    -
    5061 
    -
    5062 template<typename T>
    - -
    5064 {
    -
    5065  using value_type = typename std::iterator_traits<T>::value_type;
    -
    5066  enum
    -
    5067  {
    -
    5068  value = sizeof(value_type) > 1
    -
    5069  };
    -
    5070 };
    -
    5071 
    -
    5072 template<typename IteratorType>
    - -
    5074 {
    -
    5075  using iterator_type = IteratorType;
    -
    5076  using char_type = typename std::iterator_traits<iterator_type>::value_type;
    - - -
    5079 
    -
    5080  static adapter_type create(IteratorType first, IteratorType last)
    -
    5081  {
    -
    5082  return adapter_type(base_adapter_type(std::move(first), std::move(last)));
    -
    5083  }
    -
    5084 };
    -
    5085 
    -
    5086 // General purpose iterator-based input
    -
    5087 template<typename IteratorType>
    -
    5088 typename iterator_input_adapter_factory<IteratorType>::adapter_type input_adapter(IteratorType first, IteratorType last)
    -
    5089 {
    -
    5090  using factory_type = iterator_input_adapter_factory<IteratorType>;
    -
    5091  return factory_type::create(first, last);
    -
    5092 }
    -
    5093 
    -
    5094 // Convenience shorthand from container to iterator
    -
    5095 template<typename ContainerType>
    -
    5096 auto input_adapter(const ContainerType& container) -> decltype(input_adapter(begin(container), end(container)))
    -
    5097 {
    -
    5098  // Enable ADL
    -
    5099  using std::begin;
    -
    5100  using std::end;
    -
    5101 
    -
    5102  return input_adapter(begin(container), end(container));
    -
    5103 }
    -
    5104 
    -
    5105 // Special cases with fast paths
    -
    5106 inline file_input_adapter input_adapter(std::FILE* file)
    -
    5107 {
    -
    5108  return file_input_adapter(file);
    -
    5109 }
    -
    5110 
    -
    5111 inline input_stream_adapter input_adapter(std::istream& stream)
    -
    5112 {
    -
    5113  return input_stream_adapter(stream);
    -
    5114 }
    -
    5115 
    -
    5116 inline input_stream_adapter input_adapter(std::istream&& stream)
    -
    5117 {
    -
    5118  return input_stream_adapter(stream);
    -
    5119 }
    -
    5120 
    -
    5121 using contiguous_bytes_input_adapter = decltype(input_adapter(std::declval<const char*>(), std::declval<const char*>()));
    -
    5122 
    -
    5123 // Null-delimited strings, and the like.
    -
    5124 template < typename CharT,
    -
    5125  typename std::enable_if <
    -
    5126  std::is_pointer<CharT>::value&&
    -
    5127  !std::is_array<CharT>::value&&
    -
    5128  std::is_integral<typename std::remove_pointer<CharT>::type>::value&&
    -
    5129  sizeof(typename std::remove_pointer<CharT>::type) == 1,
    -
    5130  int >::type = 0 >
    - -
    5132 {
    -
    5133  auto length = std::strlen(reinterpret_cast<const char*>(b));
    -
    5134  const auto* ptr = reinterpret_cast<const char*>(b);
    -
    5135  return input_adapter(ptr, ptr + length);
    -
    5136 }
    -
    5137 
    -
    5138 template<typename T, std::size_t N>
    -
    5139 auto input_adapter(T (&array)[N]) -> decltype(input_adapter(array, array + N))
    -
    5140 {
    -
    5141  return input_adapter(array, array + N);
    -
    5142 }
    -
    5143 
    -
    5144 // This class only handles inputs of input_buffer_adapter type.
    -
    5145 // It's required so that expressions like {ptr, len} can be implicitely casted
    -
    5146 // to the correct adapter.
    - -
    5148 {
    -
    5149  public:
    -
    5150  template < typename CharT,
    -
    5151  typename std::enable_if <
    -
    5152  std::is_pointer<CharT>::value&&
    -
    5153  std::is_integral<typename std::remove_pointer<CharT>::type>::value&&
    -
    5154  sizeof(typename std::remove_pointer<CharT>::type) == 1,
    -
    5155  int >::type = 0 >
    -
    5156  span_input_adapter(CharT b, std::size_t l)
    -
    5157  : ia(reinterpret_cast<const char*>(b), reinterpret_cast<const char*>(b) + l) {}
    -
    5158 
    -
    5159  template<class IteratorType,
    -
    5160  typename std::enable_if<
    -
    5161  std::is_same<typename iterator_traits<IteratorType>::iterator_category, std::random_access_iterator_tag>::value,
    -
    5162  int>::type = 0>
    -
    5163  span_input_adapter(IteratorType first, IteratorType last)
    -
    5164  : ia(input_adapter(first, last)) {}
    -
    5165 
    - -
    5167  {
    -
    5168  return std::move(ia);
    -
    5169  }
    -
    5170 
    -
    5171  private:
    - -
    5173 };
    -
    5174 } // namespace detail
    -
    5175 } // namespace nlohmann
    -
    5176 
    -
    5177 // #include <nlohmann/detail/input/json_sax.hpp>
    -
    5178 
    -
    5179 
    -
    5180 #include <cstddef>
    -
    5181 #include <string> // string
    -
    5182 #include <utility> // move
    -
    5183 #include <vector> // vector
    -
    5184 
    -
    5185 // #include <nlohmann/detail/exceptions.hpp>
    -
    5186 
    -
    5187 // #include <nlohmann/detail/macro_scope.hpp>
    -
    5188 
    -
    5189 
    -
    5190 namespace nlohmann
    -
    5191 {
    -
    5192 
    -
    5201 template<typename BasicJsonType>
    -
    5202 struct json_sax
    -
    5203 {
    -
    5204  using number_integer_t = typename BasicJsonType::number_integer_t;
    -
    5205  using number_unsigned_t = typename BasicJsonType::number_unsigned_t;
    -
    5206  using number_float_t = typename BasicJsonType::number_float_t;
    -
    5207  using string_t = typename BasicJsonType::string_t;
    -
    5208  using binary_t = typename BasicJsonType::binary_t;
    -
    5209 
    -
    5214  virtual bool null() = 0;
    -
    5215 
    -
    5221  virtual bool boolean(bool val) = 0;
    -
    5222 
    -
    5228  virtual bool number_integer(number_integer_t val) = 0;
    -
    5229 
    -
    5235  virtual bool number_unsigned(number_unsigned_t val) = 0;
    -
    5236 
    -
    5243  virtual bool number_float(number_float_t val, const string_t& s) = 0;
    -
    5244 
    -
    5251  virtual bool string(string_t& val) = 0;
    -
    5252 
    -
    5259  virtual bool binary(binary_t& val) = 0;
    -
    5260 
    -
    5267  virtual bool start_object(std::size_t elements) = 0;
    -
    5268 
    -
    5275  virtual bool key(string_t& val) = 0;
    -
    5276 
    -
    5281  virtual bool end_object() = 0;
    -
    5282 
    -
    5289  virtual bool start_array(std::size_t elements) = 0;
    -
    5290 
    -
    5295  virtual bool end_array() = 0;
    -
    5296 
    -
    5304  virtual bool parse_error(std::size_t position,
    -
    5305  const std::string& last_token,
    -
    5306  const detail::exception& ex) = 0;
    -
    5307 
    -
    5308  virtual ~json_sax() = default;
    -
    5309 };
    -
    5310 
    -
    5311 
    -
    5312 namespace detail
    -
    5313 {
    -
    5327 template<typename BasicJsonType>
    -
    5328 class json_sax_dom_parser
    -
    5329 {
    -
    5330  public:
    -
    5331  using number_integer_t = typename BasicJsonType::number_integer_t;
    -
    5332  using number_unsigned_t = typename BasicJsonType::number_unsigned_t;
    -
    5333  using number_float_t = typename BasicJsonType::number_float_t;
    -
    5334  using string_t = typename BasicJsonType::string_t;
    -
    5335  using binary_t = typename BasicJsonType::binary_t;
    -
    5336 
    -
    5342  explicit json_sax_dom_parser(BasicJsonType& r, const bool allow_exceptions_ = true)
    -
    5343  : root(r), allow_exceptions(allow_exceptions_)
    -
    5344  {}
    -
    5345 
    -
    5346  // make class move-only
    -
    5347  json_sax_dom_parser(const json_sax_dom_parser&) = delete;
    - - - -
    5351  ~json_sax_dom_parser() = default;
    -
    5352 
    -
    5353  bool null()
    -
    5354  {
    -
    5355  handle_value(nullptr);
    -
    5356  return true;
    -
    5357  }
    -
    5358 
    -
    5359  bool boolean(bool val)
    -
    5360  {
    -
    5361  handle_value(val);
    -
    5362  return true;
    -
    5363  }
    -
    5364 
    - -
    5366  {
    -
    5367  handle_value(val);
    -
    5368  return true;
    -
    5369  }
    -
    5370 
    - -
    5372  {
    -
    5373  handle_value(val);
    -
    5374  return true;
    -
    5375  }
    -
    5376 
    -
    5377  bool number_float(number_float_t val, const string_t& /*unused*/)
    -
    5378  {
    -
    5379  handle_value(val);
    -
    5380  return true;
    -
    5381  }
    -
    5382 
    -
    5383  bool string(string_t& val)
    -
    5384  {
    -
    5385  handle_value(val);
    -
    5386  return true;
    -
    5387  }
    -
    5388 
    -
    5389  bool binary(binary_t& val)
    -
    5390  {
    -
    5391  handle_value(std::move(val));
    -
    5392  return true;
    -
    5393  }
    -
    5394 
    -
    5395  bool start_object(std::size_t len)
    -
    5396  {
    -
    5397  ref_stack.push_back(handle_value(BasicJsonType::value_t::object));
    -
    5398 
    -
    5399  if (JSON_HEDLEY_UNLIKELY(len != std::size_t(-1) && len > ref_stack.back()->max_size()))
    -
    5400  {
    - -
    5402  "excessive object size: " + std::to_string(len)));
    -
    5403  }
    -
    5404 
    -
    5405  return true;
    -
    5406  }
    -
    5407 
    -
    5408  bool key(string_t& val)
    -
    5409  {
    -
    5410  // add null at given key and store the reference for later
    -
    5411  object_element = &(ref_stack.back()->m_value.object->operator[](val));
    -
    5412  return true;
    -
    5413  }
    -
    5414 
    -
    5415  bool end_object()
    -
    5416  {
    -
    5417  ref_stack.pop_back();
    -
    5418  return true;
    -
    5419  }
    -
    5420 
    -
    5421  bool start_array(std::size_t len)
    -
    5422  {
    -
    5423  ref_stack.push_back(handle_value(BasicJsonType::value_t::array));
    -
    5424 
    -
    5425  if (JSON_HEDLEY_UNLIKELY(len != std::size_t(-1) && len > ref_stack.back()->max_size()))
    -
    5426  {
    - -
    5428  "excessive array size: " + std::to_string(len)));
    -
    5429  }
    -
    5430 
    -
    5431  return true;
    -
    5432  }
    -
    5433 
    -
    5434  bool end_array()
    -
    5435  {
    -
    5436  ref_stack.pop_back();
    -
    5437  return true;
    -
    5438  }
    -
    5439 
    -
    5440  template<class Exception>
    -
    5441  bool parse_error(std::size_t /*unused*/, const std::string& /*unused*/,
    -
    5442  const Exception& ex)
    -
    5443  {
    -
    5444  errored = true;
    -
    5445  static_cast<void>(ex);
    -
    5446  if (allow_exceptions)
    -
    5447  {
    -
    5448  JSON_THROW(ex);
    -
    5449  }
    -
    5450  return false;
    -
    5451  }
    -
    5452 
    -
    5453  constexpr bool is_errored() const
    -
    5454  {
    -
    5455  return errored;
    -
    5456  }
    -
    5457 
    -
    5458  private:
    -
    5465  template<typename Value>
    - -
    5467  BasicJsonType* handle_value(Value&& v)
    -
    5468  {
    -
    5469  if (ref_stack.empty())
    -
    5470  {
    -
    5471  root = BasicJsonType(std::forward<Value>(v));
    -
    5472  return &root;
    -
    5473  }
    -
    5474 
    -
    5475  JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
    -
    5476 
    -
    5477  if (ref_stack.back()->is_array())
    -
    5478  {
    -
    5479  ref_stack.back()->m_value.array->emplace_back(std::forward<Value>(v));
    -
    5480  return &(ref_stack.back()->m_value.array->back());
    -
    5481  }
    -
    5482 
    -
    5483  JSON_ASSERT(ref_stack.back()->is_object());
    -
    5484  JSON_ASSERT(object_element);
    -
    5485  *object_element = BasicJsonType(std::forward<Value>(v));
    -
    5486  return object_element;
    -
    5487  }
    -
    5488 
    -
    5490  BasicJsonType& root;
    -
    5492  std::vector<BasicJsonType*> ref_stack {};
    -
    5494  BasicJsonType* object_element = nullptr;
    -
    5496  bool errored = false;
    -
    5498  const bool allow_exceptions = true;
    -
    5499 };
    -
    5500 
    -
    5501 template<typename BasicJsonType>
    -
    5502 class json_sax_dom_callback_parser
    -
    5503 {
    -
    5504  public:
    -
    5505  using number_integer_t = typename BasicJsonType::number_integer_t;
    -
    5506  using number_unsigned_t = typename BasicJsonType::number_unsigned_t;
    -
    5507  using number_float_t = typename BasicJsonType::number_float_t;
    -
    5508  using string_t = typename BasicJsonType::string_t;
    -
    5509  using binary_t = typename BasicJsonType::binary_t;
    - - -
    5512 
    - -
    5514  const parser_callback_t cb,
    -
    5515  const bool allow_exceptions_ = true)
    -
    5516  : root(r), callback(cb), allow_exceptions(allow_exceptions_)
    -
    5517  {
    -
    5518  keep_stack.push_back(true);
    -
    5519  }
    -
    5520 
    -
    5521  // make class move-only
    - - - - -
    5526  ~json_sax_dom_callback_parser() = default;
    -
    5527 
    -
    5528  bool null()
    -
    5529  {
    -
    5530  handle_value(nullptr);
    -
    5531  return true;
    -
    5532  }
    -
    5533 
    -
    5534  bool boolean(bool val)
    -
    5535  {
    -
    5536  handle_value(val);
    -
    5537  return true;
    -
    5538  }
    -
    5539 
    - -
    5541  {
    -
    5542  handle_value(val);
    -
    5543  return true;
    -
    5544  }
    -
    5545 
    - -
    5547  {
    -
    5548  handle_value(val);
    -
    5549  return true;
    -
    5550  }
    -
    5551 
    -
    5552  bool number_float(number_float_t val, const string_t& /*unused*/)
    -
    5553  {
    -
    5554  handle_value(val);
    -
    5555  return true;
    -
    5556  }
    -
    5557 
    -
    5558  bool string(string_t& val)
    -
    5559  {
    -
    5560  handle_value(val);
    -
    5561  return true;
    -
    5562  }
    -
    5563 
    -
    5564  bool binary(binary_t& val)
    -
    5565  {
    -
    5566  handle_value(std::move(val));
    -
    5567  return true;
    -
    5568  }
    -
    5569 
    -
    5570  bool start_object(std::size_t len)
    -
    5571  {
    -
    5572  // check callback for object start
    -
    5573  const bool keep = callback(static_cast<int>(ref_stack.size()), parse_event_t::object_start, discarded);
    -
    5574  keep_stack.push_back(keep);
    -
    5575 
    -
    5576  auto val = handle_value(BasicJsonType::value_t::object, true);
    -
    5577  ref_stack.push_back(val.second);
    -
    5578 
    -
    5579  // check object limit
    -
    5580  if (ref_stack.back() && JSON_HEDLEY_UNLIKELY(len != std::size_t(-1) && len > ref_stack.back()->max_size()))
    -
    5581  {
    -
    5582  JSON_THROW(out_of_range::create(408, "excessive object size: " + std::to_string(len)));
    -
    5583  }
    -
    5584 
    -
    5585  return true;
    -
    5586  }
    -
    5587 
    -
    5588  bool key(string_t& val)
    -
    5589  {
    -
    5590  BasicJsonType k = BasicJsonType(val);
    -
    5591 
    -
    5592  // check callback for key
    -
    5593  const bool keep = callback(static_cast<int>(ref_stack.size()), parse_event_t::key, k);
    -
    5594  key_keep_stack.push_back(keep);
    -
    5595 
    -
    5596  // add discarded value at given key and store the reference for later
    -
    5597  if (keep && ref_stack.back())
    -
    5598  {
    -
    5599  object_element = &(ref_stack.back()->m_value.object->operator[](val) = discarded);
    -
    5600  }
    -
    5601 
    -
    5602  return true;
    -
    5603  }
    -
    5604 
    -
    5605  bool end_object()
    -
    5606  {
    -
    5607  if (ref_stack.back() && !callback(static_cast<int>(ref_stack.size()) - 1, parse_event_t::object_end, *ref_stack.back()))
    -
    5608  {
    -
    5609  // discard object
    -
    5610  *ref_stack.back() = discarded;
    -
    5611  }
    -
    5612 
    -
    5613  JSON_ASSERT(!ref_stack.empty());
    -
    5614  JSON_ASSERT(!keep_stack.empty());
    -
    5615  ref_stack.pop_back();
    -
    5616  keep_stack.pop_back();
    -
    5617 
    -
    5618  if (!ref_stack.empty() && ref_stack.back() && ref_stack.back()->is_structured())
    -
    5619  {
    -
    5620  // remove discarded value
    -
    5621  for (auto it = ref_stack.back()->begin(); it != ref_stack.back()->end(); ++it)
    -
    5622  {
    -
    5623  if (it->is_discarded())
    -
    5624  {
    -
    5625  ref_stack.back()->erase(it);
    -
    5626  break;
    -
    5627  }
    -
    5628  }
    -
    5629  }
    -
    5630 
    -
    5631  return true;
    -
    5632  }
    -
    5633 
    -
    5634  bool start_array(std::size_t len)
    -
    5635  {
    -
    5636  const bool keep = callback(static_cast<int>(ref_stack.size()), parse_event_t::array_start, discarded);
    -
    5637  keep_stack.push_back(keep);
    -
    5638 
    -
    5639  auto val = handle_value(BasicJsonType::value_t::array, true);
    -
    5640  ref_stack.push_back(val.second);
    -
    5641 
    -
    5642  // check array limit
    -
    5643  if (ref_stack.back() && JSON_HEDLEY_UNLIKELY(len != std::size_t(-1) && len > ref_stack.back()->max_size()))
    -
    5644  {
    -
    5645  JSON_THROW(out_of_range::create(408, "excessive array size: " + std::to_string(len)));
    -
    5646  }
    -
    5647 
    -
    5648  return true;
    -
    5649  }
    -
    5650 
    -
    5651  bool end_array()
    -
    5652  {
    -
    5653  bool keep = true;
    -
    5654 
    -
    5655  if (ref_stack.back())
    -
    5656  {
    -
    5657  keep = callback(static_cast<int>(ref_stack.size()) - 1, parse_event_t::array_end, *ref_stack.back());
    -
    5658  if (!keep)
    -
    5659  {
    -
    5660  // discard array
    -
    5661  *ref_stack.back() = discarded;
    -
    5662  }
    -
    5663  }
    -
    5664 
    -
    5665  JSON_ASSERT(!ref_stack.empty());
    -
    5666  JSON_ASSERT(!keep_stack.empty());
    -
    5667  ref_stack.pop_back();
    -
    5668  keep_stack.pop_back();
    -
    5669 
    -
    5670  // remove discarded value
    -
    5671  if (!keep && !ref_stack.empty() && ref_stack.back()->is_array())
    -
    5672  {
    -
    5673  ref_stack.back()->m_value.array->pop_back();
    -
    5674  }
    -
    5675 
    -
    5676  return true;
    -
    5677  }
    -
    5678 
    -
    5679  template<class Exception>
    -
    5680  bool parse_error(std::size_t /*unused*/, const std::string& /*unused*/,
    -
    5681  const Exception& ex)
    -
    5682  {
    -
    5683  errored = true;
    -
    5684  static_cast<void>(ex);
    -
    5685  if (allow_exceptions)
    -
    5686  {
    -
    5687  JSON_THROW(ex);
    -
    5688  }
    -
    5689  return false;
    -
    5690  }
    -
    5691 
    -
    5692  constexpr bool is_errored() const
    -
    5693  {
    -
    5694  return errored;
    -
    5695  }
    -
    5696 
    -
    5697  private:
    -
    5713  template<typename Value>
    -
    5714  std::pair<bool, BasicJsonType*> handle_value(Value&& v, const bool skip_callback = false)
    -
    5715  {
    -
    5716  JSON_ASSERT(!keep_stack.empty());
    -
    5717 
    -
    5718  // do not handle this value if we know it would be added to a discarded
    -
    5719  // container
    -
    5720  if (!keep_stack.back())
    -
    5721  {
    -
    5722  return {false, nullptr};
    -
    5723  }
    -
    5724 
    -
    5725  // create value
    -
    5726  auto value = BasicJsonType(std::forward<Value>(v));
    -
    5727 
    -
    5728  // check callback
    -
    5729  const bool keep = skip_callback || callback(static_cast<int>(ref_stack.size()), parse_event_t::value, value);
    -
    5730 
    -
    5731  // do not handle this value if we just learnt it shall be discarded
    -
    5732  if (!keep)
    -
    5733  {
    -
    5734  return {false, nullptr};
    -
    5735  }
    -
    5736 
    -
    5737  if (ref_stack.empty())
    -
    5738  {
    -
    5739  root = std::move(value);
    -
    5740  return {true, &root};
    -
    5741  }
    -
    5742 
    -
    5743  // skip this value if we already decided to skip the parent
    -
    5744  // (https://github.com/nlohmann/json/issues/971#issuecomment-413678360)
    -
    5745  if (!ref_stack.back())
    -
    5746  {
    -
    5747  return {false, nullptr};
    -
    5748  }
    -
    5749 
    -
    5750  // we now only expect arrays and objects
    -
    5751  JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
    -
    5752 
    -
    5753  // array
    -
    5754  if (ref_stack.back()->is_array())
    -
    5755  {
    -
    5756  ref_stack.back()->m_value.array->push_back(std::move(value));
    -
    5757  return {true, &(ref_stack.back()->m_value.array->back())};
    -
    5758  }
    -
    5759 
    -
    5760  // object
    -
    5761  JSON_ASSERT(ref_stack.back()->is_object());
    -
    5762  // check if we should store an element for the current key
    -
    5763  JSON_ASSERT(!key_keep_stack.empty());
    -
    5764  const bool store_element = key_keep_stack.back();
    -
    5765  key_keep_stack.pop_back();
    -
    5766 
    -
    5767  if (!store_element)
    -
    5768  {
    -
    5769  return {false, nullptr};
    -
    5770  }
    -
    5771 
    -
    5772  JSON_ASSERT(object_element);
    -
    5773  *object_element = std::move(value);
    -
    5774  return {true, object_element};
    -
    5775  }
    -
    5776 
    -
    5778  BasicJsonType& root;
    -
    5780  std::vector<BasicJsonType*> ref_stack {};
    -
    5782  std::vector<bool> keep_stack {};
    -
    5784  std::vector<bool> key_keep_stack {};
    -
    5786  BasicJsonType* object_element = nullptr;
    -
    5788  bool errored = false;
    -
    5790  const parser_callback_t callback = nullptr;
    -
    5792  const bool allow_exceptions = true;
    -
    5794  BasicJsonType discarded = BasicJsonType::value_t::discarded;
    -
    5795 };
    -
    5796 
    -
    5797 template<typename BasicJsonType>
    -
    5798 class json_sax_acceptor
    -
    5799 {
    -
    5800  public:
    -
    5801  using number_integer_t = typename BasicJsonType::number_integer_t;
    -
    5802  using number_unsigned_t = typename BasicJsonType::number_unsigned_t;
    -
    5803  using number_float_t = typename BasicJsonType::number_float_t;
    -
    5804  using string_t = typename BasicJsonType::string_t;
    -
    5805  using binary_t = typename BasicJsonType::binary_t;
    -
    5806 
    -
    5807  bool null()
    -
    5808  {
    -
    5809  return true;
    -
    5810  }
    -
    5811 
    -
    5812  bool boolean(bool /*unused*/)
    -
    5813  {
    -
    5814  return true;
    -
    5815  }
    -
    5816 
    - -
    5818  {
    -
    5819  return true;
    -
    5820  }
    -
    5821 
    - -
    5823  {
    -
    5824  return true;
    -
    5825  }
    -
    5826 
    -
    5827  bool number_float(number_float_t /*unused*/, const string_t& /*unused*/)
    -
    5828  {
    -
    5829  return true;
    -
    5830  }
    -
    5831 
    -
    5832  bool string(string_t& /*unused*/)
    -
    5833  {
    -
    5834  return true;
    -
    5835  }
    -
    5836 
    -
    5837  bool binary(binary_t& /*unused*/)
    -
    5838  {
    -
    5839  return true;
    -
    5840  }
    -
    5841 
    -
    5842  bool start_object(std::size_t /*unused*/ = std::size_t(-1))
    -
    5843  {
    -
    5844  return true;
    -
    5845  }
    -
    5846 
    -
    5847  bool key(string_t& /*unused*/)
    -
    5848  {
    -
    5849  return true;
    -
    5850  }
    -
    5851 
    -
    5852  bool end_object()
    -
    5853  {
    -
    5854  return true;
    -
    5855  }
    -
    5856 
    -
    5857  bool start_array(std::size_t /*unused*/ = std::size_t(-1))
    -
    5858  {
    -
    5859  return true;
    -
    5860  }
    -
    5861 
    -
    5862  bool end_array()
    -
    5863  {
    -
    5864  return true;
    -
    5865  }
    -
    5866 
    -
    5867  bool parse_error(std::size_t /*unused*/, const std::string& /*unused*/, const detail::exception& /*unused*/)
    -
    5868  {
    -
    5869  return false;
    -
    5870  }
    -
    5871 };
    -
    5872 } // namespace detail
    -
    5873 
    -
    5874 } // namespace nlohmann
    -
    5875 
    -
    5876 // #include <nlohmann/detail/input/lexer.hpp>
    -
    5877 
    -
    5878 
    -
    5879 #include <array> // array
    -
    5880 #include <clocale> // localeconv
    -
    5881 #include <cstddef> // size_t
    -
    5882 #include <cstdio> // snprintf
    -
    5883 #include <cstdlib> // strtof, strtod, strtold, strtoll, strtoull
    -
    5884 #include <initializer_list> // initializer_list
    -
    5885 #include <string> // char_traits, string
    -
    5886 #include <utility> // move
    -
    5887 #include <vector> // vector
    -
    5888 
    -
    5889 // #include <nlohmann/detail/input/input_adapters.hpp>
    -
    5890 
    -
    5891 // #include <nlohmann/detail/input/position_t.hpp>
    -
    5892 
    -
    5893 // #include <nlohmann/detail/macro_scope.hpp>
    -
    5894 
    -
    5895 
    -
    5896 namespace nlohmann
    -
    5897 {
    -
    5898 namespace detail
    -
    5899 {
    -
    5901 // lexer //
    -
    5903 
    -
    5904 template<typename BasicJsonType>
    - -
    5906 {
    -
    5907  public:
    -
    5909  enum class token_type
    -
    5910  {
    -
    5911  uninitialized,
    -
    5912  literal_true,
    -
    5913  literal_false,
    -
    5914  literal_null,
    -
    5915  value_string,
    -
    5916  value_unsigned,
    -
    5917  value_integer,
    -
    5918  value_float,
    -
    5919  begin_array,
    -
    5920  begin_object,
    -
    5921  end_array,
    -
    5922  end_object,
    -
    5923  name_separator,
    -
    5924  value_separator,
    -
    5925  parse_error,
    -
    5926  end_of_input,
    - -
    5928  };
    -
    5929 
    - - -
    5933  static const char* token_type_name(const token_type t) noexcept
    -
    5934  {
    -
    5935  switch (t)
    -
    5936  {
    - -
    5938  return "<uninitialized>";
    - -
    5940  return "true literal";
    - -
    5942  return "false literal";
    - -
    5944  return "null literal";
    - -
    5946  return "string literal";
    - - - -
    5950  return "number literal";
    - -
    5952  return "'['";
    - -
    5954  return "'{'";
    -
    5955  case token_type::end_array:
    -
    5956  return "']'";
    - -
    5958  return "'}'";
    - -
    5960  return "':'";
    - -
    5962  return "','";
    - -
    5964  return "<parse error>";
    - -
    5966  return "end of input";
    - -
    5968  return "'[', '{', or a literal";
    -
    5969  // LCOV_EXCL_START
    -
    5970  default: // catch non-enum values
    -
    5971  return "unknown token";
    -
    5972  // LCOV_EXCL_STOP
    -
    5973  }
    -
    5974  }
    -
    5975 };
    -
    5981 template<typename BasicJsonType, typename InputAdapterType>
    -
    5982 class lexer : public lexer_base<BasicJsonType>
    -
    5983 {
    -
    5984  using number_integer_t = typename BasicJsonType::number_integer_t;
    -
    5985  using number_unsigned_t = typename BasicJsonType::number_unsigned_t;
    -
    5986  using number_float_t = typename BasicJsonType::number_float_t;
    -
    5987  using string_t = typename BasicJsonType::string_t;
    -
    5988  using char_type = typename InputAdapterType::char_type;
    -
    5989  using char_int_type = typename std::char_traits<char_type>::int_type;
    -
    5990 
    -
    5991  public:
    - -
    5993 
    -
    5994  explicit lexer(InputAdapterType&& adapter, bool ignore_comments_ = false)
    -
    5995  : ia(std::move(adapter))
    -
    5996  , ignore_comments(ignore_comments_)
    -
    5997  , decimal_point_char(static_cast<char_int_type>(get_decimal_point()))
    -
    5998  {}
    -
    5999 
    -
    6000  // delete because of pointer members
    -
    6001  lexer(const lexer&) = delete;
    -
    6002  lexer(lexer&&) = default;
    -
    6003  lexer& operator=(lexer&) = delete;
    -
    6004  lexer& operator=(lexer&&) = default;
    -
    6005  ~lexer() = default;
    -
    6006 
    -
    6007  private:
    -
    6009  // locales
    -
    6011 
    - -
    6014  static char get_decimal_point() noexcept
    -
    6015  {
    -
    6016  const auto* loc = localeconv();
    -
    6017  JSON_ASSERT(loc != nullptr);
    -
    6018  return (loc->decimal_point == nullptr) ? '.' : *(loc->decimal_point);
    -
    6019  }
    -
    6020 
    -
    6022  // scan functions
    -
    6024 
    -
    6040  int get_codepoint()
    -
    6041  {
    -
    6042  // this function only makes sense after reading `\u`
    -
    6043  JSON_ASSERT(current == 'u');
    -
    6044  int codepoint = 0;
    -
    6045 
    -
    6046  const auto factors = { 12u, 8u, 4u, 0u };
    -
    6047  for (const auto factor : factors)
    -
    6048  {
    -
    6049  get();
    -
    6050 
    -
    6051  if (current >= '0' && current <= '9')
    -
    6052  {
    -
    6053  codepoint += static_cast<int>((static_cast<unsigned int>(current) - 0x30u) << factor);
    -
    6054  }
    -
    6055  else if (current >= 'A' && current <= 'F')
    -
    6056  {
    -
    6057  codepoint += static_cast<int>((static_cast<unsigned int>(current) - 0x37u) << factor);
    -
    6058  }
    -
    6059  else if (current >= 'a' && current <= 'f')
    -
    6060  {
    -
    6061  codepoint += static_cast<int>((static_cast<unsigned int>(current) - 0x57u) << factor);
    -
    6062  }
    -
    6063  else
    -
    6064  {
    -
    6065  return -1;
    -
    6066  }
    -
    6067  }
    -
    6068 
    -
    6069  JSON_ASSERT(0x0000 <= codepoint && codepoint <= 0xFFFF);
    -
    6070  return codepoint;
    -
    6071  }
    -
    6072 
    -
    6088  bool next_byte_in_range(std::initializer_list<char_int_type> ranges)
    -
    6089  {
    -
    6090  JSON_ASSERT(ranges.size() == 2 || ranges.size() == 4 || ranges.size() == 6);
    -
    6091  add(current);
    -
    6092 
    -
    6093  for (auto range = ranges.begin(); range != ranges.end(); ++range)
    -
    6094  {
    -
    6095  get();
    -
    6096  if (JSON_HEDLEY_LIKELY(*range <= current && current <= *(++range)))
    -
    6097  {
    -
    6098  add(current);
    -
    6099  }
    -
    6100  else
    -
    6101  {
    -
    6102  error_message = "invalid string: ill-formed UTF-8 byte";
    -
    6103  return false;
    -
    6104  }
    -
    6105  }
    -
    6106 
    -
    6107  return true;
    -
    6108  }
    -
    6109 
    -
    6125  token_type scan_string()
    -
    6126  {
    -
    6127  // reset token_buffer (ignore opening quote)
    -
    6128  reset();
    -
    6129 
    -
    6130  // we entered the function by reading an open quote
    -
    6131  JSON_ASSERT(current == '\"');
    -
    6132 
    -
    6133  while (true)
    -
    6134  {
    -
    6135  // get next character
    -
    6136  switch (get())
    -
    6137  {
    -
    6138  // end of file while parsing string
    -
    6139  case std::char_traits<char_type>::eof():
    -
    6140  {
    -
    6141  error_message = "invalid string: missing closing quote";
    -
    6142  return token_type::parse_error;
    -
    6143  }
    -
    6144 
    -
    6145  // closing quote
    -
    6146  case '\"':
    -
    6147  {
    -
    6148  return token_type::value_string;
    -
    6149  }
    -
    6150 
    -
    6151  // escapes
    -
    6152  case '\\':
    -
    6153  {
    -
    6154  switch (get())
    -
    6155  {
    -
    6156  // quotation mark
    -
    6157  case '\"':
    -
    6158  add('\"');
    -
    6159  break;
    -
    6160  // reverse solidus
    -
    6161  case '\\':
    -
    6162  add('\\');
    -
    6163  break;
    -
    6164  // solidus
    -
    6165  case '/':
    -
    6166  add('/');
    -
    6167  break;
    -
    6168  // backspace
    -
    6169  case 'b':
    -
    6170  add('\b');
    -
    6171  break;
    -
    6172  // form feed
    -
    6173  case 'f':
    -
    6174  add('\f');
    -
    6175  break;
    -
    6176  // line feed
    -
    6177  case 'n':
    -
    6178  add('\n');
    -
    6179  break;
    -
    6180  // carriage return
    -
    6181  case 'r':
    -
    6182  add('\r');
    -
    6183  break;
    -
    6184  // tab
    -
    6185  case 't':
    -
    6186  add('\t');
    -
    6187  break;
    -
    6188 
    -
    6189  // unicode escapes
    -
    6190  case 'u':
    -
    6191  {
    -
    6192  const int codepoint1 = get_codepoint();
    -
    6193  int codepoint = codepoint1; // start with codepoint1
    -
    6194 
    -
    6195  if (JSON_HEDLEY_UNLIKELY(codepoint1 == -1))
    -
    6196  {
    -
    6197  error_message = "invalid string: '\\u' must be followed by 4 hex digits";
    -
    6198  return token_type::parse_error;
    -
    6199  }
    -
    6200 
    -
    6201  // check if code point is a high surrogate
    -
    6202  if (0xD800 <= codepoint1 && codepoint1 <= 0xDBFF)
    -
    6203  {
    -
    6204  // expect next \uxxxx entry
    -
    6205  if (JSON_HEDLEY_LIKELY(get() == '\\' && get() == 'u'))
    -
    6206  {
    -
    6207  const int codepoint2 = get_codepoint();
    -
    6208 
    -
    6209  if (JSON_HEDLEY_UNLIKELY(codepoint2 == -1))
    -
    6210  {
    -
    6211  error_message = "invalid string: '\\u' must be followed by 4 hex digits";
    -
    6212  return token_type::parse_error;
    -
    6213  }
    -
    6214 
    -
    6215  // check if codepoint2 is a low surrogate
    -
    6216  if (JSON_HEDLEY_LIKELY(0xDC00 <= codepoint2 && codepoint2 <= 0xDFFF))
    -
    6217  {
    -
    6218  // overwrite codepoint
    -
    6219  codepoint = static_cast<int>(
    -
    6220  // high surrogate occupies the most significant 22 bits
    -
    6221  (static_cast<unsigned int>(codepoint1) << 10u)
    -
    6222  // low surrogate occupies the least significant 15 bits
    -
    6223  + static_cast<unsigned int>(codepoint2)
    -
    6224  // there is still the 0xD800, 0xDC00 and 0x10000 noise
    -
    6225  // in the result so we have to subtract with:
    -
    6226  // (0xD800 << 10) + DC00 - 0x10000 = 0x35FDC00
    -
    6227  - 0x35FDC00u);
    -
    6228  }
    -
    6229  else
    -
    6230  {
    -
    6231  error_message = "invalid string: surrogate U+D800..U+DBFF must be followed by U+DC00..U+DFFF";
    -
    6232  return token_type::parse_error;
    -
    6233  }
    -
    6234  }
    -
    6235  else
    -
    6236  {
    -
    6237  error_message = "invalid string: surrogate U+D800..U+DBFF must be followed by U+DC00..U+DFFF";
    -
    6238  return token_type::parse_error;
    -
    6239  }
    -
    6240  }
    -
    6241  else
    -
    6242  {
    -
    6243  if (JSON_HEDLEY_UNLIKELY(0xDC00 <= codepoint1 && codepoint1 <= 0xDFFF))
    -
    6244  {
    -
    6245  error_message = "invalid string: surrogate U+DC00..U+DFFF must follow U+D800..U+DBFF";
    -
    6246  return token_type::parse_error;
    -
    6247  }
    -
    6248  }
    -
    6249 
    -
    6250  // result of the above calculation yields a proper codepoint
    -
    6251  JSON_ASSERT(0x00 <= codepoint && codepoint <= 0x10FFFF);
    -
    6252 
    -
    6253  // translate codepoint into bytes
    -
    6254  if (codepoint < 0x80)
    -
    6255  {
    -
    6256  // 1-byte characters: 0xxxxxxx (ASCII)
    -
    6257  add(static_cast<char_int_type>(codepoint));
    -
    6258  }
    -
    6259  else if (codepoint <= 0x7FF)
    -
    6260  {
    -
    6261  // 2-byte characters: 110xxxxx 10xxxxxx
    -
    6262  add(static_cast<char_int_type>(0xC0u | (static_cast<unsigned int>(codepoint) >> 6u)));
    -
    6263  add(static_cast<char_int_type>(0x80u | (static_cast<unsigned int>(codepoint) & 0x3Fu)));
    -
    6264  }
    -
    6265  else if (codepoint <= 0xFFFF)
    -
    6266  {
    -
    6267  // 3-byte characters: 1110xxxx 10xxxxxx 10xxxxxx
    -
    6268  add(static_cast<char_int_type>(0xE0u | (static_cast<unsigned int>(codepoint) >> 12u)));
    -
    6269  add(static_cast<char_int_type>(0x80u | ((static_cast<unsigned int>(codepoint) >> 6u) & 0x3Fu)));
    -
    6270  add(static_cast<char_int_type>(0x80u | (static_cast<unsigned int>(codepoint) & 0x3Fu)));
    -
    6271  }
    -
    6272  else
    -
    6273  {
    -
    6274  // 4-byte characters: 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
    -
    6275  add(static_cast<char_int_type>(0xF0u | (static_cast<unsigned int>(codepoint) >> 18u)));
    -
    6276  add(static_cast<char_int_type>(0x80u | ((static_cast<unsigned int>(codepoint) >> 12u) & 0x3Fu)));
    -
    6277  add(static_cast<char_int_type>(0x80u | ((static_cast<unsigned int>(codepoint) >> 6u) & 0x3Fu)));
    -
    6278  add(static_cast<char_int_type>(0x80u | (static_cast<unsigned int>(codepoint) & 0x3Fu)));
    -
    6279  }
    -
    6280 
    -
    6281  break;
    -
    6282  }
    -
    6283 
    -
    6284  // other characters after escape
    -
    6285  default:
    -
    6286  error_message = "invalid string: forbidden character after backslash";
    -
    6287  return token_type::parse_error;
    -
    6288  }
    -
    6289 
    -
    6290  break;
    -
    6291  }
    -
    6292 
    -
    6293  // invalid control characters
    -
    6294  case 0x00:
    -
    6295  {
    -
    6296  error_message = "invalid string: control character U+0000 (NUL) must be escaped to \\u0000";
    -
    6297  return token_type::parse_error;
    -
    6298  }
    -
    6299 
    -
    6300  case 0x01:
    -
    6301  {
    -
    6302  error_message = "invalid string: control character U+0001 (SOH) must be escaped to \\u0001";
    -
    6303  return token_type::parse_error;
    -
    6304  }
    -
    6305 
    -
    6306  case 0x02:
    -
    6307  {
    -
    6308  error_message = "invalid string: control character U+0002 (STX) must be escaped to \\u0002";
    -
    6309  return token_type::parse_error;
    -
    6310  }
    -
    6311 
    -
    6312  case 0x03:
    -
    6313  {
    -
    6314  error_message = "invalid string: control character U+0003 (ETX) must be escaped to \\u0003";
    -
    6315  return token_type::parse_error;
    -
    6316  }
    -
    6317 
    -
    6318  case 0x04:
    -
    6319  {
    -
    6320  error_message = "invalid string: control character U+0004 (EOT) must be escaped to \\u0004";
    -
    6321  return token_type::parse_error;
    -
    6322  }
    -
    6323 
    -
    6324  case 0x05:
    -
    6325  {
    -
    6326  error_message = "invalid string: control character U+0005 (ENQ) must be escaped to \\u0005";
    -
    6327  return token_type::parse_error;
    -
    6328  }
    -
    6329 
    -
    6330  case 0x06:
    -
    6331  {
    -
    6332  error_message = "invalid string: control character U+0006 (ACK) must be escaped to \\u0006";
    -
    6333  return token_type::parse_error;
    -
    6334  }
    -
    6335 
    -
    6336  case 0x07:
    -
    6337  {
    -
    6338  error_message = "invalid string: control character U+0007 (BEL) must be escaped to \\u0007";
    -
    6339  return token_type::parse_error;
    -
    6340  }
    -
    6341 
    -
    6342  case 0x08:
    -
    6343  {
    -
    6344  error_message = "invalid string: control character U+0008 (BS) must be escaped to \\u0008 or \\b";
    -
    6345  return token_type::parse_error;
    -
    6346  }
    -
    6347 
    -
    6348  case 0x09:
    -
    6349  {
    -
    6350  error_message = "invalid string: control character U+0009 (HT) must be escaped to \\u0009 or \\t";
    -
    6351  return token_type::parse_error;
    -
    6352  }
    -
    6353 
    -
    6354  case 0x0A:
    -
    6355  {
    -
    6356  error_message = "invalid string: control character U+000A (LF) must be escaped to \\u000A or \\n";
    -
    6357  return token_type::parse_error;
    -
    6358  }
    -
    6359 
    -
    6360  case 0x0B:
    -
    6361  {
    -
    6362  error_message = "invalid string: control character U+000B (VT) must be escaped to \\u000B";
    -
    6363  return token_type::parse_error;
    -
    6364  }
    -
    6365 
    -
    6366  case 0x0C:
    -
    6367  {
    -
    6368  error_message = "invalid string: control character U+000C (FF) must be escaped to \\u000C or \\f";
    -
    6369  return token_type::parse_error;
    -
    6370  }
    -
    6371 
    -
    6372  case 0x0D:
    -
    6373  {
    -
    6374  error_message = "invalid string: control character U+000D (CR) must be escaped to \\u000D or \\r";
    -
    6375  return token_type::parse_error;
    -
    6376  }
    -
    6377 
    -
    6378  case 0x0E:
    -
    6379  {
    -
    6380  error_message = "invalid string: control character U+000E (SO) must be escaped to \\u000E";
    -
    6381  return token_type::parse_error;
    -
    6382  }
    -
    6383 
    -
    6384  case 0x0F:
    -
    6385  {
    -
    6386  error_message = "invalid string: control character U+000F (SI) must be escaped to \\u000F";
    -
    6387  return token_type::parse_error;
    -
    6388  }
    -
    6389 
    -
    6390  case 0x10:
    -
    6391  {
    -
    6392  error_message = "invalid string: control character U+0010 (DLE) must be escaped to \\u0010";
    -
    6393  return token_type::parse_error;
    -
    6394  }
    -
    6395 
    -
    6396  case 0x11:
    -
    6397  {
    -
    6398  error_message = "invalid string: control character U+0011 (DC1) must be escaped to \\u0011";
    -
    6399  return token_type::parse_error;
    -
    6400  }
    -
    6401 
    -
    6402  case 0x12:
    -
    6403  {
    -
    6404  error_message = "invalid string: control character U+0012 (DC2) must be escaped to \\u0012";
    -
    6405  return token_type::parse_error;
    -
    6406  }
    -
    6407 
    -
    6408  case 0x13:
    -
    6409  {
    -
    6410  error_message = "invalid string: control character U+0013 (DC3) must be escaped to \\u0013";
    -
    6411  return token_type::parse_error;
    -
    6412  }
    -
    6413 
    -
    6414  case 0x14:
    -
    6415  {
    -
    6416  error_message = "invalid string: control character U+0014 (DC4) must be escaped to \\u0014";
    -
    6417  return token_type::parse_error;
    -
    6418  }
    -
    6419 
    -
    6420  case 0x15:
    -
    6421  {
    -
    6422  error_message = "invalid string: control character U+0015 (NAK) must be escaped to \\u0015";
    -
    6423  return token_type::parse_error;
    -
    6424  }
    -
    6425 
    -
    6426  case 0x16:
    -
    6427  {
    -
    6428  error_message = "invalid string: control character U+0016 (SYN) must be escaped to \\u0016";
    -
    6429  return token_type::parse_error;
    -
    6430  }
    -
    6431 
    -
    6432  case 0x17:
    -
    6433  {
    -
    6434  error_message = "invalid string: control character U+0017 (ETB) must be escaped to \\u0017";
    -
    6435  return token_type::parse_error;
    -
    6436  }
    -
    6437 
    -
    6438  case 0x18:
    -
    6439  {
    -
    6440  error_message = "invalid string: control character U+0018 (CAN) must be escaped to \\u0018";
    -
    6441  return token_type::parse_error;
    -
    6442  }
    -
    6443 
    -
    6444  case 0x19:
    -
    6445  {
    -
    6446  error_message = "invalid string: control character U+0019 (EM) must be escaped to \\u0019";
    -
    6447  return token_type::parse_error;
    -
    6448  }
    -
    6449 
    -
    6450  case 0x1A:
    -
    6451  {
    -
    6452  error_message = "invalid string: control character U+001A (SUB) must be escaped to \\u001A";
    -
    6453  return token_type::parse_error;
    -
    6454  }
    -
    6455 
    -
    6456  case 0x1B:
    -
    6457  {
    -
    6458  error_message = "invalid string: control character U+001B (ESC) must be escaped to \\u001B";
    -
    6459  return token_type::parse_error;
    -
    6460  }
    -
    6461 
    -
    6462  case 0x1C:
    -
    6463  {
    -
    6464  error_message = "invalid string: control character U+001C (FS) must be escaped to \\u001C";
    -
    6465  return token_type::parse_error;
    -
    6466  }
    -
    6467 
    -
    6468  case 0x1D:
    -
    6469  {
    -
    6470  error_message = "invalid string: control character U+001D (GS) must be escaped to \\u001D";
    -
    6471  return token_type::parse_error;
    -
    6472  }
    -
    6473 
    -
    6474  case 0x1E:
    -
    6475  {
    -
    6476  error_message = "invalid string: control character U+001E (RS) must be escaped to \\u001E";
    -
    6477  return token_type::parse_error;
    -
    6478  }
    -
    6479 
    -
    6480  case 0x1F:
    -
    6481  {
    -
    6482  error_message = "invalid string: control character U+001F (US) must be escaped to \\u001F";
    -
    6483  return token_type::parse_error;
    -
    6484  }
    -
    6485 
    -
    6486  // U+0020..U+007F (except U+0022 (quote) and U+005C (backspace))
    -
    6487  case 0x20:
    -
    6488  case 0x21:
    -
    6489  case 0x23:
    -
    6490  case 0x24:
    -
    6491  case 0x25:
    -
    6492  case 0x26:
    -
    6493  case 0x27:
    -
    6494  case 0x28:
    -
    6495  case 0x29:
    -
    6496  case 0x2A:
    -
    6497  case 0x2B:
    -
    6498  case 0x2C:
    -
    6499  case 0x2D:
    -
    6500  case 0x2E:
    -
    6501  case 0x2F:
    -
    6502  case 0x30:
    -
    6503  case 0x31:
    -
    6504  case 0x32:
    -
    6505  case 0x33:
    -
    6506  case 0x34:
    -
    6507  case 0x35:
    -
    6508  case 0x36:
    -
    6509  case 0x37:
    -
    6510  case 0x38:
    -
    6511  case 0x39:
    -
    6512  case 0x3A:
    -
    6513  case 0x3B:
    -
    6514  case 0x3C:
    -
    6515  case 0x3D:
    -
    6516  case 0x3E:
    -
    6517  case 0x3F:
    -
    6518  case 0x40:
    -
    6519  case 0x41:
    -
    6520  case 0x42:
    -
    6521  case 0x43:
    -
    6522  case 0x44:
    -
    6523  case 0x45:
    -
    6524  case 0x46:
    -
    6525  case 0x47:
    -
    6526  case 0x48:
    -
    6527  case 0x49:
    -
    6528  case 0x4A:
    -
    6529  case 0x4B:
    -
    6530  case 0x4C:
    -
    6531  case 0x4D:
    -
    6532  case 0x4E:
    -
    6533  case 0x4F:
    -
    6534  case 0x50:
    -
    6535  case 0x51:
    -
    6536  case 0x52:
    -
    6537  case 0x53:
    -
    6538  case 0x54:
    -
    6539  case 0x55:
    -
    6540  case 0x56:
    -
    6541  case 0x57:
    -
    6542  case 0x58:
    -
    6543  case 0x59:
    -
    6544  case 0x5A:
    -
    6545  case 0x5B:
    -
    6546  case 0x5D:
    -
    6547  case 0x5E:
    -
    6548  case 0x5F:
    -
    6549  case 0x60:
    -
    6550  case 0x61:
    -
    6551  case 0x62:
    -
    6552  case 0x63:
    -
    6553  case 0x64:
    -
    6554  case 0x65:
    -
    6555  case 0x66:
    -
    6556  case 0x67:
    -
    6557  case 0x68:
    -
    6558  case 0x69:
    -
    6559  case 0x6A:
    -
    6560  case 0x6B:
    -
    6561  case 0x6C:
    -
    6562  case 0x6D:
    -
    6563  case 0x6E:
    -
    6564  case 0x6F:
    -
    6565  case 0x70:
    -
    6566  case 0x71:
    -
    6567  case 0x72:
    -
    6568  case 0x73:
    -
    6569  case 0x74:
    -
    6570  case 0x75:
    -
    6571  case 0x76:
    -
    6572  case 0x77:
    -
    6573  case 0x78:
    -
    6574  case 0x79:
    -
    6575  case 0x7A:
    -
    6576  case 0x7B:
    -
    6577  case 0x7C:
    -
    6578  case 0x7D:
    -
    6579  case 0x7E:
    -
    6580  case 0x7F:
    -
    6581  {
    -
    6582  add(current);
    -
    6583  break;
    -
    6584  }
    -
    6585 
    -
    6586  // U+0080..U+07FF: bytes C2..DF 80..BF
    -
    6587  case 0xC2:
    -
    6588  case 0xC3:
    -
    6589  case 0xC4:
    -
    6590  case 0xC5:
    -
    6591  case 0xC6:
    -
    6592  case 0xC7:
    -
    6593  case 0xC8:
    -
    6594  case 0xC9:
    -
    6595  case 0xCA:
    -
    6596  case 0xCB:
    -
    6597  case 0xCC:
    -
    6598  case 0xCD:
    -
    6599  case 0xCE:
    -
    6600  case 0xCF:
    -
    6601  case 0xD0:
    -
    6602  case 0xD1:
    -
    6603  case 0xD2:
    -
    6604  case 0xD3:
    -
    6605  case 0xD4:
    -
    6606  case 0xD5:
    -
    6607  case 0xD6:
    -
    6608  case 0xD7:
    -
    6609  case 0xD8:
    -
    6610  case 0xD9:
    -
    6611  case 0xDA:
    -
    6612  case 0xDB:
    -
    6613  case 0xDC:
    -
    6614  case 0xDD:
    -
    6615  case 0xDE:
    -
    6616  case 0xDF:
    -
    6617  {
    -
    6618  if (JSON_HEDLEY_UNLIKELY(!next_byte_in_range({0x80, 0xBF})))
    -
    6619  {
    -
    6620  return token_type::parse_error;
    -
    6621  }
    -
    6622  break;
    -
    6623  }
    -
    6624 
    -
    6625  // U+0800..U+0FFF: bytes E0 A0..BF 80..BF
    -
    6626  case 0xE0:
    -
    6627  {
    -
    6628  if (JSON_HEDLEY_UNLIKELY(!(next_byte_in_range({0xA0, 0xBF, 0x80, 0xBF}))))
    -
    6629  {
    -
    6630  return token_type::parse_error;
    -
    6631  }
    -
    6632  break;
    -
    6633  }
    -
    6634 
    -
    6635  // U+1000..U+CFFF: bytes E1..EC 80..BF 80..BF
    -
    6636  // U+E000..U+FFFF: bytes EE..EF 80..BF 80..BF
    -
    6637  case 0xE1:
    -
    6638  case 0xE2:
    -
    6639  case 0xE3:
    -
    6640  case 0xE4:
    -
    6641  case 0xE5:
    -
    6642  case 0xE6:
    -
    6643  case 0xE7:
    -
    6644  case 0xE8:
    -
    6645  case 0xE9:
    -
    6646  case 0xEA:
    -
    6647  case 0xEB:
    -
    6648  case 0xEC:
    -
    6649  case 0xEE:
    -
    6650  case 0xEF:
    -
    6651  {
    -
    6652  if (JSON_HEDLEY_UNLIKELY(!(next_byte_in_range({0x80, 0xBF, 0x80, 0xBF}))))
    -
    6653  {
    -
    6654  return token_type::parse_error;
    -
    6655  }
    -
    6656  break;
    -
    6657  }
    -
    6658 
    -
    6659  // U+D000..U+D7FF: bytes ED 80..9F 80..BF
    -
    6660  case 0xED:
    -
    6661  {
    -
    6662  if (JSON_HEDLEY_UNLIKELY(!(next_byte_in_range({0x80, 0x9F, 0x80, 0xBF}))))
    -
    6663  {
    -
    6664  return token_type::parse_error;
    -
    6665  }
    -
    6666  break;
    -
    6667  }
    -
    6668 
    -
    6669  // U+10000..U+3FFFF F0 90..BF 80..BF 80..BF
    -
    6670  case 0xF0:
    -
    6671  {
    -
    6672  if (JSON_HEDLEY_UNLIKELY(!(next_byte_in_range({0x90, 0xBF, 0x80, 0xBF, 0x80, 0xBF}))))
    -
    6673  {
    -
    6674  return token_type::parse_error;
    -
    6675  }
    -
    6676  break;
    -
    6677  }
    -
    6678 
    -
    6679  // U+40000..U+FFFFF F1..F3 80..BF 80..BF 80..BF
    -
    6680  case 0xF1:
    -
    6681  case 0xF2:
    -
    6682  case 0xF3:
    -
    6683  {
    -
    6684  if (JSON_HEDLEY_UNLIKELY(!(next_byte_in_range({0x80, 0xBF, 0x80, 0xBF, 0x80, 0xBF}))))
    -
    6685  {
    -
    6686  return token_type::parse_error;
    -
    6687  }
    -
    6688  break;
    -
    6689  }
    -
    6690 
    -
    6691  // U+100000..U+10FFFF F4 80..8F 80..BF 80..BF
    -
    6692  case 0xF4:
    -
    6693  {
    -
    6694  if (JSON_HEDLEY_UNLIKELY(!(next_byte_in_range({0x80, 0x8F, 0x80, 0xBF, 0x80, 0xBF}))))
    -
    6695  {
    -
    6696  return token_type::parse_error;
    -
    6697  }
    -
    6698  break;
    -
    6699  }
    -
    6700 
    -
    6701  // remaining bytes (80..C1 and F5..FF) are ill-formed
    -
    6702  default:
    -
    6703  {
    -
    6704  error_message = "invalid string: ill-formed UTF-8 byte";
    -
    6705  return token_type::parse_error;
    -
    6706  }
    -
    6707  }
    -
    6708  }
    -
    6709  }
    -
    6710 
    -
    6715  bool scan_comment()
    -
    6716  {
    -
    6717  switch (get())
    -
    6718  {
    -
    6719  // single-line comments skip input until a newline or EOF is read
    -
    6720  case '/':
    -
    6721  {
    -
    6722  while (true)
    -
    6723  {
    -
    6724  switch (get())
    -
    6725  {
    -
    6726  case '\n':
    -
    6727  case '\r':
    -
    6728  case std::char_traits<char_type>::eof():
    -
    6729  case '\0':
    -
    6730  return true;
    -
    6731 
    -
    6732  default:
    -
    6733  break;
    -
    6734  }
    -
    6735  }
    -
    6736  }
    -
    6737 
    -
    6738  // multi-line comments skip input until */ is read
    -
    6739  case '*':
    -
    6740  {
    -
    6741  while (true)
    -
    6742  {
    -
    6743  switch (get())
    -
    6744  {
    -
    6745  case std::char_traits<char_type>::eof():
    -
    6746  case '\0':
    -
    6747  {
    -
    6748  error_message = "invalid comment; missing closing '*/'";
    -
    6749  return false;
    -
    6750  }
    -
    6751 
    -
    6752  case '*':
    -
    6753  {
    -
    6754  switch (get())
    -
    6755  {
    -
    6756  case '/':
    -
    6757  return true;
    -
    6758 
    -
    6759  default:
    -
    6760  {
    -
    6761  unget();
    -
    6762  continue;
    -
    6763  }
    -
    6764  }
    -
    6765  }
    -
    6766 
    -
    6767  default:
    -
    6768  continue;
    -
    6769  }
    -
    6770  }
    -
    6771  }
    -
    6772 
    -
    6773  // unexpected character after reading '/'
    -
    6774  default:
    -
    6775  {
    -
    6776  error_message = "invalid comment; expecting '/' or '*' after '/'";
    -
    6777  return false;
    -
    6778  }
    -
    6779  }
    -
    6780  }
    -
    6781 
    - -
    6783  static void strtof(float& f, const char* str, char** endptr) noexcept
    -
    6784  {
    -
    6785  f = std::strtof(str, endptr);
    -
    6786  }
    -
    6787 
    - -
    6789  static void strtof(double& f, const char* str, char** endptr) noexcept
    -
    6790  {
    -
    6791  f = std::strtod(str, endptr);
    -
    6792  }
    -
    6793 
    - -
    6795  static void strtof(long double& f, const char* str, char** endptr) noexcept
    -
    6796  {
    -
    6797  f = std::strtold(str, endptr);
    -
    6798  }
    -
    6799 
    -
    6840  token_type scan_number() // lgtm [cpp/use-of-goto]
    -
    6841  {
    -
    6842  // reset token_buffer to store the number's bytes
    -
    6843  reset();
    -
    6844 
    -
    6845  // the type of the parsed number; initially set to unsigned; will be
    -
    6846  // changed if minus sign, decimal point or exponent is read
    -
    6847  token_type number_type = token_type::value_unsigned;
    -
    6848 
    -
    6849  // state (init): we just found out we need to scan a number
    -
    6850  switch (current)
    -
    6851  {
    -
    6852  case '-':
    -
    6853  {
    -
    6854  add(current);
    -
    6855  goto scan_number_minus;
    -
    6856  }
    -
    6857 
    -
    6858  case '0':
    -
    6859  {
    -
    6860  add(current);
    -
    6861  goto scan_number_zero;
    -
    6862  }
    -
    6863 
    -
    6864  case '1':
    -
    6865  case '2':
    -
    6866  case '3':
    -
    6867  case '4':
    -
    6868  case '5':
    -
    6869  case '6':
    -
    6870  case '7':
    -
    6871  case '8':
    -
    6872  case '9':
    -
    6873  {
    -
    6874  add(current);
    -
    6875  goto scan_number_any1;
    -
    6876  }
    -
    6877 
    -
    6878  // all other characters are rejected outside scan_number()
    -
    6879  default: // LCOV_EXCL_LINE
    -
    6880  JSON_ASSERT(false); // LCOV_EXCL_LINE
    -
    6881  }
    -
    6882 
    -
    6883 scan_number_minus:
    -
    6884  // state: we just parsed a leading minus sign
    -
    6885  number_type = token_type::value_integer;
    -
    6886  switch (get())
    -
    6887  {
    -
    6888  case '0':
    -
    6889  {
    -
    6890  add(current);
    -
    6891  goto scan_number_zero;
    -
    6892  }
    -
    6893 
    -
    6894  case '1':
    -
    6895  case '2':
    -
    6896  case '3':
    -
    6897  case '4':
    -
    6898  case '5':
    -
    6899  case '6':
    -
    6900  case '7':
    -
    6901  case '8':
    -
    6902  case '9':
    -
    6903  {
    -
    6904  add(current);
    -
    6905  goto scan_number_any1;
    -
    6906  }
    -
    6907 
    -
    6908  default:
    -
    6909  {
    -
    6910  error_message = "invalid number; expected digit after '-'";
    -
    6911  return token_type::parse_error;
    -
    6912  }
    -
    6913  }
    -
    6914 
    -
    6915 scan_number_zero:
    -
    6916  // state: we just parse a zero (maybe with a leading minus sign)
    -
    6917  switch (get())
    -
    6918  {
    -
    6919  case '.':
    -
    6920  {
    -
    6921  add(decimal_point_char);
    -
    6922  goto scan_number_decimal1;
    -
    6923  }
    -
    6924 
    -
    6925  case 'e':
    -
    6926  case 'E':
    -
    6927  {
    -
    6928  add(current);
    -
    6929  goto scan_number_exponent;
    -
    6930  }
    -
    6931 
    -
    6932  default:
    -
    6933  goto scan_number_done;
    -
    6934  }
    -
    6935 
    -
    6936 scan_number_any1:
    -
    6937  // state: we just parsed a number 0-9 (maybe with a leading minus sign)
    -
    6938  switch (get())
    -
    6939  {
    -
    6940  case '0':
    -
    6941  case '1':
    -
    6942  case '2':
    -
    6943  case '3':
    -
    6944  case '4':
    -
    6945  case '5':
    -
    6946  case '6':
    -
    6947  case '7':
    -
    6948  case '8':
    -
    6949  case '9':
    -
    6950  {
    -
    6951  add(current);
    -
    6952  goto scan_number_any1;
    -
    6953  }
    -
    6954 
    -
    6955  case '.':
    -
    6956  {
    -
    6957  add(decimal_point_char);
    -
    6958  goto scan_number_decimal1;
    -
    6959  }
    -
    6960 
    -
    6961  case 'e':
    -
    6962  case 'E':
    -
    6963  {
    -
    6964  add(current);
    -
    6965  goto scan_number_exponent;
    -
    6966  }
    -
    6967 
    -
    6968  default:
    -
    6969  goto scan_number_done;
    -
    6970  }
    -
    6971 
    -
    6972 scan_number_decimal1:
    -
    6973  // state: we just parsed a decimal point
    -
    6974  number_type = token_type::value_float;
    -
    6975  switch (get())
    -
    6976  {
    -
    6977  case '0':
    -
    6978  case '1':
    -
    6979  case '2':
    -
    6980  case '3':
    -
    6981  case '4':
    -
    6982  case '5':
    -
    6983  case '6':
    -
    6984  case '7':
    -
    6985  case '8':
    -
    6986  case '9':
    -
    6987  {
    -
    6988  add(current);
    -
    6989  goto scan_number_decimal2;
    -
    6990  }
    -
    6991 
    -
    6992  default:
    -
    6993  {
    -
    6994  error_message = "invalid number; expected digit after '.'";
    -
    6995  return token_type::parse_error;
    -
    6996  }
    -
    6997  }
    -
    6998 
    -
    6999 scan_number_decimal2:
    -
    7000  // we just parsed at least one number after a decimal point
    -
    7001  switch (get())
    -
    7002  {
    -
    7003  case '0':
    -
    7004  case '1':
    -
    7005  case '2':
    -
    7006  case '3':
    -
    7007  case '4':
    -
    7008  case '5':
    -
    7009  case '6':
    -
    7010  case '7':
    -
    7011  case '8':
    -
    7012  case '9':
    -
    7013  {
    -
    7014  add(current);
    -
    7015  goto scan_number_decimal2;
    -
    7016  }
    -
    7017 
    -
    7018  case 'e':
    -
    7019  case 'E':
    -
    7020  {
    -
    7021  add(current);
    -
    7022  goto scan_number_exponent;
    -
    7023  }
    -
    7024 
    -
    7025  default:
    -
    7026  goto scan_number_done;
    -
    7027  }
    -
    7028 
    -
    7029 scan_number_exponent:
    -
    7030  // we just parsed an exponent
    -
    7031  number_type = token_type::value_float;
    -
    7032  switch (get())
    -
    7033  {
    -
    7034  case '+':
    -
    7035  case '-':
    -
    7036  {
    -
    7037  add(current);
    -
    7038  goto scan_number_sign;
    -
    7039  }
    -
    7040 
    -
    7041  case '0':
    -
    7042  case '1':
    -
    7043  case '2':
    -
    7044  case '3':
    -
    7045  case '4':
    -
    7046  case '5':
    -
    7047  case '6':
    -
    7048  case '7':
    -
    7049  case '8':
    -
    7050  case '9':
    -
    7051  {
    -
    7052  add(current);
    -
    7053  goto scan_number_any2;
    -
    7054  }
    -
    7055 
    -
    7056  default:
    -
    7057  {
    -
    7058  error_message =
    -
    7059  "invalid number; expected '+', '-', or digit after exponent";
    -
    7060  return token_type::parse_error;
    -
    7061  }
    -
    7062  }
    -
    7063 
    -
    7064 scan_number_sign:
    -
    7065  // we just parsed an exponent sign
    -
    7066  switch (get())
    -
    7067  {
    -
    7068  case '0':
    -
    7069  case '1':
    -
    7070  case '2':
    -
    7071  case '3':
    -
    7072  case '4':
    -
    7073  case '5':
    -
    7074  case '6':
    -
    7075  case '7':
    -
    7076  case '8':
    -
    7077  case '9':
    -
    7078  {
    -
    7079  add(current);
    -
    7080  goto scan_number_any2;
    -
    7081  }
    -
    7082 
    -
    7083  default:
    -
    7084  {
    -
    7085  error_message = "invalid number; expected digit after exponent sign";
    -
    7086  return token_type::parse_error;
    -
    7087  }
    -
    7088  }
    -
    7089 
    -
    7090 scan_number_any2:
    -
    7091  // we just parsed a number after the exponent or exponent sign
    -
    7092  switch (get())
    -
    7093  {
    -
    7094  case '0':
    -
    7095  case '1':
    -
    7096  case '2':
    -
    7097  case '3':
    -
    7098  case '4':
    -
    7099  case '5':
    -
    7100  case '6':
    -
    7101  case '7':
    -
    7102  case '8':
    -
    7103  case '9':
    -
    7104  {
    -
    7105  add(current);
    -
    7106  goto scan_number_any2;
    -
    7107  }
    -
    7108 
    -
    7109  default:
    -
    7110  goto scan_number_done;
    -
    7111  }
    -
    7112 
    -
    7113 scan_number_done:
    -
    7114  // unget the character after the number (we only read it to know that
    -
    7115  // we are done scanning a number)
    -
    7116  unget();
    -
    7117 
    -
    7118  char* endptr = nullptr;
    -
    7119  errno = 0;
    -
    7120 
    -
    7121  // try to parse integers first and fall back to floats
    -
    7122  if (number_type == token_type::value_unsigned)
    -
    7123  {
    -
    7124  const auto x = std::strtoull(token_buffer.data(), &endptr, 10);
    -
    7125 
    -
    7126  // we checked the number format before
    -
    7127  JSON_ASSERT(endptr == token_buffer.data() + token_buffer.size());
    -
    7128 
    -
    7129  if (errno == 0)
    -
    7130  {
    -
    7131  value_unsigned = static_cast<number_unsigned_t>(x);
    -
    7132  if (value_unsigned == x)
    -
    7133  {
    -
    7134  return token_type::value_unsigned;
    -
    7135  }
    -
    7136  }
    -
    7137  }
    -
    7138  else if (number_type == token_type::value_integer)
    -
    7139  {
    -
    7140  const auto x = std::strtoll(token_buffer.data(), &endptr, 10);
    -
    7141 
    -
    7142  // we checked the number format before
    -
    7143  JSON_ASSERT(endptr == token_buffer.data() + token_buffer.size());
    -
    7144 
    -
    7145  if (errno == 0)
    -
    7146  {
    -
    7147  value_integer = static_cast<number_integer_t>(x);
    -
    7148  if (value_integer == x)
    -
    7149  {
    -
    7150  return token_type::value_integer;
    -
    7151  }
    -
    7152  }
    -
    7153  }
    -
    7154 
    -
    7155  // this code is reached if we parse a floating-point number or if an
    -
    7156  // integer conversion above failed
    -
    7157  strtof(value_float, token_buffer.data(), &endptr);
    -
    7158 
    -
    7159  // we checked the number format before
    -
    7160  JSON_ASSERT(endptr == token_buffer.data() + token_buffer.size());
    -
    7161 
    -
    7162  return token_type::value_float;
    -
    7163  }
    -
    7164 
    - -
    7171  token_type scan_literal(const char_type* literal_text, const std::size_t length,
    -
    7172  token_type return_type)
    -
    7173  {
    -
    7174  JSON_ASSERT(std::char_traits<char_type>::to_char_type(current) == literal_text[0]);
    -
    7175  for (std::size_t i = 1; i < length; ++i)
    -
    7176  {
    -
    7177  if (JSON_HEDLEY_UNLIKELY(std::char_traits<char_type>::to_char_type(get()) != literal_text[i]))
    -
    7178  {
    -
    7179  error_message = "invalid literal";
    -
    7180  return token_type::parse_error;
    -
    7181  }
    -
    7182  }
    -
    7183  return return_type;
    -
    7184  }
    -
    7185 
    -
    7187  // input management
    -
    7189 
    -
    7191  void reset() noexcept
    -
    7192  {
    -
    7193  token_buffer.clear();
    -
    7194  token_string.clear();
    -
    7195  token_string.push_back(std::char_traits<char_type>::to_char_type(current));
    -
    7196  }
    -
    7197 
    -
    7198  /*
    -
    7199  @brief get next character from the input
    -
    7200 
    -
    7201  This function provides the interface to the used input adapter. It does
    -
    7202  not throw in case the input reached EOF, but returns a
    -
    7203  `std::char_traits<char>::eof()` in that case. Stores the scanned characters
    -
    7204  for use in error messages.
    -
    7205 
    -
    7206  @return character read from the input
    -
    7207  */
    -
    7208  char_int_type get()
    -
    7209  {
    -
    7210  ++position.chars_read_total;
    -
    7211  ++position.chars_read_current_line;
    -
    7212 
    -
    7213  if (next_unget)
    -
    7214  {
    -
    7215  // just reset the next_unget variable and work with current
    -
    7216  next_unget = false;
    -
    7217  }
    -
    7218  else
    -
    7219  {
    -
    7220  current = ia.get_character();
    -
    7221  }
    -
    7222 
    -
    7223  if (JSON_HEDLEY_LIKELY(current != std::char_traits<char_type>::eof()))
    -
    7224  {
    -
    7225  token_string.push_back(std::char_traits<char_type>::to_char_type(current));
    -
    7226  }
    -
    7227 
    -
    7228  if (current == '\n')
    -
    7229  {
    -
    7230  ++position.lines_read;
    -
    7231  position.chars_read_current_line = 0;
    -
    7232  }
    -
    7233 
    -
    7234  return current;
    -
    7235  }
    -
    7236 
    -
    7245  void unget()
    -
    7246  {
    -
    7247  next_unget = true;
    -
    7248 
    -
    7249  --position.chars_read_total;
    -
    7250 
    -
    7251  // in case we "unget" a newline, we have to also decrement the lines_read
    -
    7252  if (position.chars_read_current_line == 0)
    -
    7253  {
    -
    7254  if (position.lines_read > 0)
    -
    7255  {
    -
    7256  --position.lines_read;
    -
    7257  }
    -
    7258  }
    -
    7259  else
    -
    7260  {
    -
    7261  --position.chars_read_current_line;
    -
    7262  }
    -
    7263 
    -
    7264  if (JSON_HEDLEY_LIKELY(current != std::char_traits<char_type>::eof()))
    -
    7265  {
    -
    7266  JSON_ASSERT(!token_string.empty());
    -
    7267  token_string.pop_back();
    -
    7268  }
    -
    7269  }
    -
    7270 
    -
    7272  void add(char_int_type c)
    -
    7273  {
    -
    7274  token_buffer.push_back(static_cast<typename string_t::value_type>(c));
    -
    7275  }
    -
    7276 
    -
    7277  public:
    -
    7279  // value getters
    -
    7281 
    -
    7283  constexpr number_integer_t get_number_integer() const noexcept
    -
    7284  {
    -
    7285  return value_integer;
    -
    7286  }
    -
    7287 
    -
    7289  constexpr number_unsigned_t get_number_unsigned() const noexcept
    -
    7290  {
    -
    7291  return value_unsigned;
    -
    7292  }
    -
    7293 
    -
    7295  constexpr number_float_t get_number_float() const noexcept
    -
    7296  {
    -
    7297  return value_float;
    -
    7298  }
    -
    7299 
    -
    7301  string_t& get_string()
    -
    7302  {
    -
    7303  return token_buffer;
    -
    7304  }
    -
    7305 
    -
    7307  // diagnostics
    -
    7309 
    -
    7311  constexpr position_t get_position() const noexcept
    -
    7312  {
    -
    7313  return position;
    -
    7314  }
    -
    7315 
    -
    7319  std::string get_token_string() const
    -
    7320  {
    -
    7321  // escape control characters
    -
    7322  std::string result;
    -
    7323  for (const auto c : token_string)
    -
    7324  {
    -
    7325  if (static_cast<unsigned char>(c) <= '\x1F')
    -
    7326  {
    -
    7327  // escape control characters
    -
    7328  std::array<char, 9> cs{{}};
    -
    7329  (std::snprintf)(cs.data(), cs.size(), "<U+%.4X>", static_cast<unsigned char>(c));
    -
    7330  result += cs.data();
    -
    7331  }
    -
    7332  else
    -
    7333  {
    -
    7334  // add character as is
    -
    7335  result.push_back(static_cast<std::string::value_type>(c));
    -
    7336  }
    -
    7337  }
    -
    7338 
    -
    7339  return result;
    -
    7340  }
    -
    7341 
    - -
    7344  constexpr const char* get_error_message() const noexcept
    -
    7345  {
    -
    7346  return error_message;
    -
    7347  }
    -
    7348 
    -
    7350  // actual scanner
    -
    7352 
    -
    7357  bool skip_bom()
    -
    7358  {
    -
    7359  if (get() == 0xEF)
    -
    7360  {
    -
    7361  // check if we completely parse the BOM
    -
    7362  return get() == 0xBB && get() == 0xBF;
    -
    7363  }
    -
    7364 
    -
    7365  // the first character is not the beginning of the BOM; unget it to
    -
    7366  // process is later
    -
    7367  unget();
    -
    7368  return true;
    -
    7369  }
    -
    7370 
    - -
    7372  {
    -
    7373  do
    -
    7374  {
    -
    7375  get();
    -
    7376  }
    -
    7377  while (current == ' ' || current == '\t' || current == '\n' || current == '\r');
    -
    7378  }
    -
    7379 
    - -
    7381  {
    -
    7382  // initially, skip the BOM
    -
    7383  if (position.chars_read_total == 0 && !skip_bom())
    -
    7384  {
    -
    7385  error_message = "invalid BOM; must be 0xEF 0xBB 0xBF if given";
    -
    7386  return token_type::parse_error;
    -
    7387  }
    -
    7388 
    -
    7389  // read next character and ignore whitespace
    -
    7390  skip_whitespace();
    -
    7391 
    -
    7392  // ignore comments
    -
    7393  while (ignore_comments && current == '/')
    -
    7394  {
    -
    7395  if (!scan_comment())
    -
    7396  {
    -
    7397  return token_type::parse_error;
    -
    7398  }
    -
    7399 
    -
    7400  // skip following whitespace
    -
    7401  skip_whitespace();
    -
    7402  }
    -
    7403 
    -
    7404  switch (current)
    -
    7405  {
    -
    7406  // structural characters
    -
    7407  case '[':
    -
    7408  return token_type::begin_array;
    -
    7409  case ']':
    -
    7410  return token_type::end_array;
    -
    7411  case '{':
    -
    7412  return token_type::begin_object;
    -
    7413  case '}':
    -
    7414  return token_type::end_object;
    -
    7415  case ':':
    -
    7416  return token_type::name_separator;
    -
    7417  case ',':
    -
    7418  return token_type::value_separator;
    -
    7419 
    -
    7420  // literals
    -
    7421  case 't':
    -
    7422  {
    -
    7423  std::array<char_type, 4> true_literal = {{'t', 'r', 'u', 'e'}};
    -
    7424  return scan_literal(true_literal.data(), true_literal.size(), token_type::literal_true);
    -
    7425  }
    -
    7426  case 'f':
    -
    7427  {
    -
    7428  std::array<char_type, 5> false_literal = {{'f', 'a', 'l', 's', 'e'}};
    -
    7429  return scan_literal(false_literal.data(), false_literal.size(), token_type::literal_false);
    -
    7430  }
    -
    7431  case 'n':
    -
    7432  {
    -
    7433  std::array<char_type, 4> null_literal = {{'n', 'u', 'l', 'l'}};
    -
    7434  return scan_literal(null_literal.data(), null_literal.size(), token_type::literal_null);
    -
    7435  }
    -
    7436 
    -
    7437  // string
    -
    7438  case '\"':
    -
    7439  return scan_string();
    -
    7440 
    -
    7441  // number
    -
    7442  case '-':
    -
    7443  case '0':
    -
    7444  case '1':
    -
    7445  case '2':
    -
    7446  case '3':
    -
    7447  case '4':
    -
    7448  case '5':
    -
    7449  case '6':
    -
    7450  case '7':
    -
    7451  case '8':
    -
    7452  case '9':
    -
    7453  return scan_number();
    -
    7454 
    -
    7455  // end of input (the null byte is needed when parsing from
    -
    7456  // string literals)
    -
    7457  case '\0':
    -
    7458  case std::char_traits<char_type>::eof():
    -
    7459  return token_type::end_of_input;
    -
    7460 
    -
    7461  // error
    -
    7462  default:
    -
    7463  error_message = "invalid literal";
    -
    7464  return token_type::parse_error;
    -
    7465  }
    -
    7466  }
    -
    7467 
    -
    7468  private:
    -
    7470  InputAdapterType ia;
    -
    7471 
    -
    7473  const bool ignore_comments = false;
    -
    7474 
    -
    7476  char_int_type current = std::char_traits<char_type>::eof();
    -
    7477 
    -
    7479  bool next_unget = false;
    -
    7480 
    -
    7482  position_t position {};
    -
    7483 
    -
    7485  std::vector<char_type> token_string {};
    -
    7486 
    -
    7488  string_t token_buffer {};
    -
    7489 
    -
    7491  const char* error_message = "";
    -
    7492 
    -
    7493  // number values
    -
    7494  number_integer_t value_integer = 0;
    -
    7495  number_unsigned_t value_unsigned = 0;
    -
    7496  number_float_t value_float = 0;
    -
    7497 
    -
    7499  const char_int_type decimal_point_char = '.';
    -
    7500 };
    -
    7501 } // namespace detail
    -
    7502 } // namespace nlohmann
    -
    7503 
    -
    7504 // #include <nlohmann/detail/macro_scope.hpp>
    -
    7505 
    -
    7506 // #include <nlohmann/detail/meta/is_sax.hpp>
    -
    7507 
    -
    7508 
    -
    7509 #include <cstdint> // size_t
    -
    7510 #include <utility> // declval
    -
    7511 #include <string> // string
    -
    7512 
    -
    7513 // #include <nlohmann/detail/meta/detected.hpp>
    -
    7514 
    -
    7515 // #include <nlohmann/detail/meta/type_traits.hpp>
    -
    7516 
    -
    7517 
    -
    7518 namespace nlohmann
    -
    7519 {
    -
    7520 namespace detail
    -
    7521 {
    -
    7522 template<typename T>
    -
    7523 using null_function_t = decltype(std::declval<T&>().null());
    -
    7524 
    -
    7525 template<typename T>
    -
    7526 using boolean_function_t =
    -
    7527  decltype(std::declval<T&>().boolean(std::declval<bool>()));
    -
    7528 
    -
    7529 template<typename T, typename Integer>
    - -
    7531  decltype(std::declval<T&>().number_integer(std::declval<Integer>()));
    -
    7532 
    -
    7533 template<typename T, typename Unsigned>
    - -
    7535  decltype(std::declval<T&>().number_unsigned(std::declval<Unsigned>()));
    -
    7536 
    -
    7537 template<typename T, typename Float, typename String>
    -
    7538 using number_float_function_t = decltype(std::declval<T&>().number_float(
    -
    7539  std::declval<Float>(), std::declval<const String&>()));
    -
    7540 
    -
    7541 template<typename T, typename String>
    -
    7542 using string_function_t =
    -
    7543  decltype(std::declval<T&>().string(std::declval<String&>()));
    -
    7544 
    -
    7545 template<typename T, typename Binary>
    -
    7546 using binary_function_t =
    -
    7547  decltype(std::declval<T&>().binary(std::declval<Binary&>()));
    -
    7548 
    -
    7549 template<typename T>
    - -
    7551  decltype(std::declval<T&>().start_object(std::declval<std::size_t>()));
    -
    7552 
    -
    7553 template<typename T, typename String>
    -
    7554 using key_function_t =
    -
    7555  decltype(std::declval<T&>().key(std::declval<String&>()));
    -
    7556 
    -
    7557 template<typename T>
    -
    7558 using end_object_function_t = decltype(std::declval<T&>().end_object());
    -
    7559 
    -
    7560 template<typename T>
    -
    7561 using start_array_function_t =
    -
    7562  decltype(std::declval<T&>().start_array(std::declval<std::size_t>()));
    -
    7563 
    -
    7564 template<typename T>
    -
    7565 using end_array_function_t = decltype(std::declval<T&>().end_array());
    -
    7566 
    -
    7567 template<typename T, typename Exception>
    -
    7568 using parse_error_function_t = decltype(std::declval<T&>().parse_error(
    -
    7569  std::declval<std::size_t>(), std::declval<const std::string&>(),
    -
    7570  std::declval<const Exception&>()));
    -
    7571 
    -
    7572 template<typename SAX, typename BasicJsonType>
    -
    7573 struct is_sax
    -
    7574 {
    -
    7575  private:
    - -
    7577  "BasicJsonType must be of type basic_json<...>");
    -
    7578 
    -
    7579  using number_integer_t = typename BasicJsonType::number_integer_t;
    -
    7580  using number_unsigned_t = typename BasicJsonType::number_unsigned_t;
    -
    7581  using number_float_t = typename BasicJsonType::number_float_t;
    -
    7582  using string_t = typename BasicJsonType::string_t;
    -
    7583  using binary_t = typename BasicJsonType::binary_t;
    -
    7584  using exception_t = typename BasicJsonType::exception;
    -
    7585 
    -
    7586  public:
    -
    7587  static constexpr bool value =
    - - - - - - - - - - - - - -
    7601 };
    -
    7602 
    -
    7603 template<typename SAX, typename BasicJsonType>
    -
    7604 struct is_sax_static_asserts
    -
    7605 {
    -
    7606  private:
    -
    7607  static_assert(is_basic_json<BasicJsonType>::value,
    -
    7608  "BasicJsonType must be of type basic_json<...>");
    -
    7609 
    -
    7610  using number_integer_t = typename BasicJsonType::number_integer_t;
    -
    7611  using number_unsigned_t = typename BasicJsonType::number_unsigned_t;
    -
    7612  using number_float_t = typename BasicJsonType::number_float_t;
    -
    7613  using string_t = typename BasicJsonType::string_t;
    -
    7614  using binary_t = typename BasicJsonType::binary_t;
    -
    7615  using exception_t = typename BasicJsonType::exception;
    -
    7616 
    -
    7617  public:
    -
    7618  static_assert(is_detected_exact<bool, null_function_t, SAX>::value,
    -
    7619  "Missing/invalid function: bool null()");
    -
    7620  static_assert(is_detected_exact<bool, boolean_function_t, SAX>::value,
    -
    7621  "Missing/invalid function: bool boolean(bool)");
    -
    7622  static_assert(is_detected_exact<bool, boolean_function_t, SAX>::value,
    -
    7623  "Missing/invalid function: bool boolean(bool)");
    -
    7624  static_assert(
    - -
    7626  number_integer_t>::value,
    -
    7627  "Missing/invalid function: bool number_integer(number_integer_t)");
    -
    7628  static_assert(
    - -
    7630  number_unsigned_t>::value,
    -
    7631  "Missing/invalid function: bool number_unsigned(number_unsigned_t)");
    -
    7632  static_assert(is_detected_exact<bool, number_float_function_t, SAX,
    -
    7633  number_float_t, string_t>::value,
    -
    7634  "Missing/invalid function: bool number_float(number_float_t, const string_t&)");
    -
    7635  static_assert(
    -
    7636  is_detected_exact<bool, string_function_t, SAX, string_t>::value,
    -
    7637  "Missing/invalid function: bool string(string_t&)");
    -
    7638  static_assert(
    -
    7639  is_detected_exact<bool, binary_function_t, SAX, binary_t>::value,
    -
    7640  "Missing/invalid function: bool binary(binary_t&)");
    -
    7641  static_assert(is_detected_exact<bool, start_object_function_t, SAX>::value,
    -
    7642  "Missing/invalid function: bool start_object(std::size_t)");
    -
    7643  static_assert(is_detected_exact<bool, key_function_t, SAX, string_t>::value,
    -
    7644  "Missing/invalid function: bool key(string_t&)");
    -
    7645  static_assert(is_detected_exact<bool, end_object_function_t, SAX>::value,
    -
    7646  "Missing/invalid function: bool end_object()");
    -
    7647  static_assert(is_detected_exact<bool, start_array_function_t, SAX>::value,
    -
    7648  "Missing/invalid function: bool start_array(std::size_t)");
    -
    7649  static_assert(is_detected_exact<bool, end_array_function_t, SAX>::value,
    -
    7650  "Missing/invalid function: bool end_array()");
    -
    7651  static_assert(
    -
    7652  is_detected_exact<bool, parse_error_function_t, SAX, exception_t>::value,
    -
    7653  "Missing/invalid function: bool parse_error(std::size_t, const "
    -
    7654  "std::string&, const exception&)");
    -
    7655 };
    -
    7656 } // namespace detail
    -
    7657 } // namespace nlohmann
    -
    7658 
    -
    7659 // #include <nlohmann/detail/value_t.hpp>
    -
    7660 
    -
    7661 
    -
    7662 namespace nlohmann
    -
    7663 {
    -
    7664 namespace detail
    -
    7665 {
    -
    7666 
    - -
    7669 {
    -
    7670  error,
    -
    7671  ignore
    -
    7672 };
    -
    7673 
    -
    7681 static inline bool little_endianess(int num = 1) noexcept
    -
    7682 {
    -
    7683  return *reinterpret_cast<char*>(&num) == 1;
    -
    7684 }
    -
    7685 
    -
    7686 
    -
    7688 // binary reader //
    -
    7690 
    -
    7694 template<typename BasicJsonType, typename InputAdapterType, typename SAX = json_sax_dom_parser<BasicJsonType>>
    -
    7695 class binary_reader
    -
    7696 {
    -
    7697  using number_integer_t = typename BasicJsonType::number_integer_t;
    -
    7698  using number_unsigned_t = typename BasicJsonType::number_unsigned_t;
    -
    7699  using number_float_t = typename BasicJsonType::number_float_t;
    -
    7700  using string_t = typename BasicJsonType::string_t;
    -
    7701  using binary_t = typename BasicJsonType::binary_t;
    -
    7702  using json_sax_t = SAX;
    -
    7703  using char_type = typename InputAdapterType::char_type;
    -
    7704  using char_int_type = typename std::char_traits<char_type>::int_type;
    -
    7705 
    -
    7706  public:
    -
    7712  explicit binary_reader(InputAdapterType&& adapter) : ia(std::move(adapter))
    -
    7713  {
    - -
    7715  }
    -
    7716 
    -
    7717  // make class move-only
    -
    7718  binary_reader(const binary_reader&) = delete;
    -
    7719  binary_reader(binary_reader&&) = default;
    -
    7720  binary_reader& operator=(const binary_reader&) = delete;
    -
    7721  binary_reader& operator=(binary_reader&&) = default;
    -
    7722  ~binary_reader() = default;
    -
    7723 
    - -
    7733  bool sax_parse(const input_format_t format,
    -
    7734  json_sax_t* sax_,
    -
    7735  const bool strict = true,
    -
    7736  const cbor_tag_handler_t tag_handler = cbor_tag_handler_t::error)
    -
    7737  {
    -
    7738  sax = sax_;
    -
    7739  bool result = false;
    -
    7740 
    -
    7741  switch (format)
    -
    7742  {
    -
    7743  case input_format_t::bson:
    -
    7744  result = parse_bson_internal();
    -
    7745  break;
    -
    7746 
    -
    7747  case input_format_t::cbor:
    -
    7748  result = parse_cbor_internal(true, tag_handler);
    -
    7749  break;
    -
    7750 
    - -
    7752  result = parse_msgpack_internal();
    -
    7753  break;
    -
    7754 
    - -
    7756  result = parse_ubjson_internal();
    -
    7757  break;
    -
    7758 
    -
    7759  default: // LCOV_EXCL_LINE
    -
    7760  JSON_ASSERT(false); // LCOV_EXCL_LINE
    -
    7761  }
    -
    7762 
    -
    7763  // strict mode: next byte must be EOF
    -
    7764  if (result && strict)
    -
    7765  {
    -
    7766  if (format == input_format_t::ubjson)
    -
    7767  {
    -
    7768  get_ignore_noop();
    -
    7769  }
    -
    7770  else
    -
    7771  {
    -
    7772  get();
    -
    7773  }
    -
    7774 
    -
    7775  if (JSON_HEDLEY_UNLIKELY(current != std::char_traits<char_type>::eof()))
    -
    7776  {
    -
    7777  return sax->parse_error(chars_read, get_token_string(),
    -
    7778  parse_error::create(110, chars_read, exception_message(format, "expected end of input; last byte: 0x" + get_token_string(), "value")));
    -
    7779  }
    -
    7780  }
    -
    7781 
    -
    7782  return result;
    -
    7783  }
    -
    7784 
    -
    7785  private:
    -
    7787  // BSON //
    -
    7789 
    -
    7794  bool parse_bson_internal()
    -
    7795  {
    -
    7796  std::int32_t document_size{};
    -
    7797  get_number<std::int32_t, true>(input_format_t::bson, document_size);
    -
    7798 
    -
    7799  if (JSON_HEDLEY_UNLIKELY(!sax->start_object(std::size_t(-1))))
    -
    7800  {
    -
    7801  return false;
    -
    7802  }
    -
    7803 
    -
    7804  if (JSON_HEDLEY_UNLIKELY(!parse_bson_element_list(/*is_array*/false)))
    -
    7805  {
    -
    7806  return false;
    -
    7807  }
    -
    7808 
    -
    7809  return sax->end_object();
    -
    7810  }
    -
    7811 
    -
    7819  bool get_bson_cstr(string_t& result)
    -
    7820  {
    -
    7821  auto out = std::back_inserter(result);
    -
    7822  while (true)
    -
    7823  {
    -
    7824  get();
    -
    7825  if (JSON_HEDLEY_UNLIKELY(!unexpect_eof(input_format_t::bson, "cstring")))
    -
    7826  {
    -
    7827  return false;
    -
    7828  }
    -
    7829  if (current == 0x00)
    -
    7830  {
    -
    7831  return true;
    -
    7832  }
    -
    7833  *out++ = static_cast<typename string_t::value_type>(current);
    -
    7834  }
    -
    7835  }
    -
    7836 
    -
    7848  template<typename NumberType>
    -
    7849  bool get_bson_string(const NumberType len, string_t& result)
    -
    7850  {
    -
    7851  if (JSON_HEDLEY_UNLIKELY(len < 1))
    -
    7852  {
    -
    7853  auto last_token = get_token_string();
    -
    7854  return sax->parse_error(chars_read, last_token, parse_error::create(112, chars_read, exception_message(input_format_t::bson, "string length must be at least 1, is " + std::to_string(len), "string")));
    -
    7855  }
    -
    7856 
    -
    7857  return get_string(input_format_t::bson, len - static_cast<NumberType>(1), result) && get() != std::char_traits<char_type>::eof();
    -
    7858  }
    -
    7859 
    -
    7869  template<typename NumberType>
    -
    7870  bool get_bson_binary(const NumberType len, binary_t& result)
    -
    7871  {
    -
    7872  if (JSON_HEDLEY_UNLIKELY(len < 0))
    -
    7873  {
    -
    7874  auto last_token = get_token_string();
    -
    7875  return sax->parse_error(chars_read, last_token, parse_error::create(112, chars_read, exception_message(input_format_t::bson, "byte array length cannot be negative, is " + std::to_string(len), "binary")));
    -
    7876  }
    -
    7877 
    -
    7878  // All BSON binary values have a subtype
    -
    7879  std::uint8_t subtype{};
    -
    7880  get_number<std::uint8_t>(input_format_t::bson, subtype);
    -
    7881  result.set_subtype(subtype);
    -
    7882 
    -
    7883  return get_binary(input_format_t::bson, len, result);
    -
    7884  }
    -
    7885 
    -
    7896  bool parse_bson_element_internal(const char_int_type element_type,
    -
    7897  const std::size_t element_type_parse_position)
    -
    7898  {
    -
    7899  switch (element_type)
    -
    7900  {
    -
    7901  case 0x01: // double
    -
    7902  {
    -
    7903  double number{};
    -
    7904  return get_number<double, true>(input_format_t::bson, number) && sax->number_float(static_cast<number_float_t>(number), "");
    -
    7905  }
    -
    7906 
    -
    7907  case 0x02: // string
    -
    7908  {
    -
    7909  std::int32_t len{};
    -
    7910  string_t value;
    -
    7911  return get_number<std::int32_t, true>(input_format_t::bson, len) && get_bson_string(len, value) && sax->string(value);
    -
    7912  }
    -
    7913 
    -
    7914  case 0x03: // object
    -
    7915  {
    -
    7916  return parse_bson_internal();
    -
    7917  }
    -
    7918 
    -
    7919  case 0x04: // array
    -
    7920  {
    -
    7921  return parse_bson_array();
    -
    7922  }
    -
    7923 
    -
    7924  case 0x05: // binary
    -
    7925  {
    -
    7926  std::int32_t len{};
    -
    7927  binary_t value;
    -
    7928  return get_number<std::int32_t, true>(input_format_t::bson, len) && get_bson_binary(len, value) && sax->binary(value);
    -
    7929  }
    -
    7930 
    -
    7931  case 0x08: // boolean
    -
    7932  {
    -
    7933  return sax->boolean(get() != 0);
    -
    7934  }
    -
    7935 
    -
    7936  case 0x0A: // null
    -
    7937  {
    -
    7938  return sax->null();
    -
    7939  }
    -
    7940 
    -
    7941  case 0x10: // int32
    -
    7942  {
    -
    7943  std::int32_t value{};
    -
    7944  return get_number<std::int32_t, true>(input_format_t::bson, value) && sax->number_integer(value);
    -
    7945  }
    -
    7946 
    -
    7947  case 0x12: // int64
    -
    7948  {
    -
    7949  std::int64_t value{};
    -
    7950  return get_number<std::int64_t, true>(input_format_t::bson, value) && sax->number_integer(value);
    -
    7951  }
    -
    7952 
    -
    7953  default: // anything else not supported (yet)
    -
    7954  {
    -
    7955  std::array<char, 3> cr{{}};
    -
    7956  (std::snprintf)(cr.data(), cr.size(), "%.2hhX", static_cast<unsigned char>(element_type));
    -
    7957  return sax->parse_error(element_type_parse_position, std::string(cr.data()), parse_error::create(114, element_type_parse_position, "Unsupported BSON record type 0x" + std::string(cr.data())));
    -
    7958  }
    -
    7959  }
    -
    7960  }
    -
    7961 
    -
    7974  bool parse_bson_element_list(const bool is_array)
    -
    7975  {
    -
    7976  string_t key;
    -
    7977 
    -
    7978  while (auto element_type = get())
    -
    7979  {
    -
    7980  if (JSON_HEDLEY_UNLIKELY(!unexpect_eof(input_format_t::bson, "element list")))
    -
    7981  {
    -
    7982  return false;
    -
    7983  }
    -
    7984 
    -
    7985  const std::size_t element_type_parse_position = chars_read;
    -
    7986  if (JSON_HEDLEY_UNLIKELY(!get_bson_cstr(key)))
    -
    7987  {
    -
    7988  return false;
    -
    7989  }
    -
    7990 
    -
    7991  if (!is_array && !sax->key(key))
    -
    7992  {
    -
    7993  return false;
    -
    7994  }
    -
    7995 
    -
    7996  if (JSON_HEDLEY_UNLIKELY(!parse_bson_element_internal(element_type, element_type_parse_position)))
    -
    7997  {
    -
    7998  return false;
    -
    7999  }
    -
    8000 
    -
    8001  // get_bson_cstr only appends
    -
    8002  key.clear();
    -
    8003  }
    -
    8004 
    -
    8005  return true;
    -
    8006  }
    -
    8007 
    -
    8012  bool parse_bson_array()
    -
    8013  {
    -
    8014  std::int32_t document_size{};
    -
    8015  get_number<std::int32_t, true>(input_format_t::bson, document_size);
    -
    8016 
    -
    8017  if (JSON_HEDLEY_UNLIKELY(!sax->start_array(std::size_t(-1))))
    -
    8018  {
    -
    8019  return false;
    -
    8020  }
    -
    8021 
    -
    8022  if (JSON_HEDLEY_UNLIKELY(!parse_bson_element_list(/*is_array*/true)))
    -
    8023  {
    -
    8024  return false;
    -
    8025  }
    -
    8026 
    -
    8027  return sax->end_array();
    -
    8028  }
    -
    8029 
    -
    8031  // CBOR //
    -
    8033 
    -
    8042  bool parse_cbor_internal(const bool get_char,
    -
    8043  const cbor_tag_handler_t tag_handler)
    -
    8044  {
    -
    8045  switch (get_char ? get() : current)
    -
    8046  {
    -
    8047  // EOF
    -
    8048  case std::char_traits<char_type>::eof():
    -
    8049  return unexpect_eof(input_format_t::cbor, "value");
    -
    8050 
    -
    8051  // Integer 0x00..0x17 (0..23)
    -
    8052  case 0x00:
    -
    8053  case 0x01:
    -
    8054  case 0x02:
    -
    8055  case 0x03:
    -
    8056  case 0x04:
    -
    8057  case 0x05:
    -
    8058  case 0x06:
    -
    8059  case 0x07:
    -
    8060  case 0x08:
    -
    8061  case 0x09:
    -
    8062  case 0x0A:
    -
    8063  case 0x0B:
    -
    8064  case 0x0C:
    -
    8065  case 0x0D:
    -
    8066  case 0x0E:
    -
    8067  case 0x0F:
    -
    8068  case 0x10:
    -
    8069  case 0x11:
    -
    8070  case 0x12:
    -
    8071  case 0x13:
    -
    8072  case 0x14:
    -
    8073  case 0x15:
    -
    8074  case 0x16:
    -
    8075  case 0x17:
    -
    8076  return sax->number_unsigned(static_cast<number_unsigned_t>(current));
    -
    8077 
    -
    8078  case 0x18: // Unsigned integer (one-byte uint8_t follows)
    -
    8079  {
    -
    8080  std::uint8_t number{};
    -
    8081  return get_number(input_format_t::cbor, number) && sax->number_unsigned(number);
    -
    8082  }
    -
    8083 
    -
    8084  case 0x19: // Unsigned integer (two-byte uint16_t follows)
    -
    8085  {
    -
    8086  std::uint16_t number{};
    -
    8087  return get_number(input_format_t::cbor, number) && sax->number_unsigned(number);
    -
    8088  }
    -
    8089 
    -
    8090  case 0x1A: // Unsigned integer (four-byte uint32_t follows)
    -
    8091  {
    -
    8092  std::uint32_t number{};
    -
    8093  return get_number(input_format_t::cbor, number) && sax->number_unsigned(number);
    -
    8094  }
    -
    8095 
    -
    8096  case 0x1B: // Unsigned integer (eight-byte uint64_t follows)
    -
    8097  {
    -
    8098  std::uint64_t number{};
    -
    8099  return get_number(input_format_t::cbor, number) && sax->number_unsigned(number);
    -
    8100  }
    -
    8101 
    -
    8102  // Negative integer -1-0x00..-1-0x17 (-1..-24)
    -
    8103  case 0x20:
    -
    8104  case 0x21:
    -
    8105  case 0x22:
    -
    8106  case 0x23:
    -
    8107  case 0x24:
    -
    8108  case 0x25:
    -
    8109  case 0x26:
    -
    8110  case 0x27:
    -
    8111  case 0x28:
    -
    8112  case 0x29:
    -
    8113  case 0x2A:
    -
    8114  case 0x2B:
    -
    8115  case 0x2C:
    -
    8116  case 0x2D:
    -
    8117  case 0x2E:
    -
    8118  case 0x2F:
    -
    8119  case 0x30:
    -
    8120  case 0x31:
    -
    8121  case 0x32:
    -
    8122  case 0x33:
    -
    8123  case 0x34:
    -
    8124  case 0x35:
    -
    8125  case 0x36:
    -
    8126  case 0x37:
    -
    8127  return sax->number_integer(static_cast<std::int8_t>(0x20 - 1 - current));
    -
    8128 
    -
    8129  case 0x38: // Negative integer (one-byte uint8_t follows)
    -
    8130  {
    -
    8131  std::uint8_t number{};
    -
    8132  return get_number(input_format_t::cbor, number) && sax->number_integer(static_cast<number_integer_t>(-1) - number);
    -
    8133  }
    -
    8134 
    -
    8135  case 0x39: // Negative integer -1-n (two-byte uint16_t follows)
    -
    8136  {
    -
    8137  std::uint16_t number{};
    -
    8138  return get_number(input_format_t::cbor, number) && sax->number_integer(static_cast<number_integer_t>(-1) - number);
    -
    8139  }
    -
    8140 
    -
    8141  case 0x3A: // Negative integer -1-n (four-byte uint32_t follows)
    -
    8142  {
    -
    8143  std::uint32_t number{};
    -
    8144  return get_number(input_format_t::cbor, number) && sax->number_integer(static_cast<number_integer_t>(-1) - number);
    -
    8145  }
    -
    8146 
    -
    8147  case 0x3B: // Negative integer -1-n (eight-byte uint64_t follows)
    -
    8148  {
    -
    8149  std::uint64_t number{};
    -
    8150  return get_number(input_format_t::cbor, number) && sax->number_integer(static_cast<number_integer_t>(-1)
    -
    8151  - static_cast<number_integer_t>(number));
    -
    8152  }
    -
    8153 
    -
    8154  // Binary data (0x00..0x17 bytes follow)
    -
    8155  case 0x40:
    -
    8156  case 0x41:
    -
    8157  case 0x42:
    -
    8158  case 0x43:
    -
    8159  case 0x44:
    -
    8160  case 0x45:
    -
    8161  case 0x46:
    -
    8162  case 0x47:
    -
    8163  case 0x48:
    -
    8164  case 0x49:
    -
    8165  case 0x4A:
    -
    8166  case 0x4B:
    -
    8167  case 0x4C:
    -
    8168  case 0x4D:
    -
    8169  case 0x4E:
    -
    8170  case 0x4F:
    -
    8171  case 0x50:
    -
    8172  case 0x51:
    -
    8173  case 0x52:
    -
    8174  case 0x53:
    -
    8175  case 0x54:
    -
    8176  case 0x55:
    -
    8177  case 0x56:
    -
    8178  case 0x57:
    -
    8179  case 0x58: // Binary data (one-byte uint8_t for n follows)
    -
    8180  case 0x59: // Binary data (two-byte uint16_t for n follow)
    -
    8181  case 0x5A: // Binary data (four-byte uint32_t for n follow)
    -
    8182  case 0x5B: // Binary data (eight-byte uint64_t for n follow)
    -
    8183  case 0x5F: // Binary data (indefinite length)
    -
    8184  {
    -
    8185  binary_t b;
    -
    8186  return get_cbor_binary(b) && sax->binary(b);
    -
    8187  }
    -
    8188 
    -
    8189  // UTF-8 string (0x00..0x17 bytes follow)
    -
    8190  case 0x60:
    -
    8191  case 0x61:
    -
    8192  case 0x62:
    -
    8193  case 0x63:
    -
    8194  case 0x64:
    -
    8195  case 0x65:
    -
    8196  case 0x66:
    -
    8197  case 0x67:
    -
    8198  case 0x68:
    -
    8199  case 0x69:
    -
    8200  case 0x6A:
    -
    8201  case 0x6B:
    -
    8202  case 0x6C:
    -
    8203  case 0x6D:
    -
    8204  case 0x6E:
    -
    8205  case 0x6F:
    -
    8206  case 0x70:
    -
    8207  case 0x71:
    -
    8208  case 0x72:
    -
    8209  case 0x73:
    -
    8210  case 0x74:
    -
    8211  case 0x75:
    -
    8212  case 0x76:
    -
    8213  case 0x77:
    -
    8214  case 0x78: // UTF-8 string (one-byte uint8_t for n follows)
    -
    8215  case 0x79: // UTF-8 string (two-byte uint16_t for n follow)
    -
    8216  case 0x7A: // UTF-8 string (four-byte uint32_t for n follow)
    -
    8217  case 0x7B: // UTF-8 string (eight-byte uint64_t for n follow)
    -
    8218  case 0x7F: // UTF-8 string (indefinite length)
    -
    8219  {
    -
    8220  string_t s;
    -
    8221  return get_cbor_string(s) && sax->string(s);
    -
    8222  }
    -
    8223 
    -
    8224  // array (0x00..0x17 data items follow)
    -
    8225  case 0x80:
    -
    8226  case 0x81:
    -
    8227  case 0x82:
    -
    8228  case 0x83:
    -
    8229  case 0x84:
    -
    8230  case 0x85:
    -
    8231  case 0x86:
    -
    8232  case 0x87:
    -
    8233  case 0x88:
    -
    8234  case 0x89:
    -
    8235  case 0x8A:
    -
    8236  case 0x8B:
    -
    8237  case 0x8C:
    -
    8238  case 0x8D:
    -
    8239  case 0x8E:
    -
    8240  case 0x8F:
    -
    8241  case 0x90:
    -
    8242  case 0x91:
    -
    8243  case 0x92:
    -
    8244  case 0x93:
    -
    8245  case 0x94:
    -
    8246  case 0x95:
    -
    8247  case 0x96:
    -
    8248  case 0x97:
    -
    8249  return get_cbor_array(static_cast<std::size_t>(static_cast<unsigned int>(current) & 0x1Fu), tag_handler);
    -
    8250 
    -
    8251  case 0x98: // array (one-byte uint8_t for n follows)
    -
    8252  {
    -
    8253  std::uint8_t len{};
    -
    8254  return get_number(input_format_t::cbor, len) && get_cbor_array(static_cast<std::size_t>(len), tag_handler);
    -
    8255  }
    -
    8256 
    -
    8257  case 0x99: // array (two-byte uint16_t for n follow)
    -
    8258  {
    -
    8259  std::uint16_t len{};
    -
    8260  return get_number(input_format_t::cbor, len) && get_cbor_array(static_cast<std::size_t>(len), tag_handler);
    -
    8261  }
    -
    8262 
    -
    8263  case 0x9A: // array (four-byte uint32_t for n follow)
    -
    8264  {
    -
    8265  std::uint32_t len{};
    -
    8266  return get_number(input_format_t::cbor, len) && get_cbor_array(static_cast<std::size_t>(len), tag_handler);
    -
    8267  }
    -
    8268 
    -
    8269  case 0x9B: // array (eight-byte uint64_t for n follow)
    -
    8270  {
    -
    8271  std::uint64_t len{};
    -
    8272  return get_number(input_format_t::cbor, len) && get_cbor_array(static_cast<std::size_t>(len), tag_handler);
    -
    8273  }
    -
    8274 
    -
    8275  case 0x9F: // array (indefinite length)
    -
    8276  return get_cbor_array(std::size_t(-1), tag_handler);
    -
    8277 
    -
    8278  // map (0x00..0x17 pairs of data items follow)
    -
    8279  case 0xA0:
    -
    8280  case 0xA1:
    -
    8281  case 0xA2:
    -
    8282  case 0xA3:
    -
    8283  case 0xA4:
    -
    8284  case 0xA5:
    -
    8285  case 0xA6:
    -
    8286  case 0xA7:
    -
    8287  case 0xA8:
    -
    8288  case 0xA9:
    -
    8289  case 0xAA:
    -
    8290  case 0xAB:
    -
    8291  case 0xAC:
    -
    8292  case 0xAD:
    -
    8293  case 0xAE:
    -
    8294  case 0xAF:
    -
    8295  case 0xB0:
    -
    8296  case 0xB1:
    -
    8297  case 0xB2:
    -
    8298  case 0xB3:
    -
    8299  case 0xB4:
    -
    8300  case 0xB5:
    -
    8301  case 0xB6:
    -
    8302  case 0xB7:
    -
    8303  return get_cbor_object(static_cast<std::size_t>(static_cast<unsigned int>(current) & 0x1Fu), tag_handler);
    -
    8304 
    -
    8305  case 0xB8: // map (one-byte uint8_t for n follows)
    -
    8306  {
    -
    8307  std::uint8_t len{};
    -
    8308  return get_number(input_format_t::cbor, len) && get_cbor_object(static_cast<std::size_t>(len), tag_handler);
    -
    8309  }
    -
    8310 
    -
    8311  case 0xB9: // map (two-byte uint16_t for n follow)
    -
    8312  {
    -
    8313  std::uint16_t len{};
    -
    8314  return get_number(input_format_t::cbor, len) && get_cbor_object(static_cast<std::size_t>(len), tag_handler);
    -
    8315  }
    -
    8316 
    -
    8317  case 0xBA: // map (four-byte uint32_t for n follow)
    -
    8318  {
    -
    8319  std::uint32_t len{};
    -
    8320  return get_number(input_format_t::cbor, len) && get_cbor_object(static_cast<std::size_t>(len), tag_handler);
    -
    8321  }
    -
    8322 
    -
    8323  case 0xBB: // map (eight-byte uint64_t for n follow)
    -
    8324  {
    -
    8325  std::uint64_t len{};
    -
    8326  return get_number(input_format_t::cbor, len) && get_cbor_object(static_cast<std::size_t>(len), tag_handler);
    -
    8327  }
    -
    8328 
    -
    8329  case 0xBF: // map (indefinite length)
    -
    8330  return get_cbor_object(std::size_t(-1), tag_handler);
    -
    8331 
    -
    8332  case 0xC6: // tagged item
    -
    8333  case 0xC7:
    -
    8334  case 0xC8:
    -
    8335  case 0xC9:
    -
    8336  case 0xCA:
    -
    8337  case 0xCB:
    -
    8338  case 0xCC:
    -
    8339  case 0xCD:
    -
    8340  case 0xCE:
    -
    8341  case 0xCF:
    -
    8342  case 0xD0:
    -
    8343  case 0xD1:
    -
    8344  case 0xD2:
    -
    8345  case 0xD3:
    -
    8346  case 0xD4:
    -
    8347  case 0xD8: // tagged item (1 bytes follow)
    -
    8348  case 0xD9: // tagged item (2 bytes follow)
    -
    8349  case 0xDA: // tagged item (4 bytes follow)
    -
    8350  case 0xDB: // tagged item (8 bytes follow)
    -
    8351  {
    -
    8352  switch (tag_handler)
    -
    8353  {
    - -
    8355  {
    -
    8356  auto last_token = get_token_string();
    -
    8357  return sax->parse_error(chars_read, last_token, parse_error::create(112, chars_read, exception_message(input_format_t::cbor, "invalid byte: 0x" + last_token, "value")));
    -
    8358  }
    -
    8359 
    - -
    8361  {
    -
    8362  switch (current)
    -
    8363  {
    -
    8364  case 0xD8:
    -
    8365  {
    -
    8366  std::uint8_t len{};
    -
    8367  get_number(input_format_t::cbor, len);
    -
    8368  break;
    -
    8369  }
    -
    8370  case 0xD9:
    -
    8371  {
    -
    8372  std::uint16_t len{};
    -
    8373  get_number(input_format_t::cbor, len);
    -
    8374  break;
    -
    8375  }
    -
    8376  case 0xDA:
    -
    8377  {
    -
    8378  std::uint32_t len{};
    -
    8379  get_number(input_format_t::cbor, len);
    -
    8380  break;
    -
    8381  }
    -
    8382  case 0xDB:
    -
    8383  {
    -
    8384  std::uint64_t len{};
    -
    8385  get_number(input_format_t::cbor, len);
    -
    8386  break;
    -
    8387  }
    -
    8388  default:
    -
    8389  break;
    -
    8390  }
    -
    8391  return parse_cbor_internal(true, tag_handler);
    -
    8392  }
    -
    8393 
    -
    8394  default: // LCOV_EXCL_LINE
    -
    8395  JSON_ASSERT(false); // LCOV_EXCL_LINE
    -
    8396  }
    -
    8397  }
    -
    8398 
    -
    8399  case 0xF4: // false
    -
    8400  return sax->boolean(false);
    -
    8401 
    -
    8402  case 0xF5: // true
    -
    8403  return sax->boolean(true);
    -
    8404 
    -
    8405  case 0xF6: // null
    -
    8406  return sax->null();
    -
    8407 
    -
    8408  case 0xF9: // Half-Precision Float (two-byte IEEE 754)
    -
    8409  {
    -
    8410  const auto byte1_raw = get();
    -
    8411  if (JSON_HEDLEY_UNLIKELY(!unexpect_eof(input_format_t::cbor, "number")))
    -
    8412  {
    -
    8413  return false;
    -
    8414  }
    -
    8415  const auto byte2_raw = get();
    -
    8416  if (JSON_HEDLEY_UNLIKELY(!unexpect_eof(input_format_t::cbor, "number")))
    -
    8417  {
    -
    8418  return false;
    -
    8419  }
    -
    8420 
    -
    8421  const auto byte1 = static_cast<unsigned char>(byte1_raw);
    -
    8422  const auto byte2 = static_cast<unsigned char>(byte2_raw);
    -
    8423 
    -
    8424  // code from RFC 7049, Appendix D, Figure 3:
    -
    8425  // As half-precision floating-point numbers were only added
    -
    8426  // to IEEE 754 in 2008, today's programming platforms often
    -
    8427  // still only have limited support for them. It is very
    -
    8428  // easy to include at least decoding support for them even
    -
    8429  // without such support. An example of a small decoder for
    -
    8430  // half-precision floating-point numbers in the C language
    -
    8431  // is shown in Fig. 3.
    -
    8432  const auto half = static_cast<unsigned int>((byte1 << 8u) + byte2);
    -
    8433  const double val = [&half]
    -
    8434  {
    -
    8435  const int exp = (half >> 10u) & 0x1Fu;
    -
    8436  const unsigned int mant = half & 0x3FFu;
    -
    8437  JSON_ASSERT(0 <= exp&& exp <= 32);
    -
    8438  JSON_ASSERT(mant <= 1024);
    -
    8439  switch (exp)
    -
    8440  {
    -
    8441  case 0:
    -
    8442  return std::ldexp(mant, -24);
    -
    8443  case 31:
    -
    8444  return (mant == 0)
    -
    8445  ? std::numeric_limits<double>::infinity()
    -
    8446  : std::numeric_limits<double>::quiet_NaN();
    -
    8447  default:
    -
    8448  return std::ldexp(mant + 1024, exp - 25);
    -
    8449  }
    -
    8450  }();
    -
    8451  return sax->number_float((half & 0x8000u) != 0
    -
    8452  ? static_cast<number_float_t>(-val)
    -
    8453  : static_cast<number_float_t>(val), "");
    -
    8454  }
    -
    8455 
    -
    8456  case 0xFA: // Single-Precision Float (four-byte IEEE 754)
    -
    8457  {
    -
    8458  float number{};
    -
    8459  return get_number(input_format_t::cbor, number) && sax->number_float(static_cast<number_float_t>(number), "");
    -
    8460  }
    -
    8461 
    -
    8462  case 0xFB: // Double-Precision Float (eight-byte IEEE 754)
    -
    8463  {
    -
    8464  double number{};
    -
    8465  return get_number(input_format_t::cbor, number) && sax->number_float(static_cast<number_float_t>(number), "");
    -
    8466  }
    -
    8467 
    -
    8468  default: // anything else (0xFF is handled inside the other types)
    -
    8469  {
    -
    8470  auto last_token = get_token_string();
    -
    8471  return sax->parse_error(chars_read, last_token, parse_error::create(112, chars_read, exception_message(input_format_t::cbor, "invalid byte: 0x" + last_token, "value")));
    -
    8472  }
    -
    8473  }
    -
    8474  }
    -
    8475 
    -
    8487  bool get_cbor_string(string_t& result)
    -
    8488  {
    -
    8489  if (JSON_HEDLEY_UNLIKELY(!unexpect_eof(input_format_t::cbor, "string")))
    -
    8490  {
    -
    8491  return false;
    -
    8492  }
    -
    8493 
    -
    8494  switch (current)
    -
    8495  {
    -
    8496  // UTF-8 string (0x00..0x17 bytes follow)
    -
    8497  case 0x60:
    -
    8498  case 0x61:
    -
    8499  case 0x62:
    -
    8500  case 0x63:
    -
    8501  case 0x64:
    -
    8502  case 0x65:
    -
    8503  case 0x66:
    -
    8504  case 0x67:
    -
    8505  case 0x68:
    -
    8506  case 0x69:
    -
    8507  case 0x6A:
    -
    8508  case 0x6B:
    -
    8509  case 0x6C:
    -
    8510  case 0x6D:
    -
    8511  case 0x6E:
    -
    8512  case 0x6F:
    -
    8513  case 0x70:
    -
    8514  case 0x71:
    -
    8515  case 0x72:
    -
    8516  case 0x73:
    -
    8517  case 0x74:
    -
    8518  case 0x75:
    -
    8519  case 0x76:
    -
    8520  case 0x77:
    -
    8521  {
    -
    8522  return get_string(input_format_t::cbor, static_cast<unsigned int>(current) & 0x1Fu, result);
    -
    8523  }
    -
    8524 
    -
    8525  case 0x78: // UTF-8 string (one-byte uint8_t for n follows)
    -
    8526  {
    -
    8527  std::uint8_t len{};
    -
    8528  return get_number(input_format_t::cbor, len) && get_string(input_format_t::cbor, len, result);
    -
    8529  }
    -
    8530 
    -
    8531  case 0x79: // UTF-8 string (two-byte uint16_t for n follow)
    -
    8532  {
    -
    8533  std::uint16_t len{};
    -
    8534  return get_number(input_format_t::cbor, len) && get_string(input_format_t::cbor, len, result);
    -
    8535  }
    -
    8536 
    -
    8537  case 0x7A: // UTF-8 string (four-byte uint32_t for n follow)
    -
    8538  {
    -
    8539  std::uint32_t len{};
    -
    8540  return get_number(input_format_t::cbor, len) && get_string(input_format_t::cbor, len, result);
    -
    8541  }
    -
    8542 
    -
    8543  case 0x7B: // UTF-8 string (eight-byte uint64_t for n follow)
    -
    8544  {
    -
    8545  std::uint64_t len{};
    -
    8546  return get_number(input_format_t::cbor, len) && get_string(input_format_t::cbor, len, result);
    -
    8547  }
    -
    8548 
    -
    8549  case 0x7F: // UTF-8 string (indefinite length)
    -
    8550  {
    -
    8551  while (get() != 0xFF)
    -
    8552  {
    -
    8553  string_t chunk;
    -
    8554  if (!get_cbor_string(chunk))
    -
    8555  {
    -
    8556  return false;
    -
    8557  }
    -
    8558  result.append(chunk);
    -
    8559  }
    -
    8560  return true;
    -
    8561  }
    -
    8562 
    -
    8563  default:
    -
    8564  {
    -
    8565  auto last_token = get_token_string();
    -
    8566  return sax->parse_error(chars_read, last_token, parse_error::create(113, chars_read, exception_message(input_format_t::cbor, "expected length specification (0x60-0x7B) or indefinite string type (0x7F); last byte: 0x" + last_token, "string")));
    -
    8567  }
    -
    8568  }
    -
    8569  }
    -
    8570 
    -
    8582  bool get_cbor_binary(binary_t& result)
    -
    8583  {
    -
    8584  if (JSON_HEDLEY_UNLIKELY(!unexpect_eof(input_format_t::cbor, "binary")))
    -
    8585  {
    -
    8586  return false;
    -
    8587  }
    -
    8588 
    -
    8589  switch (current)
    -
    8590  {
    -
    8591  // Binary data (0x00..0x17 bytes follow)
    -
    8592  case 0x40:
    -
    8593  case 0x41:
    -
    8594  case 0x42:
    -
    8595  case 0x43:
    -
    8596  case 0x44:
    -
    8597  case 0x45:
    -
    8598  case 0x46:
    -
    8599  case 0x47:
    -
    8600  case 0x48:
    -
    8601  case 0x49:
    -
    8602  case 0x4A:
    -
    8603  case 0x4B:
    -
    8604  case 0x4C:
    -
    8605  case 0x4D:
    -
    8606  case 0x4E:
    -
    8607  case 0x4F:
    -
    8608  case 0x50:
    -
    8609  case 0x51:
    -
    8610  case 0x52:
    -
    8611  case 0x53:
    -
    8612  case 0x54:
    -
    8613  case 0x55:
    -
    8614  case 0x56:
    -
    8615  case 0x57:
    -
    8616  {
    -
    8617  return get_binary(input_format_t::cbor, static_cast<unsigned int>(current) & 0x1Fu, result);
    -
    8618  }
    -
    8619 
    -
    8620  case 0x58: // Binary data (one-byte uint8_t for n follows)
    -
    8621  {
    -
    8622  std::uint8_t len{};
    -
    8623  return get_number(input_format_t::cbor, len) &&
    -
    8624  get_binary(input_format_t::cbor, len, result);
    -
    8625  }
    -
    8626 
    -
    8627  case 0x59: // Binary data (two-byte uint16_t for n follow)
    -
    8628  {
    -
    8629  std::uint16_t len{};
    -
    8630  return get_number(input_format_t::cbor, len) &&
    -
    8631  get_binary(input_format_t::cbor, len, result);
    -
    8632  }
    -
    8633 
    -
    8634  case 0x5A: // Binary data (four-byte uint32_t for n follow)
    -
    8635  {
    -
    8636  std::uint32_t len{};
    -
    8637  return get_number(input_format_t::cbor, len) &&
    -
    8638  get_binary(input_format_t::cbor, len, result);
    -
    8639  }
    -
    8640 
    -
    8641  case 0x5B: // Binary data (eight-byte uint64_t for n follow)
    -
    8642  {
    -
    8643  std::uint64_t len{};
    -
    8644  return get_number(input_format_t::cbor, len) &&
    -
    8645  get_binary(input_format_t::cbor, len, result);
    -
    8646  }
    -
    8647 
    -
    8648  case 0x5F: // Binary data (indefinite length)
    -
    8649  {
    -
    8650  while (get() != 0xFF)
    -
    8651  {
    -
    8652  binary_t chunk;
    -
    8653  if (!get_cbor_binary(chunk))
    -
    8654  {
    -
    8655  return false;
    -
    8656  }
    -
    8657  result.insert(result.end(), chunk.begin(), chunk.end());
    -
    8658  }
    -
    8659  return true;
    -
    8660  }
    -
    8661 
    -
    8662  default:
    -
    8663  {
    -
    8664  auto last_token = get_token_string();
    -
    8665  return sax->parse_error(chars_read, last_token, parse_error::create(113, chars_read, exception_message(input_format_t::cbor, "expected length specification (0x40-0x5B) or indefinite binary array type (0x5F); last byte: 0x" + last_token, "binary")));
    -
    8666  }
    -
    8667  }
    -
    8668  }
    -
    8669 
    -
    8676  bool get_cbor_array(const std::size_t len,
    -
    8677  const cbor_tag_handler_t tag_handler)
    -
    8678  {
    -
    8679  if (JSON_HEDLEY_UNLIKELY(!sax->start_array(len)))
    -
    8680  {
    -
    8681  return false;
    -
    8682  }
    -
    8683 
    -
    8684  if (len != std::size_t(-1))
    -
    8685  {
    -
    8686  for (std::size_t i = 0; i < len; ++i)
    -
    8687  {
    -
    8688  if (JSON_HEDLEY_UNLIKELY(!parse_cbor_internal(true, tag_handler)))
    -
    8689  {
    -
    8690  return false;
    -
    8691  }
    -
    8692  }
    -
    8693  }
    -
    8694  else
    -
    8695  {
    -
    8696  while (get() != 0xFF)
    -
    8697  {
    -
    8698  if (JSON_HEDLEY_UNLIKELY(!parse_cbor_internal(false, tag_handler)))
    -
    8699  {
    -
    8700  return false;
    -
    8701  }
    -
    8702  }
    -
    8703  }
    -
    8704 
    -
    8705  return sax->end_array();
    -
    8706  }
    -
    8707 
    -
    8714  bool get_cbor_object(const std::size_t len,
    -
    8715  const cbor_tag_handler_t tag_handler)
    -
    8716  {
    -
    8717  if (JSON_HEDLEY_UNLIKELY(!sax->start_object(len)))
    -
    8718  {
    -
    8719  return false;
    -
    8720  }
    -
    8721 
    -
    8722  string_t key;
    -
    8723  if (len != std::size_t(-1))
    -
    8724  {
    -
    8725  for (std::size_t i = 0; i < len; ++i)
    -
    8726  {
    -
    8727  get();
    -
    8728  if (JSON_HEDLEY_UNLIKELY(!get_cbor_string(key) || !sax->key(key)))
    -
    8729  {
    -
    8730  return false;
    -
    8731  }
    -
    8732 
    -
    8733  if (JSON_HEDLEY_UNLIKELY(!parse_cbor_internal(true, tag_handler)))
    -
    8734  {
    -
    8735  return false;
    -
    8736  }
    -
    8737  key.clear();
    -
    8738  }
    -
    8739  }
    -
    8740  else
    -
    8741  {
    -
    8742  while (get() != 0xFF)
    -
    8743  {
    -
    8744  if (JSON_HEDLEY_UNLIKELY(!get_cbor_string(key) || !sax->key(key)))
    -
    8745  {
    -
    8746  return false;
    -
    8747  }
    -
    8748 
    -
    8749  if (JSON_HEDLEY_UNLIKELY(!parse_cbor_internal(true, tag_handler)))
    -
    8750  {
    -
    8751  return false;
    -
    8752  }
    -
    8753  key.clear();
    -
    8754  }
    -
    8755  }
    -
    8756 
    -
    8757  return sax->end_object();
    -
    8758  }
    -
    8759 
    -
    8761  // MsgPack //
    -
    8763 
    -
    8767  bool parse_msgpack_internal()
    -
    8768  {
    -
    8769  switch (get())
    -
    8770  {
    -
    8771  // EOF
    -
    8772  case std::char_traits<char_type>::eof():
    -
    8773  return unexpect_eof(input_format_t::msgpack, "value");
    -
    8774 
    -
    8775  // positive fixint
    -
    8776  case 0x00:
    -
    8777  case 0x01:
    -
    8778  case 0x02:
    -
    8779  case 0x03:
    -
    8780  case 0x04:
    -
    8781  case 0x05:
    -
    8782  case 0x06:
    -
    8783  case 0x07:
    -
    8784  case 0x08:
    -
    8785  case 0x09:
    -
    8786  case 0x0A:
    -
    8787  case 0x0B:
    -
    8788  case 0x0C:
    -
    8789  case 0x0D:
    -
    8790  case 0x0E:
    -
    8791  case 0x0F:
    -
    8792  case 0x10:
    -
    8793  case 0x11:
    -
    8794  case 0x12:
    -
    8795  case 0x13:
    -
    8796  case 0x14:
    -
    8797  case 0x15:
    -
    8798  case 0x16:
    -
    8799  case 0x17:
    -
    8800  case 0x18:
    -
    8801  case 0x19:
    -
    8802  case 0x1A:
    -
    8803  case 0x1B:
    -
    8804  case 0x1C:
    -
    8805  case 0x1D:
    -
    8806  case 0x1E:
    -
    8807  case 0x1F:
    -
    8808  case 0x20:
    -
    8809  case 0x21:
    -
    8810  case 0x22:
    -
    8811  case 0x23:
    -
    8812  case 0x24:
    -
    8813  case 0x25:
    -
    8814  case 0x26:
    -
    8815  case 0x27:
    -
    8816  case 0x28:
    -
    8817  case 0x29:
    -
    8818  case 0x2A:
    -
    8819  case 0x2B:
    -
    8820  case 0x2C:
    -
    8821  case 0x2D:
    -
    8822  case 0x2E:
    -
    8823  case 0x2F:
    -
    8824  case 0x30:
    -
    8825  case 0x31:
    -
    8826  case 0x32:
    -
    8827  case 0x33:
    -
    8828  case 0x34:
    -
    8829  case 0x35:
    -
    8830  case 0x36:
    -
    8831  case 0x37:
    -
    8832  case 0x38:
    -
    8833  case 0x39:
    -
    8834  case 0x3A:
    -
    8835  case 0x3B:
    -
    8836  case 0x3C:
    -
    8837  case 0x3D:
    -
    8838  case 0x3E:
    -
    8839  case 0x3F:
    -
    8840  case 0x40:
    -
    8841  case 0x41:
    -
    8842  case 0x42:
    -
    8843  case 0x43:
    -
    8844  case 0x44:
    -
    8845  case 0x45:
    -
    8846  case 0x46:
    -
    8847  case 0x47:
    -
    8848  case 0x48:
    -
    8849  case 0x49:
    -
    8850  case 0x4A:
    -
    8851  case 0x4B:
    -
    8852  case 0x4C:
    -
    8853  case 0x4D:
    -
    8854  case 0x4E:
    -
    8855  case 0x4F:
    -
    8856  case 0x50:
    -
    8857  case 0x51:
    -
    8858  case 0x52:
    -
    8859  case 0x53:
    -
    8860  case 0x54:
    -
    8861  case 0x55:
    -
    8862  case 0x56:
    -
    8863  case 0x57:
    -
    8864  case 0x58:
    -
    8865  case 0x59:
    -
    8866  case 0x5A:
    -
    8867  case 0x5B:
    -
    8868  case 0x5C:
    -
    8869  case 0x5D:
    -
    8870  case 0x5E:
    -
    8871  case 0x5F:
    -
    8872  case 0x60:
    -
    8873  case 0x61:
    -
    8874  case 0x62:
    -
    8875  case 0x63:
    -
    8876  case 0x64:
    -
    8877  case 0x65:
    -
    8878  case 0x66:
    -
    8879  case 0x67:
    -
    8880  case 0x68:
    -
    8881  case 0x69:
    -
    8882  case 0x6A:
    -
    8883  case 0x6B:
    -
    8884  case 0x6C:
    -
    8885  case 0x6D:
    -
    8886  case 0x6E:
    -
    8887  case 0x6F:
    -
    8888  case 0x70:
    -
    8889  case 0x71:
    -
    8890  case 0x72:
    -
    8891  case 0x73:
    -
    8892  case 0x74:
    -
    8893  case 0x75:
    -
    8894  case 0x76:
    -
    8895  case 0x77:
    -
    8896  case 0x78:
    -
    8897  case 0x79:
    -
    8898  case 0x7A:
    -
    8899  case 0x7B:
    -
    8900  case 0x7C:
    -
    8901  case 0x7D:
    -
    8902  case 0x7E:
    -
    8903  case 0x7F:
    -
    8904  return sax->number_unsigned(static_cast<number_unsigned_t>(current));
    -
    8905 
    -
    8906  // fixmap
    -
    8907  case 0x80:
    -
    8908  case 0x81:
    -
    8909  case 0x82:
    -
    8910  case 0x83:
    -
    8911  case 0x84:
    -
    8912  case 0x85:
    -
    8913  case 0x86:
    -
    8914  case 0x87:
    -
    8915  case 0x88:
    -
    8916  case 0x89:
    -
    8917  case 0x8A:
    -
    8918  case 0x8B:
    -
    8919  case 0x8C:
    -
    8920  case 0x8D:
    -
    8921  case 0x8E:
    -
    8922  case 0x8F:
    -
    8923  return get_msgpack_object(static_cast<std::size_t>(static_cast<unsigned int>(current) & 0x0Fu));
    -
    8924 
    -
    8925  // fixarray
    -
    8926  case 0x90:
    -
    8927  case 0x91:
    -
    8928  case 0x92:
    -
    8929  case 0x93:
    -
    8930  case 0x94:
    -
    8931  case 0x95:
    -
    8932  case 0x96:
    -
    8933  case 0x97:
    -
    8934  case 0x98:
    -
    8935  case 0x99:
    -
    8936  case 0x9A:
    -
    8937  case 0x9B:
    -
    8938  case 0x9C:
    -
    8939  case 0x9D:
    -
    8940  case 0x9E:
    -
    8941  case 0x9F:
    -
    8942  return get_msgpack_array(static_cast<std::size_t>(static_cast<unsigned int>(current) & 0x0Fu));
    -
    8943 
    -
    8944  // fixstr
    -
    8945  case 0xA0:
    -
    8946  case 0xA1:
    -
    8947  case 0xA2:
    -
    8948  case 0xA3:
    -
    8949  case 0xA4:
    -
    8950  case 0xA5:
    -
    8951  case 0xA6:
    -
    8952  case 0xA7:
    -
    8953  case 0xA8:
    -
    8954  case 0xA9:
    -
    8955  case 0xAA:
    -
    8956  case 0xAB:
    -
    8957  case 0xAC:
    -
    8958  case 0xAD:
    -
    8959  case 0xAE:
    -
    8960  case 0xAF:
    -
    8961  case 0xB0:
    -
    8962  case 0xB1:
    -
    8963  case 0xB2:
    -
    8964  case 0xB3:
    -
    8965  case 0xB4:
    -
    8966  case 0xB5:
    -
    8967  case 0xB6:
    -
    8968  case 0xB7:
    -
    8969  case 0xB8:
    -
    8970  case 0xB9:
    -
    8971  case 0xBA:
    -
    8972  case 0xBB:
    -
    8973  case 0xBC:
    -
    8974  case 0xBD:
    -
    8975  case 0xBE:
    -
    8976  case 0xBF:
    -
    8977  case 0xD9: // str 8
    -
    8978  case 0xDA: // str 16
    -
    8979  case 0xDB: // str 32
    -
    8980  {
    -
    8981  string_t s;
    -
    8982  return get_msgpack_string(s) && sax->string(s);
    -
    8983  }
    -
    8984 
    -
    8985  case 0xC0: // nil
    -
    8986  return sax->null();
    -
    8987 
    -
    8988  case 0xC2: // false
    -
    8989  return sax->boolean(false);
    -
    8990 
    -
    8991  case 0xC3: // true
    -
    8992  return sax->boolean(true);
    -
    8993 
    -
    8994  case 0xC4: // bin 8
    -
    8995  case 0xC5: // bin 16
    -
    8996  case 0xC6: // bin 32
    -
    8997  case 0xC7: // ext 8
    -
    8998  case 0xC8: // ext 16
    -
    8999  case 0xC9: // ext 32
    -
    9000  case 0xD4: // fixext 1
    -
    9001  case 0xD5: // fixext 2
    -
    9002  case 0xD6: // fixext 4
    -
    9003  case 0xD7: // fixext 8
    -
    9004  case 0xD8: // fixext 16
    -
    9005  {
    -
    9006  binary_t b;
    -
    9007  return get_msgpack_binary(b) && sax->binary(b);
    -
    9008  }
    -
    9009 
    -
    9010  case 0xCA: // float 32
    -
    9011  {
    -
    9012  float number{};
    -
    9013  return get_number(input_format_t::msgpack, number) && sax->number_float(static_cast<number_float_t>(number), "");
    -
    9014  }
    -
    9015 
    -
    9016  case 0xCB: // float 64
    -
    9017  {
    -
    9018  double number{};
    -
    9019  return get_number(input_format_t::msgpack, number) && sax->number_float(static_cast<number_float_t>(number), "");
    -
    9020  }
    -
    9021 
    -
    9022  case 0xCC: // uint 8
    -
    9023  {
    -
    9024  std::uint8_t number{};
    -
    9025  return get_number(input_format_t::msgpack, number) && sax->number_unsigned(number);
    -
    9026  }
    -
    9027 
    -
    9028  case 0xCD: // uint 16
    -
    9029  {
    -
    9030  std::uint16_t number{};
    -
    9031  return get_number(input_format_t::msgpack, number) && sax->number_unsigned(number);
    -
    9032  }
    -
    9033 
    -
    9034  case 0xCE: // uint 32
    -
    9035  {
    -
    9036  std::uint32_t number{};
    -
    9037  return get_number(input_format_t::msgpack, number) && sax->number_unsigned(number);
    -
    9038  }
    -
    9039 
    -
    9040  case 0xCF: // uint 64
    -
    9041  {
    -
    9042  std::uint64_t number{};
    -
    9043  return get_number(input_format_t::msgpack, number) && sax->number_unsigned(number);
    -
    9044  }
    -
    9045 
    -
    9046  case 0xD0: // int 8
    -
    9047  {
    -
    9048  std::int8_t number{};
    -
    9049  return get_number(input_format_t::msgpack, number) && sax->number_integer(number);
    -
    9050  }
    -
    9051 
    -
    9052  case 0xD1: // int 16
    -
    9053  {
    -
    9054  std::int16_t number{};
    -
    9055  return get_number(input_format_t::msgpack, number) && sax->number_integer(number);
    -
    9056  }
    -
    9057 
    -
    9058  case 0xD2: // int 32
    -
    9059  {
    -
    9060  std::int32_t number{};
    -
    9061  return get_number(input_format_t::msgpack, number) && sax->number_integer(number);
    -
    9062  }
    -
    9063 
    -
    9064  case 0xD3: // int 64
    -
    9065  {
    -
    9066  std::int64_t number{};
    -
    9067  return get_number(input_format_t::msgpack, number) && sax->number_integer(number);
    -
    9068  }
    -
    9069 
    -
    9070  case 0xDC: // array 16
    -
    9071  {
    -
    9072  std::uint16_t len{};
    -
    9073  return get_number(input_format_t::msgpack, len) && get_msgpack_array(static_cast<std::size_t>(len));
    -
    9074  }
    -
    9075 
    -
    9076  case 0xDD: // array 32
    -
    9077  {
    -
    9078  std::uint32_t len{};
    -
    9079  return get_number(input_format_t::msgpack, len) && get_msgpack_array(static_cast<std::size_t>(len));
    -
    9080  }
    -
    9081 
    -
    9082  case 0xDE: // map 16
    -
    9083  {
    -
    9084  std::uint16_t len{};
    -
    9085  return get_number(input_format_t::msgpack, len) && get_msgpack_object(static_cast<std::size_t>(len));
    -
    9086  }
    -
    9087 
    -
    9088  case 0xDF: // map 32
    -
    9089  {
    -
    9090  std::uint32_t len{};
    -
    9091  return get_number(input_format_t::msgpack, len) && get_msgpack_object(static_cast<std::size_t>(len));
    -
    9092  }
    -
    9093 
    -
    9094  // negative fixint
    -
    9095  case 0xE0:
    -
    9096  case 0xE1:
    -
    9097  case 0xE2:
    -
    9098  case 0xE3:
    -
    9099  case 0xE4:
    -
    9100  case 0xE5:
    -
    9101  case 0xE6:
    -
    9102  case 0xE7:
    -
    9103  case 0xE8:
    -
    9104  case 0xE9:
    -
    9105  case 0xEA:
    -
    9106  case 0xEB:
    -
    9107  case 0xEC:
    -
    9108  case 0xED:
    -
    9109  case 0xEE:
    -
    9110  case 0xEF:
    -
    9111  case 0xF0:
    -
    9112  case 0xF1:
    -
    9113  case 0xF2:
    -
    9114  case 0xF3:
    -
    9115  case 0xF4:
    -
    9116  case 0xF5:
    -
    9117  case 0xF6:
    -
    9118  case 0xF7:
    -
    9119  case 0xF8:
    -
    9120  case 0xF9:
    -
    9121  case 0xFA:
    -
    9122  case 0xFB:
    -
    9123  case 0xFC:
    -
    9124  case 0xFD:
    -
    9125  case 0xFE:
    -
    9126  case 0xFF:
    -
    9127  return sax->number_integer(static_cast<std::int8_t>(current));
    -
    9128 
    -
    9129  default: // anything else
    -
    9130  {
    -
    9131  auto last_token = get_token_string();
    -
    9132  return sax->parse_error(chars_read, last_token, parse_error::create(112, chars_read, exception_message(input_format_t::msgpack, "invalid byte: 0x" + last_token, "value")));
    -
    9133  }
    -
    9134  }
    -
    9135  }
    -
    9136 
    -
    9147  bool get_msgpack_string(string_t& result)
    -
    9148  {
    -
    9149  if (JSON_HEDLEY_UNLIKELY(!unexpect_eof(input_format_t::msgpack, "string")))
    -
    9150  {
    -
    9151  return false;
    -
    9152  }
    -
    9153 
    -
    9154  switch (current)
    -
    9155  {
    -
    9156  // fixstr
    -
    9157  case 0xA0:
    -
    9158  case 0xA1:
    -
    9159  case 0xA2:
    -
    9160  case 0xA3:
    -
    9161  case 0xA4:
    -
    9162  case 0xA5:
    -
    9163  case 0xA6:
    -
    9164  case 0xA7:
    -
    9165  case 0xA8:
    -
    9166  case 0xA9:
    -
    9167  case 0xAA:
    -
    9168  case 0xAB:
    -
    9169  case 0xAC:
    -
    9170  case 0xAD:
    -
    9171  case 0xAE:
    -
    9172  case 0xAF:
    -
    9173  case 0xB0:
    -
    9174  case 0xB1:
    -
    9175  case 0xB2:
    -
    9176  case 0xB3:
    -
    9177  case 0xB4:
    -
    9178  case 0xB5:
    -
    9179  case 0xB6:
    -
    9180  case 0xB7:
    -
    9181  case 0xB8:
    -
    9182  case 0xB9:
    -
    9183  case 0xBA:
    -
    9184  case 0xBB:
    -
    9185  case 0xBC:
    -
    9186  case 0xBD:
    -
    9187  case 0xBE:
    -
    9188  case 0xBF:
    -
    9189  {
    -
    9190  return get_string(input_format_t::msgpack, static_cast<unsigned int>(current) & 0x1Fu, result);
    -
    9191  }
    -
    9192 
    -
    9193  case 0xD9: // str 8
    -
    9194  {
    -
    9195  std::uint8_t len{};
    -
    9196  return get_number(input_format_t::msgpack, len) && get_string(input_format_t::msgpack, len, result);
    -
    9197  }
    -
    9198 
    -
    9199  case 0xDA: // str 16
    -
    9200  {
    -
    9201  std::uint16_t len{};
    -
    9202  return get_number(input_format_t::msgpack, len) && get_string(input_format_t::msgpack, len, result);
    -
    9203  }
    -
    9204 
    -
    9205  case 0xDB: // str 32
    -
    9206  {
    -
    9207  std::uint32_t len{};
    -
    9208  return get_number(input_format_t::msgpack, len) && get_string(input_format_t::msgpack, len, result);
    -
    9209  }
    -
    9210 
    -
    9211  default:
    -
    9212  {
    -
    9213  auto last_token = get_token_string();
    -
    9214  return sax->parse_error(chars_read, last_token, parse_error::create(113, chars_read, exception_message(input_format_t::msgpack, "expected length specification (0xA0-0xBF, 0xD9-0xDB); last byte: 0x" + last_token, "string")));
    -
    9215  }
    -
    9216  }
    -
    9217  }
    -
    9218 
    -
    9229  bool get_msgpack_binary(binary_t& result)
    -
    9230  {
    -
    9231  // helper function to set the subtype
    -
    9232  auto assign_and_return_true = [&result](std::int8_t subtype)
    -
    9233  {
    -
    9234  result.set_subtype(static_cast<std::uint8_t>(subtype));
    -
    9235  return true;
    -
    9236  };
    -
    9237 
    -
    9238  switch (current)
    -
    9239  {
    -
    9240  case 0xC4: // bin 8
    -
    9241  {
    -
    9242  std::uint8_t len{};
    -
    9243  return get_number(input_format_t::msgpack, len) &&
    -
    9244  get_binary(input_format_t::msgpack, len, result);
    -
    9245  }
    -
    9246 
    -
    9247  case 0xC5: // bin 16
    -
    9248  {
    -
    9249  std::uint16_t len{};
    -
    9250  return get_number(input_format_t::msgpack, len) &&
    -
    9251  get_binary(input_format_t::msgpack, len, result);
    -
    9252  }
    -
    9253 
    -
    9254  case 0xC6: // bin 32
    -
    9255  {
    -
    9256  std::uint32_t len{};
    -
    9257  return get_number(input_format_t::msgpack, len) &&
    -
    9258  get_binary(input_format_t::msgpack, len, result);
    -
    9259  }
    -
    9260 
    -
    9261  case 0xC7: // ext 8
    -
    9262  {
    -
    9263  std::uint8_t len{};
    -
    9264  std::int8_t subtype{};
    -
    9265  return get_number(input_format_t::msgpack, len) &&
    -
    9266  get_number(input_format_t::msgpack, subtype) &&
    -
    9267  get_binary(input_format_t::msgpack, len, result) &&
    -
    9268  assign_and_return_true(subtype);
    -
    9269  }
    -
    9270 
    -
    9271  case 0xC8: // ext 16
    -
    9272  {
    -
    9273  std::uint16_t len{};
    -
    9274  std::int8_t subtype{};
    -
    9275  return get_number(input_format_t::msgpack, len) &&
    -
    9276  get_number(input_format_t::msgpack, subtype) &&
    -
    9277  get_binary(input_format_t::msgpack, len, result) &&
    -
    9278  assign_and_return_true(subtype);
    -
    9279  }
    -
    9280 
    -
    9281  case 0xC9: // ext 32
    -
    9282  {
    -
    9283  std::uint32_t len{};
    -
    9284  std::int8_t subtype{};
    -
    9285  return get_number(input_format_t::msgpack, len) &&
    -
    9286  get_number(input_format_t::msgpack, subtype) &&
    -
    9287  get_binary(input_format_t::msgpack, len, result) &&
    -
    9288  assign_and_return_true(subtype);
    -
    9289  }
    -
    9290 
    -
    9291  case 0xD4: // fixext 1
    -
    9292  {
    -
    9293  std::int8_t subtype{};
    -
    9294  return get_number(input_format_t::msgpack, subtype) &&
    -
    9295  get_binary(input_format_t::msgpack, 1, result) &&
    -
    9296  assign_and_return_true(subtype);
    -
    9297  }
    -
    9298 
    -
    9299  case 0xD5: // fixext 2
    -
    9300  {
    -
    9301  std::int8_t subtype{};
    -
    9302  return get_number(input_format_t::msgpack, subtype) &&
    -
    9303  get_binary(input_format_t::msgpack, 2, result) &&
    -
    9304  assign_and_return_true(subtype);
    -
    9305  }
    -
    9306 
    -
    9307  case 0xD6: // fixext 4
    -
    9308  {
    -
    9309  std::int8_t subtype{};
    -
    9310  return get_number(input_format_t::msgpack, subtype) &&
    -
    9311  get_binary(input_format_t::msgpack, 4, result) &&
    -
    9312  assign_and_return_true(subtype);
    -
    9313  }
    -
    9314 
    -
    9315  case 0xD7: // fixext 8
    -
    9316  {
    -
    9317  std::int8_t subtype{};
    -
    9318  return get_number(input_format_t::msgpack, subtype) &&
    -
    9319  get_binary(input_format_t::msgpack, 8, result) &&
    -
    9320  assign_and_return_true(subtype);
    -
    9321  }
    -
    9322 
    -
    9323  case 0xD8: // fixext 16
    -
    9324  {
    -
    9325  std::int8_t subtype{};
    -
    9326  return get_number(input_format_t::msgpack, subtype) &&
    -
    9327  get_binary(input_format_t::msgpack, 16, result) &&
    -
    9328  assign_and_return_true(subtype);
    -
    9329  }
    -
    9330 
    -
    9331  default: // LCOV_EXCL_LINE
    -
    9332  return false; // LCOV_EXCL_LINE
    -
    9333  }
    -
    9334  }
    -
    9335 
    -
    9340  bool get_msgpack_array(const std::size_t len)
    -
    9341  {
    -
    9342  if (JSON_HEDLEY_UNLIKELY(!sax->start_array(len)))
    -
    9343  {
    -
    9344  return false;
    -
    9345  }
    -
    9346 
    -
    9347  for (std::size_t i = 0; i < len; ++i)
    -
    9348  {
    -
    9349  if (JSON_HEDLEY_UNLIKELY(!parse_msgpack_internal()))
    -
    9350  {
    -
    9351  return false;
    -
    9352  }
    -
    9353  }
    -
    9354 
    -
    9355  return sax->end_array();
    -
    9356  }
    -
    9357 
    -
    9362  bool get_msgpack_object(const std::size_t len)
    -
    9363  {
    -
    9364  if (JSON_HEDLEY_UNLIKELY(!sax->start_object(len)))
    -
    9365  {
    -
    9366  return false;
    -
    9367  }
    -
    9368 
    -
    9369  string_t key;
    -
    9370  for (std::size_t i = 0; i < len; ++i)
    -
    9371  {
    -
    9372  get();
    -
    9373  if (JSON_HEDLEY_UNLIKELY(!get_msgpack_string(key) || !sax->key(key)))
    -
    9374  {
    -
    9375  return false;
    -
    9376  }
    -
    9377 
    -
    9378  if (JSON_HEDLEY_UNLIKELY(!parse_msgpack_internal()))
    -
    9379  {
    -
    9380  return false;
    -
    9381  }
    -
    9382  key.clear();
    -
    9383  }
    -
    9384 
    -
    9385  return sax->end_object();
    -
    9386  }
    -
    9387 
    -
    9389  // UBJSON //
    -
    9391 
    -
    9399  bool parse_ubjson_internal(const bool get_char = true)
    -
    9400  {
    -
    9401  return get_ubjson_value(get_char ? get_ignore_noop() : current);
    -
    9402  }
    -
    9403 
    -
    9418  bool get_ubjson_string(string_t& result, const bool get_char = true)
    -
    9419  {
    -
    9420  if (get_char)
    -
    9421  {
    -
    9422  get(); // TODO(niels): may we ignore N here?
    -
    9423  }
    -
    9424 
    -
    9425  if (JSON_HEDLEY_UNLIKELY(!unexpect_eof(input_format_t::ubjson, "value")))
    -
    9426  {
    -
    9427  return false;
    -
    9428  }
    -
    9429 
    -
    9430  switch (current)
    -
    9431  {
    -
    9432  case 'U':
    -
    9433  {
    -
    9434  std::uint8_t len{};
    -
    9435  return get_number(input_format_t::ubjson, len) && get_string(input_format_t::ubjson, len, result);
    -
    9436  }
    -
    9437 
    -
    9438  case 'i':
    -
    9439  {
    -
    9440  std::int8_t len{};
    -
    9441  return get_number(input_format_t::ubjson, len) && get_string(input_format_t::ubjson, len, result);
    -
    9442  }
    -
    9443 
    -
    9444  case 'I':
    -
    9445  {
    -
    9446  std::int16_t len{};
    -
    9447  return get_number(input_format_t::ubjson, len) && get_string(input_format_t::ubjson, len, result);
    -
    9448  }
    -
    9449 
    -
    9450  case 'l':
    -
    9451  {
    -
    9452  std::int32_t len{};
    -
    9453  return get_number(input_format_t::ubjson, len) && get_string(input_format_t::ubjson, len, result);
    -
    9454  }
    -
    9455 
    -
    9456  case 'L':
    -
    9457  {
    -
    9458  std::int64_t len{};
    -
    9459  return get_number(input_format_t::ubjson, len) && get_string(input_format_t::ubjson, len, result);
    -
    9460  }
    -
    9461 
    -
    9462  default:
    -
    9463  auto last_token = get_token_string();
    -
    9464  return sax->parse_error(chars_read, last_token, parse_error::create(113, chars_read, exception_message(input_format_t::ubjson, "expected length type specification (U, i, I, l, L); last byte: 0x" + last_token, "string")));
    -
    9465  }
    -
    9466  }
    -
    9467 
    -
    9472  bool get_ubjson_size_value(std::size_t& result)
    -
    9473  {
    -
    9474  switch (get_ignore_noop())
    -
    9475  {
    -
    9476  case 'U':
    -
    9477  {
    -
    9478  std::uint8_t number{};
    -
    9479  if (JSON_HEDLEY_UNLIKELY(!get_number(input_format_t::ubjson, number)))
    -
    9480  {
    -
    9481  return false;
    -
    9482  }
    -
    9483  result = static_cast<std::size_t>(number);
    -
    9484  return true;
    -
    9485  }
    -
    9486 
    -
    9487  case 'i':
    -
    9488  {
    -
    9489  std::int8_t number{};
    -
    9490  if (JSON_HEDLEY_UNLIKELY(!get_number(input_format_t::ubjson, number)))
    -
    9491  {
    -
    9492  return false;
    -
    9493  }
    -
    9494  result = static_cast<std::size_t>(number);
    -
    9495  return true;
    -
    9496  }
    -
    9497 
    -
    9498  case 'I':
    -
    9499  {
    -
    9500  std::int16_t number{};
    -
    9501  if (JSON_HEDLEY_UNLIKELY(!get_number(input_format_t::ubjson, number)))
    -
    9502  {
    -
    9503  return false;
    -
    9504  }
    -
    9505  result = static_cast<std::size_t>(number);
    -
    9506  return true;
    -
    9507  }
    -
    9508 
    -
    9509  case 'l':
    -
    9510  {
    -
    9511  std::int32_t number{};
    -
    9512  if (JSON_HEDLEY_UNLIKELY(!get_number(input_format_t::ubjson, number)))
    -
    9513  {
    -
    9514  return false;
    -
    9515  }
    -
    9516  result = static_cast<std::size_t>(number);
    -
    9517  return true;
    -
    9518  }
    -
    9519 
    -
    9520  case 'L':
    -
    9521  {
    -
    9522  std::int64_t number{};
    -
    9523  if (JSON_HEDLEY_UNLIKELY(!get_number(input_format_t::ubjson, number)))
    -
    9524  {
    -
    9525  return false;
    -
    9526  }
    -
    9527  result = static_cast<std::size_t>(number);
    -
    9528  return true;
    -
    9529  }
    -
    9530 
    -
    9531  default:
    -
    9532  {
    -
    9533  auto last_token = get_token_string();
    -
    9534  return sax->parse_error(chars_read, last_token, parse_error::create(113, chars_read, exception_message(input_format_t::ubjson, "expected length type specification (U, i, I, l, L) after '#'; last byte: 0x" + last_token, "size")));
    -
    9535  }
    -
    9536  }
    -
    9537  }
    -
    9538 
    -
    9549  bool get_ubjson_size_type(std::pair<std::size_t, char_int_type>& result)
    -
    9550  {
    -
    9551  result.first = string_t::npos; // size
    -
    9552  result.second = 0; // type
    -
    9553 
    -
    9554  get_ignore_noop();
    -
    9555 
    -
    9556  if (current == '$')
    -
    9557  {
    -
    9558  result.second = get(); // must not ignore 'N', because 'N' maybe the type
    -
    9559  if (JSON_HEDLEY_UNLIKELY(!unexpect_eof(input_format_t::ubjson, "type")))
    -
    9560  {
    -
    9561  return false;
    -
    9562  }
    -
    9563 
    -
    9564  get_ignore_noop();
    -
    9565  if (JSON_HEDLEY_UNLIKELY(current != '#'))
    -
    9566  {
    -
    9567  if (JSON_HEDLEY_UNLIKELY(!unexpect_eof(input_format_t::ubjson, "value")))
    -
    9568  {
    -
    9569  return false;
    -
    9570  }
    -
    9571  auto last_token = get_token_string();
    -
    9572  return sax->parse_error(chars_read, last_token, parse_error::create(112, chars_read, exception_message(input_format_t::ubjson, "expected '#' after type information; last byte: 0x" + last_token, "size")));
    -
    9573  }
    -
    9574 
    -
    9575  return get_ubjson_size_value(result.first);
    -
    9576  }
    -
    9577 
    -
    9578  if (current == '#')
    -
    9579  {
    -
    9580  return get_ubjson_size_value(result.first);
    -
    9581  }
    -
    9582 
    -
    9583  return true;
    -
    9584  }
    -
    9585 
    -
    9590  bool get_ubjson_value(const char_int_type prefix)
    -
    9591  {
    -
    9592  switch (prefix)
    -
    9593  {
    -
    9594  case std::char_traits<char_type>::eof(): // EOF
    -
    9595  return unexpect_eof(input_format_t::ubjson, "value");
    -
    9596 
    -
    9597  case 'T': // true
    -
    9598  return sax->boolean(true);
    -
    9599  case 'F': // false
    -
    9600  return sax->boolean(false);
    -
    9601 
    -
    9602  case 'Z': // null
    -
    9603  return sax->null();
    -
    9604 
    -
    9605  case 'U':
    -
    9606  {
    -
    9607  std::uint8_t number{};
    -
    9608  return get_number(input_format_t::ubjson, number) && sax->number_unsigned(number);
    -
    9609  }
    -
    9610 
    -
    9611  case 'i':
    -
    9612  {
    -
    9613  std::int8_t number{};
    -
    9614  return get_number(input_format_t::ubjson, number) && sax->number_integer(number);
    -
    9615  }
    -
    9616 
    -
    9617  case 'I':
    -
    9618  {
    -
    9619  std::int16_t number{};
    -
    9620  return get_number(input_format_t::ubjson, number) && sax->number_integer(number);
    -
    9621  }
    -
    9622 
    -
    9623  case 'l':
    -
    9624  {
    -
    9625  std::int32_t number{};
    -
    9626  return get_number(input_format_t::ubjson, number) && sax->number_integer(number);
    -
    9627  }
    -
    9628 
    -
    9629  case 'L':
    -
    9630  {
    -
    9631  std::int64_t number{};
    -
    9632  return get_number(input_format_t::ubjson, number) && sax->number_integer(number);
    -
    9633  }
    -
    9634 
    -
    9635  case 'd':
    -
    9636  {
    -
    9637  float number{};
    -
    9638  return get_number(input_format_t::ubjson, number) && sax->number_float(static_cast<number_float_t>(number), "");
    -
    9639  }
    -
    9640 
    -
    9641  case 'D':
    -
    9642  {
    -
    9643  double number{};
    -
    9644  return get_number(input_format_t::ubjson, number) && sax->number_float(static_cast<number_float_t>(number), "");
    -
    9645  }
    -
    9646 
    -
    9647  case 'H':
    -
    9648  {
    -
    9649  return get_ubjson_high_precision_number();
    -
    9650  }
    -
    9651 
    -
    9652  case 'C': // char
    -
    9653  {
    -
    9654  get();
    -
    9655  if (JSON_HEDLEY_UNLIKELY(!unexpect_eof(input_format_t::ubjson, "char")))
    -
    9656  {
    -
    9657  return false;
    -
    9658  }
    -
    9659  if (JSON_HEDLEY_UNLIKELY(current > 127))
    -
    9660  {
    -
    9661  auto last_token = get_token_string();
    -
    9662  return sax->parse_error(chars_read, last_token, parse_error::create(113, chars_read, exception_message(input_format_t::ubjson, "byte after 'C' must be in range 0x00..0x7F; last byte: 0x" + last_token, "char")));
    -
    9663  }
    -
    9664  string_t s(1, static_cast<typename string_t::value_type>(current));
    -
    9665  return sax->string(s);
    -
    9666  }
    -
    9667 
    -
    9668  case 'S': // string
    -
    9669  {
    -
    9670  string_t s;
    -
    9671  return get_ubjson_string(s) && sax->string(s);
    -
    9672  }
    -
    9673 
    -
    9674  case '[': // array
    -
    9675  return get_ubjson_array();
    -
    9676 
    -
    9677  case '{': // object
    -
    9678  return get_ubjson_object();
    -
    9679 
    -
    9680  default: // anything else
    -
    9681  {
    -
    9682  auto last_token = get_token_string();
    -
    9683  return sax->parse_error(chars_read, last_token, parse_error::create(112, chars_read, exception_message(input_format_t::ubjson, "invalid byte: 0x" + last_token, "value")));
    -
    9684  }
    -
    9685  }
    -
    9686  }
    -
    9687 
    -
    9691  bool get_ubjson_array()
    -
    9692  {
    -
    9693  std::pair<std::size_t, char_int_type> size_and_type;
    -
    9694  if (JSON_HEDLEY_UNLIKELY(!get_ubjson_size_type(size_and_type)))
    -
    9695  {
    -
    9696  return false;
    -
    9697  }
    -
    9698 
    -
    9699  if (size_and_type.first != string_t::npos)
    -
    9700  {
    -
    9701  if (JSON_HEDLEY_UNLIKELY(!sax->start_array(size_and_type.first)))
    -
    9702  {
    -
    9703  return false;
    -
    9704  }
    -
    9705 
    -
    9706  if (size_and_type.second != 0)
    -
    9707  {
    -
    9708  if (size_and_type.second != 'N')
    -
    9709  {
    -
    9710  for (std::size_t i = 0; i < size_and_type.first; ++i)
    -
    9711  {
    -
    9712  if (JSON_HEDLEY_UNLIKELY(!get_ubjson_value(size_and_type.second)))
    -
    9713  {
    -
    9714  return false;
    -
    9715  }
    -
    9716  }
    -
    9717  }
    -
    9718  }
    -
    9719  else
    -
    9720  {
    -
    9721  for (std::size_t i = 0; i < size_and_type.first; ++i)
    -
    9722  {
    -
    9723  if (JSON_HEDLEY_UNLIKELY(!parse_ubjson_internal()))
    -
    9724  {
    -
    9725  return false;
    -
    9726  }
    -
    9727  }
    -
    9728  }
    -
    9729  }
    -
    9730  else
    -
    9731  {
    -
    9732  if (JSON_HEDLEY_UNLIKELY(!sax->start_array(std::size_t(-1))))
    -
    9733  {
    -
    9734  return false;
    -
    9735  }
    -
    9736 
    -
    9737  while (current != ']')
    -
    9738  {
    -
    9739  if (JSON_HEDLEY_UNLIKELY(!parse_ubjson_internal(false)))
    -
    9740  {
    -
    9741  return false;
    -
    9742  }
    -
    9743  get_ignore_noop();
    -
    9744  }
    -
    9745  }
    -
    9746 
    -
    9747  return sax->end_array();
    -
    9748  }
    -
    9749 
    -
    9753  bool get_ubjson_object()
    -
    9754  {
    -
    9755  std::pair<std::size_t, char_int_type> size_and_type;
    -
    9756  if (JSON_HEDLEY_UNLIKELY(!get_ubjson_size_type(size_and_type)))
    -
    9757  {
    -
    9758  return false;
    -
    9759  }
    -
    9760 
    -
    9761  string_t key;
    -
    9762  if (size_and_type.first != string_t::npos)
    -
    9763  {
    -
    9764  if (JSON_HEDLEY_UNLIKELY(!sax->start_object(size_and_type.first)))
    -
    9765  {
    -
    9766  return false;
    -
    9767  }
    -
    9768 
    -
    9769  if (size_and_type.second != 0)
    -
    9770  {
    -
    9771  for (std::size_t i = 0; i < size_and_type.first; ++i)
    -
    9772  {
    -
    9773  if (JSON_HEDLEY_UNLIKELY(!get_ubjson_string(key) || !sax->key(key)))
    -
    9774  {
    -
    9775  return false;
    -
    9776  }
    -
    9777  if (JSON_HEDLEY_UNLIKELY(!get_ubjson_value(size_and_type.second)))
    -
    9778  {
    -
    9779  return false;
    -
    9780  }
    -
    9781  key.clear();
    -
    9782  }
    -
    9783  }
    -
    9784  else
    -
    9785  {
    -
    9786  for (std::size_t i = 0; i < size_and_type.first; ++i)
    -
    9787  {
    -
    9788  if (JSON_HEDLEY_UNLIKELY(!get_ubjson_string(key) || !sax->key(key)))
    -
    9789  {
    -
    9790  return false;
    -
    9791  }
    -
    9792  if (JSON_HEDLEY_UNLIKELY(!parse_ubjson_internal()))
    -
    9793  {
    -
    9794  return false;
    -
    9795  }
    -
    9796  key.clear();
    -
    9797  }
    -
    9798  }
    -
    9799  }
    -
    9800  else
    -
    9801  {
    -
    9802  if (JSON_HEDLEY_UNLIKELY(!sax->start_object(std::size_t(-1))))
    -
    9803  {
    -
    9804  return false;
    -
    9805  }
    -
    9806 
    -
    9807  while (current != '}')
    -
    9808  {
    -
    9809  if (JSON_HEDLEY_UNLIKELY(!get_ubjson_string(key, false) || !sax->key(key)))
    -
    9810  {
    -
    9811  return false;
    -
    9812  }
    -
    9813  if (JSON_HEDLEY_UNLIKELY(!parse_ubjson_internal()))
    -
    9814  {
    -
    9815  return false;
    -
    9816  }
    -
    9817  get_ignore_noop();
    -
    9818  key.clear();
    -
    9819  }
    -
    9820  }
    -
    9821 
    -
    9822  return sax->end_object();
    -
    9823  }
    -
    9824 
    -
    9825  // Note, no reader for UBJSON binary types is implemented because they do
    -
    9826  // not exist
    -
    9827 
    -
    9828  bool get_ubjson_high_precision_number()
    -
    9829  {
    -
    9830  // get size of following number string
    -
    9831  std::size_t size{};
    -
    9832  auto res = get_ubjson_size_value(size);
    -
    9833  if (JSON_HEDLEY_UNLIKELY(!res))
    -
    9834  {
    -
    9835  return res;
    -
    9836  }
    -
    9837 
    -
    9838  // get number string
    -
    9839  std::vector<char> number_vector;
    -
    9840  for (std::size_t i = 0; i < size; ++i)
    -
    9841  {
    -
    9842  get();
    -
    9843  if (JSON_HEDLEY_UNLIKELY(!unexpect_eof(input_format_t::ubjson, "number")))
    -
    9844  {
    -
    9845  return false;
    -
    9846  }
    -
    9847  number_vector.push_back(static_cast<char>(current));
    -
    9848  }
    -
    9849 
    -
    9850  // parse number string
    -
    9851  auto number_ia = detail::input_adapter(std::forward<decltype(number_vector)>(number_vector));
    -
    9852  auto number_lexer = detail::lexer<BasicJsonType, decltype(number_ia)>(std::move(number_ia), false);
    -
    9853  const auto result_number = number_lexer.scan();
    -
    9854  const auto number_string = number_lexer.get_token_string();
    -
    9855  const auto result_remainder = number_lexer.scan();
    -
    9856 
    -
    9857  using token_type = typename detail::lexer_base<BasicJsonType>::token_type;
    -
    9858 
    -
    9859  if (JSON_HEDLEY_UNLIKELY(result_remainder != token_type::end_of_input))
    -
    9860  {
    -
    9861  return sax->parse_error(chars_read, number_string, parse_error::create(115, chars_read, exception_message(input_format_t::ubjson, "invalid number text: " + number_lexer.get_token_string(), "high-precision number")));
    -
    9862  }
    -
    9863 
    -
    9864  switch (result_number)
    -
    9865  {
    -
    9866  case token_type::value_integer:
    -
    9867  return sax->number_integer(number_lexer.get_number_integer());
    -
    9868  case token_type::value_unsigned:
    -
    9869  return sax->number_unsigned(number_lexer.get_number_unsigned());
    -
    9870  case token_type::value_float:
    -
    9871  return sax->number_float(number_lexer.get_number_float(), std::move(number_string));
    -
    9872  default:
    -
    9873  return sax->parse_error(chars_read, number_string, parse_error::create(115, chars_read, exception_message(input_format_t::ubjson, "invalid number text: " + number_lexer.get_token_string(), "high-precision number")));
    -
    9874  }
    -
    9875  }
    -
    9876 
    -
    9878  // Utility functions //
    -
    9880 
    -
    9890  char_int_type get()
    -
    9891  {
    -
    9892  ++chars_read;
    -
    9893  return current = ia.get_character();
    -
    9894  }
    -
    9895 
    -
    9899  char_int_type get_ignore_noop()
    -
    9900  {
    -
    9901  do
    -
    9902  {
    -
    9903  get();
    -
    9904  }
    -
    9905  while (current == 'N');
    -
    9906 
    -
    9907  return current;
    -
    9908  }
    -
    9909 
    -
    9910  /*
    -
    9911  @brief read a number from the input
    -
    9912 
    -
    9913  @tparam NumberType the type of the number
    -
    9914  @param[in] format the current format (for diagnostics)
    -
    9915  @param[out] result number of type @a NumberType
    -
    9916 
    -
    9917  @return whether conversion completed
    -
    9918 
    -
    9919  @note This function needs to respect the system's endianess, because
    -
    9920  bytes in CBOR, MessagePack, and UBJSON are stored in network order
    -
    9921  (big endian) and therefore need reordering on little endian systems.
    -
    9922  */
    -
    9923  template<typename NumberType, bool InputIsLittleEndian = false>
    -
    9924  bool get_number(const input_format_t format, NumberType& result)
    -
    9925  {
    -
    9926  // step 1: read input into array with system's byte order
    -
    9927  std::array<std::uint8_t, sizeof(NumberType)> vec;
    -
    9928  for (std::size_t i = 0; i < sizeof(NumberType); ++i)
    -
    9929  {
    -
    9930  get();
    -
    9931  if (JSON_HEDLEY_UNLIKELY(!unexpect_eof(format, "number")))
    -
    9932  {
    -
    9933  return false;
    -
    9934  }
    -
    9935 
    -
    9936  // reverse byte order prior to conversion if necessary
    -
    9937  if (is_little_endian != InputIsLittleEndian)
    -
    9938  {
    -
    9939  vec[sizeof(NumberType) - i - 1] = static_cast<std::uint8_t>(current);
    -
    9940  }
    -
    9941  else
    -
    9942  {
    -
    9943  vec[i] = static_cast<std::uint8_t>(current); // LCOV_EXCL_LINE
    -
    9944  }
    -
    9945  }
    -
    9946 
    -
    9947  // step 2: convert array into number of type T and return
    -
    9948  std::memcpy(&result, vec.data(), sizeof(NumberType));
    -
    9949  return true;
    -
    9950  }
    -
    9951 
    -
    9966  template<typename NumberType>
    -
    9967  bool get_string(const input_format_t format,
    -
    9968  const NumberType len,
    -
    9969  string_t& result)
    -
    9970  {
    -
    9971  bool success = true;
    -
    9972  for (NumberType i = 0; i < len; i++)
    -
    9973  {
    -
    9974  get();
    -
    9975  if (JSON_HEDLEY_UNLIKELY(!unexpect_eof(format, "string")))
    -
    9976  {
    -
    9977  success = false;
    -
    9978  break;
    -
    9979  }
    -
    9980  result.push_back(static_cast<typename string_t::value_type>(current));
    -
    9981  };
    -
    9982  return success;
    -
    9983  }
    -
    9984 
    -
    9999  template<typename NumberType>
    -
    10000  bool get_binary(const input_format_t format,
    -
    10001  const NumberType len,
    -
    10002  binary_t& result)
    -
    10003  {
    -
    10004  bool success = true;
    -
    10005  for (NumberType i = 0; i < len; i++)
    -
    10006  {
    -
    10007  get();
    -
    10008  if (JSON_HEDLEY_UNLIKELY(!unexpect_eof(format, "binary")))
    -
    10009  {
    -
    10010  success = false;
    -
    10011  break;
    -
    10012  }
    -
    10013  result.push_back(static_cast<std::uint8_t>(current));
    -
    10014  }
    -
    10015  return success;
    -
    10016  }
    -
    10017 
    - -
    10024  bool unexpect_eof(const input_format_t format, const char* context) const
    -
    10025  {
    -
    10026  if (JSON_HEDLEY_UNLIKELY(current == std::char_traits<char_type>::eof()))
    -
    10027  {
    -
    10028  return sax->parse_error(chars_read, "<end of file>",
    -
    10029  parse_error::create(110, chars_read, exception_message(format, "unexpected end of input", context)));
    -
    10030  }
    -
    10031  return true;
    -
    10032  }
    -
    10033 
    -
    10037  std::string get_token_string() const
    -
    10038  {
    -
    10039  std::array<char, 3> cr{{}};
    -
    10040  (std::snprintf)(cr.data(), cr.size(), "%.2hhX", static_cast<unsigned char>(current));
    -
    10041  return std::string{cr.data()};
    -
    10042  }
    -
    10043 
    -
    10050  std::string exception_message(const input_format_t format,
    -
    10051  const std::string& detail,
    -
    10052  const std::string& context) const
    -
    10053  {
    -
    10054  std::string error_msg = "syntax error while parsing ";
    -
    10055 
    -
    10056  switch (format)
    -
    10057  {
    -
    10058  case input_format_t::cbor:
    -
    10059  error_msg += "CBOR";
    -
    10060  break;
    -
    10061 
    - -
    10063  error_msg += "MessagePack";
    -
    10064  break;
    -
    10065 
    - -
    10067  error_msg += "UBJSON";
    -
    10068  break;
    -
    10069 
    -
    10070  case input_format_t::bson:
    -
    10071  error_msg += "BSON";
    -
    10072  break;
    -
    10073 
    -
    10074  default: // LCOV_EXCL_LINE
    -
    10075  JSON_ASSERT(false); // LCOV_EXCL_LINE
    -
    10076  }
    -
    10077 
    -
    10078  return error_msg + " " + context + ": " + detail;
    -
    10079  }
    -
    10080 
    -
    10081  private:
    -
    10083  InputAdapterType ia;
    -
    10084 
    -
    10086  char_int_type current = std::char_traits<char_type>::eof();
    -
    10087 
    -
    10089  std::size_t chars_read = 0;
    -
    10090 
    -
    10092  const bool is_little_endian = little_endianess();
    -
    10093 
    -
    10095  json_sax_t* sax = nullptr;
    -
    10096 };
    -
    10097 } // namespace detail
    -
    10098 } // namespace nlohmann
    -
    10099 
    -
    10100 // #include <nlohmann/detail/input/input_adapters.hpp>
    -
    10101 
    -
    10102 // #include <nlohmann/detail/input/lexer.hpp>
    -
    10103 
    -
    10104 // #include <nlohmann/detail/input/parser.hpp>
    -
    10105 
    -
    10106 
    -
    10107 #include <cmath> // isfinite
    -
    10108 #include <cstdint> // uint8_t
    -
    10109 #include <functional> // function
    -
    10110 #include <string> // string
    -
    10111 #include <utility> // move
    -
    10112 #include <vector> // vector
    -
    10113 
    -
    10114 // #include <nlohmann/detail/exceptions.hpp>
    -
    10115 
    -
    10116 // #include <nlohmann/detail/input/input_adapters.hpp>
    -
    10117 
    -
    10118 // #include <nlohmann/detail/input/json_sax.hpp>
    -
    10119 
    -
    10120 // #include <nlohmann/detail/input/lexer.hpp>
    -
    10121 
    -
    10122 // #include <nlohmann/detail/macro_scope.hpp>
    -
    10123 
    -
    10124 // #include <nlohmann/detail/meta/is_sax.hpp>
    -
    10125 
    -
    10126 // #include <nlohmann/detail/value_t.hpp>
    -
    10127 
    -
    10128 
    -
    10129 namespace nlohmann
    -
    10130 {
    -
    10131 namespace detail
    -
    10132 {
    -
    10134 // parser //
    -
    10136 
    -
    10137 enum class parse_event_t : uint8_t
    -
    10138 {
    -
    10140  object_start,
    -
    10142  object_end,
    -
    10144  array_start,
    -
    10146  array_end,
    -
    10148  key,
    -
    10150  value
    -
    10151 };
    -
    10152 
    -
    10153 template<typename BasicJsonType>
    -
    10154 using parser_callback_t =
    -
    10155  std::function<bool(int depth, parse_event_t event, BasicJsonType& parsed)>;
    -
    10156 
    -
    10162 template<typename BasicJsonType, typename InputAdapterType>
    -
    10163 class parser
    -
    10164 {
    -
    10165  using number_integer_t = typename BasicJsonType::number_integer_t;
    -
    10166  using number_unsigned_t = typename BasicJsonType::number_unsigned_t;
    -
    10167  using number_float_t = typename BasicJsonType::number_float_t;
    -
    10168  using string_t = typename BasicJsonType::string_t;
    - -
    10170  using token_type = typename lexer_t::token_type;
    -
    10171 
    -
    10172  public:
    -
    10174  explicit parser(InputAdapterType&& adapter,
    -
    10175  const parser_callback_t<BasicJsonType> cb = nullptr,
    -
    10176  const bool allow_exceptions_ = true,
    -
    10177  const bool skip_comments = false)
    -
    10178  : callback(cb)
    -
    10179  , m_lexer(std::move(adapter), skip_comments)
    -
    10180  , allow_exceptions(allow_exceptions_)
    -
    10181  {
    -
    10182  // read first token
    -
    10183  get_token();
    -
    10184  }
    -
    10185 
    -
    10196  void parse(const bool strict, BasicJsonType& result)
    -
    10197  {
    -
    10198  if (callback)
    -
    10199  {
    -
    10200  json_sax_dom_callback_parser<BasicJsonType> sdp(result, callback, allow_exceptions);
    -
    10201  sax_parse_internal(&sdp);
    -
    10202  result.assert_invariant();
    -
    10203 
    -
    10204  // in strict mode, input must be completely read
    -
    10205  if (strict && (get_token() != token_type::end_of_input))
    -
    10206  {
    -
    10207  sdp.parse_error(m_lexer.get_position(),
    -
    10208  m_lexer.get_token_string(),
    -
    10209  parse_error::create(101, m_lexer.get_position(),
    -
    10210  exception_message(token_type::end_of_input, "value")));
    -
    10211  }
    -
    10212 
    -
    10213  // in case of an error, return discarded value
    -
    10214  if (sdp.is_errored())
    -
    10215  {
    -
    10216  result = value_t::discarded;
    -
    10217  return;
    -
    10218  }
    -
    10219 
    -
    10220  // set top-level value to null if it was discarded by the callback
    -
    10221  // function
    -
    10222  if (result.is_discarded())
    -
    10223  {
    -
    10224  result = nullptr;
    -
    10225  }
    -
    10226  }
    -
    10227  else
    -
    10228  {
    -
    10229  json_sax_dom_parser<BasicJsonType> sdp(result, allow_exceptions);
    -
    10230  sax_parse_internal(&sdp);
    -
    10231  result.assert_invariant();
    -
    10232 
    -
    10233  // in strict mode, input must be completely read
    -
    10234  if (strict && (get_token() != token_type::end_of_input))
    -
    10235  {
    -
    10236  sdp.parse_error(m_lexer.get_position(),
    -
    10237  m_lexer.get_token_string(),
    -
    10238  parse_error::create(101, m_lexer.get_position(),
    -
    10239  exception_message(token_type::end_of_input, "value")));
    -
    10240  }
    -
    10241 
    -
    10242  // in case of an error, return discarded value
    -
    10243  if (sdp.is_errored())
    -
    10244  {
    -
    10245  result = value_t::discarded;
    -
    10246  return;
    -
    10247  }
    -
    10248  }
    -
    10249  }
    -
    10250 
    -
    10257  bool accept(const bool strict = true)
    -
    10258  {
    -
    10259  json_sax_acceptor<BasicJsonType> sax_acceptor;
    -
    10260  return sax_parse(&sax_acceptor, strict);
    -
    10261  }
    -
    10262 
    -
    10263  template<typename SAX>
    - -
    10265  bool sax_parse(SAX* sax, const bool strict = true)
    -
    10266  {
    - -
    10268  const bool result = sax_parse_internal(sax);
    -
    10269 
    -
    10270  // strict mode: next byte must be EOF
    -
    10271  if (result && strict && (get_token() != token_type::end_of_input))
    -
    10272  {
    -
    10273  return sax->parse_error(m_lexer.get_position(),
    -
    10274  m_lexer.get_token_string(),
    -
    10275  parse_error::create(101, m_lexer.get_position(),
    -
    10276  exception_message(token_type::end_of_input, "value")));
    -
    10277  }
    -
    10278 
    -
    10279  return result;
    -
    10280  }
    -
    10281 
    -
    10282  private:
    -
    10283  template<typename SAX>
    - -
    10285  bool sax_parse_internal(SAX* sax)
    -
    10286  {
    -
    10287  // stack to remember the hierarchy of structured values we are parsing
    -
    10288  // true = array; false = object
    -
    10289  std::vector<bool> states;
    -
    10290  // value to avoid a goto (see comment where set to true)
    -
    10291  bool skip_to_state_evaluation = false;
    -
    10292 
    -
    10293  while (true)
    -
    10294  {
    -
    10295  if (!skip_to_state_evaluation)
    -
    10296  {
    -
    10297  // invariant: get_token() was called before each iteration
    -
    10298  switch (last_token)
    -
    10299  {
    -
    10300  case token_type::begin_object:
    -
    10301  {
    -
    10302  if (JSON_HEDLEY_UNLIKELY(!sax->start_object(std::size_t(-1))))
    -
    10303  {
    -
    10304  return false;
    -
    10305  }
    -
    10306 
    -
    10307  // closing } -> we are done
    -
    10308  if (get_token() == token_type::end_object)
    -
    10309  {
    -
    10310  if (JSON_HEDLEY_UNLIKELY(!sax->end_object()))
    -
    10311  {
    -
    10312  return false;
    -
    10313  }
    -
    10314  break;
    -
    10315  }
    -
    10316 
    -
    10317  // parse key
    -
    10318  if (JSON_HEDLEY_UNLIKELY(last_token != token_type::value_string))
    -
    10319  {
    -
    10320  return sax->parse_error(m_lexer.get_position(),
    -
    10321  m_lexer.get_token_string(),
    -
    10322  parse_error::create(101, m_lexer.get_position(),
    -
    10323  exception_message(token_type::value_string, "object key")));
    -
    10324  }
    -
    10325  if (JSON_HEDLEY_UNLIKELY(!sax->key(m_lexer.get_string())))
    -
    10326  {
    -
    10327  return false;
    -
    10328  }
    -
    10329 
    -
    10330  // parse separator (:)
    -
    10331  if (JSON_HEDLEY_UNLIKELY(get_token() != token_type::name_separator))
    -
    10332  {
    -
    10333  return sax->parse_error(m_lexer.get_position(),
    -
    10334  m_lexer.get_token_string(),
    -
    10335  parse_error::create(101, m_lexer.get_position(),
    -
    10336  exception_message(token_type::name_separator, "object separator")));
    -
    10337  }
    -
    10338 
    -
    10339  // remember we are now inside an object
    -
    10340  states.push_back(false);
    -
    10341 
    -
    10342  // parse values
    -
    10343  get_token();
    -
    10344  continue;
    -
    10345  }
    -
    10346 
    -
    10347  case token_type::begin_array:
    -
    10348  {
    -
    10349  if (JSON_HEDLEY_UNLIKELY(!sax->start_array(std::size_t(-1))))
    -
    10350  {
    -
    10351  return false;
    -
    10352  }
    -
    10353 
    -
    10354  // closing ] -> we are done
    -
    10355  if (get_token() == token_type::end_array)
    -
    10356  {
    -
    10357  if (JSON_HEDLEY_UNLIKELY(!sax->end_array()))
    -
    10358  {
    -
    10359  return false;
    -
    10360  }
    -
    10361  break;
    -
    10362  }
    -
    10363 
    -
    10364  // remember we are now inside an array
    -
    10365  states.push_back(true);
    -
    10366 
    -
    10367  // parse values (no need to call get_token)
    -
    10368  continue;
    -
    10369  }
    -
    10370 
    -
    10371  case token_type::value_float:
    -
    10372  {
    -
    10373  const auto res = m_lexer.get_number_float();
    -
    10374 
    -
    10375  if (JSON_HEDLEY_UNLIKELY(!std::isfinite(res)))
    -
    10376  {
    -
    10377  return sax->parse_error(m_lexer.get_position(),
    -
    10378  m_lexer.get_token_string(),
    -
    10379  out_of_range::create(406, "number overflow parsing '" + m_lexer.get_token_string() + "'"));
    -
    10380  }
    -
    10381 
    -
    10382  if (JSON_HEDLEY_UNLIKELY(!sax->number_float(res, m_lexer.get_string())))
    -
    10383  {
    -
    10384  return false;
    -
    10385  }
    -
    10386 
    -
    10387  break;
    -
    10388  }
    -
    10389 
    -
    10390  case token_type::literal_false:
    -
    10391  {
    -
    10392  if (JSON_HEDLEY_UNLIKELY(!sax->boolean(false)))
    -
    10393  {
    -
    10394  return false;
    -
    10395  }
    -
    10396  break;
    -
    10397  }
    -
    10398 
    -
    10399  case token_type::literal_null:
    -
    10400  {
    -
    10401  if (JSON_HEDLEY_UNLIKELY(!sax->null()))
    -
    10402  {
    -
    10403  return false;
    -
    10404  }
    -
    10405  break;
    -
    10406  }
    -
    10407 
    -
    10408  case token_type::literal_true:
    -
    10409  {
    -
    10410  if (JSON_HEDLEY_UNLIKELY(!sax->boolean(true)))
    -
    10411  {
    -
    10412  return false;
    -
    10413  }
    -
    10414  break;
    -
    10415  }
    -
    10416 
    -
    10417  case token_type::value_integer:
    -
    10418  {
    -
    10419  if (JSON_HEDLEY_UNLIKELY(!sax->number_integer(m_lexer.get_number_integer())))
    -
    10420  {
    -
    10421  return false;
    -
    10422  }
    -
    10423  break;
    -
    10424  }
    -
    10425 
    -
    10426  case token_type::value_string:
    -
    10427  {
    -
    10428  if (JSON_HEDLEY_UNLIKELY(!sax->string(m_lexer.get_string())))
    -
    10429  {
    -
    10430  return false;
    -
    10431  }
    -
    10432  break;
    -
    10433  }
    -
    10434 
    -
    10435  case token_type::value_unsigned:
    -
    10436  {
    -
    10437  if (JSON_HEDLEY_UNLIKELY(!sax->number_unsigned(m_lexer.get_number_unsigned())))
    -
    10438  {
    -
    10439  return false;
    -
    10440  }
    -
    10441  break;
    -
    10442  }
    -
    10443 
    -
    10444  case token_type::parse_error:
    -
    10445  {
    -
    10446  // using "uninitialized" to avoid "expected" message
    -
    10447  return sax->parse_error(m_lexer.get_position(),
    -
    10448  m_lexer.get_token_string(),
    -
    10449  parse_error::create(101, m_lexer.get_position(),
    -
    10450  exception_message(token_type::uninitialized, "value")));
    -
    10451  }
    -
    10452 
    -
    10453  default: // the last token was unexpected
    -
    10454  {
    -
    10455  return sax->parse_error(m_lexer.get_position(),
    -
    10456  m_lexer.get_token_string(),
    -
    10457  parse_error::create(101, m_lexer.get_position(),
    -
    10458  exception_message(token_type::literal_or_value, "value")));
    -
    10459  }
    -
    10460  }
    -
    10461  }
    -
    10462  else
    -
    10463  {
    -
    10464  skip_to_state_evaluation = false;
    -
    10465  }
    -
    10466 
    -
    10467  // we reached this line after we successfully parsed a value
    -
    10468  if (states.empty())
    -
    10469  {
    -
    10470  // empty stack: we reached the end of the hierarchy: done
    -
    10471  return true;
    -
    10472  }
    -
    10473 
    -
    10474  if (states.back()) // array
    -
    10475  {
    -
    10476  // comma -> next value
    -
    10477  if (get_token() == token_type::value_separator)
    -
    10478  {
    -
    10479  // parse a new value
    -
    10480  get_token();
    -
    10481  continue;
    -
    10482  }
    -
    10483 
    -
    10484  // closing ]
    -
    10485  if (JSON_HEDLEY_LIKELY(last_token == token_type::end_array))
    -
    10486  {
    -
    10487  if (JSON_HEDLEY_UNLIKELY(!sax->end_array()))
    -
    10488  {
    -
    10489  return false;
    -
    10490  }
    -
    10491 
    -
    10492  // We are done with this array. Before we can parse a
    -
    10493  // new value, we need to evaluate the new state first.
    -
    10494  // By setting skip_to_state_evaluation to false, we
    -
    10495  // are effectively jumping to the beginning of this if.
    -
    10496  JSON_ASSERT(!states.empty());
    -
    10497  states.pop_back();
    -
    10498  skip_to_state_evaluation = true;
    -
    10499  continue;
    -
    10500  }
    -
    10501 
    -
    10502  return sax->parse_error(m_lexer.get_position(),
    -
    10503  m_lexer.get_token_string(),
    -
    10504  parse_error::create(101, m_lexer.get_position(),
    -
    10505  exception_message(token_type::end_array, "array")));
    -
    10506  }
    -
    10507  else // object
    -
    10508  {
    -
    10509  // comma -> next value
    -
    10510  if (get_token() == token_type::value_separator)
    -
    10511  {
    -
    10512  // parse key
    -
    10513  if (JSON_HEDLEY_UNLIKELY(get_token() != token_type::value_string))
    -
    10514  {
    -
    10515  return sax->parse_error(m_lexer.get_position(),
    -
    10516  m_lexer.get_token_string(),
    -
    10517  parse_error::create(101, m_lexer.get_position(),
    -
    10518  exception_message(token_type::value_string, "object key")));
    -
    10519  }
    -
    10520 
    -
    10521  if (JSON_HEDLEY_UNLIKELY(!sax->key(m_lexer.get_string())))
    -
    10522  {
    -
    10523  return false;
    -
    10524  }
    -
    10525 
    -
    10526  // parse separator (:)
    -
    10527  if (JSON_HEDLEY_UNLIKELY(get_token() != token_type::name_separator))
    -
    10528  {
    -
    10529  return sax->parse_error(m_lexer.get_position(),
    -
    10530  m_lexer.get_token_string(),
    -
    10531  parse_error::create(101, m_lexer.get_position(),
    -
    10532  exception_message(token_type::name_separator, "object separator")));
    -
    10533  }
    -
    10534 
    -
    10535  // parse values
    -
    10536  get_token();
    -
    10537  continue;
    -
    10538  }
    -
    10539 
    -
    10540  // closing }
    -
    10541  if (JSON_HEDLEY_LIKELY(last_token == token_type::end_object))
    -
    10542  {
    -
    10543  if (JSON_HEDLEY_UNLIKELY(!sax->end_object()))
    -
    10544  {
    -
    10545  return false;
    -
    10546  }
    -
    10547 
    -
    10548  // We are done with this object. Before we can parse a
    -
    10549  // new value, we need to evaluate the new state first.
    -
    10550  // By setting skip_to_state_evaluation to false, we
    -
    10551  // are effectively jumping to the beginning of this if.
    -
    10552  JSON_ASSERT(!states.empty());
    -
    10553  states.pop_back();
    -
    10554  skip_to_state_evaluation = true;
    -
    10555  continue;
    -
    10556  }
    -
    10557 
    -
    10558  return sax->parse_error(m_lexer.get_position(),
    -
    10559  m_lexer.get_token_string(),
    -
    10560  parse_error::create(101, m_lexer.get_position(),
    -
    10561  exception_message(token_type::end_object, "object")));
    -
    10562  }
    -
    10563  }
    -
    10564  }
    -
    10565 
    -
    10567  token_type get_token()
    -
    10568  {
    -
    10569  return last_token = m_lexer.scan();
    -
    10570  }
    -
    10571 
    -
    10572  std::string exception_message(const token_type expected, const std::string& context)
    -
    10573  {
    -
    10574  std::string error_msg = "syntax error ";
    -
    10575 
    -
    10576  if (!context.empty())
    -
    10577  {
    -
    10578  error_msg += "while parsing " + context + " ";
    -
    10579  }
    -
    10580 
    -
    10581  error_msg += "- ";
    -
    10582 
    -
    10583  if (last_token == token_type::parse_error)
    -
    10584  {
    -
    10585  error_msg += std::string(m_lexer.get_error_message()) + "; last read: '" +
    -
    10586  m_lexer.get_token_string() + "'";
    -
    10587  }
    -
    10588  else
    -
    10589  {
    -
    10590  error_msg += "unexpected " + std::string(lexer_t::token_type_name(last_token));
    -
    10591  }
    -
    10592 
    -
    10593  if (expected != token_type::uninitialized)
    -
    10594  {
    -
    10595  error_msg += "; expected " + std::string(lexer_t::token_type_name(expected));
    -
    10596  }
    -
    10597 
    -
    10598  return error_msg;
    -
    10599  }
    -
    10600 
    -
    10601  private:
    -
    10603  const parser_callback_t<BasicJsonType> callback = nullptr;
    -
    10605  token_type last_token = token_type::uninitialized;
    -
    10607  lexer_t m_lexer;
    -
    10609  const bool allow_exceptions = true;
    -
    10610 };
    -
    10611 } // namespace detail
    -
    10612 } // namespace nlohmann
    -
    10613 
    -
    10614 // #include <nlohmann/detail/iterators/internal_iterator.hpp>
    -
    10615 
    -
    10616 
    -
    10617 // #include <nlohmann/detail/iterators/primitive_iterator.hpp>
    -
    10618 
    -
    10619 
    -
    10620 #include <cstddef> // ptrdiff_t
    -
    10621 #include <limits> // numeric_limits
    -
    10622 
    -
    10623 namespace nlohmann
    -
    10624 {
    -
    10625 namespace detail
    -
    10626 {
    -
    10627 /*
    -
    10628 @brief an iterator for primitive JSON types
    -
    10629 
    -
    10630 This class models an iterator for primitive JSON types (boolean, number,
    -
    10631 string). It's only purpose is to allow the iterator/const_iterator classes
    -
    10632 to "iterate" over primitive values. Internally, the iterator is modeled by
    -
    10633 a `difference_type` variable. Value begin_value (`0`) models the begin,
    -
    10634 end_value (`1`) models past the end.
    -
    10635 */
    -
    10636 class primitive_iterator_t
    -
    10637 {
    -
    10638  private:
    -
    10639  using difference_type = std::ptrdiff_t;
    -
    10640  static constexpr difference_type begin_value = 0;
    -
    10641  static constexpr difference_type end_value = begin_value + 1;
    -
    10642 
    -
    10644  difference_type m_it = (std::numeric_limits<std::ptrdiff_t>::min)();
    -
    10645 
    -
    10646  public:
    -
    10647  constexpr difference_type get_value() const noexcept
    -
    10648  {
    -
    10649  return m_it;
    -
    10650  }
    -
    10651 
    -
    10653  void set_begin() noexcept
    -
    10654  {
    -
    10655  m_it = begin_value;
    -
    10656  }
    -
    10657 
    -
    10659  void set_end() noexcept
    -
    10660  {
    -
    10661  m_it = end_value;
    -
    10662  }
    -
    10663 
    -
    10665  constexpr bool is_begin() const noexcept
    -
    10666  {
    -
    10667  return m_it == begin_value;
    -
    10668  }
    -
    10669 
    -
    10671  constexpr bool is_end() const noexcept
    -
    10672  {
    -
    10673  return m_it == end_value;
    -
    10674  }
    -
    10675 
    -
    10676  friend constexpr bool operator==(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept
    -
    10677  {
    -
    10678  return lhs.m_it == rhs.m_it;
    -
    10679  }
    -
    10680 
    -
    10681  friend constexpr bool operator<(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept
    -
    10682  {
    -
    10683  return lhs.m_it < rhs.m_it;
    -
    10684  }
    -
    10685 
    -
    10686  primitive_iterator_t operator+(difference_type n) noexcept
    -
    10687  {
    -
    10688  auto result = *this;
    -
    10689  result += n;
    -
    10690  return result;
    -
    10691  }
    -
    10692 
    -
    10693  friend constexpr difference_type operator-(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept
    -
    10694  {
    -
    10695  return lhs.m_it - rhs.m_it;
    -
    10696  }
    -
    10697 
    - -
    10699  {
    -
    10700  ++m_it;
    -
    10701  return *this;
    -
    10702  }
    -
    10703 
    -
    10704  primitive_iterator_t const operator++(int) noexcept
    -
    10705  {
    -
    10706  auto result = *this;
    -
    10707  ++m_it;
    -
    10708  return result;
    -
    10709  }
    -
    10710 
    - -
    10712  {
    -
    10713  --m_it;
    -
    10714  return *this;
    -
    10715  }
    -
    10716 
    -
    10717  primitive_iterator_t const operator--(int) noexcept
    -
    10718  {
    -
    10719  auto result = *this;
    -
    10720  --m_it;
    -
    10721  return result;
    -
    10722  }
    -
    10723 
    -
    10724  primitive_iterator_t& operator+=(difference_type n) noexcept
    -
    10725  {
    -
    10726  m_it += n;
    -
    10727  return *this;
    -
    10728  }
    -
    10729 
    -
    10730  primitive_iterator_t& operator-=(difference_type n) noexcept
    -
    10731  {
    -
    10732  m_it -= n;
    -
    10733  return *this;
    -
    10734  }
    -
    10735 };
    -
    10736 } // namespace detail
    -
    10737 } // namespace nlohmann
    -
    10738 
    -
    10739 
    -
    10740 namespace nlohmann
    -
    10741 {
    -
    10742 namespace detail
    -
    10743 {
    -
    10750 template<typename BasicJsonType> struct internal_iterator
    -
    10751 {
    -
    10753  typename BasicJsonType::object_t::iterator object_iterator {};
    -
    10755  typename BasicJsonType::array_t::iterator array_iterator {};
    -
    10757  primitive_iterator_t primitive_iterator {};
    -
    10758 };
    -
    10759 } // namespace detail
    -
    10760 } // namespace nlohmann
    -
    10761 
    -
    10762 // #include <nlohmann/detail/iterators/iter_impl.hpp>
    -
    10763 
    -
    10764 
    -
    10765 #include <iterator> // iterator, random_access_iterator_tag, bidirectional_iterator_tag, advance, next
    -
    10766 #include <type_traits> // conditional, is_const, remove_const
    -
    10767 
    -
    10768 // #include <nlohmann/detail/exceptions.hpp>
    -
    10769 
    -
    10770 // #include <nlohmann/detail/iterators/internal_iterator.hpp>
    -
    10771 
    -
    10772 // #include <nlohmann/detail/iterators/primitive_iterator.hpp>
    -
    10773 
    -
    10774 // #include <nlohmann/detail/macro_scope.hpp>
    -
    10775 
    -
    10776 // #include <nlohmann/detail/meta/cpp_future.hpp>
    -
    10777 
    -
    10778 // #include <nlohmann/detail/meta/type_traits.hpp>
    -
    10779 
    -
    10780 // #include <nlohmann/detail/value_t.hpp>
    -
    10781 
    -
    10782 
    -
    10783 namespace nlohmann
    -
    10784 {
    -
    10785 namespace detail
    -
    10786 {
    -
    10787 // forward declare, to be able to friend it later on
    -
    10788 template<typename IteratorType> class iteration_proxy;
    -
    10789 template<typename IteratorType> class iteration_proxy_value;
    -
    10790 
    -
    10807 template<typename BasicJsonType>
    -
    10808 class iter_impl
    -
    10809 {
    -
    10811  friend iter_impl<typename std::conditional<std::is_const<BasicJsonType>::value, typename std::remove_const<BasicJsonType>::type, const BasicJsonType>::type>;
    -
    10812  friend BasicJsonType;
    -
    10813  friend iteration_proxy<iter_impl>;
    -
    10814  friend iteration_proxy_value<iter_impl>;
    -
    10815 
    -
    10816  using object_t = typename BasicJsonType::object_t;
    -
    10817  using array_t = typename BasicJsonType::array_t;
    -
    10818  // make sure BasicJsonType is basic_json or const basic_json
    -
    10819  static_assert(is_basic_json<typename std::remove_const<BasicJsonType>::type>::value,
    -
    10820  "iter_impl only accepts (const) basic_json");
    -
    10821 
    -
    10822  public:
    -
    10823 
    -
    10829  using iterator_category = std::bidirectional_iterator_tag;
    -
    10830 
    -
    10832  using value_type = typename BasicJsonType::value_type;
    -
    10834  using difference_type = typename BasicJsonType::difference_type;
    -
    10836  using pointer = typename std::conditional<std::is_const<BasicJsonType>::value,
    -
    10837  typename BasicJsonType::const_pointer,
    -
    10838  typename BasicJsonType::pointer>::type;
    -
    10840  using reference =
    -
    10841  typename std::conditional<std::is_const<BasicJsonType>::value,
    -
    10842  typename BasicJsonType::const_reference,
    -
    10843  typename BasicJsonType::reference>::type;
    -
    10844 
    -
    10846  iter_impl() = default;
    -
    10847 
    -
    10854  explicit iter_impl(pointer object) noexcept : m_object(object)
    -
    10855  {
    -
    10856  JSON_ASSERT(m_object != nullptr);
    -
    10857 
    -
    10858  switch (m_object->m_type)
    -
    10859  {
    -
    10860  case value_t::object:
    -
    10861  {
    -
    10862  m_it.object_iterator = typename object_t::iterator();
    -
    10863  break;
    -
    10864  }
    -
    10865 
    -
    10866  case value_t::array:
    -
    10867  {
    -
    10868  m_it.array_iterator = typename array_t::iterator();
    -
    10869  break;
    -
    10870  }
    -
    10871 
    -
    10872  default:
    -
    10873  {
    - -
    10875  break;
    -
    10876  }
    -
    10877  }
    -
    10878  }
    -
    10879 
    - -
    10897  : m_object(other.m_object), m_it(other.m_it)
    -
    10898  {}
    -
    10899 
    - -
    10907  {
    -
    10908  m_object = other.m_object;
    -
    10909  m_it = other.m_it;
    -
    10910  return *this;
    -
    10911  }
    -
    10912 
    -
    10918  iter_impl(const iter_impl<typename std::remove_const<BasicJsonType>::type>& other) noexcept
    -
    10919  : m_object(other.m_object), m_it(other.m_it)
    -
    10920  {}
    -
    10921 
    -
    10928  iter_impl& operator=(const iter_impl<typename std::remove_const<BasicJsonType>::type>& other) noexcept
    -
    10929  {
    -
    10930  m_object = other.m_object;
    -
    10931  m_it = other.m_it;
    -
    10932  return *this;
    -
    10933  }
    -
    10934 
    -
    10935  private:
    -
    10940  void set_begin() noexcept
    -
    10941  {
    -
    10942  JSON_ASSERT(m_object != nullptr);
    -
    10943 
    -
    10944  switch (m_object->m_type)
    -
    10945  {
    -
    10946  case value_t::object:
    -
    10947  {
    -
    10948  m_it.object_iterator = m_object->m_value.object->begin();
    -
    10949  break;
    -
    10950  }
    -
    10951 
    -
    10952  case value_t::array:
    -
    10953  {
    -
    10954  m_it.array_iterator = m_object->m_value.array->begin();
    -
    10955  break;
    -
    10956  }
    -
    10957 
    -
    10958  case value_t::null:
    -
    10959  {
    -
    10960  // set to end so begin()==end() is true: null is empty
    -
    10961  m_it.primitive_iterator.set_end();
    -
    10962  break;
    -
    10963  }
    -
    10964 
    -
    10965  default:
    -
    10966  {
    - -
    10968  break;
    -
    10969  }
    -
    10970  }
    -
    10971  }
    -
    10972 
    -
    10977  void set_end() noexcept
    -
    10978  {
    -
    10979  JSON_ASSERT(m_object != nullptr);
    -
    10980 
    -
    10981  switch (m_object->m_type)
    -
    10982  {
    -
    10983  case value_t::object:
    -
    10984  {
    -
    10985  m_it.object_iterator = m_object->m_value.object->end();
    -
    10986  break;
    -
    10987  }
    -
    10988 
    -
    10989  case value_t::array:
    -
    10990  {
    -
    10991  m_it.array_iterator = m_object->m_value.array->end();
    -
    10992  break;
    -
    10993  }
    -
    10994 
    -
    10995  default:
    -
    10996  {
    -
    10997  m_it.primitive_iterator.set_end();
    -
    10998  break;
    -
    10999  }
    -
    11000  }
    -
    11001  }
    -
    11002 
    -
    11003  public:
    - -
    11009  {
    -
    11010  JSON_ASSERT(m_object != nullptr);
    -
    11011 
    -
    11012  switch (m_object->m_type)
    -
    11013  {
    -
    11014  case value_t::object:
    -
    11015  {
    -
    11016  JSON_ASSERT(m_it.object_iterator != m_object->m_value.object->end());
    -
    11017  return m_it.object_iterator->second;
    -
    11018  }
    -
    11019 
    -
    11020  case value_t::array:
    -
    11021  {
    -
    11022  JSON_ASSERT(m_it.array_iterator != m_object->m_value.array->end());
    -
    11023  return *m_it.array_iterator;
    -
    11024  }
    -
    11025 
    -
    11026  case value_t::null:
    -
    11027  JSON_THROW(invalid_iterator::create(214, "cannot get value"));
    -
    11028 
    -
    11029  default:
    -
    11030  {
    - -
    11032  {
    -
    11033  return *m_object;
    -
    11034  }
    -
    11035 
    -
    11036  JSON_THROW(invalid_iterator::create(214, "cannot get value"));
    -
    11037  }
    -
    11038  }
    -
    11039  }
    -
    11040 
    - -
    11046  {
    -
    11047  JSON_ASSERT(m_object != nullptr);
    -
    11048 
    -
    11049  switch (m_object->m_type)
    -
    11050  {
    -
    11051  case value_t::object:
    -
    11052  {
    -
    11053  JSON_ASSERT(m_it.object_iterator != m_object->m_value.object->end());
    -
    11054  return &(m_it.object_iterator->second);
    -
    11055  }
    -
    11056 
    -
    11057  case value_t::array:
    -
    11058  {
    -
    11059  JSON_ASSERT(m_it.array_iterator != m_object->m_value.array->end());
    -
    11060  return &*m_it.array_iterator;
    -
    11061  }
    -
    11062 
    -
    11063  default:
    -
    11064  {
    - -
    11066  {
    -
    11067  return m_object;
    -
    11068  }
    -
    11069 
    -
    11070  JSON_THROW(invalid_iterator::create(214, "cannot get value"));
    -
    11071  }
    -
    11072  }
    -
    11073  }
    -
    11074 
    - -
    11080  {
    -
    11081  auto result = *this;
    -
    11082  ++(*this);
    -
    11083  return result;
    -
    11084  }
    -
    11085 
    - -
    11091  {
    -
    11092  JSON_ASSERT(m_object != nullptr);
    -
    11093 
    -
    11094  switch (m_object->m_type)
    -
    11095  {
    -
    11096  case value_t::object:
    -
    11097  {
    -
    11098  std::advance(m_it.object_iterator, 1);
    -
    11099  break;
    -
    11100  }
    -
    11101 
    -
    11102  case value_t::array:
    -
    11103  {
    -
    11104  std::advance(m_it.array_iterator, 1);
    -
    11105  break;
    -
    11106  }
    -
    11107 
    -
    11108  default:
    -
    11109  {
    -
    11110  ++m_it.primitive_iterator;
    -
    11111  break;
    -
    11112  }
    -
    11113  }
    -
    11114 
    -
    11115  return *this;
    -
    11116  }
    -
    11117 
    - -
    11123  {
    -
    11124  auto result = *this;
    -
    11125  --(*this);
    -
    11126  return result;
    -
    11127  }
    -
    11128 
    - -
    11134  {
    -
    11135  JSON_ASSERT(m_object != nullptr);
    -
    11136 
    -
    11137  switch (m_object->m_type)
    -
    11138  {
    -
    11139  case value_t::object:
    -
    11140  {
    -
    11141  std::advance(m_it.object_iterator, -1);
    -
    11142  break;
    -
    11143  }
    -
    11144 
    -
    11145  case value_t::array:
    -
    11146  {
    -
    11147  std::advance(m_it.array_iterator, -1);
    -
    11148  break;
    -
    11149  }
    -
    11150 
    -
    11151  default:
    -
    11152  {
    -
    11153  --m_it.primitive_iterator;
    -
    11154  break;
    -
    11155  }
    -
    11156  }
    -
    11157 
    -
    11158  return *this;
    -
    11159  }
    -
    11160 
    -
    11165  bool operator==(const iter_impl& other) const
    -
    11166  {
    -
    11167  // if objects are not the same, the comparison is undefined
    -
    11168  if (JSON_HEDLEY_UNLIKELY(m_object != other.m_object))
    -
    11169  {
    -
    11170  JSON_THROW(invalid_iterator::create(212, "cannot compare iterators of different containers"));
    -
    11171  }
    -
    11172 
    -
    11173  JSON_ASSERT(m_object != nullptr);
    -
    11174 
    -
    11175  switch (m_object->m_type)
    -
    11176  {
    -
    11177  case value_t::object:
    -
    11178  return (m_it.object_iterator == other.m_it.object_iterator);
    -
    11179 
    -
    11180  case value_t::array:
    -
    11181  return (m_it.array_iterator == other.m_it.array_iterator);
    -
    11182 
    -
    11183  default:
    -
    11184  return (m_it.primitive_iterator == other.m_it.primitive_iterator);
    -
    11185  }
    -
    11186  }
    -
    11187 
    -
    11192  bool operator!=(const iter_impl& other) const
    -
    11193  {
    -
    11194  return !operator==(other);
    -
    11195  }
    -
    11196 
    -
    11201  bool operator<(const iter_impl& other) const
    -
    11202  {
    -
    11203  // if objects are not the same, the comparison is undefined
    -
    11204  if (JSON_HEDLEY_UNLIKELY(m_object != other.m_object))
    -
    11205  {
    -
    11206  JSON_THROW(invalid_iterator::create(212, "cannot compare iterators of different containers"));
    -
    11207  }
    -
    11208 
    -
    11209  JSON_ASSERT(m_object != nullptr);
    -
    11210 
    -
    11211  switch (m_object->m_type)
    -
    11212  {
    -
    11213  case value_t::object:
    -
    11214  JSON_THROW(invalid_iterator::create(213, "cannot compare order of object iterators"));
    -
    11215 
    -
    11216  case value_t::array:
    -
    11217  return (m_it.array_iterator < other.m_it.array_iterator);
    -
    11218 
    -
    11219  default:
    -
    11220  return (m_it.primitive_iterator < other.m_it.primitive_iterator);
    -
    11221  }
    -
    11222  }
    -
    11223 
    -
    11228  bool operator<=(const iter_impl& other) const
    -
    11229  {
    -
    11230  return !other.operator < (*this);
    -
    11231  }
    -
    11232 
    -
    11237  bool operator>(const iter_impl& other) const
    -
    11238  {
    -
    11239  return !operator<=(other);
    -
    11240  }
    -
    11241 
    -
    11246  bool operator>=(const iter_impl& other) const
    -
    11247  {
    -
    11248  return !operator<(other);
    -
    11249  }
    -
    11250 
    - -
    11256  {
    -
    11257  JSON_ASSERT(m_object != nullptr);
    -
    11258 
    -
    11259  switch (m_object->m_type)
    -
    11260  {
    -
    11261  case value_t::object:
    -
    11262  JSON_THROW(invalid_iterator::create(209, "cannot use offsets with object iterators"));
    -
    11263 
    -
    11264  case value_t::array:
    -
    11265  {
    -
    11266  std::advance(m_it.array_iterator, i);
    -
    11267  break;
    -
    11268  }
    -
    11269 
    -
    11270  default:
    -
    11271  {
    -
    11272  m_it.primitive_iterator += i;
    -
    11273  break;
    -
    11274  }
    -
    11275  }
    -
    11276 
    -
    11277  return *this;
    -
    11278  }
    -
    11279 
    - -
    11285  {
    -
    11286  return operator+=(-i);
    -
    11287  }
    -
    11288 
    - -
    11294  {
    -
    11295  auto result = *this;
    -
    11296  result += i;
    -
    11297  return result;
    -
    11298  }
    -
    11299 
    - -
    11305  {
    -
    11306  auto result = it;
    -
    11307  result += i;
    -
    11308  return result;
    -
    11309  }
    -
    11310 
    - -
    11316  {
    -
    11317  auto result = *this;
    -
    11318  result -= i;
    -
    11319  return result;
    -
    11320  }
    -
    11321 
    - -
    11327  {
    -
    11328  JSON_ASSERT(m_object != nullptr);
    -
    11329 
    -
    11330  switch (m_object->m_type)
    -
    11331  {
    -
    11332  case value_t::object:
    -
    11333  JSON_THROW(invalid_iterator::create(209, "cannot use offsets with object iterators"));
    -
    11334 
    -
    11335  case value_t::array:
    -
    11336  return m_it.array_iterator - other.m_it.array_iterator;
    -
    11337 
    -
    11338  default:
    -
    11339  return m_it.primitive_iterator - other.m_it.primitive_iterator;
    -
    11340  }
    -
    11341  }
    -
    11342 
    - -
    11348  {
    -
    11349  JSON_ASSERT(m_object != nullptr);
    -
    11350 
    -
    11351  switch (m_object->m_type)
    -
    11352  {
    -
    11353  case value_t::object:
    -
    11354  JSON_THROW(invalid_iterator::create(208, "cannot use operator[] for object iterators"));
    -
    11355 
    -
    11356  case value_t::array:
    -
    11357  return *std::next(m_it.array_iterator, n);
    -
    11358 
    -
    11359  case value_t::null:
    -
    11360  JSON_THROW(invalid_iterator::create(214, "cannot get value"));
    -
    11361 
    -
    11362  default:
    -
    11363  {
    - -
    11365  {
    -
    11366  return *m_object;
    -
    11367  }
    -
    11368 
    -
    11369  JSON_THROW(invalid_iterator::create(214, "cannot get value"));
    -
    11370  }
    -
    11371  }
    -
    11372  }
    -
    11373 
    -
    11378  const typename object_t::key_type& key() const
    -
    11379  {
    -
    11380  JSON_ASSERT(m_object != nullptr);
    -
    11381 
    -
    11382  if (JSON_HEDLEY_LIKELY(m_object->is_object()))
    -
    11383  {
    -
    11384  return m_it.object_iterator->first;
    -
    11385  }
    -
    11386 
    -
    11387  JSON_THROW(invalid_iterator::create(207, "cannot use key() for non-object iterators"));
    -
    11388  }
    -
    11389 
    - -
    11395  {
    -
    11396  return operator*();
    -
    11397  }
    -
    11398 
    -
    11399  private:
    -
    11401  pointer m_object = nullptr;
    - -
    11404 };
    -
    11405 } // namespace detail
    -
    11406 } // namespace nlohmann
    -
    11407 
    -
    11408 // #include <nlohmann/detail/iterators/iteration_proxy.hpp>
    -
    11409 
    -
    11410 // #include <nlohmann/detail/iterators/json_reverse_iterator.hpp>
    -
    11411 
    -
    11412 
    -
    11413 #include <cstddef> // ptrdiff_t
    -
    11414 #include <iterator> // reverse_iterator
    -
    11415 #include <utility> // declval
    -
    11416 
    -
    11417 namespace nlohmann
    -
    11418 {
    -
    11419 namespace detail
    -
    11420 {
    -
    11422 // reverse_iterator //
    -
    11424 
    -
    11443 template<typename Base>
    -
    11444 class json_reverse_iterator : public std::reverse_iterator<Base>
    -
    11445 {
    -
    11446  public:
    -
    11447  using difference_type = std::ptrdiff_t;
    -
    11449  using base_iterator = std::reverse_iterator<Base>;
    -
    11451  using reference = typename Base::reference;
    -
    11452 
    -
    11454  explicit json_reverse_iterator(const typename base_iterator::iterator_type& it) noexcept
    -
    11455  : base_iterator(it) {}
    -
    11456 
    -
    11458  explicit json_reverse_iterator(const base_iterator& it) noexcept : base_iterator(it) {}
    -
    11459 
    - -
    11462  {
    -
    11463  return static_cast<json_reverse_iterator>(base_iterator::operator++(1));
    -
    11464  }
    -
    11465 
    - -
    11468  {
    -
    11469  return static_cast<json_reverse_iterator&>(base_iterator::operator++());
    -
    11470  }
    -
    11471 
    - -
    11474  {
    -
    11475  return static_cast<json_reverse_iterator>(base_iterator::operator--(1));
    -
    11476  }
    -
    11477 
    - -
    11480  {
    -
    11481  return static_cast<json_reverse_iterator&>(base_iterator::operator--());
    -
    11482  }
    -
    11483 
    - -
    11486  {
    -
    11487  return static_cast<json_reverse_iterator&>(base_iterator::operator+=(i));
    -
    11488  }
    -
    11489 
    - -
    11492  {
    -
    11493  return static_cast<json_reverse_iterator>(base_iterator::operator+(i));
    -
    11494  }
    -
    11495 
    - -
    11498  {
    -
    11499  return static_cast<json_reverse_iterator>(base_iterator::operator-(i));
    -
    11500  }
    -
    11501 
    - -
    11504  {
    -
    11505  return base_iterator(*this) - base_iterator(other);
    -
    11506  }
    -
    11507 
    - -
    11510  {
    -
    11511  return *(this->operator+(n));
    -
    11512  }
    -
    11513 
    -
    11515  auto key() const -> decltype(std::declval<Base>().key())
    -
    11516  {
    -
    11517  auto it = --this->base();
    -
    11518  return it.key();
    -
    11519  }
    -
    11520 
    - -
    11523  {
    -
    11524  auto it = --this->base();
    -
    11525  return it.operator * ();
    -
    11526  }
    -
    11527 };
    -
    11528 } // namespace detail
    -
    11529 } // namespace nlohmann
    -
    11530 
    -
    11531 // #include <nlohmann/detail/iterators/primitive_iterator.hpp>
    -
    11532 
    -
    11533 // #include <nlohmann/detail/json_pointer.hpp>
    -
    11534 
    -
    11535 
    -
    11536 #include <algorithm> // all_of
    -
    11537 #include <cctype> // isdigit
    -
    11538 #include <limits> // max
    -
    11539 #include <numeric> // accumulate
    -
    11540 #include <string> // string
    -
    11541 #include <utility> // move
    -
    11542 #include <vector> // vector
    -
    11543 
    -
    11544 // #include <nlohmann/detail/exceptions.hpp>
    -
    11545 
    -
    11546 // #include <nlohmann/detail/macro_scope.hpp>
    -
    11547 
    -
    11548 // #include <nlohmann/detail/value_t.hpp>
    -
    11549 
    -
    11550 
    -
    11551 namespace nlohmann
    -
    11552 {
    -
    11553 template<typename BasicJsonType>
    -
    11554 class json_pointer
    -
    11555 {
    -
    11556  // allow basic_json to access private members
    - -
    11558  friend class basic_json;
    -
    11559 
    -
    11560  public:
    -
    11582  explicit json_pointer(const std::string& s = "")
    -
    11583  : reference_tokens(split(s))
    -
    11584  {}
    -
    11585 
    -
    11600  std::string to_string() const
    -
    11601  {
    -
    11602  return std::accumulate(reference_tokens.begin(), reference_tokens.end(),
    -
    11603  std::string{},
    -
    11604  [](const std::string & a, const std::string & b)
    -
    11605  {
    -
    11606  return a + "/" + escape(b);
    -
    11607  });
    -
    11608  }
    -
    11609 
    -
    11611  operator std::string() const
    -
    11612  {
    -
    11613  return to_string();
    -
    11614  }
    -
    11615 
    - -
    11633  {
    -
    11634  reference_tokens.insert(reference_tokens.end(),
    -
    11635  ptr.reference_tokens.begin(),
    -
    11636  ptr.reference_tokens.end());
    -
    11637  return *this;
    -
    11638  }
    -
    11639 
    -
    11656  json_pointer& operator/=(std::string token)
    -
    11657  {
    -
    11658  push_back(std::move(token));
    -
    11659  return *this;
    -
    11660  }
    -
    11661 
    -
    11678  json_pointer& operator/=(std::size_t array_idx)
    -
    11679  {
    -
    11680  return *this /= std::to_string(array_idx);
    -
    11681  }
    -
    11682 
    - -
    11699  const json_pointer& rhs)
    -
    11700  {
    -
    11701  return json_pointer(lhs) /= rhs;
    -
    11702  }
    -
    11703 
    -
    11719  friend json_pointer operator/(const json_pointer& ptr, std::string token)
    -
    11720  {
    -
    11721  return json_pointer(ptr) /= std::move(token);
    -
    11722  }
    -
    11723 
    -
    11739  friend json_pointer operator/(const json_pointer& ptr, std::size_t array_idx)
    -
    11740  {
    -
    11741  return json_pointer(ptr) /= array_idx;
    -
    11742  }
    -
    11743 
    - -
    11758  {
    -
    11759  if (empty())
    -
    11760  {
    -
    11761  return *this;
    -
    11762  }
    -
    11763 
    -
    11764  json_pointer res = *this;
    -
    11765  res.pop_back();
    -
    11766  return res;
    -
    11767  }
    -
    11768 
    -
    11782  void pop_back()
    -
    11783  {
    -
    11784  if (JSON_HEDLEY_UNLIKELY(empty()))
    -
    11785  {
    -
    11786  JSON_THROW(detail::out_of_range::create(405, "JSON pointer has no parent"));
    -
    11787  }
    -
    11788 
    -
    11789  reference_tokens.pop_back();
    -
    11790  }
    -
    11791 
    -
    11806  const std::string& back() const
    -
    11807  {
    -
    11808  if (JSON_HEDLEY_UNLIKELY(empty()))
    -
    11809  {
    -
    11810  JSON_THROW(detail::out_of_range::create(405, "JSON pointer has no parent"));
    -
    11811  }
    -
    11812 
    -
    11813  return reference_tokens.back();
    -
    11814  }
    -
    11815 
    -
    11828  void push_back(const std::string& token)
    -
    11829  {
    -
    11830  reference_tokens.push_back(token);
    -
    11831  }
    -
    11832 
    -
    11834  void push_back(std::string&& token)
    -
    11835  {
    -
    11836  reference_tokens.push_back(std::move(token));
    -
    11837  }
    -
    11838 
    -
    11853  bool empty() const noexcept
    -
    11854  {
    -
    11855  return reference_tokens.empty();
    -
    11856  }
    -
    11857 
    -
    11858  private:
    -
    11869  static typename BasicJsonType::size_type array_index(const std::string& s)
    -
    11870  {
    -
    11871  using size_type = typename BasicJsonType::size_type;
    -
    11872 
    -
    11873  // error condition (cf. RFC 6901, Sect. 4)
    -
    11874  if (JSON_HEDLEY_UNLIKELY(s.size() > 1 && s[0] == '0'))
    -
    11875  {
    - -
    11877  "array index '" + s +
    -
    11878  "' must not begin with '0'"));
    -
    11879  }
    -
    11880 
    -
    11881  // error condition (cf. RFC 6901, Sect. 4)
    -
    11882  if (JSON_HEDLEY_UNLIKELY(s.size() > 1 && !(s[0] >= '1' && s[0] <= '9')))
    -
    11883  {
    -
    11884  JSON_THROW(detail::parse_error::create(109, 0, "array index '" + s + "' is not a number"));
    -
    11885  }
    -
    11886 
    -
    11887  std::size_t processed_chars = 0;
    -
    11888  unsigned long long res = 0;
    -
    11889  JSON_TRY
    -
    11890  {
    -
    11891  res = std::stoull(s, &processed_chars);
    -
    11892  }
    -
    11893  JSON_CATCH(std::out_of_range&)
    -
    11894  {
    -
    11895  JSON_THROW(detail::out_of_range::create(404, "unresolved reference token '" + s + "'"));
    -
    11896  }
    -
    11897 
    -
    11898  // check if the string was completely read
    -
    11899  if (JSON_HEDLEY_UNLIKELY(processed_chars != s.size()))
    -
    11900  {
    -
    11901  JSON_THROW(detail::out_of_range::create(404, "unresolved reference token '" + s + "'"));
    -
    11902  }
    -
    11903 
    -
    11904  // only triggered on special platforms (like 32bit), see also
    -
    11905  // https://github.com/nlohmann/json/pull/2203
    -
    11906  if (res >= static_cast<unsigned long long>((std::numeric_limits<size_type>::max)()))
    -
    11907  {
    -
    11908  JSON_THROW(detail::out_of_range::create(410, "array index " + s + " exceeds size_type")); // LCOV_EXCL_LINE
    -
    11909  }
    -
    11910 
    -
    11911  return static_cast<size_type>(res);
    -
    11912  }
    -
    11913 
    -
    11914  json_pointer top() const
    -
    11915  {
    -
    11916  if (JSON_HEDLEY_UNLIKELY(empty()))
    -
    11917  {
    -
    11918  JSON_THROW(detail::out_of_range::create(405, "JSON pointer has no parent"));
    -
    11919  }
    -
    11920 
    -
    11921  json_pointer result = *this;
    -
    11922  result.reference_tokens = {reference_tokens[0]};
    -
    11923  return result;
    -
    11924  }
    -
    11925 
    -
    11934  BasicJsonType& get_and_create(BasicJsonType& j) const
    -
    11935  {
    -
    11936  auto result = &j;
    -
    11937 
    -
    11938  // in case no reference tokens exist, return a reference to the JSON value
    -
    11939  // j which will be overwritten by a primitive value
    -
    11940  for (const auto& reference_token : reference_tokens)
    -
    11941  {
    -
    11942  switch (result->type())
    -
    11943  {
    -
    11944  case detail::value_t::null:
    -
    11945  {
    -
    11946  if (reference_token == "0")
    -
    11947  {
    -
    11948  // start a new array if reference token is 0
    -
    11949  result = &result->operator[](0);
    -
    11950  }
    -
    11951  else
    -
    11952  {
    -
    11953  // start a new object otherwise
    -
    11954  result = &result->operator[](reference_token);
    -
    11955  }
    -
    11956  break;
    -
    11957  }
    -
    11958 
    - -
    11960  {
    -
    11961  // create an entry in the object
    -
    11962  result = &result->operator[](reference_token);
    -
    11963  break;
    -
    11964  }
    -
    11965 
    - -
    11967  {
    -
    11968  // create an entry in the array
    -
    11969  result = &result->operator[](array_index(reference_token));
    -
    11970  break;
    -
    11971  }
    -
    11972 
    -
    11973  /*
    -
    11974  The following code is only reached if there exists a reference
    -
    11975  token _and_ the current value is primitive. In this case, we have
    -
    11976  an error situation, because primitive values may only occur as
    -
    11977  single value; that is, with an empty list of reference tokens.
    -
    11978  */
    -
    11979  default:
    -
    11980  JSON_THROW(detail::type_error::create(313, "invalid value to unflatten"));
    -
    11981  }
    -
    11982  }
    -
    11983 
    -
    11984  return *result;
    -
    11985  }
    -
    11986 
    -
    12006  BasicJsonType& get_unchecked(BasicJsonType* ptr) const
    -
    12007  {
    -
    12008  for (const auto& reference_token : reference_tokens)
    -
    12009  {
    -
    12010  // convert null values to arrays or objects before continuing
    -
    12011  if (ptr->is_null())
    -
    12012  {
    -
    12013  // check if reference token is a number
    -
    12014  const bool nums =
    -
    12015  std::all_of(reference_token.begin(), reference_token.end(),
    -
    12016  [](const unsigned char x)
    -
    12017  {
    -
    12018  return std::isdigit(x);
    -
    12019  });
    -
    12020 
    -
    12021  // change value to array for numbers or "-" or to object otherwise
    -
    12022  *ptr = (nums || reference_token == "-")
    - - -
    12025  }
    -
    12026 
    -
    12027  switch (ptr->type())
    -
    12028  {
    - -
    12030  {
    -
    12031  // use unchecked object access
    -
    12032  ptr = &ptr->operator[](reference_token);
    -
    12033  break;
    -
    12034  }
    -
    12035 
    - -
    12037  {
    -
    12038  if (reference_token == "-")
    -
    12039  {
    -
    12040  // explicitly treat "-" as index beyond the end
    -
    12041  ptr = &ptr->operator[](ptr->m_value.array->size());
    -
    12042  }
    -
    12043  else
    -
    12044  {
    -
    12045  // convert array index to number; unchecked access
    -
    12046  ptr = &ptr->operator[](array_index(reference_token));
    -
    12047  }
    -
    12048  break;
    -
    12049  }
    -
    12050 
    -
    12051  default:
    -
    12052  JSON_THROW(detail::out_of_range::create(404, "unresolved reference token '" + reference_token + "'"));
    -
    12053  }
    -
    12054  }
    -
    12055 
    -
    12056  return *ptr;
    -
    12057  }
    -
    12058 
    -
    12065  BasicJsonType& get_checked(BasicJsonType* ptr) const
    -
    12066  {
    -
    12067  for (const auto& reference_token : reference_tokens)
    -
    12068  {
    -
    12069  switch (ptr->type())
    -
    12070  {
    - -
    12072  {
    -
    12073  // note: at performs range check
    -
    12074  ptr = &ptr->at(reference_token);
    -
    12075  break;
    -
    12076  }
    -
    12077 
    - -
    12079  {
    -
    12080  if (JSON_HEDLEY_UNLIKELY(reference_token == "-"))
    -
    12081  {
    -
    12082  // "-" always fails the range check
    - -
    12084  "array index '-' (" + std::to_string(ptr->m_value.array->size()) +
    -
    12085  ") is out of range"));
    -
    12086  }
    -
    12087 
    -
    12088  // note: at performs range check
    -
    12089  ptr = &ptr->at(array_index(reference_token));
    -
    12090  break;
    -
    12091  }
    -
    12092 
    -
    12093  default:
    -
    12094  JSON_THROW(detail::out_of_range::create(404, "unresolved reference token '" + reference_token + "'"));
    -
    12095  }
    -
    12096  }
    -
    12097 
    -
    12098  return *ptr;
    -
    12099  }
    -
    12100 
    -
    12114  const BasicJsonType& get_unchecked(const BasicJsonType* ptr) const
    -
    12115  {
    -
    12116  for (const auto& reference_token : reference_tokens)
    -
    12117  {
    -
    12118  switch (ptr->type())
    -
    12119  {
    - -
    12121  {
    -
    12122  // use unchecked object access
    -
    12123  ptr = &ptr->operator[](reference_token);
    -
    12124  break;
    -
    12125  }
    -
    12126 
    - -
    12128  {
    -
    12129  if (JSON_HEDLEY_UNLIKELY(reference_token == "-"))
    -
    12130  {
    -
    12131  // "-" cannot be used for const access
    - -
    12133  "array index '-' (" + std::to_string(ptr->m_value.array->size()) +
    -
    12134  ") is out of range"));
    -
    12135  }
    -
    12136 
    -
    12137  // use unchecked array access
    -
    12138  ptr = &ptr->operator[](array_index(reference_token));
    -
    12139  break;
    -
    12140  }
    -
    12141 
    -
    12142  default:
    -
    12143  JSON_THROW(detail::out_of_range::create(404, "unresolved reference token '" + reference_token + "'"));
    -
    12144  }
    -
    12145  }
    -
    12146 
    -
    12147  return *ptr;
    -
    12148  }
    -
    12149 
    -
    12156  const BasicJsonType& get_checked(const BasicJsonType* ptr) const
    -
    12157  {
    -
    12158  for (const auto& reference_token : reference_tokens)
    -
    12159  {
    -
    12160  switch (ptr->type())
    -
    12161  {
    - -
    12163  {
    -
    12164  // note: at performs range check
    -
    12165  ptr = &ptr->at(reference_token);
    -
    12166  break;
    -
    12167  }
    -
    12168 
    - -
    12170  {
    -
    12171  if (JSON_HEDLEY_UNLIKELY(reference_token == "-"))
    -
    12172  {
    -
    12173  // "-" always fails the range check
    - -
    12175  "array index '-' (" + std::to_string(ptr->m_value.array->size()) +
    -
    12176  ") is out of range"));
    -
    12177  }
    -
    12178 
    -
    12179  // note: at performs range check
    -
    12180  ptr = &ptr->at(array_index(reference_token));
    -
    12181  break;
    -
    12182  }
    -
    12183 
    -
    12184  default:
    -
    12185  JSON_THROW(detail::out_of_range::create(404, "unresolved reference token '" + reference_token + "'"));
    -
    12186  }
    -
    12187  }
    -
    12188 
    -
    12189  return *ptr;
    -
    12190  }
    -
    12191 
    -
    12196  bool contains(const BasicJsonType* ptr) const
    -
    12197  {
    -
    12198  for (const auto& reference_token : reference_tokens)
    -
    12199  {
    -
    12200  switch (ptr->type())
    -
    12201  {
    - -
    12203  {
    -
    12204  if (!ptr->contains(reference_token))
    -
    12205  {
    -
    12206  // we did not find the key in the object
    -
    12207  return false;
    -
    12208  }
    -
    12209 
    -
    12210  ptr = &ptr->operator[](reference_token);
    -
    12211  break;
    -
    12212  }
    -
    12213 
    - -
    12215  {
    -
    12216  if (JSON_HEDLEY_UNLIKELY(reference_token == "-"))
    -
    12217  {
    -
    12218  // "-" always fails the range check
    -
    12219  return false;
    -
    12220  }
    -
    12221  if (JSON_HEDLEY_UNLIKELY(reference_token.size() == 1 && !("0" <= reference_token && reference_token <= "9")))
    -
    12222  {
    -
    12223  // invalid char
    -
    12224  return false;
    -
    12225  }
    -
    12226  if (JSON_HEDLEY_UNLIKELY(reference_token.size() > 1))
    -
    12227  {
    -
    12228  if (JSON_HEDLEY_UNLIKELY(!('1' <= reference_token[0] && reference_token[0] <= '9')))
    -
    12229  {
    -
    12230  // first char should be between '1' and '9'
    -
    12231  return false;
    -
    12232  }
    -
    12233  for (std::size_t i = 1; i < reference_token.size(); i++)
    -
    12234  {
    -
    12235  if (JSON_HEDLEY_UNLIKELY(!('0' <= reference_token[i] && reference_token[i] <= '9')))
    -
    12236  {
    -
    12237  // other char should be between '0' and '9'
    -
    12238  return false;
    -
    12239  }
    -
    12240  }
    -
    12241  }
    -
    12242 
    -
    12243  const auto idx = array_index(reference_token);
    -
    12244  if (idx >= ptr->size())
    -
    12245  {
    -
    12246  // index out of range
    -
    12247  return false;
    -
    12248  }
    -
    12249 
    -
    12250  ptr = &ptr->operator[](idx);
    -
    12251  break;
    -
    12252  }
    -
    12253 
    -
    12254  default:
    -
    12255  {
    -
    12256  // we do not expect primitive values if there is still a
    -
    12257  // reference token to process
    -
    12258  return false;
    -
    12259  }
    -
    12260  }
    -
    12261  }
    -
    12262 
    -
    12263  // no reference token left means we found a primitive value
    -
    12264  return true;
    -
    12265  }
    -
    12266 
    -
    12276  static std::vector<std::string> split(const std::string& reference_string)
    -
    12277  {
    -
    12278  std::vector<std::string> result;
    -
    12279 
    -
    12280  // special case: empty reference string -> no reference tokens
    -
    12281  if (reference_string.empty())
    -
    12282  {
    -
    12283  return result;
    -
    12284  }
    -
    12285 
    -
    12286  // check if nonempty reference string begins with slash
    -
    12287  if (JSON_HEDLEY_UNLIKELY(reference_string[0] != '/'))
    -
    12288  {
    - -
    12290  "JSON pointer must be empty or begin with '/' - was: '" +
    -
    12291  reference_string + "'"));
    -
    12292  }
    -
    12293 
    -
    12294  // extract the reference tokens:
    -
    12295  // - slash: position of the last read slash (or end of string)
    -
    12296  // - start: position after the previous slash
    -
    12297  for (
    -
    12298  // search for the first slash after the first character
    -
    12299  std::size_t slash = reference_string.find_first_of('/', 1),
    -
    12300  // set the beginning of the first reference token
    -
    12301  start = 1;
    -
    12302  // we can stop if start == 0 (if slash == std::string::npos)
    -
    12303  start != 0;
    -
    12304  // set the beginning of the next reference token
    -
    12305  // (will eventually be 0 if slash == std::string::npos)
    -
    12306  start = (slash == std::string::npos) ? 0 : slash + 1,
    -
    12307  // find next slash
    -
    12308  slash = reference_string.find_first_of('/', start))
    -
    12309  {
    -
    12310  // use the text between the beginning of the reference token
    -
    12311  // (start) and the last slash (slash).
    -
    12312  auto reference_token = reference_string.substr(start, slash - start);
    -
    12313 
    -
    12314  // check reference tokens are properly escaped
    -
    12315  for (std::size_t pos = reference_token.find_first_of('~');
    -
    12316  pos != std::string::npos;
    -
    12317  pos = reference_token.find_first_of('~', pos + 1))
    -
    12318  {
    -
    12319  JSON_ASSERT(reference_token[pos] == '~');
    -
    12320 
    -
    12321  // ~ must be followed by 0 or 1
    -
    12322  if (JSON_HEDLEY_UNLIKELY(pos == reference_token.size() - 1 ||
    -
    12323  (reference_token[pos + 1] != '0' &&
    -
    12324  reference_token[pos + 1] != '1')))
    -
    12325  {
    -
    12326  JSON_THROW(detail::parse_error::create(108, 0, "escape character '~' must be followed with '0' or '1'"));
    -
    12327  }
    -
    12328  }
    -
    12329 
    -
    12330  // finally, store the reference token
    -
    12331  unescape(reference_token);
    -
    12332  result.push_back(reference_token);
    -
    12333  }
    -
    12334 
    -
    12335  return result;
    -
    12336  }
    -
    12337 
    -
    12351  static void replace_substring(std::string& s, const std::string& f,
    -
    12352  const std::string& t)
    -
    12353  {
    -
    12354  JSON_ASSERT(!f.empty());
    -
    12355  for (auto pos = s.find(f); // find first occurrence of f
    -
    12356  pos != std::string::npos; // make sure f was found
    -
    12357  s.replace(pos, f.size(), t), // replace with t, and
    -
    12358  pos = s.find(f, pos + t.size())) // find next occurrence of f
    -
    12359  {}
    -
    12360  }
    -
    12361 
    -
    12363  static std::string escape(std::string s)
    -
    12364  {
    -
    12365  replace_substring(s, "~", "~0");
    -
    12366  replace_substring(s, "/", "~1");
    -
    12367  return s;
    -
    12368  }
    -
    12369 
    -
    12371  static void unescape(std::string& s)
    -
    12372  {
    -
    12373  replace_substring(s, "~1", "/");
    -
    12374  replace_substring(s, "~0", "~");
    -
    12375  }
    -
    12376 
    -
    12384  static void flatten(const std::string& reference_string,
    -
    12385  const BasicJsonType& value,
    -
    12386  BasicJsonType& result)
    -
    12387  {
    -
    12388  switch (value.type())
    -
    12389  {
    - -
    12391  {
    -
    12392  if (value.m_value.array->empty())
    -
    12393  {
    -
    12394  // flatten empty array as null
    -
    12395  result[reference_string] = nullptr;
    -
    12396  }
    -
    12397  else
    -
    12398  {
    -
    12399  // iterate array and use index as reference string
    -
    12400  for (std::size_t i = 0; i < value.m_value.array->size(); ++i)
    -
    12401  {
    -
    12402  flatten(reference_string + "/" + std::to_string(i),
    -
    12403  value.m_value.array->operator[](i), result);
    -
    12404  }
    -
    12405  }
    -
    12406  break;
    -
    12407  }
    -
    12408 
    - -
    12410  {
    -
    12411  if (value.m_value.object->empty())
    -
    12412  {
    -
    12413  // flatten empty object as null
    -
    12414  result[reference_string] = nullptr;
    -
    12415  }
    -
    12416  else
    -
    12417  {
    -
    12418  // iterate object and use keys as reference string
    -
    12419  for (const auto& element : *value.m_value.object)
    -
    12420  {
    -
    12421  flatten(reference_string + "/" + escape(element.first), element.second, result);
    -
    12422  }
    -
    12423  }
    -
    12424  break;
    -
    12425  }
    -
    12426 
    -
    12427  default:
    -
    12428  {
    -
    12429  // add primitive value with its reference string
    -
    12430  result[reference_string] = value;
    -
    12431  break;
    -
    12432  }
    -
    12433  }
    -
    12434  }
    -
    12435 
    -
    12446  static BasicJsonType
    -
    12447  unflatten(const BasicJsonType& value)
    -
    12448  {
    -
    12449  if (JSON_HEDLEY_UNLIKELY(!value.is_object()))
    -
    12450  {
    -
    12451  JSON_THROW(detail::type_error::create(314, "only objects can be unflattened"));
    -
    12452  }
    -
    12453 
    -
    12454  BasicJsonType result;
    -
    12455 
    -
    12456  // iterate the JSON object values
    -
    12457  for (const auto& element : *value.m_value.object)
    -
    12458  {
    -
    12459  if (JSON_HEDLEY_UNLIKELY(!element.second.is_primitive()))
    -
    12460  {
    -
    12461  JSON_THROW(detail::type_error::create(315, "values in object must be primitive"));
    -
    12462  }
    -
    12463 
    -
    12464  // assign value to reference pointed to by JSON pointer; Note that if
    -
    12465  // the JSON pointer is "" (i.e., points to the whole value), function
    -
    12466  // get_and_create returns a reference to result itself. An assignment
    -
    12467  // will then create a primitive value.
    -
    12468  json_pointer(element.first).get_and_create(result) = element.second;
    -
    12469  }
    -
    12470 
    -
    12471  return result;
    -
    12472  }
    -
    12473 
    -
    12485  friend bool operator==(json_pointer const& lhs,
    -
    12486  json_pointer const& rhs) noexcept
    -
    12487  {
    -
    12488  return lhs.reference_tokens == rhs.reference_tokens;
    -
    12489  }
    -
    12490 
    -
    12502  friend bool operator!=(json_pointer const& lhs,
    -
    12503  json_pointer const& rhs) noexcept
    -
    12504  {
    -
    12505  return !(lhs == rhs);
    -
    12506  }
    -
    12507 
    -
    12509  std::vector<std::string> reference_tokens;
    -
    12510 };
    -
    12511 } // namespace nlohmann
    -
    12512 
    -
    12513 // #include <nlohmann/detail/json_ref.hpp>
    -
    12514 
    -
    12515 
    -
    12516 #include <initializer_list>
    -
    12517 #include <utility>
    -
    12518 
    -
    12519 // #include <nlohmann/detail/meta/type_traits.hpp>
    -
    12520 
    -
    12521 
    -
    12522 namespace nlohmann
    -
    12523 {
    -
    12524 namespace detail
    -
    12525 {
    -
    12526 template<typename BasicJsonType>
    -
    12527 class json_ref
    -
    12528 {
    -
    12529  public:
    -
    12530  using value_type = BasicJsonType;
    -
    12531 
    - -
    12533  : owned_value(std::move(value))
    -
    12534  , value_ref(&owned_value)
    -
    12535  , is_rvalue(true)
    -
    12536  {}
    -
    12537 
    -
    12538  json_ref(const value_type& value)
    -
    12539  : value_ref(const_cast<value_type*>(&value))
    -
    12540  , is_rvalue(false)
    -
    12541  {}
    -
    12542 
    -
    12543  json_ref(std::initializer_list<json_ref> init)
    -
    12544  : owned_value(init)
    -
    12545  , value_ref(&owned_value)
    -
    12546  , is_rvalue(true)
    -
    12547  {}
    -
    12548 
    -
    12549  template <
    -
    12550  class... Args,
    -
    12551  enable_if_t<std::is_constructible<value_type, Args...>::value, int> = 0 >
    -
    12552  json_ref(Args && ... args)
    -
    12553  : owned_value(std::forward<Args>(args)...)
    -
    12554  , value_ref(&owned_value)
    -
    12555  , is_rvalue(true)
    -
    12556  {}
    -
    12557 
    -
    12558  // class should be movable only
    -
    12559  json_ref(json_ref&&) = default;
    -
    12560  json_ref(const json_ref&) = delete;
    -
    12561  json_ref& operator=(const json_ref&) = delete;
    -
    12562  json_ref& operator=(json_ref&&) = delete;
    -
    12563  ~json_ref() = default;
    -
    12564 
    - -
    12566  {
    -
    12567  if (is_rvalue)
    -
    12568  {
    -
    12569  return std::move(*value_ref);
    -
    12570  }
    -
    12571  return *value_ref;
    -
    12572  }
    -
    12573 
    -
    12574  value_type const& operator*() const
    -
    12575  {
    -
    12576  return *static_cast<value_type const*>(value_ref);
    -
    12577  }
    -
    12578 
    -
    12579  value_type const* operator->() const
    -
    12580  {
    -
    12581  return static_cast<value_type const*>(value_ref);
    -
    12582  }
    -
    12583 
    -
    12584  private:
    -
    12585  mutable value_type owned_value = nullptr;
    -
    12586  value_type* value_ref = nullptr;
    -
    12587  const bool is_rvalue = true;
    -
    12588 };
    -
    12589 } // namespace detail
    -
    12590 } // namespace nlohmann
    -
    12591 
    -
    12592 // #include <nlohmann/detail/macro_scope.hpp>
    -
    12593 
    -
    12594 // #include <nlohmann/detail/meta/cpp_future.hpp>
    -
    12595 
    -
    12596 // #include <nlohmann/detail/meta/type_traits.hpp>
    -
    12597 
    -
    12598 // #include <nlohmann/detail/output/binary_writer.hpp>
    -
    12599 
    -
    12600 
    -
    12601 #include <algorithm> // reverse
    -
    12602 #include <array> // array
    -
    12603 #include <cstdint> // uint8_t, uint16_t, uint32_t, uint64_t
    -
    12604 #include <cstring> // memcpy
    -
    12605 #include <limits> // numeric_limits
    -
    12606 #include <string> // string
    -
    12607 #include <cmath> // isnan, isinf
    -
    12608 
    -
    12609 // #include <nlohmann/detail/input/binary_reader.hpp>
    -
    12610 
    -
    12611 // #include <nlohmann/detail/macro_scope.hpp>
    -
    12612 
    -
    12613 // #include <nlohmann/detail/output/output_adapters.hpp>
    -
    12614 
    -
    12615 
    -
    12616 #include <algorithm> // copy
    -
    12617 #include <cstddef> // size_t
    -
    12618 #include <ios> // streamsize
    -
    12619 #include <iterator> // back_inserter
    -
    12620 #include <memory> // shared_ptr, make_shared
    -
    12621 #include <ostream> // basic_ostream
    -
    12622 #include <string> // basic_string
    -
    12623 #include <vector> // vector
    -
    12624 // #include <nlohmann/detail/macro_scope.hpp>
    -
    12625 
    -
    12626 
    -
    12627 namespace nlohmann
    -
    12628 {
    -
    12629 namespace detail
    -
    12630 {
    -
    12632 template<typename CharType> struct output_adapter_protocol
    -
    12633 {
    -
    12634  virtual void write_character(CharType c) = 0;
    -
    12635  virtual void write_characters(const CharType* s, std::size_t length) = 0;
    -
    12636  virtual ~output_adapter_protocol() = default;
    -
    12637 };
    -
    12638 
    -
    12640 template<typename CharType>
    -
    12641 using output_adapter_t = std::shared_ptr<output_adapter_protocol<CharType>>;
    -
    12642 
    -
    12644 template<typename CharType>
    -
    12645 class output_vector_adapter : public output_adapter_protocol<CharType>
    -
    12646 {
    -
    12647  public:
    -
    12648  explicit output_vector_adapter(std::vector<CharType>& vec) noexcept
    -
    12649  : v(vec)
    -
    12650  {}
    -
    12651 
    -
    12652  void write_character(CharType c) override
    -
    12653  {
    -
    12654  v.push_back(c);
    -
    12655  }
    -
    12656 
    - -
    12658  void write_characters(const CharType* s, std::size_t length) override
    -
    12659  {
    -
    12660  std::copy(s, s + length, std::back_inserter(v));
    -
    12661  }
    -
    12662 
    -
    12663  private:
    -
    12664  std::vector<CharType>& v;
    -
    12665 };
    -
    12666 
    -
    12668 template<typename CharType>
    -
    12669 class output_stream_adapter : public output_adapter_protocol<CharType>
    -
    12670 {
    -
    12671  public:
    -
    12672  explicit output_stream_adapter(std::basic_ostream<CharType>& s) noexcept
    -
    12673  : stream(s)
    -
    12674  {}
    -
    12675 
    -
    12676  void write_character(CharType c) override
    -
    12677  {
    -
    12678  stream.put(c);
    -
    12679  }
    -
    12680 
    - -
    12682  void write_characters(const CharType* s, std::size_t length) override
    -
    12683  {
    -
    12684  stream.write(s, static_cast<std::streamsize>(length));
    -
    12685  }
    -
    12686 
    -
    12687  private:
    -
    12688  std::basic_ostream<CharType>& stream;
    -
    12689 };
    -
    12690 
    -
    12692 template<typename CharType, typename StringType = std::basic_string<CharType>>
    -
    12693 class output_string_adapter : public output_adapter_protocol<CharType>
    -
    12694 {
    -
    12695  public:
    -
    12696  explicit output_string_adapter(StringType& s) noexcept
    -
    12697  : str(s)
    -
    12698  {}
    -
    12699 
    -
    12700  void write_character(CharType c) override
    -
    12701  {
    -
    12702  str.push_back(c);
    -
    12703  }
    -
    12704 
    - -
    12706  void write_characters(const CharType* s, std::size_t length) override
    -
    12707  {
    -
    12708  str.append(s, length);
    -
    12709  }
    -
    12710 
    -
    12711  private:
    -
    12712  StringType& str;
    -
    12713 };
    -
    12714 
    -
    12715 template<typename CharType, typename StringType = std::basic_string<CharType>>
    -
    12716 class output_adapter
    -
    12717 {
    -
    12718  public:
    -
    12719  output_adapter(std::vector<CharType>& vec)
    -
    12720  : oa(std::make_shared<output_vector_adapter<CharType>>(vec)) {}
    -
    12721 
    -
    12722  output_adapter(std::basic_ostream<CharType>& s)
    -
    12723  : oa(std::make_shared<output_stream_adapter<CharType>>(s)) {}
    -
    12724 
    -
    12725  output_adapter(StringType& s)
    -
    12726  : oa(std::make_shared<output_string_adapter<CharType, StringType>>(s)) {}
    -
    12727 
    - -
    12729  {
    -
    12730  return oa;
    -
    12731  }
    -
    12732 
    -
    12733  private:
    -
    12734  output_adapter_t<CharType> oa = nullptr;
    -
    12735 };
    -
    12736 } // namespace detail
    -
    12737 } // namespace nlohmann
    -
    12738 
    -
    12739 
    -
    12740 namespace nlohmann
    -
    12741 {
    -
    12742 namespace detail
    -
    12743 {
    -
    12745 // binary writer //
    -
    12747 
    -
    12751 template<typename BasicJsonType, typename CharType>
    -
    12752 class binary_writer
    -
    12753 {
    -
    12754  using string_t = typename BasicJsonType::string_t;
    -
    12755  using binary_t = typename BasicJsonType::binary_t;
    -
    12756  using number_float_t = typename BasicJsonType::number_float_t;
    -
    12757 
    -
    12758  public:
    -
    12764  explicit binary_writer(output_adapter_t<CharType> adapter) : oa(adapter)
    -
    12765  {
    -
    12766  JSON_ASSERT(oa);
    -
    12767  }
    -
    12768 
    -
    12773  void write_bson(const BasicJsonType& j)
    -
    12774  {
    -
    12775  switch (j.type())
    -
    12776  {
    -
    12777  case value_t::object:
    -
    12778  {
    -
    12779  write_bson_object(*j.m_value.object);
    -
    12780  break;
    -
    12781  }
    -
    12782 
    -
    12783  default:
    -
    12784  {
    -
    12785  JSON_THROW(type_error::create(317, "to serialize to BSON, top-level type must be object, but is " + std::string(j.type_name())));
    -
    12786  }
    -
    12787  }
    -
    12788  }
    -
    12789 
    -
    12793  void write_cbor(const BasicJsonType& j)
    -
    12794  {
    -
    12795  switch (j.type())
    -
    12796  {
    -
    12797  case value_t::null:
    -
    12798  {
    -
    12799  oa->write_character(to_char_type(0xF6));
    -
    12800  break;
    -
    12801  }
    -
    12802 
    -
    12803  case value_t::boolean:
    -
    12804  {
    -
    12805  oa->write_character(j.m_value.boolean
    -
    12806  ? to_char_type(0xF5)
    -
    12807  : to_char_type(0xF4));
    -
    12808  break;
    -
    12809  }
    -
    12810 
    - -
    12812  {
    -
    12813  if (j.m_value.number_integer >= 0)
    -
    12814  {
    -
    12815  // CBOR does not differentiate between positive signed
    -
    12816  // integers and unsigned integers. Therefore, we used the
    -
    12817  // code from the value_t::number_unsigned case here.
    -
    12818  if (j.m_value.number_integer <= 0x17)
    -
    12819  {
    -
    12820  write_number(static_cast<std::uint8_t>(j.m_value.number_integer));
    -
    12821  }
    -
    12822  else if (j.m_value.number_integer <= (std::numeric_limits<std::uint8_t>::max)())
    -
    12823  {
    -
    12824  oa->write_character(to_char_type(0x18));
    -
    12825  write_number(static_cast<std::uint8_t>(j.m_value.number_integer));
    -
    12826  }
    -
    12827  else if (j.m_value.number_integer <= (std::numeric_limits<std::uint16_t>::max)())
    -
    12828  {
    -
    12829  oa->write_character(to_char_type(0x19));
    -
    12830  write_number(static_cast<std::uint16_t>(j.m_value.number_integer));
    -
    12831  }
    -
    12832  else if (j.m_value.number_integer <= (std::numeric_limits<std::uint32_t>::max)())
    -
    12833  {
    -
    12834  oa->write_character(to_char_type(0x1A));
    -
    12835  write_number(static_cast<std::uint32_t>(j.m_value.number_integer));
    -
    12836  }
    -
    12837  else
    -
    12838  {
    -
    12839  oa->write_character(to_char_type(0x1B));
    -
    12840  write_number(static_cast<std::uint64_t>(j.m_value.number_integer));
    -
    12841  }
    -
    12842  }
    -
    12843  else
    -
    12844  {
    -
    12845  // The conversions below encode the sign in the first
    -
    12846  // byte, and the value is converted to a positive number.
    -
    12847  const auto positive_number = -1 - j.m_value.number_integer;
    -
    12848  if (j.m_value.number_integer >= -24)
    -
    12849  {
    -
    12850  write_number(static_cast<std::uint8_t>(0x20 + positive_number));
    -
    12851  }
    -
    12852  else if (positive_number <= (std::numeric_limits<std::uint8_t>::max)())
    -
    12853  {
    -
    12854  oa->write_character(to_char_type(0x38));
    -
    12855  write_number(static_cast<std::uint8_t>(positive_number));
    -
    12856  }
    -
    12857  else if (positive_number <= (std::numeric_limits<std::uint16_t>::max)())
    -
    12858  {
    -
    12859  oa->write_character(to_char_type(0x39));
    -
    12860  write_number(static_cast<std::uint16_t>(positive_number));
    -
    12861  }
    -
    12862  else if (positive_number <= (std::numeric_limits<std::uint32_t>::max)())
    -
    12863  {
    -
    12864  oa->write_character(to_char_type(0x3A));
    -
    12865  write_number(static_cast<std::uint32_t>(positive_number));
    -
    12866  }
    -
    12867  else
    -
    12868  {
    -
    12869  oa->write_character(to_char_type(0x3B));
    -
    12870  write_number(static_cast<std::uint64_t>(positive_number));
    -
    12871  }
    -
    12872  }
    -
    12873  break;
    -
    12874  }
    -
    12875 
    - -
    12877  {
    -
    12878  if (j.m_value.number_unsigned <= 0x17)
    -
    12879  {
    -
    12880  write_number(static_cast<std::uint8_t>(j.m_value.number_unsigned));
    -
    12881  }
    -
    12882  else if (j.m_value.number_unsigned <= (std::numeric_limits<std::uint8_t>::max)())
    -
    12883  {
    -
    12884  oa->write_character(to_char_type(0x18));
    -
    12885  write_number(static_cast<std::uint8_t>(j.m_value.number_unsigned));
    -
    12886  }
    -
    12887  else if (j.m_value.number_unsigned <= (std::numeric_limits<std::uint16_t>::max)())
    -
    12888  {
    -
    12889  oa->write_character(to_char_type(0x19));
    -
    12890  write_number(static_cast<std::uint16_t>(j.m_value.number_unsigned));
    -
    12891  }
    -
    12892  else if (j.m_value.number_unsigned <= (std::numeric_limits<std::uint32_t>::max)())
    -
    12893  {
    -
    12894  oa->write_character(to_char_type(0x1A));
    -
    12895  write_number(static_cast<std::uint32_t>(j.m_value.number_unsigned));
    -
    12896  }
    -
    12897  else
    -
    12898  {
    -
    12899  oa->write_character(to_char_type(0x1B));
    -
    12900  write_number(static_cast<std::uint64_t>(j.m_value.number_unsigned));
    -
    12901  }
    -
    12902  break;
    -
    12903  }
    -
    12904 
    -
    12905  case value_t::number_float:
    -
    12906  {
    -
    12907  if (std::isnan(j.m_value.number_float))
    -
    12908  {
    -
    12909  // NaN is 0xf97e00 in CBOR
    -
    12910  oa->write_character(to_char_type(0xF9));
    -
    12911  oa->write_character(to_char_type(0x7E));
    -
    12912  oa->write_character(to_char_type(0x00));
    -
    12913  }
    -
    12914  else if (std::isinf(j.m_value.number_float))
    -
    12915  {
    -
    12916  // Infinity is 0xf97c00, -Infinity is 0xf9fc00
    -
    12917  oa->write_character(to_char_type(0xf9));
    -
    12918  oa->write_character(j.m_value.number_float > 0 ? to_char_type(0x7C) : to_char_type(0xFC));
    -
    12919  oa->write_character(to_char_type(0x00));
    -
    12920  }
    -
    12921  else
    -
    12922  {
    -
    12923  write_compact_float(j.m_value.number_float, detail::input_format_t::cbor);
    -
    12924  }
    -
    12925  break;
    -
    12926  }
    -
    12927 
    -
    12928  case value_t::string:
    -
    12929  {
    -
    12930  // step 1: write control byte and the string length
    -
    12931  const auto N = j.m_value.string->size();
    -
    12932  if (N <= 0x17)
    -
    12933  {
    -
    12934  write_number(static_cast<std::uint8_t>(0x60 + N));
    -
    12935  }
    -
    12936  else if (N <= (std::numeric_limits<std::uint8_t>::max)())
    -
    12937  {
    -
    12938  oa->write_character(to_char_type(0x78));
    -
    12939  write_number(static_cast<std::uint8_t>(N));
    -
    12940  }
    -
    12941  else if (N <= (std::numeric_limits<std::uint16_t>::max)())
    -
    12942  {
    -
    12943  oa->write_character(to_char_type(0x79));
    -
    12944  write_number(static_cast<std::uint16_t>(N));
    -
    12945  }
    -
    12946  else if (N <= (std::numeric_limits<std::uint32_t>::max)())
    -
    12947  {
    -
    12948  oa->write_character(to_char_type(0x7A));
    -
    12949  write_number(static_cast<std::uint32_t>(N));
    -
    12950  }
    -
    12951  // LCOV_EXCL_START
    -
    12952  else if (N <= (std::numeric_limits<std::uint64_t>::max)())
    -
    12953  {
    -
    12954  oa->write_character(to_char_type(0x7B));
    -
    12955  write_number(static_cast<std::uint64_t>(N));
    -
    12956  }
    -
    12957  // LCOV_EXCL_STOP
    -
    12958 
    -
    12959  // step 2: write the string
    -
    12960  oa->write_characters(
    -
    12961  reinterpret_cast<const CharType*>(j.m_value.string->c_str()),
    -
    12962  j.m_value.string->size());
    -
    12963  break;
    -
    12964  }
    -
    12965 
    -
    12966  case value_t::array:
    -
    12967  {
    -
    12968  // step 1: write control byte and the array size
    -
    12969  const auto N = j.m_value.array->size();
    -
    12970  if (N <= 0x17)
    -
    12971  {
    -
    12972  write_number(static_cast<std::uint8_t>(0x80 + N));
    -
    12973  }
    -
    12974  else if (N <= (std::numeric_limits<std::uint8_t>::max)())
    -
    12975  {
    -
    12976  oa->write_character(to_char_type(0x98));
    -
    12977  write_number(static_cast<std::uint8_t>(N));
    -
    12978  }
    -
    12979  else if (N <= (std::numeric_limits<std::uint16_t>::max)())
    -
    12980  {
    -
    12981  oa->write_character(to_char_type(0x99));
    -
    12982  write_number(static_cast<std::uint16_t>(N));
    -
    12983  }
    -
    12984  else if (N <= (std::numeric_limits<std::uint32_t>::max)())
    -
    12985  {
    -
    12986  oa->write_character(to_char_type(0x9A));
    -
    12987  write_number(static_cast<std::uint32_t>(N));
    -
    12988  }
    -
    12989  // LCOV_EXCL_START
    -
    12990  else if (N <= (std::numeric_limits<std::uint64_t>::max)())
    -
    12991  {
    -
    12992  oa->write_character(to_char_type(0x9B));
    -
    12993  write_number(static_cast<std::uint64_t>(N));
    -
    12994  }
    -
    12995  // LCOV_EXCL_STOP
    -
    12996 
    -
    12997  // step 2: write each element
    -
    12998  for (const auto& el : *j.m_value.array)
    -
    12999  {
    -
    13000  write_cbor(el);
    -
    13001  }
    -
    13002  break;
    -
    13003  }
    -
    13004 
    -
    13005  case value_t::binary:
    -
    13006  {
    -
    13007  if (j.m_value.binary->has_subtype())
    -
    13008  {
    -
    13009  write_number(static_cast<std::uint8_t>(0xd8));
    -
    13010  write_number(j.m_value.binary->subtype());
    -
    13011  }
    -
    13012 
    -
    13013  // step 1: write control byte and the binary array size
    -
    13014  const auto N = j.m_value.binary->size();
    -
    13015  if (N <= 0x17)
    -
    13016  {
    -
    13017  write_number(static_cast<std::uint8_t>(0x40 + N));
    -
    13018  }
    -
    13019  else if (N <= (std::numeric_limits<std::uint8_t>::max)())
    -
    13020  {
    -
    13021  oa->write_character(to_char_type(0x58));
    -
    13022  write_number(static_cast<std::uint8_t>(N));
    -
    13023  }
    -
    13024  else if (N <= (std::numeric_limits<std::uint16_t>::max)())
    -
    13025  {
    -
    13026  oa->write_character(to_char_type(0x59));
    -
    13027  write_number(static_cast<std::uint16_t>(N));
    -
    13028  }
    -
    13029  else if (N <= (std::numeric_limits<std::uint32_t>::max)())
    -
    13030  {
    -
    13031  oa->write_character(to_char_type(0x5A));
    -
    13032  write_number(static_cast<std::uint32_t>(N));
    -
    13033  }
    -
    13034  // LCOV_EXCL_START
    -
    13035  else if (N <= (std::numeric_limits<std::uint64_t>::max)())
    -
    13036  {
    -
    13037  oa->write_character(to_char_type(0x5B));
    -
    13038  write_number(static_cast<std::uint64_t>(N));
    -
    13039  }
    -
    13040  // LCOV_EXCL_STOP
    -
    13041 
    -
    13042  // step 2: write each element
    -
    13043  oa->write_characters(
    -
    13044  reinterpret_cast<const CharType*>(j.m_value.binary->data()),
    -
    13045  N);
    -
    13046 
    -
    13047  break;
    -
    13048  }
    -
    13049 
    -
    13050  case value_t::object:
    -
    13051  {
    -
    13052  // step 1: write control byte and the object size
    -
    13053  const auto N = j.m_value.object->size();
    -
    13054  if (N <= 0x17)
    -
    13055  {
    -
    13056  write_number(static_cast<std::uint8_t>(0xA0 + N));
    -
    13057  }
    -
    13058  else if (N <= (std::numeric_limits<std::uint8_t>::max)())
    -
    13059  {
    -
    13060  oa->write_character(to_char_type(0xB8));
    -
    13061  write_number(static_cast<std::uint8_t>(N));
    -
    13062  }
    -
    13063  else if (N <= (std::numeric_limits<std::uint16_t>::max)())
    -
    13064  {
    -
    13065  oa->write_character(to_char_type(0xB9));
    -
    13066  write_number(static_cast<std::uint16_t>(N));
    -
    13067  }
    -
    13068  else if (N <= (std::numeric_limits<std::uint32_t>::max)())
    -
    13069  {
    -
    13070  oa->write_character(to_char_type(0xBA));
    -
    13071  write_number(static_cast<std::uint32_t>(N));
    -
    13072  }
    -
    13073  // LCOV_EXCL_START
    -
    13074  else if (N <= (std::numeric_limits<std::uint64_t>::max)())
    -
    13075  {
    -
    13076  oa->write_character(to_char_type(0xBB));
    -
    13077  write_number(static_cast<std::uint64_t>(N));
    -
    13078  }
    -
    13079  // LCOV_EXCL_STOP
    -
    13080 
    -
    13081  // step 2: write each element
    -
    13082  for (const auto& el : *j.m_value.object)
    -
    13083  {
    -
    13084  write_cbor(el.first);
    -
    13085  write_cbor(el.second);
    -
    13086  }
    -
    13087  break;
    -
    13088  }
    -
    13089 
    -
    13090  default:
    -
    13091  break;
    -
    13092  }
    -
    13093  }
    -
    13094 
    -
    13098  void write_msgpack(const BasicJsonType& j)
    -
    13099  {
    -
    13100  switch (j.type())
    -
    13101  {
    -
    13102  case value_t::null: // nil
    -
    13103  {
    -
    13104  oa->write_character(to_char_type(0xC0));
    -
    13105  break;
    -
    13106  }
    -
    13107 
    -
    13108  case value_t::boolean: // true and false
    -
    13109  {
    -
    13110  oa->write_character(j.m_value.boolean
    -
    13111  ? to_char_type(0xC3)
    -
    13112  : to_char_type(0xC2));
    -
    13113  break;
    -
    13114  }
    -
    13115 
    - -
    13117  {
    -
    13118  if (j.m_value.number_integer >= 0)
    -
    13119  {
    -
    13120  // MessagePack does not differentiate between positive
    -
    13121  // signed integers and unsigned integers. Therefore, we used
    -
    13122  // the code from the value_t::number_unsigned case here.
    -
    13123  if (j.m_value.number_unsigned < 128)
    -
    13124  {
    -
    13125  // positive fixnum
    -
    13126  write_number(static_cast<std::uint8_t>(j.m_value.number_integer));
    -
    13127  }
    -
    13128  else if (j.m_value.number_unsigned <= (std::numeric_limits<std::uint8_t>::max)())
    -
    13129  {
    -
    13130  // uint 8
    -
    13131  oa->write_character(to_char_type(0xCC));
    -
    13132  write_number(static_cast<std::uint8_t>(j.m_value.number_integer));
    -
    13133  }
    -
    13134  else if (j.m_value.number_unsigned <= (std::numeric_limits<std::uint16_t>::max)())
    -
    13135  {
    -
    13136  // uint 16
    -
    13137  oa->write_character(to_char_type(0xCD));
    -
    13138  write_number(static_cast<std::uint16_t>(j.m_value.number_integer));
    -
    13139  }
    -
    13140  else if (j.m_value.number_unsigned <= (std::numeric_limits<std::uint32_t>::max)())
    -
    13141  {
    -
    13142  // uint 32
    -
    13143  oa->write_character(to_char_type(0xCE));
    -
    13144  write_number(static_cast<std::uint32_t>(j.m_value.number_integer));
    -
    13145  }
    -
    13146  else if (j.m_value.number_unsigned <= (std::numeric_limits<std::uint64_t>::max)())
    -
    13147  {
    -
    13148  // uint 64
    -
    13149  oa->write_character(to_char_type(0xCF));
    -
    13150  write_number(static_cast<std::uint64_t>(j.m_value.number_integer));
    -
    13151  }
    -
    13152  }
    -
    13153  else
    -
    13154  {
    -
    13155  if (j.m_value.number_integer >= -32)
    -
    13156  {
    -
    13157  // negative fixnum
    -
    13158  write_number(static_cast<std::int8_t>(j.m_value.number_integer));
    -
    13159  }
    -
    13160  else if (j.m_value.number_integer >= (std::numeric_limits<std::int8_t>::min)() &&
    -
    13161  j.m_value.number_integer <= (std::numeric_limits<std::int8_t>::max)())
    -
    13162  {
    -
    13163  // int 8
    -
    13164  oa->write_character(to_char_type(0xD0));
    -
    13165  write_number(static_cast<std::int8_t>(j.m_value.number_integer));
    -
    13166  }
    -
    13167  else if (j.m_value.number_integer >= (std::numeric_limits<std::int16_t>::min)() &&
    -
    13168  j.m_value.number_integer <= (std::numeric_limits<std::int16_t>::max)())
    -
    13169  {
    -
    13170  // int 16
    -
    13171  oa->write_character(to_char_type(0xD1));
    -
    13172  write_number(static_cast<std::int16_t>(j.m_value.number_integer));
    -
    13173  }
    -
    13174  else if (j.m_value.number_integer >= (std::numeric_limits<std::int32_t>::min)() &&
    -
    13175  j.m_value.number_integer <= (std::numeric_limits<std::int32_t>::max)())
    -
    13176  {
    -
    13177  // int 32
    -
    13178  oa->write_character(to_char_type(0xD2));
    -
    13179  write_number(static_cast<std::int32_t>(j.m_value.number_integer));
    -
    13180  }
    -
    13181  else if (j.m_value.number_integer >= (std::numeric_limits<std::int64_t>::min)() &&
    -
    13182  j.m_value.number_integer <= (std::numeric_limits<std::int64_t>::max)())
    -
    13183  {
    -
    13184  // int 64
    -
    13185  oa->write_character(to_char_type(0xD3));
    -
    13186  write_number(static_cast<std::int64_t>(j.m_value.number_integer));
    -
    13187  }
    -
    13188  }
    -
    13189  break;
    -
    13190  }
    -
    13191 
    - -
    13193  {
    -
    13194  if (j.m_value.number_unsigned < 128)
    -
    13195  {
    -
    13196  // positive fixnum
    -
    13197  write_number(static_cast<std::uint8_t>(j.m_value.number_integer));
    -
    13198  }
    -
    13199  else if (j.m_value.number_unsigned <= (std::numeric_limits<std::uint8_t>::max)())
    -
    13200  {
    -
    13201  // uint 8
    -
    13202  oa->write_character(to_char_type(0xCC));
    -
    13203  write_number(static_cast<std::uint8_t>(j.m_value.number_integer));
    -
    13204  }
    -
    13205  else if (j.m_value.number_unsigned <= (std::numeric_limits<std::uint16_t>::max)())
    -
    13206  {
    -
    13207  // uint 16
    -
    13208  oa->write_character(to_char_type(0xCD));
    -
    13209  write_number(static_cast<std::uint16_t>(j.m_value.number_integer));
    -
    13210  }
    -
    13211  else if (j.m_value.number_unsigned <= (std::numeric_limits<std::uint32_t>::max)())
    -
    13212  {
    -
    13213  // uint 32
    -
    13214  oa->write_character(to_char_type(0xCE));
    -
    13215  write_number(static_cast<std::uint32_t>(j.m_value.number_integer));
    -
    13216  }
    -
    13217  else if (j.m_value.number_unsigned <= (std::numeric_limits<std::uint64_t>::max)())
    -
    13218  {
    -
    13219  // uint 64
    -
    13220  oa->write_character(to_char_type(0xCF));
    -
    13221  write_number(static_cast<std::uint64_t>(j.m_value.number_integer));
    -
    13222  }
    -
    13223  break;
    -
    13224  }
    -
    13225 
    -
    13226  case value_t::number_float:
    -
    13227  {
    -
    13228  write_compact_float(j.m_value.number_float, detail::input_format_t::msgpack);
    -
    13229  break;
    -
    13230  }
    -
    13231 
    -
    13232  case value_t::string:
    -
    13233  {
    -
    13234  // step 1: write control byte and the string length
    -
    13235  const auto N = j.m_value.string->size();
    -
    13236  if (N <= 31)
    -
    13237  {
    -
    13238  // fixstr
    -
    13239  write_number(static_cast<std::uint8_t>(0xA0 | N));
    -
    13240  }
    -
    13241  else if (N <= (std::numeric_limits<std::uint8_t>::max)())
    -
    13242  {
    -
    13243  // str 8
    -
    13244  oa->write_character(to_char_type(0xD9));
    -
    13245  write_number(static_cast<std::uint8_t>(N));
    -
    13246  }
    -
    13247  else if (N <= (std::numeric_limits<std::uint16_t>::max)())
    -
    13248  {
    -
    13249  // str 16
    -
    13250  oa->write_character(to_char_type(0xDA));
    -
    13251  write_number(static_cast<std::uint16_t>(N));
    -
    13252  }
    -
    13253  else if (N <= (std::numeric_limits<std::uint32_t>::max)())
    -
    13254  {
    -
    13255  // str 32
    -
    13256  oa->write_character(to_char_type(0xDB));
    -
    13257  write_number(static_cast<std::uint32_t>(N));
    -
    13258  }
    -
    13259 
    -
    13260  // step 2: write the string
    -
    13261  oa->write_characters(
    -
    13262  reinterpret_cast<const CharType*>(j.m_value.string->c_str()),
    -
    13263  j.m_value.string->size());
    -
    13264  break;
    -
    13265  }
    -
    13266 
    -
    13267  case value_t::array:
    -
    13268  {
    -
    13269  // step 1: write control byte and the array size
    -
    13270  const auto N = j.m_value.array->size();
    -
    13271  if (N <= 15)
    -
    13272  {
    -
    13273  // fixarray
    -
    13274  write_number(static_cast<std::uint8_t>(0x90 | N));
    -
    13275  }
    -
    13276  else if (N <= (std::numeric_limits<std::uint16_t>::max)())
    -
    13277  {
    -
    13278  // array 16
    -
    13279  oa->write_character(to_char_type(0xDC));
    -
    13280  write_number(static_cast<std::uint16_t>(N));
    -
    13281  }
    -
    13282  else if (N <= (std::numeric_limits<std::uint32_t>::max)())
    -
    13283  {
    -
    13284  // array 32
    -
    13285  oa->write_character(to_char_type(0xDD));
    -
    13286  write_number(static_cast<std::uint32_t>(N));
    -
    13287  }
    -
    13288 
    -
    13289  // step 2: write each element
    -
    13290  for (const auto& el : *j.m_value.array)
    -
    13291  {
    -
    13292  write_msgpack(el);
    -
    13293  }
    -
    13294  break;
    -
    13295  }
    -
    13296 
    -
    13297  case value_t::binary:
    -
    13298  {
    -
    13299  // step 0: determine if the binary type has a set subtype to
    -
    13300  // determine whether or not to use the ext or fixext types
    -
    13301  const bool use_ext = j.m_value.binary->has_subtype();
    -
    13302 
    -
    13303  // step 1: write control byte and the byte string length
    -
    13304  const auto N = j.m_value.binary->size();
    -
    13305  if (N <= (std::numeric_limits<std::uint8_t>::max)())
    -
    13306  {
    -
    13307  std::uint8_t output_type{};
    -
    13308  bool fixed = true;
    -
    13309  if (use_ext)
    -
    13310  {
    -
    13311  switch (N)
    -
    13312  {
    -
    13313  case 1:
    -
    13314  output_type = 0xD4; // fixext 1
    -
    13315  break;
    -
    13316  case 2:
    -
    13317  output_type = 0xD5; // fixext 2
    -
    13318  break;
    -
    13319  case 4:
    -
    13320  output_type = 0xD6; // fixext 4
    -
    13321  break;
    -
    13322  case 8:
    -
    13323  output_type = 0xD7; // fixext 8
    -
    13324  break;
    -
    13325  case 16:
    -
    13326  output_type = 0xD8; // fixext 16
    -
    13327  break;
    -
    13328  default:
    -
    13329  output_type = 0xC7; // ext 8
    -
    13330  fixed = false;
    -
    13331  break;
    -
    13332  }
    -
    13333 
    -
    13334  }
    -
    13335  else
    -
    13336  {
    -
    13337  output_type = 0xC4; // bin 8
    -
    13338  fixed = false;
    -
    13339  }
    -
    13340 
    -
    13341  oa->write_character(to_char_type(output_type));
    -
    13342  if (!fixed)
    -
    13343  {
    -
    13344  write_number(static_cast<std::uint8_t>(N));
    -
    13345  }
    -
    13346  }
    -
    13347  else if (N <= (std::numeric_limits<std::uint16_t>::max)())
    -
    13348  {
    -
    13349  std::uint8_t output_type = use_ext
    -
    13350  ? 0xC8 // ext 16
    -
    13351  : 0xC5; // bin 16
    -
    13352 
    -
    13353  oa->write_character(to_char_type(output_type));
    -
    13354  write_number(static_cast<std::uint16_t>(N));
    -
    13355  }
    -
    13356  else if (N <= (std::numeric_limits<std::uint32_t>::max)())
    -
    13357  {
    -
    13358  std::uint8_t output_type = use_ext
    -
    13359  ? 0xC9 // ext 32
    -
    13360  : 0xC6; // bin 32
    -
    13361 
    -
    13362  oa->write_character(to_char_type(output_type));
    -
    13363  write_number(static_cast<std::uint32_t>(N));
    -
    13364  }
    -
    13365 
    -
    13366  // step 1.5: if this is an ext type, write the subtype
    -
    13367  if (use_ext)
    -
    13368  {
    -
    13369  write_number(static_cast<std::int8_t>(j.m_value.binary->subtype()));
    -
    13370  }
    -
    13371 
    -
    13372  // step 2: write the byte string
    -
    13373  oa->write_characters(
    -
    13374  reinterpret_cast<const CharType*>(j.m_value.binary->data()),
    -
    13375  N);
    -
    13376 
    -
    13377  break;
    -
    13378  }
    -
    13379 
    -
    13380  case value_t::object:
    -
    13381  {
    -
    13382  // step 1: write control byte and the object size
    -
    13383  const auto N = j.m_value.object->size();
    -
    13384  if (N <= 15)
    -
    13385  {
    -
    13386  // fixmap
    -
    13387  write_number(static_cast<std::uint8_t>(0x80 | (N & 0xF)));
    -
    13388  }
    -
    13389  else if (N <= (std::numeric_limits<std::uint16_t>::max)())
    -
    13390  {
    -
    13391  // map 16
    -
    13392  oa->write_character(to_char_type(0xDE));
    -
    13393  write_number(static_cast<std::uint16_t>(N));
    -
    13394  }
    -
    13395  else if (N <= (std::numeric_limits<std::uint32_t>::max)())
    -
    13396  {
    -
    13397  // map 32
    -
    13398  oa->write_character(to_char_type(0xDF));
    -
    13399  write_number(static_cast<std::uint32_t>(N));
    -
    13400  }
    -
    13401 
    -
    13402  // step 2: write each element
    -
    13403  for (const auto& el : *j.m_value.object)
    -
    13404  {
    -
    13405  write_msgpack(el.first);
    -
    13406  write_msgpack(el.second);
    -
    13407  }
    -
    13408  break;
    -
    13409  }
    -
    13410 
    -
    13411  default:
    -
    13412  break;
    -
    13413  }
    -
    13414  }
    -
    13415 
    -
    13422  void write_ubjson(const BasicJsonType& j, const bool use_count,
    -
    13423  const bool use_type, const bool add_prefix = true)
    -
    13424  {
    -
    13425  switch (j.type())
    -
    13426  {
    -
    13427  case value_t::null:
    -
    13428  {
    -
    13429  if (add_prefix)
    -
    13430  {
    -
    13431  oa->write_character(to_char_type('Z'));
    -
    13432  }
    -
    13433  break;
    -
    13434  }
    -
    13435 
    -
    13436  case value_t::boolean:
    -
    13437  {
    -
    13438  if (add_prefix)
    -
    13439  {
    -
    13440  oa->write_character(j.m_value.boolean
    -
    13441  ? to_char_type('T')
    -
    13442  : to_char_type('F'));
    -
    13443  }
    -
    13444  break;
    -
    13445  }
    -
    13446 
    - -
    13448  {
    -
    13449  write_number_with_ubjson_prefix(j.m_value.number_integer, add_prefix);
    -
    13450  break;
    -
    13451  }
    -
    13452 
    - -
    13454  {
    -
    13455  write_number_with_ubjson_prefix(j.m_value.number_unsigned, add_prefix);
    -
    13456  break;
    -
    13457  }
    -
    13458 
    -
    13459  case value_t::number_float:
    -
    13460  {
    -
    13461  write_number_with_ubjson_prefix(j.m_value.number_float, add_prefix);
    -
    13462  break;
    -
    13463  }
    -
    13464 
    -
    13465  case value_t::string:
    -
    13466  {
    -
    13467  if (add_prefix)
    -
    13468  {
    -
    13469  oa->write_character(to_char_type('S'));
    -
    13470  }
    -
    13471  write_number_with_ubjson_prefix(j.m_value.string->size(), true);
    -
    13472  oa->write_characters(
    -
    13473  reinterpret_cast<const CharType*>(j.m_value.string->c_str()),
    -
    13474  j.m_value.string->size());
    -
    13475  break;
    -
    13476  }
    -
    13477 
    -
    13478  case value_t::array:
    -
    13479  {
    -
    13480  if (add_prefix)
    -
    13481  {
    -
    13482  oa->write_character(to_char_type('['));
    -
    13483  }
    -
    13484 
    -
    13485  bool prefix_required = true;
    -
    13486  if (use_type && !j.m_value.array->empty())
    -
    13487  {
    -
    13488  JSON_ASSERT(use_count);
    -
    13489  const CharType first_prefix = ubjson_prefix(j.front());
    -
    13490  const bool same_prefix = std::all_of(j.begin() + 1, j.end(),
    -
    13491  [this, first_prefix](const BasicJsonType & v)
    -
    13492  {
    -
    13493  return ubjson_prefix(v) == first_prefix;
    -
    13494  });
    -
    13495 
    -
    13496  if (same_prefix)
    -
    13497  {
    -
    13498  prefix_required = false;
    -
    13499  oa->write_character(to_char_type('$'));
    -
    13500  oa->write_character(first_prefix);
    -
    13501  }
    -
    13502  }
    -
    13503 
    -
    13504  if (use_count)
    -
    13505  {
    -
    13506  oa->write_character(to_char_type('#'));
    -
    13507  write_number_with_ubjson_prefix(j.m_value.array->size(), true);
    -
    13508  }
    -
    13509 
    -
    13510  for (const auto& el : *j.m_value.array)
    -
    13511  {
    -
    13512  write_ubjson(el, use_count, use_type, prefix_required);
    -
    13513  }
    -
    13514 
    -
    13515  if (!use_count)
    -
    13516  {
    -
    13517  oa->write_character(to_char_type(']'));
    -
    13518  }
    -
    13519 
    -
    13520  break;
    -
    13521  }
    -
    13522 
    -
    13523  case value_t::binary:
    -
    13524  {
    -
    13525  if (add_prefix)
    -
    13526  {
    -
    13527  oa->write_character(to_char_type('['));
    -
    13528  }
    -
    13529 
    -
    13530  if (use_type && !j.m_value.binary->empty())
    -
    13531  {
    -
    13532  JSON_ASSERT(use_count);
    -
    13533  oa->write_character(to_char_type('$'));
    -
    13534  oa->write_character('U');
    -
    13535  }
    -
    13536 
    -
    13537  if (use_count)
    -
    13538  {
    -
    13539  oa->write_character(to_char_type('#'));
    -
    13540  write_number_with_ubjson_prefix(j.m_value.binary->size(), true);
    -
    13541  }
    -
    13542 
    -
    13543  if (use_type)
    -
    13544  {
    -
    13545  oa->write_characters(
    -
    13546  reinterpret_cast<const CharType*>(j.m_value.binary->data()),
    -
    13547  j.m_value.binary->size());
    -
    13548  }
    -
    13549  else
    -
    13550  {
    -
    13551  for (size_t i = 0; i < j.m_value.binary->size(); ++i)
    -
    13552  {
    -
    13553  oa->write_character(to_char_type('U'));
    -
    13554  oa->write_character(j.m_value.binary->data()[i]);
    -
    13555  }
    -
    13556  }
    -
    13557 
    -
    13558  if (!use_count)
    -
    13559  {
    -
    13560  oa->write_character(to_char_type(']'));
    -
    13561  }
    -
    13562 
    -
    13563  break;
    -
    13564  }
    -
    13565 
    -
    13566  case value_t::object:
    -
    13567  {
    -
    13568  if (add_prefix)
    -
    13569  {
    -
    13570  oa->write_character(to_char_type('{'));
    -
    13571  }
    -
    13572 
    -
    13573  bool prefix_required = true;
    -
    13574  if (use_type && !j.m_value.object->empty())
    -
    13575  {
    -
    13576  JSON_ASSERT(use_count);
    -
    13577  const CharType first_prefix = ubjson_prefix(j.front());
    -
    13578  const bool same_prefix = std::all_of(j.begin(), j.end(),
    -
    13579  [this, first_prefix](const BasicJsonType & v)
    -
    13580  {
    -
    13581  return ubjson_prefix(v) == first_prefix;
    -
    13582  });
    -
    13583 
    -
    13584  if (same_prefix)
    -
    13585  {
    -
    13586  prefix_required = false;
    -
    13587  oa->write_character(to_char_type('$'));
    -
    13588  oa->write_character(first_prefix);
    -
    13589  }
    -
    13590  }
    -
    13591 
    -
    13592  if (use_count)
    -
    13593  {
    -
    13594  oa->write_character(to_char_type('#'));
    -
    13595  write_number_with_ubjson_prefix(j.m_value.object->size(), true);
    -
    13596  }
    -
    13597 
    -
    13598  for (const auto& el : *j.m_value.object)
    -
    13599  {
    -
    13600  write_number_with_ubjson_prefix(el.first.size(), true);
    -
    13601  oa->write_characters(
    -
    13602  reinterpret_cast<const CharType*>(el.first.c_str()),
    -
    13603  el.first.size());
    -
    13604  write_ubjson(el.second, use_count, use_type, prefix_required);
    -
    13605  }
    -
    13606 
    -
    13607  if (!use_count)
    -
    13608  {
    -
    13609  oa->write_character(to_char_type('}'));
    -
    13610  }
    -
    13611 
    -
    13612  break;
    -
    13613  }
    -
    13614 
    -
    13615  default:
    -
    13616  break;
    -
    13617  }
    -
    13618  }
    -
    13619 
    -
    13620  private:
    -
    13622  // BSON //
    -
    13624 
    -
    13629  static std::size_t calc_bson_entry_header_size(const string_t& name)
    -
    13630  {
    -
    13631  const auto it = name.find(static_cast<typename string_t::value_type>(0));
    -
    13632  if (JSON_HEDLEY_UNLIKELY(it != BasicJsonType::string_t::npos))
    -
    13633  {
    - -
    13635  "BSON key cannot contain code point U+0000 (at byte " + std::to_string(it) + ")"));
    -
    13636  }
    -
    13637 
    -
    13638  return /*id*/ 1ul + name.size() + /*zero-terminator*/1u;
    -
    13639  }
    -
    13640 
    -
    13644  void write_bson_entry_header(const string_t& name,
    -
    13645  const std::uint8_t element_type)
    -
    13646  {
    -
    13647  oa->write_character(to_char_type(element_type)); // boolean
    -
    13648  oa->write_characters(
    -
    13649  reinterpret_cast<const CharType*>(name.c_str()),
    -
    13650  name.size() + 1u);
    -
    13651  }
    -
    13652 
    -
    13656  void write_bson_boolean(const string_t& name,
    -
    13657  const bool value)
    -
    13658  {
    -
    13659  write_bson_entry_header(name, 0x08);
    -
    13660  oa->write_character(value ? to_char_type(0x01) : to_char_type(0x00));
    -
    13661  }
    -
    13662 
    -
    13666  void write_bson_double(const string_t& name,
    -
    13667  const double value)
    -
    13668  {
    -
    13669  write_bson_entry_header(name, 0x01);
    -
    13670  write_number<double, true>(value);
    -
    13671  }
    -
    13672 
    -
    13676  static std::size_t calc_bson_string_size(const string_t& value)
    -
    13677  {
    -
    13678  return sizeof(std::int32_t) + value.size() + 1ul;
    -
    13679  }
    -
    13680 
    -
    13684  void write_bson_string(const string_t& name,
    -
    13685  const string_t& value)
    -
    13686  {
    -
    13687  write_bson_entry_header(name, 0x02);
    -
    13688 
    -
    13689  write_number<std::int32_t, true>(static_cast<std::int32_t>(value.size() + 1ul));
    -
    13690  oa->write_characters(
    -
    13691  reinterpret_cast<const CharType*>(value.c_str()),
    -
    13692  value.size() + 1);
    -
    13693  }
    -
    13694 
    -
    13698  void write_bson_null(const string_t& name)
    -
    13699  {
    -
    13700  write_bson_entry_header(name, 0x0A);
    -
    13701  }
    -
    13702 
    -
    13706  static std::size_t calc_bson_integer_size(const std::int64_t value)
    -
    13707  {
    -
    13708  return (std::numeric_limits<std::int32_t>::min)() <= value && value <= (std::numeric_limits<std::int32_t>::max)()
    -
    13709  ? sizeof(std::int32_t)
    -
    13710  : sizeof(std::int64_t);
    -
    13711  }
    -
    13712 
    -
    13716  void write_bson_integer(const string_t& name,
    -
    13717  const std::int64_t value)
    -
    13718  {
    -
    13719  if ((std::numeric_limits<std::int32_t>::min)() <= value && value <= (std::numeric_limits<std::int32_t>::max)())
    -
    13720  {
    -
    13721  write_bson_entry_header(name, 0x10); // int32
    -
    13722  write_number<std::int32_t, true>(static_cast<std::int32_t>(value));
    -
    13723  }
    -
    13724  else
    -
    13725  {
    -
    13726  write_bson_entry_header(name, 0x12); // int64
    -
    13727  write_number<std::int64_t, true>(static_cast<std::int64_t>(value));
    -
    13728  }
    -
    13729  }
    -
    13730 
    -
    13734  static constexpr std::size_t calc_bson_unsigned_size(const std::uint64_t value) noexcept
    -
    13735  {
    -
    13736  return (value <= static_cast<std::uint64_t>((std::numeric_limits<std::int32_t>::max)()))
    -
    13737  ? sizeof(std::int32_t)
    -
    13738  : sizeof(std::int64_t);
    -
    13739  }
    -
    13740 
    -
    13744  void write_bson_unsigned(const string_t& name,
    -
    13745  const std::uint64_t value)
    -
    13746  {
    -
    13747  if (value <= static_cast<std::uint64_t>((std::numeric_limits<std::int32_t>::max)()))
    -
    13748  {
    -
    13749  write_bson_entry_header(name, 0x10 /* int32 */);
    -
    13750  write_number<std::int32_t, true>(static_cast<std::int32_t>(value));
    -
    13751  }
    -
    13752  else if (value <= static_cast<std::uint64_t>((std::numeric_limits<std::int64_t>::max)()))
    -
    13753  {
    -
    13754  write_bson_entry_header(name, 0x12 /* int64 */);
    -
    13755  write_number<std::int64_t, true>(static_cast<std::int64_t>(value));
    -
    13756  }
    -
    13757  else
    -
    13758  {
    -
    13759  JSON_THROW(out_of_range::create(407, "integer number " + std::to_string(value) + " cannot be represented by BSON as it does not fit int64"));
    -
    13760  }
    -
    13761  }
    -
    13762 
    -
    13766  void write_bson_object_entry(const string_t& name,
    -
    13767  const typename BasicJsonType::object_t& value)
    -
    13768  {
    -
    13769  write_bson_entry_header(name, 0x03); // object
    -
    13770  write_bson_object(value);
    -
    13771  }
    -
    13772 
    -
    13776  static std::size_t calc_bson_array_size(const typename BasicJsonType::array_t& value)
    -
    13777  {
    -
    13778  std::size_t array_index = 0ul;
    -
    13779 
    -
    13780  const std::size_t embedded_document_size = std::accumulate(std::begin(value), std::end(value), std::size_t(0), [&array_index](std::size_t result, const typename BasicJsonType::array_t::value_type & el)
    -
    13781  {
    -
    13782  return result + calc_bson_element_size(std::to_string(array_index++), el);
    -
    13783  });
    -
    13784 
    -
    13785  return sizeof(std::int32_t) + embedded_document_size + 1ul;
    -
    13786  }
    -
    13787 
    -
    13791  static std::size_t calc_bson_binary_size(const typename BasicJsonType::binary_t& value)
    -
    13792  {
    -
    13793  return sizeof(std::int32_t) + value.size() + 1ul;
    -
    13794  }
    -
    13795 
    -
    13799  void write_bson_array(const string_t& name,
    -
    13800  const typename BasicJsonType::array_t& value)
    -
    13801  {
    -
    13802  write_bson_entry_header(name, 0x04); // array
    -
    13803  write_number<std::int32_t, true>(static_cast<std::int32_t>(calc_bson_array_size(value)));
    -
    13804 
    -
    13805  std::size_t array_index = 0ul;
    -
    13806 
    -
    13807  for (const auto& el : value)
    -
    13808  {
    -
    13809  write_bson_element(std::to_string(array_index++), el);
    -
    13810  }
    -
    13811 
    -
    13812  oa->write_character(to_char_type(0x00));
    -
    13813  }
    -
    13814 
    -
    13818  void write_bson_binary(const string_t& name,
    -
    13819  const binary_t& value)
    -
    13820  {
    -
    13821  write_bson_entry_header(name, 0x05);
    -
    13822 
    -
    13823  write_number<std::int32_t, true>(static_cast<std::int32_t>(value.size()));
    -
    13824  write_number(value.has_subtype() ? value.subtype() : std::uint8_t(0x00));
    -
    13825 
    -
    13826  oa->write_characters(reinterpret_cast<const CharType*>(value.data()), value.size());
    -
    13827  }
    -
    13828 
    -
    13833  static std::size_t calc_bson_element_size(const string_t& name,
    -
    13834  const BasicJsonType& j)
    -
    13835  {
    -
    13836  const auto header_size = calc_bson_entry_header_size(name);
    -
    13837  switch (j.type())
    -
    13838  {
    -
    13839  case value_t::object:
    -
    13840  return header_size + calc_bson_object_size(*j.m_value.object);
    -
    13841 
    -
    13842  case value_t::array:
    -
    13843  return header_size + calc_bson_array_size(*j.m_value.array);
    -
    13844 
    -
    13845  case value_t::binary:
    -
    13846  return header_size + calc_bson_binary_size(*j.m_value.binary);
    -
    13847 
    -
    13848  case value_t::boolean:
    -
    13849  return header_size + 1ul;
    -
    13850 
    -
    13851  case value_t::number_float:
    -
    13852  return header_size + 8ul;
    -
    13853 
    - -
    13855  return header_size + calc_bson_integer_size(j.m_value.number_integer);
    -
    13856 
    - -
    13858  return header_size + calc_bson_unsigned_size(j.m_value.number_unsigned);
    -
    13859 
    -
    13860  case value_t::string:
    -
    13861  return header_size + calc_bson_string_size(*j.m_value.string);
    -
    13862 
    -
    13863  case value_t::null:
    -
    13864  return header_size + 0ul;
    -
    13865 
    -
    13866  // LCOV_EXCL_START
    -
    13867  default:
    -
    13868  JSON_ASSERT(false);
    -
    13869  return 0ul;
    -
    13870  // LCOV_EXCL_STOP
    -
    13871  }
    -
    13872  }
    -
    13873 
    -
    13881  void write_bson_element(const string_t& name,
    -
    13882  const BasicJsonType& j)
    -
    13883  {
    -
    13884  switch (j.type())
    -
    13885  {
    -
    13886  case value_t::object:
    -
    13887  return write_bson_object_entry(name, *j.m_value.object);
    -
    13888 
    -
    13889  case value_t::array:
    -
    13890  return write_bson_array(name, *j.m_value.array);
    -
    13891 
    -
    13892  case value_t::binary:
    -
    13893  return write_bson_binary(name, *j.m_value.binary);
    -
    13894 
    -
    13895  case value_t::boolean:
    -
    13896  return write_bson_boolean(name, j.m_value.boolean);
    -
    13897 
    -
    13898  case value_t::number_float:
    -
    13899  return write_bson_double(name, j.m_value.number_float);
    -
    13900 
    - -
    13902  return write_bson_integer(name, j.m_value.number_integer);
    -
    13903 
    - -
    13905  return write_bson_unsigned(name, j.m_value.number_unsigned);
    -
    13906 
    -
    13907  case value_t::string:
    -
    13908  return write_bson_string(name, *j.m_value.string);
    -
    13909 
    -
    13910  case value_t::null:
    -
    13911  return write_bson_null(name);
    -
    13912 
    -
    13913  // LCOV_EXCL_START
    -
    13914  default:
    -
    13915  JSON_ASSERT(false);
    -
    13916  return;
    -
    13917  // LCOV_EXCL_STOP
    -
    13918  }
    -
    13919  }
    -
    13920 
    -
    13927  static std::size_t calc_bson_object_size(const typename BasicJsonType::object_t& value)
    -
    13928  {
    -
    13929  std::size_t document_size = std::accumulate(value.begin(), value.end(), std::size_t(0),
    -
    13930  [](size_t result, const typename BasicJsonType::object_t::value_type & el)
    -
    13931  {
    -
    13932  return result += calc_bson_element_size(el.first, el.second);
    -
    13933  });
    -
    13934 
    -
    13935  return sizeof(std::int32_t) + document_size + 1ul;
    -
    13936  }
    -
    13937 
    -
    13942  void write_bson_object(const typename BasicJsonType::object_t& value)
    -
    13943  {
    -
    13944  write_number<std::int32_t, true>(static_cast<std::int32_t>(calc_bson_object_size(value)));
    -
    13945 
    -
    13946  for (const auto& el : value)
    -
    13947  {
    -
    13948  write_bson_element(el.first, el.second);
    -
    13949  }
    -
    13950 
    -
    13951  oa->write_character(to_char_type(0x00));
    -
    13952  }
    -
    13953 
    -
    13955  // CBOR //
    -
    13957 
    -
    13958  static constexpr CharType get_cbor_float_prefix(float /*unused*/)
    -
    13959  {
    -
    13960  return to_char_type(0xFA); // Single-Precision Float
    -
    13961  }
    -
    13962 
    -
    13963  static constexpr CharType get_cbor_float_prefix(double /*unused*/)
    -
    13964  {
    -
    13965  return to_char_type(0xFB); // Double-Precision Float
    -
    13966  }
    -
    13967 
    -
    13969  // MsgPack //
    -
    13971 
    -
    13972  static constexpr CharType get_msgpack_float_prefix(float /*unused*/)
    -
    13973  {
    -
    13974  return to_char_type(0xCA); // float 32
    -
    13975  }
    -
    13976 
    -
    13977  static constexpr CharType get_msgpack_float_prefix(double /*unused*/)
    -
    13978  {
    -
    13979  return to_char_type(0xCB); // float 64
    -
    13980  }
    -
    13981 
    -
    13983  // UBJSON //
    -
    13985 
    -
    13986  // UBJSON: write number (floating point)
    -
    13987  template<typename NumberType, typename std::enable_if<
    -
    13988  std::is_floating_point<NumberType>::value, int>::type = 0>
    -
    13989  void write_number_with_ubjson_prefix(const NumberType n,
    -
    13990  const bool add_prefix)
    -
    13991  {
    -
    13992  if (add_prefix)
    -
    13993  {
    -
    13994  oa->write_character(get_ubjson_float_prefix(n));
    -
    13995  }
    -
    13996  write_number(n);
    -
    13997  }
    -
    13998 
    -
    13999  // UBJSON: write number (unsigned integer)
    -
    14000  template<typename NumberType, typename std::enable_if<
    -
    14001  std::is_unsigned<NumberType>::value, int>::type = 0>
    -
    14002  void write_number_with_ubjson_prefix(const NumberType n,
    -
    14003  const bool add_prefix)
    -
    14004  {
    -
    14005  if (n <= static_cast<std::uint64_t>((std::numeric_limits<std::int8_t>::max)()))
    -
    14006  {
    -
    14007  if (add_prefix)
    -
    14008  {
    -
    14009  oa->write_character(to_char_type('i')); // int8
    -
    14010  }
    -
    14011  write_number(static_cast<std::uint8_t>(n));
    -
    14012  }
    -
    14013  else if (n <= (std::numeric_limits<std::uint8_t>::max)())
    -
    14014  {
    -
    14015  if (add_prefix)
    -
    14016  {
    -
    14017  oa->write_character(to_char_type('U')); // uint8
    -
    14018  }
    -
    14019  write_number(static_cast<std::uint8_t>(n));
    -
    14020  }
    -
    14021  else if (n <= static_cast<std::uint64_t>((std::numeric_limits<std::int16_t>::max)()))
    -
    14022  {
    -
    14023  if (add_prefix)
    -
    14024  {
    -
    14025  oa->write_character(to_char_type('I')); // int16
    -
    14026  }
    -
    14027  write_number(static_cast<std::int16_t>(n));
    -
    14028  }
    -
    14029  else if (n <= static_cast<std::uint64_t>((std::numeric_limits<std::int32_t>::max)()))
    -
    14030  {
    -
    14031  if (add_prefix)
    -
    14032  {
    -
    14033  oa->write_character(to_char_type('l')); // int32
    -
    14034  }
    -
    14035  write_number(static_cast<std::int32_t>(n));
    -
    14036  }
    -
    14037  else if (n <= static_cast<std::uint64_t>((std::numeric_limits<std::int64_t>::max)()))
    -
    14038  {
    -
    14039  if (add_prefix)
    -
    14040  {
    -
    14041  oa->write_character(to_char_type('L')); // int64
    -
    14042  }
    -
    14043  write_number(static_cast<std::int64_t>(n));
    -
    14044  }
    -
    14045  else
    -
    14046  {
    -
    14047  if (add_prefix)
    -
    14048  {
    -
    14049  oa->write_character(to_char_type('H')); // high-precision number
    -
    14050  }
    -
    14051 
    -
    14052  const auto number = BasicJsonType(n).dump();
    -
    14053  write_number_with_ubjson_prefix(number.size(), true);
    -
    14054  for (std::size_t i = 0; i < number.size(); ++i)
    -
    14055  {
    -
    14056  oa->write_character(to_char_type(static_cast<std::uint8_t>(number[i])));
    -
    14057  }
    -
    14058  }
    -
    14059  }
    -
    14060 
    -
    14061  // UBJSON: write number (signed integer)
    -
    14062  template < typename NumberType, typename std::enable_if <
    -
    14063  std::is_signed<NumberType>::value&&
    -
    14064  !std::is_floating_point<NumberType>::value, int >::type = 0 >
    -
    14065  void write_number_with_ubjson_prefix(const NumberType n,
    -
    14066  const bool add_prefix)
    -
    14067  {
    -
    14068  if ((std::numeric_limits<std::int8_t>::min)() <= n && n <= (std::numeric_limits<std::int8_t>::max)())
    -
    14069  {
    -
    14070  if (add_prefix)
    -
    14071  {
    -
    14072  oa->write_character(to_char_type('i')); // int8
    -
    14073  }
    -
    14074  write_number(static_cast<std::int8_t>(n));
    -
    14075  }
    -
    14076  else if (static_cast<std::int64_t>((std::numeric_limits<std::uint8_t>::min)()) <= n && n <= static_cast<std::int64_t>((std::numeric_limits<std::uint8_t>::max)()))
    -
    14077  {
    -
    14078  if (add_prefix)
    -
    14079  {
    -
    14080  oa->write_character(to_char_type('U')); // uint8
    -
    14081  }
    -
    14082  write_number(static_cast<std::uint8_t>(n));
    -
    14083  }
    -
    14084  else if ((std::numeric_limits<std::int16_t>::min)() <= n && n <= (std::numeric_limits<std::int16_t>::max)())
    -
    14085  {
    -
    14086  if (add_prefix)
    -
    14087  {
    -
    14088  oa->write_character(to_char_type('I')); // int16
    -
    14089  }
    -
    14090  write_number(static_cast<std::int16_t>(n));
    -
    14091  }
    -
    14092  else if ((std::numeric_limits<std::int32_t>::min)() <= n && n <= (std::numeric_limits<std::int32_t>::max)())
    -
    14093  {
    -
    14094  if (add_prefix)
    -
    14095  {
    -
    14096  oa->write_character(to_char_type('l')); // int32
    -
    14097  }
    -
    14098  write_number(static_cast<std::int32_t>(n));
    -
    14099  }
    -
    14100  else if ((std::numeric_limits<std::int64_t>::min)() <= n && n <= (std::numeric_limits<std::int64_t>::max)())
    -
    14101  {
    -
    14102  if (add_prefix)
    -
    14103  {
    -
    14104  oa->write_character(to_char_type('L')); // int64
    -
    14105  }
    -
    14106  write_number(static_cast<std::int64_t>(n));
    -
    14107  }
    -
    14108  // LCOV_EXCL_START
    -
    14109  else
    -
    14110  {
    -
    14111  if (add_prefix)
    -
    14112  {
    -
    14113  oa->write_character(to_char_type('H')); // high-precision number
    -
    14114  }
    -
    14115 
    -
    14116  const auto number = BasicJsonType(n).dump();
    -
    14117  write_number_with_ubjson_prefix(number.size(), true);
    -
    14118  for (std::size_t i = 0; i < number.size(); ++i)
    -
    14119  {
    -
    14120  oa->write_character(to_char_type(static_cast<std::uint8_t>(number[i])));
    -
    14121  }
    -
    14122  }
    -
    14123  // LCOV_EXCL_STOP
    -
    14124  }
    -
    14125 
    -
    14129  CharType ubjson_prefix(const BasicJsonType& j) const noexcept
    -
    14130  {
    -
    14131  switch (j.type())
    -
    14132  {
    -
    14133  case value_t::null:
    -
    14134  return 'Z';
    -
    14135 
    -
    14136  case value_t::boolean:
    -
    14137  return j.m_value.boolean ? 'T' : 'F';
    -
    14138 
    - -
    14140  {
    -
    14141  if ((std::numeric_limits<std::int8_t>::min)() <= j.m_value.number_integer && j.m_value.number_integer <= (std::numeric_limits<std::int8_t>::max)())
    -
    14142  {
    -
    14143  return 'i';
    -
    14144  }
    -
    14145  if ((std::numeric_limits<std::uint8_t>::min)() <= j.m_value.number_integer && j.m_value.number_integer <= (std::numeric_limits<std::uint8_t>::max)())
    -
    14146  {
    -
    14147  return 'U';
    -
    14148  }
    -
    14149  if ((std::numeric_limits<std::int16_t>::min)() <= j.m_value.number_integer && j.m_value.number_integer <= (std::numeric_limits<std::int16_t>::max)())
    -
    14150  {
    -
    14151  return 'I';
    -
    14152  }
    -
    14153  if ((std::numeric_limits<std::int32_t>::min)() <= j.m_value.number_integer && j.m_value.number_integer <= (std::numeric_limits<std::int32_t>::max)())
    -
    14154  {
    -
    14155  return 'l';
    -
    14156  }
    -
    14157  if ((std::numeric_limits<std::int64_t>::min)() <= j.m_value.number_integer && j.m_value.number_integer <= (std::numeric_limits<std::int64_t>::max)())
    -
    14158  {
    -
    14159  return 'L';
    -
    14160  }
    -
    14161  // anything else is treated as high-precision number
    -
    14162  return 'H'; // LCOV_EXCL_LINE
    -
    14163  }
    -
    14164 
    - -
    14166  {
    -
    14167  if (j.m_value.number_unsigned <= static_cast<std::uint64_t>((std::numeric_limits<std::int8_t>::max)()))
    -
    14168  {
    -
    14169  return 'i';
    -
    14170  }
    -
    14171  if (j.m_value.number_unsigned <= static_cast<std::uint64_t>((std::numeric_limits<std::uint8_t>::max)()))
    -
    14172  {
    -
    14173  return 'U';
    -
    14174  }
    -
    14175  if (j.m_value.number_unsigned <= static_cast<std::uint64_t>((std::numeric_limits<std::int16_t>::max)()))
    -
    14176  {
    -
    14177  return 'I';
    -
    14178  }
    -
    14179  if (j.m_value.number_unsigned <= static_cast<std::uint64_t>((std::numeric_limits<std::int32_t>::max)()))
    -
    14180  {
    -
    14181  return 'l';
    -
    14182  }
    -
    14183  if (j.m_value.number_unsigned <= static_cast<std::uint64_t>((std::numeric_limits<std::int64_t>::max)()))
    -
    14184  {
    -
    14185  return 'L';
    -
    14186  }
    -
    14187  // anything else is treated as high-precision number
    -
    14188  return 'H'; // LCOV_EXCL_LINE
    -
    14189  }
    -
    14190 
    -
    14191  case value_t::number_float:
    -
    14192  return get_ubjson_float_prefix(j.m_value.number_float);
    -
    14193 
    -
    14194  case value_t::string:
    -
    14195  return 'S';
    -
    14196 
    -
    14197  case value_t::array: // fallthrough
    -
    14198  case value_t::binary:
    -
    14199  return '[';
    -
    14200 
    -
    14201  case value_t::object:
    -
    14202  return '{';
    -
    14203 
    -
    14204  default: // discarded values
    -
    14205  return 'N';
    -
    14206  }
    -
    14207  }
    -
    14208 
    -
    14209  static constexpr CharType get_ubjson_float_prefix(float /*unused*/)
    -
    14210  {
    -
    14211  return 'd'; // float 32
    -
    14212  }
    -
    14213 
    -
    14214  static constexpr CharType get_ubjson_float_prefix(double /*unused*/)
    -
    14215  {
    -
    14216  return 'D'; // float 64
    -
    14217  }
    -
    14218 
    -
    14220  // Utility functions //
    -
    14222 
    -
    14223  /*
    -
    14224  @brief write a number to output input
    -
    14225  @param[in] n number of type @a NumberType
    -
    14226  @tparam NumberType the type of the number
    -
    14227  @tparam OutputIsLittleEndian Set to true if output data is
    -
    14228  required to be little endian
    -
    14229 
    -
    14230  @note This function needs to respect the system's endianess, because bytes
    -
    14231  in CBOR, MessagePack, and UBJSON are stored in network order (big
    -
    14232  endian) and therefore need reordering on little endian systems.
    -
    14233  */
    -
    14234  template<typename NumberType, bool OutputIsLittleEndian = false>
    -
    14235  void write_number(const NumberType n)
    -
    14236  {
    -
    14237  // step 1: write number to array of length NumberType
    -
    14238  std::array<CharType, sizeof(NumberType)> vec;
    -
    14239  std::memcpy(vec.data(), &n, sizeof(NumberType));
    -
    14240 
    -
    14241  // step 2: write array to output (with possible reordering)
    -
    14242  if (is_little_endian != OutputIsLittleEndian)
    -
    14243  {
    -
    14244  // reverse byte order prior to conversion if necessary
    -
    14245  std::reverse(vec.begin(), vec.end());
    -
    14246  }
    -
    14247 
    -
    14248  oa->write_characters(vec.data(), sizeof(NumberType));
    -
    14249  }
    -
    14250 
    -
    14251  void write_compact_float(const number_float_t n, detail::input_format_t format)
    -
    14252  {
    -
    14253  if (static_cast<double>(n) >= static_cast<double>(std::numeric_limits<float>::lowest()) &&
    -
    14254  static_cast<double>(n) <= static_cast<double>((std::numeric_limits<float>::max)()) &&
    -
    14255  static_cast<double>(static_cast<float>(n)) == static_cast<double>(n))
    -
    14256  {
    -
    14257  oa->write_character(format == detail::input_format_t::cbor
    -
    14258  ? get_cbor_float_prefix(static_cast<float>(n))
    -
    14259  : get_msgpack_float_prefix(static_cast<float>(n)));
    -
    14260  write_number(static_cast<float>(n));
    -
    14261  }
    -
    14262  else
    -
    14263  {
    -
    14264  oa->write_character(format == detail::input_format_t::cbor
    -
    14265  ? get_cbor_float_prefix(n)
    -
    14266  : get_msgpack_float_prefix(n));
    -
    14267  write_number(n);
    -
    14268  }
    -
    14269  }
    -
    14270 
    -
    14271  public:
    -
    14272  // The following to_char_type functions are implement the conversion
    -
    14273  // between uint8_t and CharType. In case CharType is not unsigned,
    -
    14274  // such a conversion is required to allow values greater than 128.
    -
    14275  // See <https://github.com/nlohmann/json/issues/1286> for a discussion.
    -
    14276  template < typename C = CharType,
    -
    14277  enable_if_t < std::is_signed<C>::value && std::is_signed<char>::value > * = nullptr >
    -
    14278  static constexpr CharType to_char_type(std::uint8_t x) noexcept
    -
    14279  {
    -
    14280  return *reinterpret_cast<char*>(&x);
    -
    14281  }
    -
    14282 
    -
    14283  template < typename C = CharType,
    -
    14284  enable_if_t < std::is_signed<C>::value && std::is_unsigned<char>::value > * = nullptr >
    -
    14285  static CharType to_char_type(std::uint8_t x) noexcept
    -
    14286  {
    -
    14287  static_assert(sizeof(std::uint8_t) == sizeof(CharType), "size of CharType must be equal to std::uint8_t");
    -
    14288  static_assert(std::is_trivial<CharType>::value, "CharType must be trivial");
    -
    14289  CharType result;
    -
    14290  std::memcpy(&result, &x, sizeof(x));
    -
    14291  return result;
    -
    14292  }
    -
    14293 
    -
    14294  template<typename C = CharType,
    - -
    14296  static constexpr CharType to_char_type(std::uint8_t x) noexcept
    -
    14297  {
    -
    14298  return x;
    -
    14299  }
    -
    14300 
    -
    14301  template < typename InputCharType, typename C = CharType,
    -
    14302  enable_if_t <
    -
    14303  std::is_signed<C>::value &&
    -
    14304  std::is_signed<char>::value &&
    -
    14305  std::is_same<char, typename std::remove_cv<InputCharType>::type>::value
    -
    14306  > * = nullptr >
    -
    14307  static constexpr CharType to_char_type(InputCharType x) noexcept
    -
    14308  {
    -
    14309  return x;
    -
    14310  }
    -
    14311 
    -
    14312  private:
    -
    14314  const bool is_little_endian = little_endianess();
    -
    14315 
    -
    14317  output_adapter_t<CharType> oa = nullptr;
    -
    14318 };
    -
    14319 } // namespace detail
    -
    14320 } // namespace nlohmann
    -
    14321 
    -
    14322 // #include <nlohmann/detail/output/output_adapters.hpp>
    -
    14323 
    -
    14324 // #include <nlohmann/detail/output/serializer.hpp>
    -
    14325 
    -
    14326 
    -
    14327 #include <algorithm> // reverse, remove, fill, find, none_of
    -
    14328 #include <array> // array
    -
    14329 #include <clocale> // localeconv, lconv
    -
    14330 #include <cmath> // labs, isfinite, isnan, signbit
    -
    14331 #include <cstddef> // size_t, ptrdiff_t
    -
    14332 #include <cstdint> // uint8_t
    -
    14333 #include <cstdio> // snprintf
    -
    14334 #include <limits> // numeric_limits
    -
    14335 #include <string> // string, char_traits
    -
    14336 #include <type_traits> // is_same
    -
    14337 #include <utility> // move
    -
    14338 
    -
    14339 // #include <nlohmann/detail/conversions/to_chars.hpp>
    -
    14340 
    -
    14341 
    -
    14342 #include <array> // array
    -
    14343 #include <cmath> // signbit, isfinite
    -
    14344 #include <cstdint> // intN_t, uintN_t
    -
    14345 #include <cstring> // memcpy, memmove
    -
    14346 #include <limits> // numeric_limits
    -
    14347 #include <type_traits> // conditional
    -
    14348 
    -
    14349 // #include <nlohmann/detail/macro_scope.hpp>
    -
    14350 
    -
    14351 
    -
    14352 namespace nlohmann
    -
    14353 {
    -
    14354 namespace detail
    -
    14355 {
    -
    14356 
    -
    14376 namespace dtoa_impl
    -
    14377 {
    -
    14378 
    -
    14379 template<typename Target, typename Source>
    -
    14380 Target reinterpret_bits(const Source source)
    -
    14381 {
    -
    14382  static_assert(sizeof(Target) == sizeof(Source), "size mismatch");
    -
    14383 
    -
    14384  Target target;
    -
    14385  std::memcpy(&target, &source, sizeof(Source));
    -
    14386  return target;
    -
    14387 }
    -
    14388 
    -
    14389 struct diyfp // f * 2^e
    -
    14390 {
    -
    14391  static constexpr int kPrecision = 64; // = q
    -
    14392 
    -
    14393  std::uint64_t f = 0;
    -
    14394  int e = 0;
    -
    14395 
    -
    14396  constexpr diyfp(std::uint64_t f_, int e_) noexcept : f(f_), e(e_) {}
    -
    14397 
    -
    14402  static diyfp sub(const diyfp& x, const diyfp& y) noexcept
    -
    14403  {
    -
    14404  JSON_ASSERT(x.e == y.e);
    -
    14405  JSON_ASSERT(x.f >= y.f);
    -
    14406 
    -
    14407  return {x.f - y.f, x.e};
    -
    14408  }
    -
    14409 
    -
    14414  static diyfp mul(const diyfp& x, const diyfp& y) noexcept
    -
    14415  {
    -
    14416  static_assert(kPrecision == 64, "internal error");
    -
    14417 
    -
    14418  // Computes:
    -
    14419  // f = round((x.f * y.f) / 2^q)
    -
    14420  // e = x.e + y.e + q
    -
    14421 
    -
    14422  // Emulate the 64-bit * 64-bit multiplication:
    -
    14423  //
    -
    14424  // p = u * v
    -
    14425  // = (u_lo + 2^32 u_hi) (v_lo + 2^32 v_hi)
    -
    14426  // = (u_lo v_lo ) + 2^32 ((u_lo v_hi ) + (u_hi v_lo )) + 2^64 (u_hi v_hi )
    -
    14427  // = (p0 ) + 2^32 ((p1 ) + (p2 )) + 2^64 (p3 )
    -
    14428  // = (p0_lo + 2^32 p0_hi) + 2^32 ((p1_lo + 2^32 p1_hi) + (p2_lo + 2^32 p2_hi)) + 2^64 (p3 )
    -
    14429  // = (p0_lo ) + 2^32 (p0_hi + p1_lo + p2_lo ) + 2^64 (p1_hi + p2_hi + p3)
    -
    14430  // = (p0_lo ) + 2^32 (Q ) + 2^64 (H )
    -
    14431  // = (p0_lo ) + 2^32 (Q_lo + 2^32 Q_hi ) + 2^64 (H )
    -
    14432  //
    -
    14433  // (Since Q might be larger than 2^32 - 1)
    -
    14434  //
    -
    14435  // = (p0_lo + 2^32 Q_lo) + 2^64 (Q_hi + H)
    -
    14436  //
    -
    14437  // (Q_hi + H does not overflow a 64-bit int)
    -
    14438  //
    -
    14439  // = p_lo + 2^64 p_hi
    -
    14440 
    -
    14441  const std::uint64_t u_lo = x.f & 0xFFFFFFFFu;
    -
    14442  const std::uint64_t u_hi = x.f >> 32u;
    -
    14443  const std::uint64_t v_lo = y.f & 0xFFFFFFFFu;
    -
    14444  const std::uint64_t v_hi = y.f >> 32u;
    -
    14445 
    -
    14446  const std::uint64_t p0 = u_lo * v_lo;
    -
    14447  const std::uint64_t p1 = u_lo * v_hi;
    -
    14448  const std::uint64_t p2 = u_hi * v_lo;
    -
    14449  const std::uint64_t p3 = u_hi * v_hi;
    -
    14450 
    -
    14451  const std::uint64_t p0_hi = p0 >> 32u;
    -
    14452  const std::uint64_t p1_lo = p1 & 0xFFFFFFFFu;
    -
    14453  const std::uint64_t p1_hi = p1 >> 32u;
    -
    14454  const std::uint64_t p2_lo = p2 & 0xFFFFFFFFu;
    -
    14455  const std::uint64_t p2_hi = p2 >> 32u;
    -
    14456 
    -
    14457  std::uint64_t Q = p0_hi + p1_lo + p2_lo;
    -
    14458 
    -
    14459  // The full product might now be computed as
    -
    14460  //
    -
    14461  // p_hi = p3 + p2_hi + p1_hi + (Q >> 32)
    -
    14462  // p_lo = p0_lo + (Q << 32)
    -
    14463  //
    -
    14464  // But in this particular case here, the full p_lo is not required.
    -
    14465  // Effectively we only need to add the highest bit in p_lo to p_hi (and
    -
    14466  // Q_hi + 1 does not overflow).
    -
    14467 
    -
    14468  Q += std::uint64_t{1} << (64u - 32u - 1u); // round, ties up
    -
    14469 
    -
    14470  const std::uint64_t h = p3 + p2_hi + p1_hi + (Q >> 32u);
    -
    14471 
    -
    14472  return {h, x.e + y.e + 64};
    -
    14473  }
    -
    14474 
    -
    14479  static diyfp normalize(diyfp x) noexcept
    -
    14480  {
    -
    14481  JSON_ASSERT(x.f != 0);
    -
    14482 
    -
    14483  while ((x.f >> 63u) == 0)
    -
    14484  {
    -
    14485  x.f <<= 1u;
    -
    14486  x.e--;
    -
    14487  }
    -
    14488 
    -
    14489  return x;
    -
    14490  }
    -
    14491 
    -
    14496  static diyfp normalize_to(const diyfp& x, const int target_exponent) noexcept
    -
    14497  {
    -
    14498  const int delta = x.e - target_exponent;
    -
    14499 
    -
    14500  JSON_ASSERT(delta >= 0);
    -
    14501  JSON_ASSERT(((x.f << delta) >> delta) == x.f);
    -
    14502 
    -
    14503  return {x.f << delta, target_exponent};
    -
    14504  }
    -
    14505 };
    -
    14506 
    -
    14507 struct boundaries
    -
    14508 {
    -
    14509  diyfp w;
    -
    14510  diyfp minus;
    -
    14511  diyfp plus;
    -
    14512 };
    -
    14513 
    -
    14520 template<typename FloatType>
    -
    14521 boundaries compute_boundaries(FloatType value)
    -
    14522 {
    -
    14523  JSON_ASSERT(std::isfinite(value));
    -
    14524  JSON_ASSERT(value > 0);
    -
    14525 
    -
    14526  // Convert the IEEE representation into a diyfp.
    -
    14527  //
    -
    14528  // If v is denormal:
    -
    14529  // value = 0.F * 2^(1 - bias) = ( F) * 2^(1 - bias - (p-1))
    -
    14530  // If v is normalized:
    -
    14531  // value = 1.F * 2^(E - bias) = (2^(p-1) + F) * 2^(E - bias - (p-1))
    -
    14532 
    -
    14533  static_assert(std::numeric_limits<FloatType>::is_iec559,
    -
    14534  "internal error: dtoa_short requires an IEEE-754 floating-point implementation");
    -
    14535 
    -
    14536  constexpr int kPrecision = std::numeric_limits<FloatType>::digits; // = p (includes the hidden bit)
    -
    14537  constexpr int kBias = std::numeric_limits<FloatType>::max_exponent - 1 + (kPrecision - 1);
    -
    14538  constexpr int kMinExp = 1 - kBias;
    -
    14539  constexpr std::uint64_t kHiddenBit = std::uint64_t{1} << (kPrecision - 1); // = 2^(p-1)
    -
    14540 
    -
    14541  using bits_type = typename std::conditional<kPrecision == 24, std::uint32_t, std::uint64_t >::type;
    -
    14542 
    -
    14543  const std::uint64_t bits = reinterpret_bits<bits_type>(value);
    -
    14544  const std::uint64_t E = bits >> (kPrecision - 1);
    -
    14545  const std::uint64_t F = bits & (kHiddenBit - 1);
    -
    14546 
    -
    14547  const bool is_denormal = E == 0;
    -
    14548  const diyfp v = is_denormal
    -
    14549  ? diyfp(F, kMinExp)
    -
    14550  : diyfp(F + kHiddenBit, static_cast<int>(E) - kBias);
    -
    14551 
    -
    14552  // Compute the boundaries m- and m+ of the floating-point value
    -
    14553  // v = f * 2^e.
    -
    14554  //
    -
    14555  // Determine v- and v+, the floating-point predecessor and successor if v,
    -
    14556  // respectively.
    -
    14557  //
    -
    14558  // v- = v - 2^e if f != 2^(p-1) or e == e_min (A)
    -
    14559  // = v - 2^(e-1) if f == 2^(p-1) and e > e_min (B)
    -
    14560  //
    -
    14561  // v+ = v + 2^e
    -
    14562  //
    -
    14563  // Let m- = (v- + v) / 2 and m+ = (v + v+) / 2. All real numbers _strictly_
    -
    14564  // between m- and m+ round to v, regardless of how the input rounding
    -
    14565  // algorithm breaks ties.
    -
    14566  //
    -
    14567  // ---+-------------+-------------+-------------+-------------+--- (A)
    -
    14568  // v- m- v m+ v+
    -
    14569  //
    -
    14570  // -----------------+------+------+-------------+-------------+--- (B)
    -
    14571  // v- m- v m+ v+
    -
    14572 
    -
    14573  const bool lower_boundary_is_closer = F == 0 && E > 1;
    -
    14574  const diyfp m_plus = diyfp(2 * v.f + 1, v.e - 1);
    -
    14575  const diyfp m_minus = lower_boundary_is_closer
    -
    14576  ? diyfp(4 * v.f - 1, v.e - 2) // (B)
    -
    14577  : diyfp(2 * v.f - 1, v.e - 1); // (A)
    -
    14578 
    -
    14579  // Determine the normalized w+ = m+.
    -
    14580  const diyfp w_plus = diyfp::normalize(m_plus);
    -
    14581 
    -
    14582  // Determine w- = m- such that e_(w-) = e_(w+).
    -
    14583  const diyfp w_minus = diyfp::normalize_to(m_minus, w_plus.e);
    -
    14584 
    -
    14585  return {diyfp::normalize(v), w_minus, w_plus};
    -
    14586 }
    -
    14587 
    -
    14588 // Given normalized diyfp w, Grisu needs to find a (normalized) cached
    -
    14589 // power-of-ten c, such that the exponent of the product c * w = f * 2^e lies
    -
    14590 // within a certain range [alpha, gamma] (Definition 3.2 from [1])
    -
    14591 //
    -
    14592 // alpha <= e = e_c + e_w + q <= gamma
    -
    14593 //
    -
    14594 // or
    -
    14595 //
    -
    14596 // f_c * f_w * 2^alpha <= f_c 2^(e_c) * f_w 2^(e_w) * 2^q
    -
    14597 // <= f_c * f_w * 2^gamma
    -
    14598 //
    -
    14599 // Since c and w are normalized, i.e. 2^(q-1) <= f < 2^q, this implies
    -
    14600 //
    -
    14601 // 2^(q-1) * 2^(q-1) * 2^alpha <= c * w * 2^q < 2^q * 2^q * 2^gamma
    -
    14602 //
    -
    14603 // or
    -
    14604 //
    -
    14605 // 2^(q - 2 + alpha) <= c * w < 2^(q + gamma)
    -
    14606 //
    -
    14607 // The choice of (alpha,gamma) determines the size of the table and the form of
    -
    14608 // the digit generation procedure. Using (alpha,gamma)=(-60,-32) works out well
    -
    14609 // in practice:
    -
    14610 //
    -
    14611 // The idea is to cut the number c * w = f * 2^e into two parts, which can be
    -
    14612 // processed independently: An integral part p1, and a fractional part p2:
    -
    14613 //
    -
    14614 // f * 2^e = ( (f div 2^-e) * 2^-e + (f mod 2^-e) ) * 2^e
    -
    14615 // = (f div 2^-e) + (f mod 2^-e) * 2^e
    -
    14616 // = p1 + p2 * 2^e
    -
    14617 //
    -
    14618 // The conversion of p1 into decimal form requires a series of divisions and
    -
    14619 // modulos by (a power of) 10. These operations are faster for 32-bit than for
    -
    14620 // 64-bit integers, so p1 should ideally fit into a 32-bit integer. This can be
    -
    14621 // achieved by choosing
    -
    14622 //
    -
    14623 // -e >= 32 or e <= -32 := gamma
    -
    14624 //
    -
    14625 // In order to convert the fractional part
    -
    14626 //
    -
    14627 // p2 * 2^e = p2 / 2^-e = d[-1] / 10^1 + d[-2] / 10^2 + ...
    -
    14628 //
    -
    14629 // into decimal form, the fraction is repeatedly multiplied by 10 and the digits
    -
    14630 // d[-i] are extracted in order:
    -
    14631 //
    -
    14632 // (10 * p2) div 2^-e = d[-1]
    -
    14633 // (10 * p2) mod 2^-e = d[-2] / 10^1 + ...
    -
    14634 //
    -
    14635 // The multiplication by 10 must not overflow. It is sufficient to choose
    -
    14636 //
    -
    14637 // 10 * p2 < 16 * p2 = 2^4 * p2 <= 2^64.
    -
    14638 //
    -
    14639 // Since p2 = f mod 2^-e < 2^-e,
    -
    14640 //
    -
    14641 // -e <= 60 or e >= -60 := alpha
    -
    14642 
    -
    14643 constexpr int kAlpha = -60;
    -
    14644 constexpr int kGamma = -32;
    -
    14645 
    -
    14646 struct cached_power // c = f * 2^e ~= 10^k
    -
    14647 {
    -
    14648  std::uint64_t f;
    -
    14649  int e;
    -
    14650  int k;
    -
    14651 };
    -
    14652 
    -
    14660 inline cached_power get_cached_power_for_binary_exponent(int e)
    -
    14661 {
    -
    14662  // Now
    -
    14663  //
    -
    14664  // alpha <= e_c + e + q <= gamma (1)
    -
    14665  // ==> f_c * 2^alpha <= c * 2^e * 2^q
    -
    14666  //
    -
    14667  // and since the c's are normalized, 2^(q-1) <= f_c,
    -
    14668  //
    -
    14669  // ==> 2^(q - 1 + alpha) <= c * 2^(e + q)
    -
    14670  // ==> 2^(alpha - e - 1) <= c
    -
    14671  //
    -
    14672  // If c were an exact power of ten, i.e. c = 10^k, one may determine k as
    -
    14673  //
    -
    14674  // k = ceil( log_10( 2^(alpha - e - 1) ) )
    -
    14675  // = ceil( (alpha - e - 1) * log_10(2) )
    -
    14676  //
    -
    14677  // From the paper:
    -
    14678  // "In theory the result of the procedure could be wrong since c is rounded,
    -
    14679  // and the computation itself is approximated [...]. In practice, however,
    -
    14680  // this simple function is sufficient."
    -
    14681  //
    -
    14682  // For IEEE double precision floating-point numbers converted into
    -
    14683  // normalized diyfp's w = f * 2^e, with q = 64,
    -
    14684  //
    -
    14685  // e >= -1022 (min IEEE exponent)
    -
    14686  // -52 (p - 1)
    -
    14687  // -52 (p - 1, possibly normalize denormal IEEE numbers)
    -
    14688  // -11 (normalize the diyfp)
    -
    14689  // = -1137
    -
    14690  //
    -
    14691  // and
    -
    14692  //
    -
    14693  // e <= +1023 (max IEEE exponent)
    -
    14694  // -52 (p - 1)
    -
    14695  // -11 (normalize the diyfp)
    -
    14696  // = 960
    -
    14697  //
    -
    14698  // This binary exponent range [-1137,960] results in a decimal exponent
    -
    14699  // range [-307,324]. One does not need to store a cached power for each
    -
    14700  // k in this range. For each such k it suffices to find a cached power
    -
    14701  // such that the exponent of the product lies in [alpha,gamma].
    -
    14702  // This implies that the difference of the decimal exponents of adjacent
    -
    14703  // table entries must be less than or equal to
    -
    14704  //
    -
    14705  // floor( (gamma - alpha) * log_10(2) ) = 8.
    -
    14706  //
    -
    14707  // (A smaller distance gamma-alpha would require a larger table.)
    -
    14708 
    -
    14709  // NB:
    -
    14710  // Actually this function returns c, such that -60 <= e_c + e + 64 <= -34.
    -
    14711 
    -
    14712  constexpr int kCachedPowersMinDecExp = -300;
    -
    14713  constexpr int kCachedPowersDecStep = 8;
    -
    14714 
    -
    14715  static constexpr std::array<cached_power, 79> kCachedPowers =
    -
    14716  {
    -
    14717  {
    -
    14718  { 0xAB70FE17C79AC6CA, -1060, -300 },
    -
    14719  { 0xFF77B1FCBEBCDC4F, -1034, -292 },
    -
    14720  { 0xBE5691EF416BD60C, -1007, -284 },
    -
    14721  { 0x8DD01FAD907FFC3C, -980, -276 },
    -
    14722  { 0xD3515C2831559A83, -954, -268 },
    -
    14723  { 0x9D71AC8FADA6C9B5, -927, -260 },
    -
    14724  { 0xEA9C227723EE8BCB, -901, -252 },
    -
    14725  { 0xAECC49914078536D, -874, -244 },
    -
    14726  { 0x823C12795DB6CE57, -847, -236 },
    -
    14727  { 0xC21094364DFB5637, -821, -228 },
    -
    14728  { 0x9096EA6F3848984F, -794, -220 },
    -
    14729  { 0xD77485CB25823AC7, -768, -212 },
    -
    14730  { 0xA086CFCD97BF97F4, -741, -204 },
    -
    14731  { 0xEF340A98172AACE5, -715, -196 },
    -
    14732  { 0xB23867FB2A35B28E, -688, -188 },
    -
    14733  { 0x84C8D4DFD2C63F3B, -661, -180 },
    -
    14734  { 0xC5DD44271AD3CDBA, -635, -172 },
    -
    14735  { 0x936B9FCEBB25C996, -608, -164 },
    -
    14736  { 0xDBAC6C247D62A584, -582, -156 },
    -
    14737  { 0xA3AB66580D5FDAF6, -555, -148 },
    -
    14738  { 0xF3E2F893DEC3F126, -529, -140 },
    -
    14739  { 0xB5B5ADA8AAFF80B8, -502, -132 },
    -
    14740  { 0x87625F056C7C4A8B, -475, -124 },
    -
    14741  { 0xC9BCFF6034C13053, -449, -116 },
    -
    14742  { 0x964E858C91BA2655, -422, -108 },
    -
    14743  { 0xDFF9772470297EBD, -396, -100 },
    -
    14744  { 0xA6DFBD9FB8E5B88F, -369, -92 },
    -
    14745  { 0xF8A95FCF88747D94, -343, -84 },
    -
    14746  { 0xB94470938FA89BCF, -316, -76 },
    -
    14747  { 0x8A08F0F8BF0F156B, -289, -68 },
    -
    14748  { 0xCDB02555653131B6, -263, -60 },
    -
    14749  { 0x993FE2C6D07B7FAC, -236, -52 },
    -
    14750  { 0xE45C10C42A2B3B06, -210, -44 },
    -
    14751  { 0xAA242499697392D3, -183, -36 },
    -
    14752  { 0xFD87B5F28300CA0E, -157, -28 },
    -
    14753  { 0xBCE5086492111AEB, -130, -20 },
    -
    14754  { 0x8CBCCC096F5088CC, -103, -12 },
    -
    14755  { 0xD1B71758E219652C, -77, -4 },
    -
    14756  { 0x9C40000000000000, -50, 4 },
    -
    14757  { 0xE8D4A51000000000, -24, 12 },
    -
    14758  { 0xAD78EBC5AC620000, 3, 20 },
    -
    14759  { 0x813F3978F8940984, 30, 28 },
    -
    14760  { 0xC097CE7BC90715B3, 56, 36 },
    -
    14761  { 0x8F7E32CE7BEA5C70, 83, 44 },
    -
    14762  { 0xD5D238A4ABE98068, 109, 52 },
    -
    14763  { 0x9F4F2726179A2245, 136, 60 },
    -
    14764  { 0xED63A231D4C4FB27, 162, 68 },
    -
    14765  { 0xB0DE65388CC8ADA8, 189, 76 },
    -
    14766  { 0x83C7088E1AAB65DB, 216, 84 },
    -
    14767  { 0xC45D1DF942711D9A, 242, 92 },
    -
    14768  { 0x924D692CA61BE758, 269, 100 },
    -
    14769  { 0xDA01EE641A708DEA, 295, 108 },
    -
    14770  { 0xA26DA3999AEF774A, 322, 116 },
    -
    14771  { 0xF209787BB47D6B85, 348, 124 },
    -
    14772  { 0xB454E4A179DD1877, 375, 132 },
    -
    14773  { 0x865B86925B9BC5C2, 402, 140 },
    -
    14774  { 0xC83553C5C8965D3D, 428, 148 },
    -
    14775  { 0x952AB45CFA97A0B3, 455, 156 },
    -
    14776  { 0xDE469FBD99A05FE3, 481, 164 },
    -
    14777  { 0xA59BC234DB398C25, 508, 172 },
    -
    14778  { 0xF6C69A72A3989F5C, 534, 180 },
    -
    14779  { 0xB7DCBF5354E9BECE, 561, 188 },
    -
    14780  { 0x88FCF317F22241E2, 588, 196 },
    -
    14781  { 0xCC20CE9BD35C78A5, 614, 204 },
    -
    14782  { 0x98165AF37B2153DF, 641, 212 },
    -
    14783  { 0xE2A0B5DC971F303A, 667, 220 },
    -
    14784  { 0xA8D9D1535CE3B396, 694, 228 },
    -
    14785  { 0xFB9B7CD9A4A7443C, 720, 236 },
    -
    14786  { 0xBB764C4CA7A44410, 747, 244 },
    -
    14787  { 0x8BAB8EEFB6409C1A, 774, 252 },
    -
    14788  { 0xD01FEF10A657842C, 800, 260 },
    -
    14789  { 0x9B10A4E5E9913129, 827, 268 },
    -
    14790  { 0xE7109BFBA19C0C9D, 853, 276 },
    -
    14791  { 0xAC2820D9623BF429, 880, 284 },
    -
    14792  { 0x80444B5E7AA7CF85, 907, 292 },
    -
    14793  { 0xBF21E44003ACDD2D, 933, 300 },
    -
    14794  { 0x8E679C2F5E44FF8F, 960, 308 },
    -
    14795  { 0xD433179D9C8CB841, 986, 316 },
    -
    14796  { 0x9E19DB92B4E31BA9, 1013, 324 },
    -
    14797  }
    -
    14798  };
    -
    14799 
    -
    14800  // This computation gives exactly the same results for k as
    -
    14801  // k = ceil((kAlpha - e - 1) * 0.30102999566398114)
    -
    14802  // for |e| <= 1500, but doesn't require floating-point operations.
    -
    14803  // NB: log_10(2) ~= 78913 / 2^18
    -
    14804  JSON_ASSERT(e >= -1500);
    -
    14805  JSON_ASSERT(e <= 1500);
    -
    14806  const int f = kAlpha - e - 1;
    -
    14807  const int k = (f * 78913) / (1 << 18) + static_cast<int>(f > 0);
    -
    14808 
    -
    14809  const int index = (-kCachedPowersMinDecExp + k + (kCachedPowersDecStep - 1)) / kCachedPowersDecStep;
    -
    14810  JSON_ASSERT(index >= 0);
    -
    14811  JSON_ASSERT(static_cast<std::size_t>(index) < kCachedPowers.size());
    -
    14812 
    -
    14813  const cached_power cached = kCachedPowers[static_cast<std::size_t>(index)];
    -
    14814  JSON_ASSERT(kAlpha <= cached.e + e + 64);
    -
    14815  JSON_ASSERT(kGamma >= cached.e + e + 64);
    -
    14816 
    -
    14817  return cached;
    -
    14818 }
    -
    14819 
    -
    14824 inline int find_largest_pow10(const std::uint32_t n, std::uint32_t& pow10)
    -
    14825 {
    -
    14826  // LCOV_EXCL_START
    -
    14827  if (n >= 1000000000)
    -
    14828  {
    -
    14829  pow10 = 1000000000;
    -
    14830  return 10;
    -
    14831  }
    -
    14832  // LCOV_EXCL_STOP
    -
    14833  else if (n >= 100000000)
    -
    14834  {
    -
    14835  pow10 = 100000000;
    -
    14836  return 9;
    -
    14837  }
    -
    14838  else if (n >= 10000000)
    -
    14839  {
    -
    14840  pow10 = 10000000;
    -
    14841  return 8;
    -
    14842  }
    -
    14843  else if (n >= 1000000)
    -
    14844  {
    -
    14845  pow10 = 1000000;
    -
    14846  return 7;
    -
    14847  }
    -
    14848  else if (n >= 100000)
    -
    14849  {
    -
    14850  pow10 = 100000;
    -
    14851  return 6;
    -
    14852  }
    -
    14853  else if (n >= 10000)
    -
    14854  {
    -
    14855  pow10 = 10000;
    -
    14856  return 5;
    -
    14857  }
    -
    14858  else if (n >= 1000)
    -
    14859  {
    -
    14860  pow10 = 1000;
    -
    14861  return 4;
    -
    14862  }
    -
    14863  else if (n >= 100)
    -
    14864  {
    -
    14865  pow10 = 100;
    -
    14866  return 3;
    -
    14867  }
    -
    14868  else if (n >= 10)
    -
    14869  {
    -
    14870  pow10 = 10;
    -
    14871  return 2;
    -
    14872  }
    -
    14873  else
    -
    14874  {
    -
    14875  pow10 = 1;
    -
    14876  return 1;
    -
    14877  }
    -
    14878 }
    -
    14879 
    -
    14880 inline void grisu2_round(char* buf, int len, std::uint64_t dist, std::uint64_t delta,
    -
    14881  std::uint64_t rest, std::uint64_t ten_k)
    -
    14882 {
    -
    14883  JSON_ASSERT(len >= 1);
    -
    14884  JSON_ASSERT(dist <= delta);
    -
    14885  JSON_ASSERT(rest <= delta);
    -
    14886  JSON_ASSERT(ten_k > 0);
    -
    14887 
    -
    14888  // <--------------------------- delta ---->
    -
    14889  // <---- dist --------->
    -
    14890  // --------------[------------------+-------------------]--------------
    -
    14891  // M- w M+
    -
    14892  //
    -
    14893  // ten_k
    -
    14894  // <------>
    -
    14895  // <---- rest ---->
    -
    14896  // --------------[------------------+----+--------------]--------------
    -
    14897  // w V
    -
    14898  // = buf * 10^k
    -
    14899  //
    -
    14900  // ten_k represents a unit-in-the-last-place in the decimal representation
    -
    14901  // stored in buf.
    -
    14902  // Decrement buf by ten_k while this takes buf closer to w.
    -
    14903 
    -
    14904  // The tests are written in this order to avoid overflow in unsigned
    -
    14905  // integer arithmetic.
    -
    14906 
    -
    14907  while (rest < dist
    -
    14908  && delta - rest >= ten_k
    -
    14909  && (rest + ten_k < dist || dist - rest > rest + ten_k - dist))
    -
    14910  {
    -
    14911  JSON_ASSERT(buf[len - 1] != '0');
    -
    14912  buf[len - 1]--;
    -
    14913  rest += ten_k;
    -
    14914  }
    -
    14915 }
    -
    14916 
    -
    14921 inline void grisu2_digit_gen(char* buffer, int& length, int& decimal_exponent,
    -
    14922  diyfp M_minus, diyfp w, diyfp M_plus)
    -
    14923 {
    -
    14924  static_assert(kAlpha >= -60, "internal error");
    -
    14925  static_assert(kGamma <= -32, "internal error");
    -
    14926 
    -
    14927  // Generates the digits (and the exponent) of a decimal floating-point
    -
    14928  // number V = buffer * 10^decimal_exponent in the range [M-, M+]. The diyfp's
    -
    14929  // w, M- and M+ share the same exponent e, which satisfies alpha <= e <= gamma.
    -
    14930  //
    -
    14931  // <--------------------------- delta ---->
    -
    14932  // <---- dist --------->
    -
    14933  // --------------[------------------+-------------------]--------------
    -
    14934  // M- w M+
    -
    14935  //
    -
    14936  // Grisu2 generates the digits of M+ from left to right and stops as soon as
    -
    14937  // V is in [M-,M+].
    -
    14938 
    -
    14939  JSON_ASSERT(M_plus.e >= kAlpha);
    -
    14940  JSON_ASSERT(M_plus.e <= kGamma);
    -
    14941 
    -
    14942  std::uint64_t delta = diyfp::sub(M_plus, M_minus).f; // (significand of (M+ - M-), implicit exponent is e)
    -
    14943  std::uint64_t dist = diyfp::sub(M_plus, w ).f; // (significand of (M+ - w ), implicit exponent is e)
    -
    14944 
    -
    14945  // Split M+ = f * 2^e into two parts p1 and p2 (note: e < 0):
    -
    14946  //
    -
    14947  // M+ = f * 2^e
    -
    14948  // = ((f div 2^-e) * 2^-e + (f mod 2^-e)) * 2^e
    -
    14949  // = ((p1 ) * 2^-e + (p2 )) * 2^e
    -
    14950  // = p1 + p2 * 2^e
    -
    14951 
    -
    14952  const diyfp one(std::uint64_t{1} << -M_plus.e, M_plus.e);
    -
    14953 
    -
    14954  auto p1 = static_cast<std::uint32_t>(M_plus.f >> -one.e); // p1 = f div 2^-e (Since -e >= 32, p1 fits into a 32-bit int.)
    -
    14955  std::uint64_t p2 = M_plus.f & (one.f - 1); // p2 = f mod 2^-e
    -
    14956 
    -
    14957  // 1)
    -
    14958  //
    -
    14959  // Generate the digits of the integral part p1 = d[n-1]...d[1]d[0]
    -
    14960 
    -
    14961  JSON_ASSERT(p1 > 0);
    -
    14962 
    -
    14963  std::uint32_t pow10;
    -
    14964  const int k = find_largest_pow10(p1, pow10);
    -
    14965 
    -
    14966  // 10^(k-1) <= p1 < 10^k, pow10 = 10^(k-1)
    -
    14967  //
    -
    14968  // p1 = (p1 div 10^(k-1)) * 10^(k-1) + (p1 mod 10^(k-1))
    -
    14969  // = (d[k-1] ) * 10^(k-1) + (p1 mod 10^(k-1))
    -
    14970  //
    -
    14971  // M+ = p1 + p2 * 2^e
    -
    14972  // = d[k-1] * 10^(k-1) + (p1 mod 10^(k-1)) + p2 * 2^e
    -
    14973  // = d[k-1] * 10^(k-1) + ((p1 mod 10^(k-1)) * 2^-e + p2) * 2^e
    -
    14974  // = d[k-1] * 10^(k-1) + ( rest) * 2^e
    -
    14975  //
    -
    14976  // Now generate the digits d[n] of p1 from left to right (n = k-1,...,0)
    -
    14977  //
    -
    14978  // p1 = d[k-1]...d[n] * 10^n + d[n-1]...d[0]
    -
    14979  //
    -
    14980  // but stop as soon as
    -
    14981  //
    -
    14982  // rest * 2^e = (d[n-1]...d[0] * 2^-e + p2) * 2^e <= delta * 2^e
    -
    14983 
    -
    14984  int n = k;
    -
    14985  while (n > 0)
    -
    14986  {
    -
    14987  // Invariants:
    -
    14988  // M+ = buffer * 10^n + (p1 + p2 * 2^e) (buffer = 0 for n = k)
    -
    14989  // pow10 = 10^(n-1) <= p1 < 10^n
    -
    14990  //
    -
    14991  const std::uint32_t d = p1 / pow10; // d = p1 div 10^(n-1)
    -
    14992  const std::uint32_t r = p1 % pow10; // r = p1 mod 10^(n-1)
    -
    14993  //
    -
    14994  // M+ = buffer * 10^n + (d * 10^(n-1) + r) + p2 * 2^e
    -
    14995  // = (buffer * 10 + d) * 10^(n-1) + (r + p2 * 2^e)
    -
    14996  //
    -
    14997  JSON_ASSERT(d <= 9);
    -
    14998  buffer[length++] = static_cast<char>('0' + d); // buffer := buffer * 10 + d
    -
    14999  //
    -
    15000  // M+ = buffer * 10^(n-1) + (r + p2 * 2^e)
    -
    15001  //
    -
    15002  p1 = r;
    -
    15003  n--;
    -
    15004  //
    -
    15005  // M+ = buffer * 10^n + (p1 + p2 * 2^e)
    -
    15006  // pow10 = 10^n
    -
    15007  //
    -
    15008 
    -
    15009  // Now check if enough digits have been generated.
    -
    15010  // Compute
    -
    15011  //
    -
    15012  // p1 + p2 * 2^e = (p1 * 2^-e + p2) * 2^e = rest * 2^e
    -
    15013  //
    -
    15014  // Note:
    -
    15015  // Since rest and delta share the same exponent e, it suffices to
    -
    15016  // compare the significands.
    -
    15017  const std::uint64_t rest = (std::uint64_t{p1} << -one.e) + p2;
    -
    15018  if (rest <= delta)
    -
    15019  {
    -
    15020  // V = buffer * 10^n, with M- <= V <= M+.
    -
    15021 
    -
    15022  decimal_exponent += n;
    -
    15023 
    -
    15024  // We may now just stop. But instead look if the buffer could be
    -
    15025  // decremented to bring V closer to w.
    -
    15026  //
    -
    15027  // pow10 = 10^n is now 1 ulp in the decimal representation V.
    -
    15028  // The rounding procedure works with diyfp's with an implicit
    -
    15029  // exponent of e.
    -
    15030  //
    -
    15031  // 10^n = (10^n * 2^-e) * 2^e = ulp * 2^e
    -
    15032  //
    -
    15033  const std::uint64_t ten_n = std::uint64_t{pow10} << -one.e;
    -
    15034  grisu2_round(buffer, length, dist, delta, rest, ten_n);
    -
    15035 
    -
    15036  return;
    -
    15037  }
    -
    15038 
    -
    15039  pow10 /= 10;
    -
    15040  //
    -
    15041  // pow10 = 10^(n-1) <= p1 < 10^n
    -
    15042  // Invariants restored.
    -
    15043  }
    -
    15044 
    -
    15045  // 2)
    -
    15046  //
    -
    15047  // The digits of the integral part have been generated:
    -
    15048  //
    -
    15049  // M+ = d[k-1]...d[1]d[0] + p2 * 2^e
    -
    15050  // = buffer + p2 * 2^e
    -
    15051  //
    -
    15052  // Now generate the digits of the fractional part p2 * 2^e.
    -
    15053  //
    -
    15054  // Note:
    -
    15055  // No decimal point is generated: the exponent is adjusted instead.
    -
    15056  //
    -
    15057  // p2 actually represents the fraction
    -
    15058  //
    -
    15059  // p2 * 2^e
    -
    15060  // = p2 / 2^-e
    -
    15061  // = d[-1] / 10^1 + d[-2] / 10^2 + ...
    -
    15062  //
    -
    15063  // Now generate the digits d[-m] of p1 from left to right (m = 1,2,...)
    -
    15064  //
    -
    15065  // p2 * 2^e = d[-1]d[-2]...d[-m] * 10^-m
    -
    15066  // + 10^-m * (d[-m-1] / 10^1 + d[-m-2] / 10^2 + ...)
    -
    15067  //
    -
    15068  // using
    -
    15069  //
    -
    15070  // 10^m * p2 = ((10^m * p2) div 2^-e) * 2^-e + ((10^m * p2) mod 2^-e)
    -
    15071  // = ( d) * 2^-e + ( r)
    -
    15072  //
    -
    15073  // or
    -
    15074  // 10^m * p2 * 2^e = d + r * 2^e
    -
    15075  //
    -
    15076  // i.e.
    -
    15077  //
    -
    15078  // M+ = buffer + p2 * 2^e
    -
    15079  // = buffer + 10^-m * (d + r * 2^e)
    -
    15080  // = (buffer * 10^m + d) * 10^-m + 10^-m * r * 2^e
    -
    15081  //
    -
    15082  // and stop as soon as 10^-m * r * 2^e <= delta * 2^e
    -
    15083 
    -
    15084  JSON_ASSERT(p2 > delta);
    -
    15085 
    -
    15086  int m = 0;
    -
    15087  for (;;)
    -
    15088  {
    -
    15089  // Invariant:
    -
    15090  // M+ = buffer * 10^-m + 10^-m * (d[-m-1] / 10 + d[-m-2] / 10^2 + ...) * 2^e
    -
    15091  // = buffer * 10^-m + 10^-m * (p2 ) * 2^e
    -
    15092  // = buffer * 10^-m + 10^-m * (1/10 * (10 * p2) ) * 2^e
    -
    15093  // = buffer * 10^-m + 10^-m * (1/10 * ((10*p2 div 2^-e) * 2^-e + (10*p2 mod 2^-e)) * 2^e
    -
    15094  //
    -
    15095  JSON_ASSERT(p2 <= (std::numeric_limits<std::uint64_t>::max)() / 10);
    -
    15096  p2 *= 10;
    -
    15097  const std::uint64_t d = p2 >> -one.e; // d = (10 * p2) div 2^-e
    -
    15098  const std::uint64_t r = p2 & (one.f - 1); // r = (10 * p2) mod 2^-e
    -
    15099  //
    -
    15100  // M+ = buffer * 10^-m + 10^-m * (1/10 * (d * 2^-e + r) * 2^e
    -
    15101  // = buffer * 10^-m + 10^-m * (1/10 * (d + r * 2^e))
    -
    15102  // = (buffer * 10 + d) * 10^(-m-1) + 10^(-m-1) * r * 2^e
    -
    15103  //
    -
    15104  JSON_ASSERT(d <= 9);
    -
    15105  buffer[length++] = static_cast<char>('0' + d); // buffer := buffer * 10 + d
    -
    15106  //
    -
    15107  // M+ = buffer * 10^(-m-1) + 10^(-m-1) * r * 2^e
    -
    15108  //
    -
    15109  p2 = r;
    -
    15110  m++;
    -
    15111  //
    -
    15112  // M+ = buffer * 10^-m + 10^-m * p2 * 2^e
    -
    15113  // Invariant restored.
    -
    15114 
    -
    15115  // Check if enough digits have been generated.
    -
    15116  //
    -
    15117  // 10^-m * p2 * 2^e <= delta * 2^e
    -
    15118  // p2 * 2^e <= 10^m * delta * 2^e
    -
    15119  // p2 <= 10^m * delta
    -
    15120  delta *= 10;
    -
    15121  dist *= 10;
    -
    15122  if (p2 <= delta)
    -
    15123  {
    -
    15124  break;
    -
    15125  }
    -
    15126  }
    -
    15127 
    -
    15128  // V = buffer * 10^-m, with M- <= V <= M+.
    -
    15129 
    -
    15130  decimal_exponent -= m;
    -
    15131 
    -
    15132  // 1 ulp in the decimal representation is now 10^-m.
    -
    15133  // Since delta and dist are now scaled by 10^m, we need to do the
    -
    15134  // same with ulp in order to keep the units in sync.
    -
    15135  //
    -
    15136  // 10^m * 10^-m = 1 = 2^-e * 2^e = ten_m * 2^e
    -
    15137  //
    -
    15138  const std::uint64_t ten_m = one.f;
    -
    15139  grisu2_round(buffer, length, dist, delta, p2, ten_m);
    -
    15140 
    -
    15141  // By construction this algorithm generates the shortest possible decimal
    -
    15142  // number (Loitsch, Theorem 6.2) which rounds back to w.
    -
    15143  // For an input number of precision p, at least
    -
    15144  //
    -
    15145  // N = 1 + ceil(p * log_10(2))
    -
    15146  //
    -
    15147  // decimal digits are sufficient to identify all binary floating-point
    -
    15148  // numbers (Matula, "In-and-Out conversions").
    -
    15149  // This implies that the algorithm does not produce more than N decimal
    -
    15150  // digits.
    -
    15151  //
    -
    15152  // N = 17 for p = 53 (IEEE double precision)
    -
    15153  // N = 9 for p = 24 (IEEE single precision)
    -
    15154 }
    -
    15155 
    - -
    15162 inline void grisu2(char* buf, int& len, int& decimal_exponent,
    -
    15163  diyfp m_minus, diyfp v, diyfp m_plus)
    -
    15164 {
    -
    15165  JSON_ASSERT(m_plus.e == m_minus.e);
    -
    15166  JSON_ASSERT(m_plus.e == v.e);
    -
    15167 
    -
    15168  // --------(-----------------------+-----------------------)-------- (A)
    -
    15169  // m- v m+
    -
    15170  //
    -
    15171  // --------------------(-----------+-----------------------)-------- (B)
    -
    15172  // m- v m+
    -
    15173  //
    -
    15174  // First scale v (and m- and m+) such that the exponent is in the range
    -
    15175  // [alpha, gamma].
    -
    15176 
    -
    15177  const cached_power cached = get_cached_power_for_binary_exponent(m_plus.e);
    -
    15178 
    -
    15179  const diyfp c_minus_k(cached.f, cached.e); // = c ~= 10^-k
    -
    15180 
    -
    15181  // The exponent of the products is = v.e + c_minus_k.e + q and is in the range [alpha,gamma]
    -
    15182  const diyfp w = diyfp::mul(v, c_minus_k);
    -
    15183  const diyfp w_minus = diyfp::mul(m_minus, c_minus_k);
    -
    15184  const diyfp w_plus = diyfp::mul(m_plus, c_minus_k);
    -
    15185 
    -
    15186  // ----(---+---)---------------(---+---)---------------(---+---)----
    -
    15187  // w- w w+
    -
    15188  // = c*m- = c*v = c*m+
    -
    15189  //
    -
    15190  // diyfp::mul rounds its result and c_minus_k is approximated too. w, w- and
    -
    15191  // w+ are now off by a small amount.
    -
    15192  // In fact:
    -
    15193  //
    -
    15194  // w - v * 10^k < 1 ulp
    -
    15195  //
    -
    15196  // To account for this inaccuracy, add resp. subtract 1 ulp.
    -
    15197  //
    -
    15198  // --------+---[---------------(---+---)---------------]---+--------
    -
    15199  // w- M- w M+ w+
    -
    15200  //
    -
    15201  // Now any number in [M-, M+] (bounds included) will round to w when input,
    -
    15202  // regardless of how the input rounding algorithm breaks ties.
    -
    15203  //
    -
    15204  // And digit_gen generates the shortest possible such number in [M-, M+].
    -
    15205  // Note that this does not mean that Grisu2 always generates the shortest
    -
    15206  // possible number in the interval (m-, m+).
    -
    15207  const diyfp M_minus(w_minus.f + 1, w_minus.e);
    -
    15208  const diyfp M_plus (w_plus.f - 1, w_plus.e );
    -
    15209 
    -
    15210  decimal_exponent = -cached.k; // = -(-k) = k
    -
    15211 
    -
    15212  grisu2_digit_gen(buf, len, decimal_exponent, M_minus, w, M_plus);
    -
    15213 }
    -
    15214 
    -
    15220 template<typename FloatType>
    - -
    15222 void grisu2(char* buf, int& len, int& decimal_exponent, FloatType value)
    -
    15223 {
    -
    15224  static_assert(diyfp::kPrecision >= std::numeric_limits<FloatType>::digits + 3,
    -
    15225  "internal error: not enough precision");
    -
    15226 
    -
    15227  JSON_ASSERT(std::isfinite(value));
    -
    15228  JSON_ASSERT(value > 0);
    -
    15229 
    -
    15230  // If the neighbors (and boundaries) of 'value' are always computed for double-precision
    -
    15231  // numbers, all float's can be recovered using strtod (and strtof). However, the resulting
    -
    15232  // decimal representations are not exactly "short".
    -
    15233  //
    -
    15234  // The documentation for 'std::to_chars' (https://en.cppreference.com/w/cpp/utility/to_chars)
    -
    15235  // says "value is converted to a string as if by std::sprintf in the default ("C") locale"
    -
    15236  // and since sprintf promotes float's to double's, I think this is exactly what 'std::to_chars'
    -
    15237  // does.
    -
    15238  // On the other hand, the documentation for 'std::to_chars' requires that "parsing the
    -
    15239  // representation using the corresponding std::from_chars function recovers value exactly". That
    -
    15240  // indicates that single precision floating-point numbers should be recovered using
    -
    15241  // 'std::strtof'.
    -
    15242  //
    -
    15243  // NB: If the neighbors are computed for single-precision numbers, there is a single float
    -
    15244  // (7.0385307e-26f) which can't be recovered using strtod. The resulting double precision
    -
    15245  // value is off by 1 ulp.
    -
    15246 #if 0
    -
    15247  const boundaries w = compute_boundaries(static_cast<double>(value));
    -
    15248 #else
    -
    15249  const boundaries w = compute_boundaries(value);
    -
    15250 #endif
    -
    15251 
    -
    15252  grisu2(buf, len, decimal_exponent, w.minus, w.w, w.plus);
    -
    15253 }
    -
    15254 
    - - -
    15262 inline char* append_exponent(char* buf, int e)
    -
    15263 {
    -
    15264  JSON_ASSERT(e > -1000);
    -
    15265  JSON_ASSERT(e < 1000);
    -
    15266 
    -
    15267  if (e < 0)
    -
    15268  {
    -
    15269  e = -e;
    -
    15270  *buf++ = '-';
    -
    15271  }
    -
    15272  else
    -
    15273  {
    -
    15274  *buf++ = '+';
    -
    15275  }
    -
    15276 
    -
    15277  auto k = static_cast<std::uint32_t>(e);
    -
    15278  if (k < 10)
    -
    15279  {
    -
    15280  // Always print at least two digits in the exponent.
    -
    15281  // This is for compatibility with printf("%g").
    -
    15282  *buf++ = '0';
    -
    15283  *buf++ = static_cast<char>('0' + k);
    -
    15284  }
    -
    15285  else if (k < 100)
    -
    15286  {
    -
    15287  *buf++ = static_cast<char>('0' + k / 10);
    -
    15288  k %= 10;
    -
    15289  *buf++ = static_cast<char>('0' + k);
    -
    15290  }
    -
    15291  else
    -
    15292  {
    -
    15293  *buf++ = static_cast<char>('0' + k / 100);
    -
    15294  k %= 100;
    -
    15295  *buf++ = static_cast<char>('0' + k / 10);
    -
    15296  k %= 10;
    -
    15297  *buf++ = static_cast<char>('0' + k);
    -
    15298  }
    -
    15299 
    -
    15300  return buf;
    -
    15301 }
    -
    15302 
    - - -
    15314 inline char* format_buffer(char* buf, int len, int decimal_exponent,
    -
    15315  int min_exp, int max_exp)
    -
    15316 {
    -
    15317  JSON_ASSERT(min_exp < 0);
    -
    15318  JSON_ASSERT(max_exp > 0);
    -
    15319 
    -
    15320  const int k = len;
    -
    15321  const int n = len + decimal_exponent;
    -
    15322 
    -
    15323  // v = buf * 10^(n-k)
    -
    15324  // k is the length of the buffer (number of decimal digits)
    -
    15325  // n is the position of the decimal point relative to the start of the buffer.
    -
    15326 
    -
    15327  if (k <= n && n <= max_exp)
    -
    15328  {
    -
    15329  // digits[000]
    -
    15330  // len <= max_exp + 2
    -
    15331 
    -
    15332  std::memset(buf + k, '0', static_cast<size_t>(n) - static_cast<size_t>(k));
    -
    15333  // Make it look like a floating-point number (#362, #378)
    -
    15334  buf[n + 0] = '.';
    -
    15335  buf[n + 1] = '0';
    -
    15336  return buf + (static_cast<size_t>(n) + 2);
    -
    15337  }
    -
    15338 
    -
    15339  if (0 < n && n <= max_exp)
    -
    15340  {
    -
    15341  // dig.its
    -
    15342  // len <= max_digits10 + 1
    -
    15343 
    -
    15344  JSON_ASSERT(k > n);
    -
    15345 
    -
    15346  std::memmove(buf + (static_cast<size_t>(n) + 1), buf + n, static_cast<size_t>(k) - static_cast<size_t>(n));
    -
    15347  buf[n] = '.';
    -
    15348  return buf + (static_cast<size_t>(k) + 1U);
    -
    15349  }
    -
    15350 
    -
    15351  if (min_exp < n && n <= 0)
    -
    15352  {
    -
    15353  // 0.[000]digits
    -
    15354  // len <= 2 + (-min_exp - 1) + max_digits10
    -
    15355 
    -
    15356  std::memmove(buf + (2 + static_cast<size_t>(-n)), buf, static_cast<size_t>(k));
    -
    15357  buf[0] = '0';
    -
    15358  buf[1] = '.';
    -
    15359  std::memset(buf + 2, '0', static_cast<size_t>(-n));
    -
    15360  return buf + (2U + static_cast<size_t>(-n) + static_cast<size_t>(k));
    -
    15361  }
    -
    15362 
    -
    15363  if (k == 1)
    -
    15364  {
    -
    15365  // dE+123
    -
    15366  // len <= 1 + 5
    -
    15367 
    -
    15368  buf += 1;
    -
    15369  }
    -
    15370  else
    -
    15371  {
    -
    15372  // d.igitsE+123
    -
    15373  // len <= max_digits10 + 1 + 5
    -
    15374 
    -
    15375  std::memmove(buf + 2, buf + 1, static_cast<size_t>(k) - 1);
    -
    15376  buf[1] = '.';
    -
    15377  buf += 1 + static_cast<size_t>(k);
    -
    15378  }
    -
    15379 
    -
    15380  *buf++ = 'e';
    -
    15381  return append_exponent(buf, n - 1);
    -
    15382 }
    -
    15383 
    -
    15384 } // namespace dtoa_impl
    -
    15385 
    -
    15396 template<typename FloatType>
    - - -
    15399 char* to_chars(char* first, const char* last, FloatType value)
    -
    15400 {
    -
    15401  static_cast<void>(last); // maybe unused - fix warning
    -
    15402  JSON_ASSERT(std::isfinite(value));
    -
    15403 
    -
    15404  // Use signbit(value) instead of (value < 0) since signbit works for -0.
    -
    15405  if (std::signbit(value))
    -
    15406  {
    -
    15407  value = -value;
    -
    15408  *first++ = '-';
    -
    15409  }
    -
    15410 
    -
    15411  if (value == 0) // +-0
    -
    15412  {
    -
    15413  *first++ = '0';
    -
    15414  // Make it look like a floating-point number (#362, #378)
    -
    15415  *first++ = '.';
    -
    15416  *first++ = '0';
    -
    15417  return first;
    -
    15418  }
    -
    15419 
    -
    15420  JSON_ASSERT(last - first >= std::numeric_limits<FloatType>::max_digits10);
    -
    15421 
    -
    15422  // Compute v = buffer * 10^decimal_exponent.
    -
    15423  // The decimal digits are stored in the buffer, which needs to be interpreted
    -
    15424  // as an unsigned decimal integer.
    -
    15425  // len is the length of the buffer, i.e. the number of decimal digits.
    -
    15426  int len = 0;
    -
    15427  int decimal_exponent = 0;
    -
    15428  dtoa_impl::grisu2(first, len, decimal_exponent, value);
    -
    15429 
    -
    15430  JSON_ASSERT(len <= std::numeric_limits<FloatType>::max_digits10);
    -
    15431 
    -
    15432  // Format the buffer like printf("%.*g", prec, value)
    -
    15433  constexpr int kMinExp = -4;
    -
    15434  // Use digits10 here to increase compatibility with version 2.
    -
    15435  constexpr int kMaxExp = std::numeric_limits<FloatType>::digits10;
    -
    15436 
    -
    15437  JSON_ASSERT(last - first >= kMaxExp + 2);
    -
    15438  JSON_ASSERT(last - first >= 2 + (-kMinExp - 1) + std::numeric_limits<FloatType>::max_digits10);
    -
    15439  JSON_ASSERT(last - first >= std::numeric_limits<FloatType>::max_digits10 + 6);
    -
    15440 
    -
    15441  return dtoa_impl::format_buffer(first, len, decimal_exponent, kMinExp, kMaxExp);
    -
    15442 }
    -
    15443 
    -
    15444 } // namespace detail
    -
    15445 } // namespace nlohmann
    -
    15446 
    -
    15447 // #include <nlohmann/detail/exceptions.hpp>
    -
    15448 
    -
    15449 // #include <nlohmann/detail/macro_scope.hpp>
    -
    15450 
    -
    15451 // #include <nlohmann/detail/meta/cpp_future.hpp>
    -
    15452 
    -
    15453 // #include <nlohmann/detail/output/binary_writer.hpp>
    -
    15454 
    -
    15455 // #include <nlohmann/detail/output/output_adapters.hpp>
    -
    15456 
    -
    15457 // #include <nlohmann/detail/value_t.hpp>
    -
    15458 
    -
    15459 
    -
    15460 namespace nlohmann
    -
    15461 {
    -
    15462 namespace detail
    -
    15463 {
    -
    15465 // serialization //
    -
    15467 
    - -
    15470 {
    -
    15471  strict,
    -
    15472  replace,
    -
    15473  ignore
    -
    15474 };
    -
    15475 
    -
    15476 template<typename BasicJsonType>
    -
    15477 class serializer
    -
    15478 {
    -
    15479  using string_t = typename BasicJsonType::string_t;
    -
    15480  using number_float_t = typename BasicJsonType::number_float_t;
    -
    15481  using number_integer_t = typename BasicJsonType::number_integer_t;
    -
    15482  using number_unsigned_t = typename BasicJsonType::number_unsigned_t;
    -
    15483  using binary_char_t = typename BasicJsonType::binary_t::value_type;
    -
    15484  static constexpr std::uint8_t UTF8_ACCEPT = 0;
    -
    15485  static constexpr std::uint8_t UTF8_REJECT = 1;
    -
    15486 
    -
    15487  public:
    -
    15493  serializer(output_adapter_t<char> s, const char ichar,
    -
    15494  error_handler_t error_handler_ = error_handler_t::strict)
    -
    15495  : o(std::move(s))
    -
    15496  , loc(std::localeconv())
    -
    15497  , thousands_sep(loc->thousands_sep == nullptr ? '\0' : std::char_traits<char>::to_char_type(* (loc->thousands_sep)))
    -
    15498  , decimal_point(loc->decimal_point == nullptr ? '\0' : std::char_traits<char>::to_char_type(* (loc->decimal_point)))
    -
    15499  , indent_char(ichar)
    -
    15500  , indent_string(512, indent_char)
    -
    15501  , error_handler(error_handler_)
    -
    15502  {}
    -
    15503 
    -
    15504  // delete because of pointer members
    -
    15505  serializer(const serializer&) = delete;
    -
    15506  serializer& operator=(const serializer&) = delete;
    -
    15507  serializer(serializer&&) = delete;
    -
    15508  serializer& operator=(serializer&&) = delete;
    -
    15509  ~serializer() = default;
    -
    15510 
    -
    15533  void dump(const BasicJsonType& val,
    -
    15534  const bool pretty_print,
    -
    15535  const bool ensure_ascii,
    -
    15536  const unsigned int indent_step,
    -
    15537  const unsigned int current_indent = 0)
    -
    15538  {
    -
    15539  switch (val.m_type)
    -
    15540  {
    -
    15541  case value_t::object:
    -
    15542  {
    -
    15543  if (val.m_value.object->empty())
    -
    15544  {
    -
    15545  o->write_characters("{}", 2);
    -
    15546  return;
    -
    15547  }
    -
    15548 
    -
    15549  if (pretty_print)
    -
    15550  {
    -
    15551  o->write_characters("{\n", 2);
    -
    15552 
    -
    15553  // variable to hold indentation for recursive calls
    -
    15554  const auto new_indent = current_indent + indent_step;
    -
    15555  if (JSON_HEDLEY_UNLIKELY(indent_string.size() < new_indent))
    -
    15556  {
    -
    15557  indent_string.resize(indent_string.size() * 2, ' ');
    -
    15558  }
    -
    15559 
    -
    15560  // first n-1 elements
    -
    15561  auto i = val.m_value.object->cbegin();
    -
    15562  for (std::size_t cnt = 0; cnt < val.m_value.object->size() - 1; ++cnt, ++i)
    -
    15563  {
    -
    15564  o->write_characters(indent_string.c_str(), new_indent);
    -
    15565  o->write_character('\"');
    -
    15566  dump_escaped(i->first, ensure_ascii);
    -
    15567  o->write_characters("\": ", 3);
    -
    15568  dump(i->second, true, ensure_ascii, indent_step, new_indent);
    -
    15569  o->write_characters(",\n", 2);
    -
    15570  }
    -
    15571 
    -
    15572  // last element
    -
    15573  JSON_ASSERT(i != val.m_value.object->cend());
    -
    15574  JSON_ASSERT(std::next(i) == val.m_value.object->cend());
    -
    15575  o->write_characters(indent_string.c_str(), new_indent);
    -
    15576  o->write_character('\"');
    -
    15577  dump_escaped(i->first, ensure_ascii);
    -
    15578  o->write_characters("\": ", 3);
    -
    15579  dump(i->second, true, ensure_ascii, indent_step, new_indent);
    -
    15580 
    -
    15581  o->write_character('\n');
    -
    15582  o->write_characters(indent_string.c_str(), current_indent);
    -
    15583  o->write_character('}');
    -
    15584  }
    -
    15585  else
    -
    15586  {
    -
    15587  o->write_character('{');
    -
    15588 
    -
    15589  // first n-1 elements
    -
    15590  auto i = val.m_value.object->cbegin();
    -
    15591  for (std::size_t cnt = 0; cnt < val.m_value.object->size() - 1; ++cnt, ++i)
    -
    15592  {
    -
    15593  o->write_character('\"');
    -
    15594  dump_escaped(i->first, ensure_ascii);
    -
    15595  o->write_characters("\":", 2);
    -
    15596  dump(i->second, false, ensure_ascii, indent_step, current_indent);
    -
    15597  o->write_character(',');
    -
    15598  }
    -
    15599 
    -
    15600  // last element
    -
    15601  JSON_ASSERT(i != val.m_value.object->cend());
    -
    15602  JSON_ASSERT(std::next(i) == val.m_value.object->cend());
    -
    15603  o->write_character('\"');
    -
    15604  dump_escaped(i->first, ensure_ascii);
    -
    15605  o->write_characters("\":", 2);
    -
    15606  dump(i->second, false, ensure_ascii, indent_step, current_indent);
    -
    15607 
    -
    15608  o->write_character('}');
    -
    15609  }
    -
    15610 
    -
    15611  return;
    -
    15612  }
    -
    15613 
    -
    15614  case value_t::array:
    -
    15615  {
    -
    15616  if (val.m_value.array->empty())
    -
    15617  {
    -
    15618  o->write_characters("[]", 2);
    -
    15619  return;
    -
    15620  }
    -
    15621 
    -
    15622  if (pretty_print)
    -
    15623  {
    -
    15624  o->write_characters("[\n", 2);
    -
    15625 
    -
    15626  // variable to hold indentation for recursive calls
    -
    15627  const auto new_indent = current_indent + indent_step;
    -
    15628  if (JSON_HEDLEY_UNLIKELY(indent_string.size() < new_indent))
    -
    15629  {
    -
    15630  indent_string.resize(indent_string.size() * 2, ' ');
    -
    15631  }
    -
    15632 
    -
    15633  // first n-1 elements
    -
    15634  for (auto i = val.m_value.array->cbegin();
    -
    15635  i != val.m_value.array->cend() - 1; ++i)
    -
    15636  {
    -
    15637  o->write_characters(indent_string.c_str(), new_indent);
    -
    15638  dump(*i, true, ensure_ascii, indent_step, new_indent);
    -
    15639  o->write_characters(",\n", 2);
    -
    15640  }
    -
    15641 
    -
    15642  // last element
    -
    15643  JSON_ASSERT(!val.m_value.array->empty());
    -
    15644  o->write_characters(indent_string.c_str(), new_indent);
    -
    15645  dump(val.m_value.array->back(), true, ensure_ascii, indent_step, new_indent);
    -
    15646 
    -
    15647  o->write_character('\n');
    -
    15648  o->write_characters(indent_string.c_str(), current_indent);
    -
    15649  o->write_character(']');
    -
    15650  }
    -
    15651  else
    -
    15652  {
    -
    15653  o->write_character('[');
    -
    15654 
    -
    15655  // first n-1 elements
    -
    15656  for (auto i = val.m_value.array->cbegin();
    -
    15657  i != val.m_value.array->cend() - 1; ++i)
    -
    15658  {
    -
    15659  dump(*i, false, ensure_ascii, indent_step, current_indent);
    -
    15660  o->write_character(',');
    -
    15661  }
    -
    15662 
    -
    15663  // last element
    -
    15664  JSON_ASSERT(!val.m_value.array->empty());
    -
    15665  dump(val.m_value.array->back(), false, ensure_ascii, indent_step, current_indent);
    -
    15666 
    -
    15667  o->write_character(']');
    -
    15668  }
    -
    15669 
    -
    15670  return;
    -
    15671  }
    -
    15672 
    -
    15673  case value_t::string:
    -
    15674  {
    -
    15675  o->write_character('\"');
    -
    15676  dump_escaped(*val.m_value.string, ensure_ascii);
    -
    15677  o->write_character('\"');
    -
    15678  return;
    -
    15679  }
    -
    15680 
    -
    15681  case value_t::binary:
    -
    15682  {
    -
    15683  if (pretty_print)
    -
    15684  {
    -
    15685  o->write_characters("{\n", 2);
    -
    15686 
    -
    15687  // variable to hold indentation for recursive calls
    -
    15688  const auto new_indent = current_indent + indent_step;
    -
    15689  if (JSON_HEDLEY_UNLIKELY(indent_string.size() < new_indent))
    -
    15690  {
    -
    15691  indent_string.resize(indent_string.size() * 2, ' ');
    -
    15692  }
    -
    15693 
    -
    15694  o->write_characters(indent_string.c_str(), new_indent);
    -
    15695 
    -
    15696  o->write_characters("\"bytes\": [", 10);
    -
    15697 
    -
    15698  if (!val.m_value.binary->empty())
    -
    15699  {
    -
    15700  for (auto i = val.m_value.binary->cbegin();
    -
    15701  i != val.m_value.binary->cend() - 1; ++i)
    -
    15702  {
    -
    15703  dump_integer(*i);
    -
    15704  o->write_characters(", ", 2);
    -
    15705  }
    -
    15706  dump_integer(val.m_value.binary->back());
    -
    15707  }
    -
    15708 
    -
    15709  o->write_characters("],\n", 3);
    -
    15710  o->write_characters(indent_string.c_str(), new_indent);
    -
    15711 
    -
    15712  o->write_characters("\"subtype\": ", 11);
    -
    15713  if (val.m_value.binary->has_subtype())
    -
    15714  {
    -
    15715  dump_integer(val.m_value.binary->subtype());
    -
    15716  }
    -
    15717  else
    -
    15718  {
    -
    15719  o->write_characters("null", 4);
    -
    15720  }
    -
    15721  o->write_character('\n');
    -
    15722  o->write_characters(indent_string.c_str(), current_indent);
    -
    15723  o->write_character('}');
    -
    15724  }
    -
    15725  else
    -
    15726  {
    -
    15727  o->write_characters("{\"bytes\":[", 10);
    -
    15728 
    -
    15729  if (!val.m_value.binary->empty())
    -
    15730  {
    -
    15731  for (auto i = val.m_value.binary->cbegin();
    -
    15732  i != val.m_value.binary->cend() - 1; ++i)
    -
    15733  {
    -
    15734  dump_integer(*i);
    -
    15735  o->write_character(',');
    -
    15736  }
    -
    15737  dump_integer(val.m_value.binary->back());
    -
    15738  }
    -
    15739 
    -
    15740  o->write_characters("],\"subtype\":", 12);
    -
    15741  if (val.m_value.binary->has_subtype())
    -
    15742  {
    -
    15743  dump_integer(val.m_value.binary->subtype());
    -
    15744  o->write_character('}');
    -
    15745  }
    -
    15746  else
    -
    15747  {
    -
    15748  o->write_characters("null}", 5);
    -
    15749  }
    -
    15750  }
    -
    15751  return;
    -
    15752  }
    -
    15753 
    -
    15754  case value_t::boolean:
    -
    15755  {
    -
    15756  if (val.m_value.boolean)
    -
    15757  {
    -
    15758  o->write_characters("true", 4);
    -
    15759  }
    -
    15760  else
    -
    15761  {
    -
    15762  o->write_characters("false", 5);
    -
    15763  }
    -
    15764  return;
    -
    15765  }
    -
    15766 
    - -
    15768  {
    -
    15769  dump_integer(val.m_value.number_integer);
    -
    15770  return;
    -
    15771  }
    -
    15772 
    - -
    15774  {
    -
    15775  dump_integer(val.m_value.number_unsigned);
    -
    15776  return;
    -
    15777  }
    -
    15778 
    -
    15779  case value_t::number_float:
    -
    15780  {
    -
    15781  dump_float(val.m_value.number_float);
    -
    15782  return;
    -
    15783  }
    -
    15784 
    -
    15785  case value_t::discarded:
    -
    15786  {
    -
    15787  o->write_characters("<discarded>", 11);
    -
    15788  return;
    -
    15789  }
    -
    15790 
    -
    15791  case value_t::null:
    -
    15792  {
    -
    15793  o->write_characters("null", 4);
    -
    15794  return;
    -
    15795  }
    -
    15796 
    -
    15797  default: // LCOV_EXCL_LINE
    -
    15798  JSON_ASSERT(false); // LCOV_EXCL_LINE
    -
    15799  }
    -
    15800  }
    -
    15801 
    -
    15802  private:
    -
    15817  void dump_escaped(const string_t& s, const bool ensure_ascii)
    -
    15818  {
    -
    15819  std::uint32_t codepoint;
    -
    15820  std::uint8_t state = UTF8_ACCEPT;
    -
    15821  std::size_t bytes = 0; // number of bytes written to string_buffer
    -
    15822 
    -
    15823  // number of bytes written at the point of the last valid byte
    -
    15824  std::size_t bytes_after_last_accept = 0;
    -
    15825  std::size_t undumped_chars = 0;
    -
    15826 
    -
    15827  for (std::size_t i = 0; i < s.size(); ++i)
    -
    15828  {
    -
    15829  const auto byte = static_cast<uint8_t>(s[i]);
    -
    15830 
    -
    15831  switch (decode(state, codepoint, byte))
    -
    15832  {
    -
    15833  case UTF8_ACCEPT: // decode found a new code point
    -
    15834  {
    -
    15835  switch (codepoint)
    -
    15836  {
    -
    15837  case 0x08: // backspace
    -
    15838  {
    -
    15839  string_buffer[bytes++] = '\\';
    -
    15840  string_buffer[bytes++] = 'b';
    -
    15841  break;
    -
    15842  }
    -
    15843 
    -
    15844  case 0x09: // horizontal tab
    -
    15845  {
    -
    15846  string_buffer[bytes++] = '\\';
    -
    15847  string_buffer[bytes++] = 't';
    -
    15848  break;
    -
    15849  }
    -
    15850 
    -
    15851  case 0x0A: // newline
    -
    15852  {
    -
    15853  string_buffer[bytes++] = '\\';
    -
    15854  string_buffer[bytes++] = 'n';
    -
    15855  break;
    -
    15856  }
    -
    15857 
    -
    15858  case 0x0C: // formfeed
    -
    15859  {
    -
    15860  string_buffer[bytes++] = '\\';
    -
    15861  string_buffer[bytes++] = 'f';
    -
    15862  break;
    -
    15863  }
    -
    15864 
    -
    15865  case 0x0D: // carriage return
    -
    15866  {
    -
    15867  string_buffer[bytes++] = '\\';
    -
    15868  string_buffer[bytes++] = 'r';
    -
    15869  break;
    -
    15870  }
    -
    15871 
    -
    15872  case 0x22: // quotation mark
    -
    15873  {
    -
    15874  string_buffer[bytes++] = '\\';
    -
    15875  string_buffer[bytes++] = '\"';
    -
    15876  break;
    -
    15877  }
    -
    15878 
    -
    15879  case 0x5C: // reverse solidus
    -
    15880  {
    -
    15881  string_buffer[bytes++] = '\\';
    -
    15882  string_buffer[bytes++] = '\\';
    -
    15883  break;
    -
    15884  }
    -
    15885 
    -
    15886  default:
    -
    15887  {
    -
    15888  // escape control characters (0x00..0x1F) or, if
    -
    15889  // ensure_ascii parameter is used, non-ASCII characters
    -
    15890  if ((codepoint <= 0x1F) || (ensure_ascii && (codepoint >= 0x7F)))
    -
    15891  {
    -
    15892  if (codepoint <= 0xFFFF)
    -
    15893  {
    -
    15894  (std::snprintf)(string_buffer.data() + bytes, 7, "\\u%04x",
    -
    15895  static_cast<std::uint16_t>(codepoint));
    -
    15896  bytes += 6;
    -
    15897  }
    -
    15898  else
    -
    15899  {
    -
    15900  (std::snprintf)(string_buffer.data() + bytes, 13, "\\u%04x\\u%04x",
    -
    15901  static_cast<std::uint16_t>(0xD7C0u + (codepoint >> 10u)),
    -
    15902  static_cast<std::uint16_t>(0xDC00u + (codepoint & 0x3FFu)));
    -
    15903  bytes += 12;
    -
    15904  }
    -
    15905  }
    -
    15906  else
    -
    15907  {
    -
    15908  // copy byte to buffer (all previous bytes
    -
    15909  // been copied have in default case above)
    -
    15910  string_buffer[bytes++] = s[i];
    -
    15911  }
    -
    15912  break;
    -
    15913  }
    -
    15914  }
    -
    15915 
    -
    15916  // write buffer and reset index; there must be 13 bytes
    -
    15917  // left, as this is the maximal number of bytes to be
    -
    15918  // written ("\uxxxx\uxxxx\0") for one code point
    -
    15919  if (string_buffer.size() - bytes < 13)
    -
    15920  {
    -
    15921  o->write_characters(string_buffer.data(), bytes);
    -
    15922  bytes = 0;
    -
    15923  }
    -
    15924 
    -
    15925  // remember the byte position of this accept
    -
    15926  bytes_after_last_accept = bytes;
    -
    15927  undumped_chars = 0;
    -
    15928  break;
    -
    15929  }
    -
    15930 
    -
    15931  case UTF8_REJECT: // decode found invalid UTF-8 byte
    -
    15932  {
    -
    15933  switch (error_handler)
    -
    15934  {
    - -
    15936  {
    -
    15937  std::string sn(3, '\0');
    -
    15938  (std::snprintf)(&sn[0], sn.size(), "%.2X", byte);
    -
    15939  JSON_THROW(type_error::create(316, "invalid UTF-8 byte at index " + std::to_string(i) + ": 0x" + sn));
    -
    15940  }
    -
    15941 
    - - -
    15944  {
    -
    15945  // in case we saw this character the first time, we
    -
    15946  // would like to read it again, because the byte
    -
    15947  // may be OK for itself, but just not OK for the
    -
    15948  // previous sequence
    -
    15949  if (undumped_chars > 0)
    -
    15950  {
    -
    15951  --i;
    -
    15952  }
    -
    15953 
    -
    15954  // reset length buffer to the last accepted index;
    -
    15955  // thus removing/ignoring the invalid characters
    -
    15956  bytes = bytes_after_last_accept;
    -
    15957 
    -
    15958  if (error_handler == error_handler_t::replace)
    -
    15959  {
    -
    15960  // add a replacement character
    -
    15961  if (ensure_ascii)
    -
    15962  {
    -
    15963  string_buffer[bytes++] = '\\';
    -
    15964  string_buffer[bytes++] = 'u';
    -
    15965  string_buffer[bytes++] = 'f';
    -
    15966  string_buffer[bytes++] = 'f';
    -
    15967  string_buffer[bytes++] = 'f';
    -
    15968  string_buffer[bytes++] = 'd';
    -
    15969  }
    -
    15970  else
    -
    15971  {
    -
    15972  string_buffer[bytes++] = detail::binary_writer<BasicJsonType, char>::to_char_type('\xEF');
    -
    15973  string_buffer[bytes++] = detail::binary_writer<BasicJsonType, char>::to_char_type('\xBF');
    -
    15974  string_buffer[bytes++] = detail::binary_writer<BasicJsonType, char>::to_char_type('\xBD');
    -
    15975  }
    -
    15976 
    -
    15977  // write buffer and reset index; there must be 13 bytes
    -
    15978  // left, as this is the maximal number of bytes to be
    -
    15979  // written ("\uxxxx\uxxxx\0") for one code point
    -
    15980  if (string_buffer.size() - bytes < 13)
    -
    15981  {
    -
    15982  o->write_characters(string_buffer.data(), bytes);
    -
    15983  bytes = 0;
    -
    15984  }
    -
    15985 
    -
    15986  bytes_after_last_accept = bytes;
    -
    15987  }
    -
    15988 
    -
    15989  undumped_chars = 0;
    -
    15990 
    -
    15991  // continue processing the string
    -
    15992  state = UTF8_ACCEPT;
    -
    15993  break;
    -
    15994  }
    -
    15995 
    -
    15996  default: // LCOV_EXCL_LINE
    -
    15997  JSON_ASSERT(false); // LCOV_EXCL_LINE
    -
    15998  }
    -
    15999  break;
    -
    16000  }
    -
    16001 
    -
    16002  default: // decode found yet incomplete multi-byte code point
    -
    16003  {
    -
    16004  if (!ensure_ascii)
    -
    16005  {
    -
    16006  // code point will not be escaped - copy byte to buffer
    -
    16007  string_buffer[bytes++] = s[i];
    -
    16008  }
    -
    16009  ++undumped_chars;
    -
    16010  break;
    -
    16011  }
    -
    16012  }
    -
    16013  }
    -
    16014 
    -
    16015  // we finished processing the string
    -
    16016  if (JSON_HEDLEY_LIKELY(state == UTF8_ACCEPT))
    -
    16017  {
    -
    16018  // write buffer
    -
    16019  if (bytes > 0)
    -
    16020  {
    -
    16021  o->write_characters(string_buffer.data(), bytes);
    -
    16022  }
    -
    16023  }
    -
    16024  else
    -
    16025  {
    -
    16026  // we finish reading, but do not accept: string was incomplete
    -
    16027  switch (error_handler)
    -
    16028  {
    - -
    16030  {
    -
    16031  std::string sn(3, '\0');
    -
    16032  (std::snprintf)(&sn[0], sn.size(), "%.2X", static_cast<std::uint8_t>(s.back()));
    -
    16033  JSON_THROW(type_error::create(316, "incomplete UTF-8 string; last byte: 0x" + sn));
    -
    16034  }
    -
    16035 
    - -
    16037  {
    -
    16038  // write all accepted bytes
    -
    16039  o->write_characters(string_buffer.data(), bytes_after_last_accept);
    -
    16040  break;
    -
    16041  }
    -
    16042 
    - -
    16044  {
    -
    16045  // write all accepted bytes
    -
    16046  o->write_characters(string_buffer.data(), bytes_after_last_accept);
    -
    16047  // add a replacement character
    -
    16048  if (ensure_ascii)
    -
    16049  {
    -
    16050  o->write_characters("\\ufffd", 6);
    -
    16051  }
    -
    16052  else
    -
    16053  {
    -
    16054  o->write_characters("\xEF\xBF\xBD", 3);
    -
    16055  }
    -
    16056  break;
    -
    16057  }
    -
    16058 
    -
    16059  default: // LCOV_EXCL_LINE
    -
    16060  JSON_ASSERT(false); // LCOV_EXCL_LINE
    -
    16061  }
    -
    16062  }
    -
    16063  }
    -
    16064 
    -
    16073  inline unsigned int count_digits(number_unsigned_t x) noexcept
    -
    16074  {
    -
    16075  unsigned int n_digits = 1;
    -
    16076  for (;;)
    -
    16077  {
    -
    16078  if (x < 10)
    -
    16079  {
    -
    16080  return n_digits;
    -
    16081  }
    -
    16082  if (x < 100)
    -
    16083  {
    -
    16084  return n_digits + 1;
    -
    16085  }
    -
    16086  if (x < 1000)
    -
    16087  {
    -
    16088  return n_digits + 2;
    -
    16089  }
    -
    16090  if (x < 10000)
    -
    16091  {
    -
    16092  return n_digits + 3;
    -
    16093  }
    -
    16094  x = x / 10000u;
    -
    16095  n_digits += 4;
    -
    16096  }
    -
    16097  }
    -
    16098 
    -
    16108  template < typename NumberType, detail::enable_if_t <
    -
    16109  std::is_same<NumberType, number_unsigned_t>::value ||
    -
    16110  std::is_same<NumberType, number_integer_t>::value ||
    -
    16111  std::is_same<NumberType, binary_char_t>::value,
    -
    16112  int > = 0 >
    -
    16113  void dump_integer(NumberType x)
    -
    16114  {
    -
    16115  static constexpr std::array<std::array<char, 2>, 100> digits_to_99
    -
    16116  {
    -
    16117  {
    -
    16118  {{'0', '0'}}, {{'0', '1'}}, {{'0', '2'}}, {{'0', '3'}}, {{'0', '4'}}, {{'0', '5'}}, {{'0', '6'}}, {{'0', '7'}}, {{'0', '8'}}, {{'0', '9'}},
    -
    16119  {{'1', '0'}}, {{'1', '1'}}, {{'1', '2'}}, {{'1', '3'}}, {{'1', '4'}}, {{'1', '5'}}, {{'1', '6'}}, {{'1', '7'}}, {{'1', '8'}}, {{'1', '9'}},
    -
    16120  {{'2', '0'}}, {{'2', '1'}}, {{'2', '2'}}, {{'2', '3'}}, {{'2', '4'}}, {{'2', '5'}}, {{'2', '6'}}, {{'2', '7'}}, {{'2', '8'}}, {{'2', '9'}},
    -
    16121  {{'3', '0'}}, {{'3', '1'}}, {{'3', '2'}}, {{'3', '3'}}, {{'3', '4'}}, {{'3', '5'}}, {{'3', '6'}}, {{'3', '7'}}, {{'3', '8'}}, {{'3', '9'}},
    -
    16122  {{'4', '0'}}, {{'4', '1'}}, {{'4', '2'}}, {{'4', '3'}}, {{'4', '4'}}, {{'4', '5'}}, {{'4', '6'}}, {{'4', '7'}}, {{'4', '8'}}, {{'4', '9'}},
    -
    16123  {{'5', '0'}}, {{'5', '1'}}, {{'5', '2'}}, {{'5', '3'}}, {{'5', '4'}}, {{'5', '5'}}, {{'5', '6'}}, {{'5', '7'}}, {{'5', '8'}}, {{'5', '9'}},
    -
    16124  {{'6', '0'}}, {{'6', '1'}}, {{'6', '2'}}, {{'6', '3'}}, {{'6', '4'}}, {{'6', '5'}}, {{'6', '6'}}, {{'6', '7'}}, {{'6', '8'}}, {{'6', '9'}},
    -
    16125  {{'7', '0'}}, {{'7', '1'}}, {{'7', '2'}}, {{'7', '3'}}, {{'7', '4'}}, {{'7', '5'}}, {{'7', '6'}}, {{'7', '7'}}, {{'7', '8'}}, {{'7', '9'}},
    -
    16126  {{'8', '0'}}, {{'8', '1'}}, {{'8', '2'}}, {{'8', '3'}}, {{'8', '4'}}, {{'8', '5'}}, {{'8', '6'}}, {{'8', '7'}}, {{'8', '8'}}, {{'8', '9'}},
    -
    16127  {{'9', '0'}}, {{'9', '1'}}, {{'9', '2'}}, {{'9', '3'}}, {{'9', '4'}}, {{'9', '5'}}, {{'9', '6'}}, {{'9', '7'}}, {{'9', '8'}}, {{'9', '9'}},
    -
    16128  }
    -
    16129  };
    -
    16130 
    -
    16131  // special case for "0"
    -
    16132  if (x == 0)
    -
    16133  {
    -
    16134  o->write_character('0');
    -
    16135  return;
    -
    16136  }
    -
    16137 
    -
    16138  // use a pointer to fill the buffer
    -
    16139  auto buffer_ptr = number_buffer.begin();
    -
    16140 
    -
    16141  const bool is_negative = std::is_same<NumberType, number_integer_t>::value && !(x >= 0); // see issue #755
    -
    16142  number_unsigned_t abs_value;
    -
    16143 
    -
    16144  unsigned int n_chars;
    -
    16145 
    -
    16146  if (is_negative)
    -
    16147  {
    -
    16148  *buffer_ptr = '-';
    -
    16149  abs_value = remove_sign(static_cast<number_integer_t>(x));
    -
    16150 
    -
    16151  // account one more byte for the minus sign
    -
    16152  n_chars = 1 + count_digits(abs_value);
    -
    16153  }
    -
    16154  else
    -
    16155  {
    -
    16156  abs_value = static_cast<number_unsigned_t>(x);
    -
    16157  n_chars = count_digits(abs_value);
    -
    16158  }
    -
    16159 
    -
    16160  // spare 1 byte for '\0'
    -
    16161  JSON_ASSERT(n_chars < number_buffer.size() - 1);
    -
    16162 
    -
    16163  // jump to the end to generate the string from backward
    -
    16164  // so we later avoid reversing the result
    -
    16165  buffer_ptr += n_chars;
    -
    16166 
    -
    16167  // Fast int2ascii implementation inspired by "Fastware" talk by Andrei Alexandrescu
    -
    16168  // See: https://www.youtube.com/watch?v=o4-CwDo2zpg
    -
    16169  while (abs_value >= 100)
    -
    16170  {
    -
    16171  const auto digits_index = static_cast<unsigned>((abs_value % 100));
    -
    16172  abs_value /= 100;
    -
    16173  *(--buffer_ptr) = digits_to_99[digits_index][1];
    -
    16174  *(--buffer_ptr) = digits_to_99[digits_index][0];
    -
    16175  }
    -
    16176 
    -
    16177  if (abs_value >= 10)
    -
    16178  {
    -
    16179  const auto digits_index = static_cast<unsigned>(abs_value);
    -
    16180  *(--buffer_ptr) = digits_to_99[digits_index][1];
    -
    16181  *(--buffer_ptr) = digits_to_99[digits_index][0];
    -
    16182  }
    -
    16183  else
    -
    16184  {
    -
    16185  *(--buffer_ptr) = static_cast<char>('0' + abs_value);
    -
    16186  }
    -
    16187 
    -
    16188  o->write_characters(number_buffer.data(), n_chars);
    -
    16189  }
    -
    16190 
    -
    16199  void dump_float(number_float_t x)
    -
    16200  {
    -
    16201  // NaN / inf
    -
    16202  if (!std::isfinite(x))
    -
    16203  {
    -
    16204  o->write_characters("null", 4);
    -
    16205  return;
    -
    16206  }
    -
    16207 
    -
    16208  // If number_float_t is an IEEE-754 single or double precision number,
    -
    16209  // use the Grisu2 algorithm to produce short numbers which are
    -
    16210  // guaranteed to round-trip, using strtof and strtod, resp.
    -
    16211  //
    -
    16212  // NB: The test below works if <long double> == <double>.
    -
    16213  static constexpr bool is_ieee_single_or_double
    -
    16214  = (std::numeric_limits<number_float_t>::is_iec559 && std::numeric_limits<number_float_t>::digits == 24 && std::numeric_limits<number_float_t>::max_exponent == 128) ||
    -
    16215  (std::numeric_limits<number_float_t>::is_iec559 && std::numeric_limits<number_float_t>::digits == 53 && std::numeric_limits<number_float_t>::max_exponent == 1024);
    -
    16216 
    -
    16217  dump_float(x, std::integral_constant<bool, is_ieee_single_or_double>());
    -
    16218  }
    -
    16219 
    -
    16220  void dump_float(number_float_t x, std::true_type /*is_ieee_single_or_double*/)
    -
    16221  {
    -
    16222  char* begin = number_buffer.data();
    -
    16223  char* end = ::nlohmann::detail::to_chars(begin, begin + number_buffer.size(), x);
    -
    16224 
    -
    16225  o->write_characters(begin, static_cast<size_t>(end - begin));
    -
    16226  }
    -
    16227 
    -
    16228  void dump_float(number_float_t x, std::false_type /*is_ieee_single_or_double*/)
    -
    16229  {
    -
    16230  // get number of digits for a float -> text -> float round-trip
    -
    16231  static constexpr auto d = std::numeric_limits<number_float_t>::max_digits10;
    -
    16232 
    -
    16233  // the actual conversion
    -
    16234  std::ptrdiff_t len = (std::snprintf)(number_buffer.data(), number_buffer.size(), "%.*g", d, x);
    -
    16235 
    -
    16236  // negative value indicates an error
    -
    16237  JSON_ASSERT(len > 0);
    -
    16238  // check if buffer was large enough
    -
    16239  JSON_ASSERT(static_cast<std::size_t>(len) < number_buffer.size());
    -
    16240 
    -
    16241  // erase thousands separator
    -
    16242  if (thousands_sep != '\0')
    -
    16243  {
    -
    16244  const auto end = std::remove(number_buffer.begin(),
    -
    16245  number_buffer.begin() + len, thousands_sep);
    -
    16246  std::fill(end, number_buffer.end(), '\0');
    -
    16247  JSON_ASSERT((end - number_buffer.begin()) <= len);
    -
    16248  len = (end - number_buffer.begin());
    -
    16249  }
    -
    16250 
    -
    16251  // convert decimal point to '.'
    -
    16252  if (decimal_point != '\0' && decimal_point != '.')
    -
    16253  {
    -
    16254  const auto dec_pos = std::find(number_buffer.begin(), number_buffer.end(), decimal_point);
    -
    16255  if (dec_pos != number_buffer.end())
    -
    16256  {
    -
    16257  *dec_pos = '.';
    -
    16258  }
    -
    16259  }
    -
    16260 
    -
    16261  o->write_characters(number_buffer.data(), static_cast<std::size_t>(len));
    -
    16262 
    -
    16263  // determine if need to append ".0"
    -
    16264  const bool value_is_int_like =
    -
    16265  std::none_of(number_buffer.begin(), number_buffer.begin() + len + 1,
    -
    16266  [](char c)
    -
    16267  {
    -
    16268  return c == '.' || c == 'e';
    -
    16269  });
    -
    16270 
    -
    16271  if (value_is_int_like)
    -
    16272  {
    -
    16273  o->write_characters(".0", 2);
    -
    16274  }
    -
    16275  }
    -
    16276 
    -
    16298  static std::uint8_t decode(std::uint8_t& state, std::uint32_t& codep, const std::uint8_t byte) noexcept
    -
    16299  {
    -
    16300  static const std::array<std::uint8_t, 400> utf8d =
    -
    16301  {
    -
    16302  {
    -
    16303  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 00..1F
    -
    16304  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 20..3F
    -
    16305  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 40..5F
    -
    16306  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 60..7F
    -
    16307  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, // 80..9F
    -
    16308  7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, // A0..BF
    -
    16309  8, 8, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, // C0..DF
    -
    16310  0xA, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, // E0..EF
    -
    16311  0xB, 0x6, 0x6, 0x6, 0x5, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, // F0..FF
    -
    16312  0x0, 0x1, 0x2, 0x3, 0x5, 0x8, 0x7, 0x1, 0x1, 0x1, 0x4, 0x6, 0x1, 0x1, 0x1, 0x1, // s0..s0
    -
    16313  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, // s1..s2
    -
    16314  1, 2, 1, 1, 1, 1, 1, 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, // s3..s4
    -
    16315  1, 2, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 3, 1, 1, 1, 1, 1, 1, // s5..s6
    -
    16316  1, 3, 1, 1, 1, 1, 1, 3, 1, 3, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 // s7..s8
    -
    16317  }
    -
    16318  };
    -
    16319 
    -
    16320  const std::uint8_t type = utf8d[byte];
    -
    16321 
    -
    16322  codep = (state != UTF8_ACCEPT)
    -
    16323  ? (byte & 0x3fu) | (codep << 6u)
    -
    16324  : (0xFFu >> type) & (byte);
    -
    16325 
    -
    16326  std::size_t index = 256u + static_cast<size_t>(state) * 16u + static_cast<size_t>(type);
    -
    16327  JSON_ASSERT(index < 400);
    -
    16328  state = utf8d[index];
    -
    16329  return state;
    -
    16330  }
    -
    16331 
    -
    16332  /*
    -
    16333  * Overload to make the compiler happy while it is instantiating
    -
    16334  * dump_integer for number_unsigned_t.
    -
    16335  * Must never be called.
    -
    16336  */
    -
    16337  number_unsigned_t remove_sign(number_unsigned_t x)
    -
    16338  {
    -
    16339  JSON_ASSERT(false); // LCOV_EXCL_LINE
    -
    16340  return x; // LCOV_EXCL_LINE
    -
    16341  }
    -
    16342 
    -
    16343  /*
    -
    16344  * Helper function for dump_integer
    -
    16345  *
    -
    16346  * This function takes a negative signed integer and returns its absolute
    -
    16347  * value as unsigned integer. The plus/minus shuffling is necessary as we can
    -
    16348  * not directly remove the sign of an arbitrary signed integer as the
    -
    16349  * absolute values of INT_MIN and INT_MAX are usually not the same. See
    -
    16350  * #1708 for details.
    -
    16351  */
    -
    16352  inline number_unsigned_t remove_sign(number_integer_t x) noexcept
    -
    16353  {
    -
    16354  JSON_ASSERT(x < 0 && x < (std::numeric_limits<number_integer_t>::max)());
    -
    16355  return static_cast<number_unsigned_t>(-(x + 1)) + 1;
    -
    16356  }
    -
    16357 
    -
    16358  private:
    -
    16360  output_adapter_t<char> o = nullptr;
    -
    16361 
    -
    16363  std::array<char, 64> number_buffer{{}};
    -
    16364 
    -
    16366  const std::lconv* loc = nullptr;
    -
    16368  const char thousands_sep = '\0';
    -
    16370  const char decimal_point = '\0';
    -
    16371 
    -
    16373  std::array<char, 512> string_buffer{{}};
    -
    16374 
    -
    16376  const char indent_char;
    -
    16378  string_t indent_string;
    -
    16379 
    -
    16381  const error_handler_t error_handler;
    -
    16382 };
    -
    16383 } // namespace detail
    -
    16384 } // namespace nlohmann
    -
    16385 
    -
    16386 // #include <nlohmann/detail/value_t.hpp>
    -
    16387 
    -
    16388 // #include <nlohmann/json_fwd.hpp>
    -
    16389 
    -
    16390 // #include <nlohmann/ordered_map.hpp>
    -
    16391 
    -
    16392 
    -
    16393 #include <functional> // less
    -
    16394 #include <memory> // allocator
    -
    16395 #include <utility> // pair
    -
    16396 #include <vector> // vector
    -
    16397 
    -
    16398 namespace nlohmann
    -
    16399 {
    -
    16400 
    -
    16403 template <class Key, class T, class IgnoredLess = std::less<Key>,
    -
    16404  class Allocator = std::allocator<std::pair<const Key, T>>>
    -
    16405  struct ordered_map : std::vector<std::pair<const Key, T>, Allocator>
    -
    16406 {
    -
    16407  using key_type = Key;
    -
    16408  using mapped_type = T;
    -
    16409  using Container = std::vector<std::pair<const Key, T>, Allocator>;
    -
    16410  using typename Container::iterator;
    -
    16411  using typename Container::const_iterator;
    -
    16412  using typename Container::size_type;
    -
    16413  using typename Container::value_type;
    -
    16414 
    -
    16415  // Explicit constructors instead of `using Container::Container`
    -
    16416  // otherwise older compilers choke on it (GCC <= 5.5, xcode <= 9.4)
    -
    16417  ordered_map(const Allocator& alloc = Allocator()) : Container{alloc} {}
    -
    16418  template <class It>
    -
    16419  ordered_map(It first, It last, const Allocator& alloc = Allocator())
    -
    16420  : Container{first, last, alloc} {}
    -
    16421  ordered_map(std::initializer_list<T> init, const Allocator& alloc = Allocator() )
    -
    16422  : Container{init, alloc} {}
    -
    16423 
    -
    16424  std::pair<iterator, bool> emplace(const key_type& key, T&& t)
    -
    16425  {
    -
    16426  for (auto it = this->begin(); it != this->end(); ++it)
    -
    16427  {
    -
    16428  if (it->first == key)
    -
    16429  {
    -
    16430  return {it, false};
    -
    16431  }
    -
    16432  }
    -
    16433  Container::emplace_back(key, t);
    -
    16434  return {--this->end(), true};
    -
    16435  }
    -
    16436 
    -
    16437  T& operator[](const Key& key)
    -
    16438  {
    -
    16439  return emplace(key, T{}).first->second;
    -
    16440  }
    -
    16441 
    -
    16442  const T& operator[](const Key& key) const
    -
    16443  {
    -
    16444  return at(key);
    -
    16445  }
    -
    16446 
    -
    16447  T& at(const Key& key)
    -
    16448  {
    -
    16449  for (auto it = this->begin(); it != this->end(); ++it)
    -
    16450  {
    -
    16451  if (it->first == key)
    -
    16452  {
    -
    16453  return it->second;
    -
    16454  }
    -
    16455  }
    -
    16456 
    -
    16457  throw std::out_of_range("key not found");
    -
    16458  }
    -
    16459 
    -
    16460  const T& at(const Key& key) const
    -
    16461  {
    -
    16462  for (auto it = this->begin(); it != this->end(); ++it)
    -
    16463  {
    -
    16464  if (it->first == key)
    -
    16465  {
    -
    16466  return it->second;
    -
    16467  }
    -
    16468  }
    -
    16469 
    -
    16470  throw std::out_of_range("key not found");
    -
    16471  }
    -
    16472 
    -
    16473  size_type erase(const Key& key)
    -
    16474  {
    -
    16475  for (auto it = this->begin(); it != this->end(); ++it)
    -
    16476  {
    -
    16477  if (it->first == key)
    -
    16478  {
    -
    16479  // Since we cannot move const Keys, re-construct them in place
    -
    16480  for (auto next = it; ++next != this->end(); ++it)
    -
    16481  {
    -
    16482  it->~value_type(); // Destroy but keep allocation
    -
    16483  new (&*it) value_type{std::move(*next)};
    -
    16484  }
    -
    16485  Container::pop_back();
    -
    16486  return 1;
    -
    16487  }
    -
    16488  }
    -
    16489  return 0;
    -
    16490  }
    -
    16491 
    -
    16492  iterator erase(iterator pos)
    -
    16493  {
    -
    16494  auto it = pos;
    -
    16495 
    -
    16496  // Since we cannot move const Keys, re-construct them in place
    -
    16497  for (auto next = it; ++next != this->end(); ++it)
    -
    16498  {
    -
    16499  it->~value_type(); // Destroy but keep allocation
    -
    16500  new (&*it) value_type{std::move(*next)};
    -
    16501  }
    -
    16502  Container::pop_back();
    -
    16503  return pos;
    -
    16504  }
    -
    16505 
    -
    16506  size_type count(const Key& key) const
    -
    16507  {
    -
    16508  for (auto it = this->begin(); it != this->end(); ++it)
    -
    16509  {
    -
    16510  if (it->first == key)
    -
    16511  {
    -
    16512  return 1;
    -
    16513  }
    -
    16514  }
    -
    16515  return 0;
    -
    16516  }
    -
    16517 
    -
    16518  iterator find(const Key& key)
    -
    16519  {
    -
    16520  for (auto it = this->begin(); it != this->end(); ++it)
    -
    16521  {
    -
    16522  if (it->first == key)
    -
    16523  {
    -
    16524  return it;
    -
    16525  }
    -
    16526  }
    -
    16527  return Container::end();
    -
    16528  }
    -
    16529 
    -
    16530  const_iterator find(const Key& key) const
    -
    16531  {
    -
    16532  for (auto it = this->begin(); it != this->end(); ++it)
    -
    16533  {
    -
    16534  if (it->first == key)
    -
    16535  {
    -
    16536  return it;
    -
    16537  }
    -
    16538  }
    -
    16539  return Container::end();
    -
    16540  }
    -
    16541 
    -
    16542  std::pair<iterator, bool> insert( value_type&& value )
    -
    16543  {
    -
    16544  return emplace(value.first, std::move(value.second));
    -
    16545  }
    -
    16546 
    -
    16547  std::pair<iterator, bool> insert( const value_type& value )
    -
    16548  {
    -
    16549  for (auto it = this->begin(); it != this->end(); ++it)
    -
    16550  {
    -
    16551  if (it->first == value.first)
    -
    16552  {
    -
    16553  return {it, false};
    -
    16554  }
    -
    16555  }
    -
    16556  Container::push_back(value);
    -
    16557  return {--this->end(), true};
    -
    16558  }
    -
    16559 };
    -
    16560 
    -
    16561 } // namespace nlohmann
    -
    16562 
    -
    16563 
    -
    16569 namespace nlohmann
    -
    16570 {
    -
    16571 
    - -
    16657 class basic_json
    -
    16658 {
    -
    16659  private:
    -
    16660  template<detail::value_t> friend struct detail::external_constructor;
    -
    16661  friend ::nlohmann::json_pointer<basic_json>;
    -
    16662 
    -
    16663  template<typename BasicJsonType, typename InputType>
    -
    16664  friend class ::nlohmann::detail::parser;
    -
    16665  friend ::nlohmann::detail::serializer<basic_json>;
    -
    16666  template<typename BasicJsonType>
    -
    16667  friend class ::nlohmann::detail::iter_impl;
    -
    16668  template<typename BasicJsonType, typename CharType>
    -
    16669  friend class ::nlohmann::detail::binary_writer;
    -
    16670  template<typename BasicJsonType, typename InputType, typename SAX>
    -
    16671  friend class ::nlohmann::detail::binary_reader;
    -
    16672  template<typename BasicJsonType>
    -
    16673  friend class ::nlohmann::detail::json_sax_dom_parser;
    -
    16674  template<typename BasicJsonType>
    -
    16675  friend class ::nlohmann::detail::json_sax_dom_callback_parser;
    -
    16676 
    -
    16678  using basic_json_t = NLOHMANN_BASIC_JSON_TPL;
    -
    16679 
    -
    16680  // convenience aliases for types residing in namespace detail;
    - -
    16682 
    -
    16683  template<typename InputAdapterType>
    -
    16684  static ::nlohmann::detail::parser<basic_json, InputAdapterType> parser(
    -
    16685  InputAdapterType adapter,
    - -
    16687  const bool allow_exceptions = true,
    -
    16688  const bool ignore_comments = false
    -
    16689  )
    -
    16690  {
    -
    16691  return ::nlohmann::detail::parser<basic_json, InputAdapterType>(std::move(adapter),
    -
    16692  std::move(cb), allow_exceptions, ignore_comments);
    -
    16693  }
    -
    16694 
    -
    16695  using primitive_iterator_t = ::nlohmann::detail::primitive_iterator_t;
    -
    16696  template<typename BasicJsonType>
    -
    16697  using internal_iterator = ::nlohmann::detail::internal_iterator<BasicJsonType>;
    -
    16698  template<typename BasicJsonType>
    - -
    16700  template<typename Iterator>
    -
    16701  using iteration_proxy = ::nlohmann::detail::iteration_proxy<Iterator>;
    -
    16702  template<typename Base> using json_reverse_iterator = ::nlohmann::detail::json_reverse_iterator<Base>;
    -
    16703 
    -
    16704  template<typename CharType>
    - -
    16706 
    -
    16707  template<typename InputType>
    - -
    16709  template<typename CharType> using binary_writer = ::nlohmann::detail::binary_writer<basic_json, CharType>;
    -
    16710 
    -
    16711  using serializer = ::nlohmann::detail::serializer<basic_json>;
    -
    16712 
    -
    16713  public:
    - - -
    16717  template<typename T, typename SFINAE>
    -
    16718  using json_serializer = JSONSerializer<T, SFINAE>;
    - - -
    16724  using initializer_list_t = std::initializer_list<detail::json_ref<basic_json>>;
    -
    16725 
    - - -
    16729 
    -
    16731  // exceptions //
    -
    16733 
    -
    16737 
    - - - - - - -
    16750 
    -
    16752 
    -
    16753 
    -
    16755  // container types //
    -
    16757 
    -
    16762 
    - -
    16765 
    - -
    16769  using const_reference = const value_type&;
    -
    16770 
    -
    16772  using difference_type = std::ptrdiff_t;
    -
    16774  using size_type = std::size_t;
    -
    16775 
    -
    16777  using allocator_type = AllocatorType<basic_json>;
    -
    16778 
    -
    16780  using pointer = typename std::allocator_traits<allocator_type>::pointer;
    -
    16782  using const_pointer = typename std::allocator_traits<allocator_type>::const_pointer;
    -
    16783 
    - - - - -
    16792 
    -
    16794 
    -
    16795 
    - -
    16800  {
    -
    16801  return allocator_type();
    -
    16802  }
    -
    16803 
    - -
    16831  static basic_json meta()
    -
    16832  {
    -
    16833  basic_json result;
    -
    16834 
    -
    16835  result["copyright"] = "(C) 2013-2020 Niels Lohmann";
    -
    16836  result["name"] = "JSON for Modern C++";
    -
    16837  result["url"] = "https://github.com/nlohmann/json";
    -
    16838  result["version"]["string"] =
    - - - -
    16842  result["version"]["major"] = NLOHMANN_JSON_VERSION_MAJOR;
    -
    16843  result["version"]["minor"] = NLOHMANN_JSON_VERSION_MINOR;
    -
    16844  result["version"]["patch"] = NLOHMANN_JSON_VERSION_PATCH;
    -
    16845 
    -
    16846 #ifdef _WIN32
    -
    16847  result["platform"] = "win32";
    -
    16848 #elif defined __linux__
    -
    16849  result["platform"] = "linux";
    -
    16850 #elif defined __APPLE__
    -
    16851  result["platform"] = "apple";
    -
    16852 #elif defined __unix__
    -
    16853  result["platform"] = "unix";
    -
    16854 #else
    -
    16855  result["platform"] = "unknown";
    -
    16856 #endif
    -
    16857 
    -
    16858 #if defined(__ICC) || defined(__INTEL_COMPILER)
    -
    16859  result["compiler"] = {{"family", "icc"}, {"version", __INTEL_COMPILER}};
    -
    16860 #elif defined(__clang__)
    -
    16861  result["compiler"] = {{"family", "clang"}, {"version", __clang_version__}};
    -
    16862 #elif defined(__GNUC__) || defined(__GNUG__)
    -
    16863  result["compiler"] = {{"family", "gcc"}, {"version", std::to_string(__GNUC__) + "." + std::to_string(__GNUC_MINOR__) + "." + std::to_string(__GNUC_PATCHLEVEL__)}};
    -
    16864 #elif defined(__HP_cc) || defined(__HP_aCC)
    -
    16865  result["compiler"] = "hp"
    -
    16866 #elif defined(__IBMCPP__)
    -
    16867  result["compiler"] = {{"family", "ilecpp"}, {"version", __IBMCPP__}};
    -
    16868 #elif defined(_MSC_VER)
    -
    16869  result["compiler"] = {{"family", "msvc"}, {"version", _MSC_VER}};
    -
    16870 #elif defined(__PGI)
    -
    16871  result["compiler"] = {{"family", "pgcpp"}, {"version", __PGI}};
    -
    16872 #elif defined(__SUNPRO_CC)
    -
    16873  result["compiler"] = {{"family", "sunpro"}, {"version", __SUNPRO_CC}};
    -
    16874 #else
    -
    16875  result["compiler"] = {{"family", "unknown"}, {"version", "unknown"}};
    -
    16876 #endif
    -
    16877 
    -
    16878 #ifdef __cplusplus
    -
    16879  result["compiler"]["c++"] = std::to_string(__cplusplus);
    -
    16880 #else
    -
    16881  result["compiler"]["c++"] = "unknown";
    -
    16882 #endif
    -
    16883  return result;
    -
    16884  }
    -
    16885 
    -
    16886 
    -
    16888  // JSON value data types //
    -
    16890 
    -
    16895 
    -
    16896 #if defined(JSON_HAS_CPP_14)
    -
    16897  // Use transparent comparator if possible, combined with perfect forwarding
    -
    16898  // on find() and count() calls prevents unnecessary string construction.
    -
    16899  using object_comparator_t = std::less<>;
    -
    16900 #else
    -
    16901  using object_comparator_t = std::less<StringType>;
    -
    16902 #endif
    -
    16903 
    -
    16987  using object_t = ObjectType<StringType,
    -
    16988  basic_json,
    - -
    16990  AllocatorType<std::pair<const StringType,
    - -
    16992 
    -
    17037  using array_t = ArrayType<basic_json, AllocatorType<basic_json>>;
    -
    17038 
    -
    17090  using string_t = StringType;
    -
    17091 
    -
    17116  using boolean_t = BooleanType;
    -
    17117 
    -
    17188  using number_integer_t = NumberIntegerType;
    -
    17189 
    -
    17259  using number_unsigned_t = NumberUnsignedType;
    -
    17260 
    -
    17327  using number_float_t = NumberFloatType;
    -
    17328 
    - -
    17400 
    -
    17401  private:
    -
    17402 
    -
    17404  template<typename T, typename... Args>
    - -
    17406  static T* create(Args&& ... args)
    -
    17407  {
    -
    17408  AllocatorType<T> alloc;
    -
    17409  using AllocatorTraits = std::allocator_traits<AllocatorType<T>>;
    -
    17410 
    -
    17411  auto deleter = [&](T * object)
    -
    17412  {
    -
    17413  AllocatorTraits::deallocate(alloc, object, 1);
    -
    17414  };
    -
    17415  std::unique_ptr<T, decltype(deleter)> object(AllocatorTraits::allocate(alloc, 1), deleter);
    -
    17416  AllocatorTraits::construct(alloc, object.get(), std::forward<Args>(args)...);
    -
    17417  JSON_ASSERT(object != nullptr);
    -
    17418  return object.release();
    -
    17419  }
    -
    17420 
    -
    17422  // JSON value storage //
    -
    17424 
    -
    17450  union json_value
    -
    17451  {
    -
    17453  object_t* object;
    -
    17455  array_t* array;
    -
    17457  string_t* string;
    -
    17459  binary_t* binary;
    -
    17461  boolean_t boolean;
    -
    17463  number_integer_t number_integer;
    -
    17465  number_unsigned_t number_unsigned;
    -
    17467  number_float_t number_float;
    -
    17468 
    -
    17470  json_value() = default;
    -
    17472  json_value(boolean_t v) noexcept : boolean(v) {}
    -
    17474  json_value(number_integer_t v) noexcept : number_integer(v) {}
    -
    17476  json_value(number_unsigned_t v) noexcept : number_unsigned(v) {}
    -
    17478  json_value(number_float_t v) noexcept : number_float(v) {}
    -
    17480  json_value(value_t t)
    -
    17481  {
    -
    17482  switch (t)
    -
    17483  {
    -
    17484  case value_t::object:
    -
    17485  {
    -
    17486  object = create<object_t>();
    -
    17487  break;
    -
    17488  }
    -
    17489 
    -
    17490  case value_t::array:
    -
    17491  {
    -
    17492  array = create<array_t>();
    -
    17493  break;
    -
    17494  }
    -
    17495 
    -
    17496  case value_t::string:
    -
    17497  {
    -
    17498  string = create<string_t>("");
    -
    17499  break;
    -
    17500  }
    -
    17501 
    -
    17502  case value_t::binary:
    -
    17503  {
    -
    17504  binary = create<binary_t>();
    -
    17505  break;
    -
    17506  }
    -
    17507 
    -
    17508  case value_t::boolean:
    -
    17509  {
    -
    17510  boolean = boolean_t(false);
    -
    17511  break;
    -
    17512  }
    -
    17513 
    - -
    17515  {
    - -
    17517  break;
    -
    17518  }
    -
    17519 
    - -
    17521  {
    - -
    17523  break;
    -
    17524  }
    -
    17525 
    -
    17526  case value_t::number_float:
    -
    17527  {
    - -
    17529  break;
    -
    17530  }
    -
    17531 
    -
    17532  case value_t::null:
    -
    17533  {
    -
    17534  object = nullptr; // silence warning, see #821
    -
    17535  break;
    -
    17536  }
    -
    17537 
    -
    17538  default:
    -
    17539  {
    -
    17540  object = nullptr; // silence warning, see #821
    - -
    17542  {
    -
    17543  JSON_THROW(other_error::create(500, "961c151d2e87f2686a955a9be24d316f1362bf21 3.9.1")); // LCOV_EXCL_LINE
    -
    17544  }
    -
    17545  break;
    -
    17546  }
    -
    17547  }
    -
    17548  }
    -
    17549 
    -
    17551  json_value(const string_t& value)
    -
    17552  {
    -
    17553  string = create<string_t>(value);
    -
    17554  }
    -
    17555 
    -
    17557  json_value(string_t&& value)
    -
    17558  {
    -
    17559  string = create<string_t>(std::move(value));
    -
    17560  }
    -
    17561 
    -
    17563  json_value(const object_t& value)
    -
    17564  {
    -
    17565  object = create<object_t>(value);
    -
    17566  }
    -
    17567 
    -
    17569  json_value(object_t&& value)
    -
    17570  {
    -
    17571  object = create<object_t>(std::move(value));
    -
    17572  }
    -
    17573 
    -
    17575  json_value(const array_t& value)
    -
    17576  {
    -
    17577  array = create<array_t>(value);
    -
    17578  }
    -
    17579 
    -
    17581  json_value(array_t&& value)
    -
    17582  {
    -
    17583  array = create<array_t>(std::move(value));
    -
    17584  }
    -
    17585 
    -
    17587  json_value(const typename binary_t::container_type& value)
    -
    17588  {
    -
    17589  binary = create<binary_t>(value);
    -
    17590  }
    -
    17591 
    -
    17593  json_value(typename binary_t::container_type&& value)
    -
    17594  {
    -
    17595  binary = create<binary_t>(std::move(value));
    -
    17596  }
    -
    17597 
    -
    17599  json_value(const binary_t& value)
    -
    17600  {
    -
    17601  binary = create<binary_t>(value);
    -
    17602  }
    -
    17603 
    -
    17605  json_value(binary_t&& value)
    -
    17606  {
    -
    17607  binary = create<binary_t>(std::move(value));
    -
    17608  }
    -
    17609 
    -
    17610  void destroy(value_t t) noexcept
    -
    17611  {
    -
    17612  // flatten the current json_value to a heap-allocated stack
    -
    17613  std::vector<basic_json> stack;
    -
    17614 
    -
    17615  // move the top-level items to stack
    -
    17616  if (t == value_t::array)
    -
    17617  {
    -
    17618  stack.reserve(array->size());
    -
    17619  std::move(array->begin(), array->end(), std::back_inserter(stack));
    -
    17620  }
    -
    17621  else if (t == value_t::object)
    -
    17622  {
    -
    17623  stack.reserve(object->size());
    -
    17624  for (auto&& it : *object)
    -
    17625  {
    -
    17626  stack.push_back(std::move(it.second));
    -
    17627  }
    -
    17628  }
    -
    17629 
    -
    17630  while (!stack.empty())
    -
    17631  {
    -
    17632  // move the last item to local variable to be processed
    -
    17633  basic_json current_item(std::move(stack.back()));
    -
    17634  stack.pop_back();
    -
    17635 
    -
    17636  // if current_item is array/object, move
    -
    17637  // its children to the stack to be processed later
    -
    17638  if (current_item.is_array())
    -
    17639  {
    -
    17640  std::move(current_item.m_value.array->begin(), current_item.m_value.array->end(),
    -
    17641  std::back_inserter(stack));
    -
    17642 
    -
    17643  current_item.m_value.array->clear();
    -
    17644  }
    -
    17645  else if (current_item.is_object())
    -
    17646  {
    -
    17647  for (auto&& it : *current_item.m_value.object)
    -
    17648  {
    -
    17649  stack.push_back(std::move(it.second));
    -
    17650  }
    -
    17651 
    -
    17652  current_item.m_value.object->clear();
    -
    17653  }
    -
    17654 
    -
    17655  // it's now safe that current_item get destructed
    -
    17656  // since it doesn't have any children
    -
    17657  }
    -
    17658 
    -
    17659  switch (t)
    -
    17660  {
    -
    17661  case value_t::object:
    -
    17662  {
    -
    17663  AllocatorType<object_t> alloc;
    -
    17664  std::allocator_traits<decltype(alloc)>::destroy(alloc, object);
    -
    17665  std::allocator_traits<decltype(alloc)>::deallocate(alloc, object, 1);
    -
    17666  break;
    -
    17667  }
    -
    17668 
    -
    17669  case value_t::array:
    -
    17670  {
    -
    17671  AllocatorType<array_t> alloc;
    -
    17672  std::allocator_traits<decltype(alloc)>::destroy(alloc, array);
    -
    17673  std::allocator_traits<decltype(alloc)>::deallocate(alloc, array, 1);
    -
    17674  break;
    -
    17675  }
    -
    17676 
    -
    17677  case value_t::string:
    -
    17678  {
    -
    17679  AllocatorType<string_t> alloc;
    -
    17680  std::allocator_traits<decltype(alloc)>::destroy(alloc, string);
    -
    17681  std::allocator_traits<decltype(alloc)>::deallocate(alloc, string, 1);
    -
    17682  break;
    -
    17683  }
    -
    17684 
    -
    17685  case value_t::binary:
    -
    17686  {
    -
    17687  AllocatorType<binary_t> alloc;
    -
    17688  std::allocator_traits<decltype(alloc)>::destroy(alloc, binary);
    -
    17689  std::allocator_traits<decltype(alloc)>::deallocate(alloc, binary, 1);
    -
    17690  break;
    -
    17691  }
    -
    17692 
    -
    17693  default:
    -
    17694  {
    -
    17695  break;
    -
    17696  }
    -
    17697  }
    -
    17698  }
    -
    17699  };
    -
    17700 
    -
    17710  void assert_invariant() const noexcept
    -
    17711  {
    -
    17712  JSON_ASSERT(m_type != value_t::object || m_value.object != nullptr);
    -
    17713  JSON_ASSERT(m_type != value_t::array || m_value.array != nullptr);
    -
    17714  JSON_ASSERT(m_type != value_t::string || m_value.string != nullptr);
    -
    17715  JSON_ASSERT(m_type != value_t::binary || m_value.binary != nullptr);
    -
    17716  }
    -
    17717 
    -
    17718  public:
    -
    17720  // JSON parser callback //
    -
    17722 
    - -
    17739 
    - -
    17790 
    -
    17792  // constructors //
    -
    17794 
    -
    17799 
    - -
    17831  : m_type(v), m_value(v)
    -
    17832  {
    -
    17833  assert_invariant();
    -
    17834  }
    -
    17835 
    -
    17854  basic_json(std::nullptr_t = nullptr) noexcept
    -
    17855  : basic_json(value_t::null)
    -
    17856  {
    -
    17857  assert_invariant();
    -
    17858  }
    -
    17859 
    -
    17923  template < typename CompatibleType,
    -
    17924  typename U = detail::uncvref_t<CompatibleType>,
    - - -
    17927  basic_json(CompatibleType && val) noexcept(noexcept(
    -
    17928  JSONSerializer<U>::to_json(std::declval<basic_json_t&>(),
    -
    17929  std::forward<CompatibleType>(val))))
    -
    17930  {
    -
    17931  JSONSerializer<U>::to_json(*this, std::forward<CompatibleType>(val));
    -
    17932  assert_invariant();
    -
    17933  }
    -
    17934 
    -
    17961  template < typename BasicJsonType,
    - -
    17963  detail::is_basic_json<BasicJsonType>::value&& !std::is_same<basic_json, BasicJsonType>::value, int > = 0 >
    -
    17964  basic_json(const BasicJsonType& val)
    -
    17965  {
    -
    17966  using other_boolean_t = typename BasicJsonType::boolean_t;
    -
    17967  using other_number_float_t = typename BasicJsonType::number_float_t;
    -
    17968  using other_number_integer_t = typename BasicJsonType::number_integer_t;
    -
    17969  using other_number_unsigned_t = typename BasicJsonType::number_unsigned_t;
    -
    17970  using other_string_t = typename BasicJsonType::string_t;
    -
    17971  using other_object_t = typename BasicJsonType::object_t;
    -
    17972  using other_array_t = typename BasicJsonType::array_t;
    -
    17973  using other_binary_t = typename BasicJsonType::binary_t;
    -
    17974 
    -
    17975  switch (val.type())
    -
    17976  {
    -
    17977  case value_t::boolean:
    -
    17978  JSONSerializer<other_boolean_t>::to_json(*this, val.template get<other_boolean_t>());
    -
    17979  break;
    -
    17980  case value_t::number_float:
    -
    17981  JSONSerializer<other_number_float_t>::to_json(*this, val.template get<other_number_float_t>());
    -
    17982  break;
    - -
    17984  JSONSerializer<other_number_integer_t>::to_json(*this, val.template get<other_number_integer_t>());
    -
    17985  break;
    - -
    17987  JSONSerializer<other_number_unsigned_t>::to_json(*this, val.template get<other_number_unsigned_t>());
    -
    17988  break;
    -
    17989  case value_t::string:
    -
    17990  JSONSerializer<other_string_t>::to_json(*this, val.template get_ref<const other_string_t&>());
    -
    17991  break;
    -
    17992  case value_t::object:
    -
    17993  JSONSerializer<other_object_t>::to_json(*this, val.template get_ref<const other_object_t&>());
    -
    17994  break;
    -
    17995  case value_t::array:
    -
    17996  JSONSerializer<other_array_t>::to_json(*this, val.template get_ref<const other_array_t&>());
    -
    17997  break;
    -
    17998  case value_t::binary:
    -
    17999  JSONSerializer<other_binary_t>::to_json(*this, val.template get_ref<const other_binary_t&>());
    -
    18000  break;
    -
    18001  case value_t::null:
    -
    18002  *this = nullptr;
    -
    18003  break;
    -
    18004  case value_t::discarded:
    -
    18005  m_type = value_t::discarded;
    -
    18006  break;
    -
    18007  default: // LCOV_EXCL_LINE
    -
    18008  JSON_ASSERT(false); // LCOV_EXCL_LINE
    -
    18009  }
    -
    18010  assert_invariant();
    -
    18011  }
    -
    18012 
    - -
    18088  bool type_deduction = true,
    -
    18089  value_t manual_type = value_t::array)
    -
    18090  {
    -
    18091  // check if each element is an array with two elements whose first
    -
    18092  // element is a string
    -
    18093  bool is_an_object = std::all_of(init.begin(), init.end(),
    -
    18094  [](const detail::json_ref<basic_json>& element_ref)
    -
    18095  {
    -
    18096  return element_ref->is_array() && element_ref->size() == 2 && (*element_ref)[0].is_string();
    -
    18097  });
    -
    18098 
    -
    18099  // adjust type if type deduction is not wanted
    -
    18100  if (!type_deduction)
    -
    18101  {
    -
    18102  // if array is wanted, do not create an object though possible
    -
    18103  if (manual_type == value_t::array)
    -
    18104  {
    -
    18105  is_an_object = false;
    -
    18106  }
    -
    18107 
    -
    18108  // if object is wanted but impossible, throw an exception
    -
    18109  if (JSON_HEDLEY_UNLIKELY(manual_type == value_t::object && !is_an_object))
    -
    18110  {
    -
    18111  JSON_THROW(type_error::create(301, "cannot create object from initializer list"));
    -
    18112  }
    -
    18113  }
    -
    18114 
    -
    18115  if (is_an_object)
    -
    18116  {
    -
    18117  // the initializer list is a list of pairs -> create object
    -
    18118  m_type = value_t::object;
    -
    18119  m_value = value_t::object;
    -
    18120 
    -
    18121  std::for_each(init.begin(), init.end(), [this](const detail::json_ref<basic_json>& element_ref)
    -
    18122  {
    -
    18123  auto element = element_ref.moved_or_copied();
    -
    18124  m_value.object->emplace(
    -
    18125  std::move(*((*element.m_value.array)[0].m_value.string)),
    -
    18126  std::move((*element.m_value.array)[1]));
    -
    18127  });
    -
    18128  }
    -
    18129  else
    -
    18130  {
    -
    18131  // the initializer list describes an array -> create array
    -
    18132  m_type = value_t::array;
    -
    18133  m_value.array = create<array_t>(init.begin(), init.end());
    -
    18134  }
    -
    18135 
    -
    18136  assert_invariant();
    -
    18137  }
    -
    18138 
    - -
    18167  static basic_json binary(const typename binary_t::container_type& init)
    -
    18168  {
    -
    18169  auto res = basic_json();
    -
    18170  res.m_type = value_t::binary;
    -
    18171  res.m_value = init;
    -
    18172  return res;
    -
    18173  }
    -
    18174 
    - -
    18204  static basic_json binary(const typename binary_t::container_type& init, std::uint8_t subtype)
    -
    18205  {
    -
    18206  auto res = basic_json();
    -
    18207  res.m_type = value_t::binary;
    -
    18208  res.m_value = binary_t(init, subtype);
    -
    18209  return res;
    -
    18210  }
    -
    18211 
    - - -
    18215  {
    -
    18216  auto res = basic_json();
    -
    18217  res.m_type = value_t::binary;
    -
    18218  res.m_value = std::move(init);
    -
    18219  return res;
    -
    18220  }
    -
    18221 
    - -
    18224  static basic_json binary(typename binary_t::container_type&& init, std::uint8_t subtype)
    -
    18225  {
    -
    18226  auto res = basic_json();
    -
    18227  res.m_type = value_t::binary;
    -
    18228  res.m_value = binary_t(std::move(init), subtype);
    -
    18229  return res;
    -
    18230  }
    -
    18231 
    - - -
    18271  {
    -
    18272  return basic_json(init, false, value_t::array);
    -
    18273  }
    -
    18274 
    - - -
    18315  {
    -
    18316  return basic_json(init, false, value_t::object);
    -
    18317  }
    -
    18318 
    - -
    18342  : m_type(value_t::array)
    -
    18343  {
    -
    18344  m_value.array = create<array_t>(cnt, val);
    -
    18345  assert_invariant();
    -
    18346  }
    -
    18347 
    -
    18403  template < class InputIT, typename std::enable_if <
    -
    18404  std::is_same<InputIT, typename basic_json_t::iterator>::value ||
    -
    18405  std::is_same<InputIT, typename basic_json_t::const_iterator>::value, int >::type = 0 >
    -
    18406  basic_json(InputIT first, InputIT last)
    -
    18407  {
    -
    18408  JSON_ASSERT(first.m_object != nullptr);
    -
    18409  JSON_ASSERT(last.m_object != nullptr);
    -
    18410 
    -
    18411  // make sure iterator fits the current value
    -
    18412  if (JSON_HEDLEY_UNLIKELY(first.m_object != last.m_object))
    -
    18413  {
    -
    18414  JSON_THROW(invalid_iterator::create(201, "iterators are not compatible"));
    -
    18415  }
    -
    18416 
    -
    18417  // copy type from first iterator
    -
    18418  m_type = first.m_object->m_type;
    -
    18419 
    -
    18420  // check if iterator range is complete for primitive values
    -
    18421  switch (m_type)
    -
    18422  {
    -
    18423  case value_t::boolean:
    -
    18424  case value_t::number_float:
    - - -
    18427  case value_t::string:
    -
    18428  {
    -
    18429  if (JSON_HEDLEY_UNLIKELY(!first.m_it.primitive_iterator.is_begin()
    -
    18430  || !last.m_it.primitive_iterator.is_end()))
    -
    18431  {
    -
    18432  JSON_THROW(invalid_iterator::create(204, "iterators out of range"));
    -
    18433  }
    -
    18434  break;
    -
    18435  }
    -
    18436 
    -
    18437  default:
    -
    18438  break;
    -
    18439  }
    -
    18440 
    -
    18441  switch (m_type)
    -
    18442  {
    - -
    18444  {
    -
    18445  m_value.number_integer = first.m_object->m_value.number_integer;
    -
    18446  break;
    -
    18447  }
    -
    18448 
    - -
    18450  {
    -
    18451  m_value.number_unsigned = first.m_object->m_value.number_unsigned;
    -
    18452  break;
    -
    18453  }
    -
    18454 
    -
    18455  case value_t::number_float:
    -
    18456  {
    -
    18457  m_value.number_float = first.m_object->m_value.number_float;
    -
    18458  break;
    -
    18459  }
    -
    18460 
    -
    18461  case value_t::boolean:
    -
    18462  {
    -
    18463  m_value.boolean = first.m_object->m_value.boolean;
    -
    18464  break;
    -
    18465  }
    -
    18466 
    -
    18467  case value_t::string:
    -
    18468  {
    -
    18469  m_value = *first.m_object->m_value.string;
    -
    18470  break;
    -
    18471  }
    -
    18472 
    -
    18473  case value_t::object:
    -
    18474  {
    -
    18475  m_value.object = create<object_t>(first.m_it.object_iterator,
    -
    18476  last.m_it.object_iterator);
    -
    18477  break;
    -
    18478  }
    -
    18479 
    -
    18480  case value_t::array:
    -
    18481  {
    -
    18482  m_value.array = create<array_t>(first.m_it.array_iterator,
    -
    18483  last.m_it.array_iterator);
    -
    18484  break;
    -
    18485  }
    -
    18486 
    -
    18487  case value_t::binary:
    -
    18488  {
    -
    18489  m_value = *first.m_object->m_value.binary;
    -
    18490  break;
    -
    18491  }
    -
    18492 
    -
    18493  default:
    -
    18494  JSON_THROW(invalid_iterator::create(206, "cannot construct with iterators from " +
    -
    18495  std::string(first.m_object->type_name())));
    -
    18496  }
    -
    18497 
    -
    18498  assert_invariant();
    -
    18499  }
    -
    18500 
    -
    18501 
    -
    18503  // other constructors and destructor //
    -
    18505 
    -
    18506  template<typename JsonRef,
    - -
    18508  std::is_same<typename JsonRef::value_type, basic_json>>::value, int> = 0 >
    -
    18509  basic_json(const JsonRef& ref) : basic_json(ref.moved_or_copied()) {}
    -
    18510 
    -
    18536  basic_json(const basic_json& other)
    -
    18537  : m_type(other.m_type)
    -
    18538  {
    -
    18539  // check of passed value is valid
    -
    18540  other.assert_invariant();
    -
    18541 
    -
    18542  switch (m_type)
    -
    18543  {
    -
    18544  case value_t::object:
    -
    18545  {
    -
    18546  m_value = *other.m_value.object;
    -
    18547  break;
    -
    18548  }
    -
    18549 
    -
    18550  case value_t::array:
    -
    18551  {
    -
    18552  m_value = *other.m_value.array;
    -
    18553  break;
    -
    18554  }
    -
    18555 
    -
    18556  case value_t::string:
    -
    18557  {
    -
    18558  m_value = *other.m_value.string;
    -
    18559  break;
    -
    18560  }
    -
    18561 
    -
    18562  case value_t::boolean:
    -
    18563  {
    -
    18564  m_value = other.m_value.boolean;
    -
    18565  break;
    -
    18566  }
    -
    18567 
    - -
    18569  {
    -
    18570  m_value = other.m_value.number_integer;
    -
    18571  break;
    -
    18572  }
    -
    18573 
    - -
    18575  {
    -
    18576  m_value = other.m_value.number_unsigned;
    -
    18577  break;
    -
    18578  }
    -
    18579 
    -
    18580  case value_t::number_float:
    -
    18581  {
    -
    18582  m_value = other.m_value.number_float;
    -
    18583  break;
    -
    18584  }
    -
    18585 
    -
    18586  case value_t::binary:
    -
    18587  {
    -
    18588  m_value = *other.m_value.binary;
    -
    18589  break;
    -
    18590  }
    -
    18591 
    -
    18592  default:
    -
    18593  break;
    -
    18594  }
    -
    18595 
    -
    18596  assert_invariant();
    -
    18597  }
    -
    18598 
    -
    18625  basic_json(basic_json&& other) noexcept
    -
    18626  : m_type(std::move(other.m_type)),
    -
    18627  m_value(std::move(other.m_value))
    -
    18628  {
    -
    18629  // check that passed value is valid
    -
    18630  other.assert_invariant();
    -
    18631 
    -
    18632  // invalidate payload
    -
    18633  other.m_type = value_t::null;
    -
    18634  other.m_value = {};
    -
    18635 
    -
    18636  assert_invariant();
    -
    18637  }
    -
    18638 
    -
    18662  basic_json& operator=(basic_json other) noexcept (
    -
    18663  std::is_nothrow_move_constructible<value_t>::value&&
    -
    18664  std::is_nothrow_move_assignable<value_t>::value&&
    -
    18665  std::is_nothrow_move_constructible<json_value>::value&&
    -
    18666  std::is_nothrow_move_assignable<json_value>::value
    -
    18667  )
    -
    18668  {
    -
    18669  // check that passed value is valid
    -
    18670  other.assert_invariant();
    -
    18671 
    -
    18672  using std::swap;
    -
    18673  swap(m_type, other.m_type);
    -
    18674  swap(m_value, other.m_value);
    -
    18675 
    -
    18676  assert_invariant();
    -
    18677  return *this;
    -
    18678  }
    -
    18679 
    -
    18695  ~basic_json() noexcept
    -
    18696  {
    -
    18697  assert_invariant();
    -
    18698  m_value.destroy(m_type);
    -
    18699  }
    -
    18700 
    -
    18702 
    -
    18703  public:
    -
    18705  // object inspection //
    -
    18707 
    -
    18711 
    -
    18759  string_t dump(const int indent = -1,
    -
    18760  const char indent_char = ' ',
    -
    18761  const bool ensure_ascii = false,
    -
    18762  const error_handler_t error_handler = error_handler_t::strict) const
    -
    18763  {
    -
    18764  string_t result;
    -
    18765  serializer s(detail::output_adapter<char, string_t>(result), indent_char, error_handler);
    -
    18766 
    -
    18767  if (indent >= 0)
    -
    18768  {
    -
    18769  s.dump(*this, true, ensure_ascii, static_cast<unsigned int>(indent));
    -
    18770  }
    -
    18771  else
    -
    18772  {
    -
    18773  s.dump(*this, false, ensure_ascii, 0);
    -
    18774  }
    -
    18775 
    -
    18776  return result;
    -
    18777  }
    -
    18778 
    -
    18812  constexpr value_t type() const noexcept
    -
    18813  {
    -
    18814  return m_type;
    -
    18815  }
    -
    18816 
    -
    18843  constexpr bool is_primitive() const noexcept
    -
    18844  {
    -
    18845  return is_null() || is_string() || is_boolean() || is_number() || is_binary();
    -
    18846  }
    -
    18847 
    -
    18870  constexpr bool is_structured() const noexcept
    -
    18871  {
    -
    18872  return is_array() || is_object();
    -
    18873  }
    -
    18874 
    -
    18892  constexpr bool is_null() const noexcept
    -
    18893  {
    -
    18894  return m_type == value_t::null;
    -
    18895  }
    -
    18896 
    -
    18914  constexpr bool is_boolean() const noexcept
    -
    18915  {
    -
    18916  return m_type == value_t::boolean;
    -
    18917  }
    -
    18918 
    -
    18944  constexpr bool is_number() const noexcept
    -
    18945  {
    -
    18946  return is_number_integer() || is_number_float();
    -
    18947  }
    -
    18948 
    -
    18973  constexpr bool is_number_integer() const noexcept
    -
    18974  {
    -
    18975  return m_type == value_t::number_integer || m_type == value_t::number_unsigned;
    -
    18976  }
    -
    18977 
    -
    19001  constexpr bool is_number_unsigned() const noexcept
    -
    19002  {
    -
    19003  return m_type == value_t::number_unsigned;
    -
    19004  }
    -
    19005 
    -
    19029  constexpr bool is_number_float() const noexcept
    -
    19030  {
    -
    19031  return m_type == value_t::number_float;
    -
    19032  }
    -
    19033 
    -
    19051  constexpr bool is_object() const noexcept
    -
    19052  {
    -
    19053  return m_type == value_t::object;
    -
    19054  }
    -
    19055 
    -
    19073  constexpr bool is_array() const noexcept
    -
    19074  {
    -
    19075  return m_type == value_t::array;
    -
    19076  }
    -
    19077 
    -
    19095  constexpr bool is_string() const noexcept
    -
    19096  {
    -
    19097  return m_type == value_t::string;
    -
    19098  }
    -
    19099 
    -
    19117  constexpr bool is_binary() const noexcept
    -
    19118  {
    -
    19119  return m_type == value_t::binary;
    -
    19120  }
    -
    19121 
    -
    19144  constexpr bool is_discarded() const noexcept
    -
    19145  {
    -
    19146  return m_type == value_t::discarded;
    -
    19147  }
    -
    19148 
    -
    19170  constexpr operator value_t() const noexcept
    -
    19171  {
    -
    19172  return m_type;
    -
    19173  }
    -
    19174 
    -
    19176 
    -
    19177  private:
    -
    19179  // value access //
    -
    19181 
    -
    19183  boolean_t get_impl(boolean_t* /*unused*/) const
    -
    19184  {
    - -
    19186  {
    -
    19187  return m_value.boolean;
    -
    19188  }
    -
    19189 
    -
    19190  JSON_THROW(type_error::create(302, "type must be boolean, but is " + std::string(type_name())));
    -
    19191  }
    -
    19192 
    -
    19194  object_t* get_impl_ptr(object_t* /*unused*/) noexcept
    -
    19195  {
    -
    19196  return is_object() ? m_value.object : nullptr;
    -
    19197  }
    -
    19198 
    -
    19200  constexpr const object_t* get_impl_ptr(const object_t* /*unused*/) const noexcept
    -
    19201  {
    -
    19202  return is_object() ? m_value.object : nullptr;
    -
    19203  }
    -
    19204 
    -
    19206  array_t* get_impl_ptr(array_t* /*unused*/) noexcept
    -
    19207  {
    -
    19208  return is_array() ? m_value.array : nullptr;
    -
    19209  }
    -
    19210 
    -
    19212  constexpr const array_t* get_impl_ptr(const array_t* /*unused*/) const noexcept
    -
    19213  {
    -
    19214  return is_array() ? m_value.array : nullptr;
    -
    19215  }
    -
    19216 
    -
    19218  string_t* get_impl_ptr(string_t* /*unused*/) noexcept
    -
    19219  {
    -
    19220  return is_string() ? m_value.string : nullptr;
    -
    19221  }
    -
    19222 
    -
    19224  constexpr const string_t* get_impl_ptr(const string_t* /*unused*/) const noexcept
    -
    19225  {
    -
    19226  return is_string() ? m_value.string : nullptr;
    -
    19227  }
    -
    19228 
    -
    19230  boolean_t* get_impl_ptr(boolean_t* /*unused*/) noexcept
    -
    19231  {
    -
    19232  return is_boolean() ? &m_value.boolean : nullptr;
    -
    19233  }
    -
    19234 
    -
    19236  constexpr const boolean_t* get_impl_ptr(const boolean_t* /*unused*/) const noexcept
    -
    19237  {
    -
    19238  return is_boolean() ? &m_value.boolean : nullptr;
    -
    19239  }
    -
    19240 
    -
    19242  number_integer_t* get_impl_ptr(number_integer_t* /*unused*/) noexcept
    -
    19243  {
    -
    19244  return is_number_integer() ? &m_value.number_integer : nullptr;
    -
    19245  }
    -
    19246 
    -
    19248  constexpr const number_integer_t* get_impl_ptr(const number_integer_t* /*unused*/) const noexcept
    -
    19249  {
    -
    19250  return is_number_integer() ? &m_value.number_integer : nullptr;
    -
    19251  }
    -
    19252 
    -
    19254  number_unsigned_t* get_impl_ptr(number_unsigned_t* /*unused*/) noexcept
    -
    19255  {
    -
    19256  return is_number_unsigned() ? &m_value.number_unsigned : nullptr;
    -
    19257  }
    -
    19258 
    -
    19260  constexpr const number_unsigned_t* get_impl_ptr(const number_unsigned_t* /*unused*/) const noexcept
    -
    19261  {
    -
    19262  return is_number_unsigned() ? &m_value.number_unsigned : nullptr;
    -
    19263  }
    -
    19264 
    -
    19266  number_float_t* get_impl_ptr(number_float_t* /*unused*/) noexcept
    -
    19267  {
    -
    19268  return is_number_float() ? &m_value.number_float : nullptr;
    -
    19269  }
    -
    19270 
    -
    19272  constexpr const number_float_t* get_impl_ptr(const number_float_t* /*unused*/) const noexcept
    -
    19273  {
    -
    19274  return is_number_float() ? &m_value.number_float : nullptr;
    -
    19275  }
    -
    19276 
    -
    19278  binary_t* get_impl_ptr(binary_t* /*unused*/) noexcept
    -
    19279  {
    -
    19280  return is_binary() ? m_value.binary : nullptr;
    -
    19281  }
    -
    19282 
    -
    19284  constexpr const binary_t* get_impl_ptr(const binary_t* /*unused*/) const noexcept
    -
    19285  {
    -
    19286  return is_binary() ? m_value.binary : nullptr;
    -
    19287  }
    -
    19288 
    -
    19300  template<typename ReferenceType, typename ThisType>
    -
    19301  static ReferenceType get_ref_impl(ThisType& obj)
    -
    19302  {
    -
    19303  // delegate the call to get_ptr<>()
    -
    19304  auto ptr = obj.template get_ptr<typename std::add_pointer<ReferenceType>::type>();
    -
    19305 
    -
    19306  if (JSON_HEDLEY_LIKELY(ptr != nullptr))
    -
    19307  {
    -
    19308  return *ptr;
    -
    19309  }
    -
    19310 
    -
    19311  JSON_THROW(type_error::create(303, "incompatible ReferenceType for get_ref, actual type is " + std::string(obj.type_name())));
    -
    19312  }
    -
    19313 
    -
    19314  public:
    -
    19318 
    -
    19333  template<typename BasicJsonType, detail::enable_if_t<
    -
    19334  std::is_same<typename std::remove_const<BasicJsonType>::type, basic_json_t>::value,
    -
    19335  int> = 0>
    -
    19336  basic_json get() const
    -
    19337  {
    -
    19338  return *this;
    -
    19339  }
    -
    19340 
    -
    19356  template < typename BasicJsonType, detail::enable_if_t <
    -
    19357  !std::is_same<BasicJsonType, basic_json>::value&&
    - -
    19359  BasicJsonType get() const
    -
    19360  {
    -
    19361  return *this;
    -
    19362  }
    -
    19363 
    -
    19403  template < typename ValueTypeCV, typename ValueType = detail::uncvref_t<ValueTypeCV>,
    -
    19404  detail::enable_if_t <
    -
    19405  !detail::is_basic_json<ValueType>::value &&
    -
    19406  detail::has_from_json<basic_json_t, ValueType>::value &&
    -
    19407  !detail::has_non_default_from_json<basic_json_t, ValueType>::value,
    -
    19408  int > = 0 >
    -
    19409  ValueType get() const noexcept(noexcept(
    -
    19410  JSONSerializer<ValueType>::from_json(std::declval<const basic_json_t&>(), std::declval<ValueType&>())))
    -
    19411  {
    -
    19412  // we cannot static_assert on ValueTypeCV being non-const, because
    -
    19413  // there is support for get<const basic_json_t>(), which is why we
    -
    19414  // still need the uncvref
    -
    19415  static_assert(!std::is_reference<ValueTypeCV>::value,
    -
    19416  "get() cannot be used with reference types, you might want to use get_ref()");
    -
    19417  static_assert(std::is_default_constructible<ValueType>::value,
    -
    19418  "types must be DefaultConstructible when used with get()");
    -
    19419 
    -
    19420  ValueType ret;
    - -
    19422  return ret;
    -
    19423  }
    -
    19424 
    -
    19456  template < typename ValueTypeCV, typename ValueType = detail::uncvref_t<ValueTypeCV>,
    -
    19457  detail::enable_if_t < !std::is_same<basic_json_t, ValueType>::value &&
    -
    19458  detail::has_non_default_from_json<basic_json_t, ValueType>::value,
    -
    19459  int > = 0 >
    -
    19460  ValueType get() const noexcept(noexcept(
    -
    19461  JSONSerializer<ValueType>::from_json(std::declval<const basic_json_t&>())))
    -
    19462  {
    -
    19463  static_assert(!std::is_reference<ValueTypeCV>::value,
    -
    19464  "get() cannot be used with reference types, you might want to use get_ref()");
    - -
    19466  }
    -
    19467 
    -
    19501  template < typename ValueType,
    - - - -
    19505  int > = 0 >
    -
    19506  ValueType & get_to(ValueType& v) const noexcept(noexcept(
    -
    19507  JSONSerializer<ValueType>::from_json(std::declval<const basic_json_t&>(), v)))
    -
    19508  {
    - -
    19510  return v;
    -
    19511  }
    -
    19512 
    -
    19513  // specialization to allow to call get_to with a basic_json value
    -
    19514  // see https://github.com/nlohmann/json/issues/2175
    -
    19515  template<typename ValueType,
    - - -
    19518  int> = 0>
    -
    19519  ValueType & get_to(ValueType& v) const
    -
    19520  {
    -
    19521  v = *this;
    -
    19522  return v;
    -
    19523  }
    -
    19524 
    -
    19525  template <
    -
    19526  typename T, std::size_t N,
    -
    19527  typename Array = T (&)[N],
    - - -
    19530  Array get_to(T (&v)[N]) const
    -
    19531  noexcept(noexcept(JSONSerializer<Array>::from_json(
    -
    19532  std::declval<const basic_json_t&>(), v)))
    -
    19533  {
    - -
    19535  return v;
    -
    19536  }
    -
    19537 
    -
    19538 
    -
    19565  template<typename PointerType, typename std::enable_if<
    -
    19566  std::is_pointer<PointerType>::value, int>::type = 0>
    -
    19567  auto get_ptr() noexcept -> decltype(std::declval<basic_json_t&>().get_impl_ptr(std::declval<PointerType>()))
    -
    19568  {
    -
    19569  // delegate the call to get_impl_ptr<>()
    -
    19570  return get_impl_ptr(static_cast<PointerType>(nullptr));
    -
    19571  }
    -
    19572 
    -
    19577  template < typename PointerType, typename std::enable_if <
    -
    19578  std::is_pointer<PointerType>::value&&
    -
    19579  std::is_const<typename std::remove_pointer<PointerType>::type>::value, int >::type = 0 >
    -
    19580  constexpr auto get_ptr() const noexcept -> decltype(std::declval<const basic_json_t&>().get_impl_ptr(std::declval<PointerType>()))
    -
    19581  {
    -
    19582  // delegate the call to get_impl_ptr<>() const
    -
    19583  return get_impl_ptr(static_cast<PointerType>(nullptr));
    -
    19584  }
    -
    19585 
    -
    19613  template<typename PointerType, typename std::enable_if<
    -
    19614  std::is_pointer<PointerType>::value, int>::type = 0>
    -
    19615  auto get() noexcept -> decltype(std::declval<basic_json_t&>().template get_ptr<PointerType>())
    -
    19616  {
    -
    19617  // delegate the call to get_ptr
    -
    19618  return get_ptr<PointerType>();
    -
    19619  }
    -
    19620 
    -
    19625  template<typename PointerType, typename std::enable_if<
    -
    19626  std::is_pointer<PointerType>::value, int>::type = 0>
    -
    19627  constexpr auto get() const noexcept -> decltype(std::declval<const basic_json_t&>().template get_ptr<PointerType>())
    -
    19628  {
    -
    19629  // delegate the call to get_ptr
    -
    19630  return get_ptr<PointerType>();
    -
    19631  }
    -
    19632 
    -
    19659  template<typename ReferenceType, typename std::enable_if<
    -
    19660  std::is_reference<ReferenceType>::value, int>::type = 0>
    -
    19661  ReferenceType get_ref()
    -
    19662  {
    -
    19663  // delegate call to get_ref_impl
    -
    19664  return get_ref_impl<ReferenceType>(*this);
    -
    19665  }
    -
    19666 
    -
    19671  template < typename ReferenceType, typename std::enable_if <
    -
    19672  std::is_reference<ReferenceType>::value&&
    -
    19673  std::is_const<typename std::remove_reference<ReferenceType>::type>::value, int >::type = 0 >
    -
    19674  ReferenceType get_ref() const
    -
    19675  {
    -
    19676  // delegate call to get_ref_impl
    -
    19677  return get_ref_impl<ReferenceType>(*this);
    -
    19678  }
    -
    19679 
    -
    19709  template < typename ValueType, typename std::enable_if <
    -
    19710  !std::is_pointer<ValueType>::value&&
    -
    19711  !std::is_same<ValueType, detail::json_ref<basic_json>>::value&&
    -
    19712  !std::is_same<ValueType, typename string_t::value_type>::value&&
    - -
    19714  && !std::is_same<ValueType, std::initializer_list<typename string_t::value_type>>::value
    -
    19715 #if defined(JSON_HAS_CPP_17) && (defined(__GNUC__) || (defined(_MSC_VER) && _MSC_VER >= 1910 && _MSC_VER <= 1914))
    -
    19716  && !std::is_same<ValueType, typename std::string_view>::value
    -
    19717 #endif
    - -
    19719  , int >::type = 0 >
    -
    19720  JSON_EXPLICIT operator ValueType() const
    -
    19721  {
    -
    19722  // delegate the call to get<>() const
    -
    19723  return get<ValueType>();
    -
    19724  }
    -
    19725 
    - -
    19736  {
    -
    19737  if (!is_binary())
    -
    19738  {
    -
    19739  JSON_THROW(type_error::create(302, "type must be binary, but is " + std::string(type_name())));
    -
    19740  }
    -
    19741 
    -
    19742  return *get_ptr<binary_t*>();
    -
    19743  }
    -
    19744 
    -
    19746  const binary_t& get_binary() const
    -
    19747  {
    -
    19748  if (!is_binary())
    -
    19749  {
    -
    19750  JSON_THROW(type_error::create(302, "type must be binary, but is " + std::string(type_name())));
    -
    19751  }
    -
    19752 
    -
    19753  return *get_ptr<const binary_t*>();
    -
    19754  }
    -
    19755 
    -
    19757 
    -
    19758 
    -
    19760  // element access //
    -
    19762 
    -
    19766 
    - -
    19794  {
    -
    19795  // at only works for arrays
    - -
    19797  {
    -
    19798  JSON_TRY
    -
    19799  {
    -
    19800  return m_value.array->at(idx);
    -
    19801  }
    -
    19802  JSON_CATCH (std::out_of_range&)
    -
    19803  {
    -
    19804  // create better exception explanation
    -
    19805  JSON_THROW(out_of_range::create(401, "array index " + std::to_string(idx) + " is out of range"));
    -
    19806  }
    -
    19807  }
    -
    19808  else
    -
    19809  {
    -
    19810  JSON_THROW(type_error::create(304, "cannot use at() with " + std::string(type_name())));
    -
    19811  }
    -
    19812  }
    -
    19813 
    - -
    19841  {
    -
    19842  // at only works for arrays
    - -
    19844  {
    -
    19845  JSON_TRY
    -
    19846  {
    -
    19847  return m_value.array->at(idx);
    -
    19848  }
    -
    19849  JSON_CATCH (std::out_of_range&)
    -
    19850  {
    -
    19851  // create better exception explanation
    -
    19852  JSON_THROW(out_of_range::create(401, "array index " + std::to_string(idx) + " is out of range"));
    -
    19853  }
    -
    19854  }
    -
    19855  else
    -
    19856  {
    -
    19857  JSON_THROW(type_error::create(304, "cannot use at() with " + std::string(type_name())));
    -
    19858  }
    -
    19859  }
    -
    19860 
    -
    19891  reference at(const typename object_t::key_type& key)
    -
    19892  {
    -
    19893  // at only works for objects
    - -
    19895  {
    -
    19896  JSON_TRY
    -
    19897  {
    -
    19898  return m_value.object->at(key);
    -
    19899  }
    -
    19900  JSON_CATCH (std::out_of_range&)
    -
    19901  {
    -
    19902  // create better exception explanation
    -
    19903  JSON_THROW(out_of_range::create(403, "key '" + key + "' not found"));
    -
    19904  }
    -
    19905  }
    -
    19906  else
    -
    19907  {
    -
    19908  JSON_THROW(type_error::create(304, "cannot use at() with " + std::string(type_name())));
    -
    19909  }
    -
    19910  }
    -
    19911 
    -
    19942  const_reference at(const typename object_t::key_type& key) const
    -
    19943  {
    -
    19944  // at only works for objects
    - -
    19946  {
    -
    19947  JSON_TRY
    -
    19948  {
    -
    19949  return m_value.object->at(key);
    -
    19950  }
    -
    19951  JSON_CATCH (std::out_of_range&)
    -
    19952  {
    -
    19953  // create better exception explanation
    -
    19954  JSON_THROW(out_of_range::create(403, "key '" + key + "' not found"));
    -
    19955  }
    -
    19956  }
    -
    19957  else
    -
    19958  {
    -
    19959  JSON_THROW(type_error::create(304, "cannot use at() with " + std::string(type_name())));
    -
    19960  }
    -
    19961  }
    -
    19962 
    - -
    19989  {
    -
    19990  // implicitly convert null value to an empty array
    -
    19991  if (is_null())
    -
    19992  {
    -
    19993  m_type = value_t::array;
    -
    19994  m_value.array = create<array_t>();
    -
    19995  assert_invariant();
    -
    19996  }
    -
    19997 
    -
    19998  // operator[] only works for arrays
    - -
    20000  {
    -
    20001  // fill up array with null values if given idx is outside range
    -
    20002  if (idx >= m_value.array->size())
    -
    20003  {
    -
    20004  m_value.array->insert(m_value.array->end(),
    -
    20005  idx - m_value.array->size() + 1,
    -
    20006  basic_json());
    -
    20007  }
    -
    20008 
    -
    20009  return m_value.array->operator[](idx);
    -
    20010  }
    -
    20011 
    -
    20012  JSON_THROW(type_error::create(305, "cannot use operator[] with a numeric argument with " + std::string(type_name())));
    -
    20013  }
    -
    20014 
    - -
    20035  {
    -
    20036  // const operator[] only works for arrays
    - -
    20038  {
    -
    20039  return m_value.array->operator[](idx);
    -
    20040  }
    -
    20041 
    -
    20042  JSON_THROW(type_error::create(305, "cannot use operator[] with a numeric argument with " + std::string(type_name())));
    -
    20043  }
    -
    20044 
    -
    20072  reference operator[](const typename object_t::key_type& key)
    -
    20073  {
    -
    20074  // implicitly convert null value to an empty object
    -
    20075  if (is_null())
    -
    20076  {
    -
    20077  m_type = value_t::object;
    -
    20078  m_value.object = create<object_t>();
    -
    20079  assert_invariant();
    -
    20080  }
    -
    20081 
    -
    20082  // operator[] only works for objects
    - -
    20084  {
    -
    20085  return m_value.object->operator[](key);
    -
    20086  }
    -
    20087 
    -
    20088  JSON_THROW(type_error::create(305, "cannot use operator[] with a string argument with " + std::string(type_name())));
    -
    20089  }
    -
    20090 
    -
    20121  const_reference operator[](const typename object_t::key_type& key) const
    -
    20122  {
    -
    20123  // const operator[] only works for objects
    - -
    20125  {
    -
    20126  JSON_ASSERT(m_value.object->find(key) != m_value.object->end());
    -
    20127  return m_value.object->find(key)->second;
    -
    20128  }
    -
    20129 
    -
    20130  JSON_THROW(type_error::create(305, "cannot use operator[] with a string argument with " + std::string(type_name())));
    -
    20131  }
    -
    20132 
    -
    20160  template<typename T>
    - -
    20162  reference operator[](T* key)
    -
    20163  {
    -
    20164  // implicitly convert null to object
    -
    20165  if (is_null())
    -
    20166  {
    -
    20167  m_type = value_t::object;
    -
    20168  m_value = value_t::object;
    -
    20169  assert_invariant();
    -
    20170  }
    -
    20171 
    -
    20172  // at only works for objects
    - -
    20174  {
    -
    20175  return m_value.object->operator[](key);
    -
    20176  }
    -
    20177 
    -
    20178  JSON_THROW(type_error::create(305, "cannot use operator[] with a string argument with " + std::string(type_name())));
    -
    20179  }
    -
    20180 
    -
    20211  template<typename T>
    - -
    20213  const_reference operator[](T* key) const
    -
    20214  {
    -
    20215  // at only works for objects
    - -
    20217  {
    -
    20218  JSON_ASSERT(m_value.object->find(key) != m_value.object->end());
    -
    20219  return m_value.object->find(key)->second;
    -
    20220  }
    -
    20221 
    -
    20222  JSON_THROW(type_error::create(305, "cannot use operator[] with a string argument with " + std::string(type_name())));
    -
    20223  }
    -
    20224 
    -
    20275  // using std::is_convertible in a std::enable_if will fail when using explicit conversions
    -
    20276  template < class ValueType, typename std::enable_if <
    - -
    20278  && !std::is_same<value_t, ValueType>::value, int >::type = 0 >
    -
    20279  ValueType value(const typename object_t::key_type& key, const ValueType& default_value) const
    -
    20280  {
    -
    20281  // at only works for objects
    - -
    20283  {
    -
    20284  // if key is found, return value and given default value otherwise
    -
    20285  const auto it = find(key);
    -
    20286  if (it != end())
    -
    20287  {
    -
    20288  return it->template get<ValueType>();
    -
    20289  }
    -
    20290 
    -
    20291  return default_value;
    -
    20292  }
    -
    20293 
    -
    20294  JSON_THROW(type_error::create(306, "cannot use value() with " + std::string(type_name())));
    -
    20295  }
    -
    20296 
    -
    20301  string_t value(const typename object_t::key_type& key, const char* default_value) const
    -
    20302  {
    -
    20303  return value(key, string_t(default_value));
    -
    20304  }
    -
    20305 
    -
    20349  template<class ValueType, typename std::enable_if<
    - -
    20351  ValueType value(const json_pointer& ptr, const ValueType& default_value) const
    -
    20352  {
    -
    20353  // at only works for objects
    - -
    20355  {
    -
    20356  // if pointer resolves a value, return it or use default value
    -
    20357  JSON_TRY
    -
    20358  {
    -
    20359  return ptr.get_checked(this).template get<ValueType>();
    -
    20360  }
    - -
    20362  {
    -
    20363  return default_value;
    -
    20364  }
    -
    20365  }
    -
    20366 
    -
    20367  JSON_THROW(type_error::create(306, "cannot use value() with " + std::string(type_name())));
    -
    20368  }
    -
    20369 
    - -
    20375  string_t value(const json_pointer& ptr, const char* default_value) const
    -
    20376  {
    -
    20377  return value(ptr, string_t(default_value));
    -
    20378  }
    -
    20379 
    - -
    20406  {
    -
    20407  return *begin();
    -
    20408  }
    -
    20409 
    - -
    20414  {
    -
    20415  return *cbegin();
    -
    20416  }
    -
    20417 
    - -
    20450  {
    -
    20451  auto tmp = end();
    -
    20452  --tmp;
    -
    20453  return *tmp;
    -
    20454  }
    -
    20455 
    - -
    20460  {
    -
    20461  auto tmp = cend();
    -
    20462  --tmp;
    -
    20463  return *tmp;
    -
    20464  }
    -
    20465 
    -
    20512  template < class IteratorType, typename std::enable_if <
    -
    20513  std::is_same<IteratorType, typename basic_json_t::iterator>::value ||
    -
    20514  std::is_same<IteratorType, typename basic_json_t::const_iterator>::value, int >::type
    -
    20515  = 0 >
    -
    20516  IteratorType erase(IteratorType pos)
    -
    20517  {
    -
    20518  // make sure iterator fits the current value
    -
    20519  if (JSON_HEDLEY_UNLIKELY(this != pos.m_object))
    -
    20520  {
    -
    20521  JSON_THROW(invalid_iterator::create(202, "iterator does not fit current value"));
    -
    20522  }
    -
    20523 
    -
    20524  IteratorType result = end();
    -
    20525 
    -
    20526  switch (m_type)
    -
    20527  {
    -
    20528  case value_t::boolean:
    -
    20529  case value_t::number_float:
    - - -
    20532  case value_t::string:
    -
    20533  case value_t::binary:
    -
    20534  {
    -
    20535  if (JSON_HEDLEY_UNLIKELY(!pos.m_it.primitive_iterator.is_begin()))
    -
    20536  {
    -
    20537  JSON_THROW(invalid_iterator::create(205, "iterator out of range"));
    -
    20538  }
    -
    20539 
    -
    20540  if (is_string())
    -
    20541  {
    -
    20542  AllocatorType<string_t> alloc;
    -
    20543  std::allocator_traits<decltype(alloc)>::destroy(alloc, m_value.string);
    -
    20544  std::allocator_traits<decltype(alloc)>::deallocate(alloc, m_value.string, 1);
    -
    20545  m_value.string = nullptr;
    -
    20546  }
    -
    20547  else if (is_binary())
    -
    20548  {
    -
    20549  AllocatorType<binary_t> alloc;
    -
    20550  std::allocator_traits<decltype(alloc)>::destroy(alloc, m_value.binary);
    -
    20551  std::allocator_traits<decltype(alloc)>::deallocate(alloc, m_value.binary, 1);
    -
    20552  m_value.binary = nullptr;
    -
    20553  }
    -
    20554 
    -
    20555  m_type = value_t::null;
    -
    20556  assert_invariant();
    -
    20557  break;
    -
    20558  }
    -
    20559 
    -
    20560  case value_t::object:
    -
    20561  {
    -
    20562  result.m_it.object_iterator = m_value.object->erase(pos.m_it.object_iterator);
    -
    20563  break;
    -
    20564  }
    -
    20565 
    -
    20566  case value_t::array:
    -
    20567  {
    -
    20568  result.m_it.array_iterator = m_value.array->erase(pos.m_it.array_iterator);
    -
    20569  break;
    -
    20570  }
    -
    20571 
    -
    20572  default:
    -
    20573  JSON_THROW(type_error::create(307, "cannot use erase() with " + std::string(type_name())));
    -
    20574  }
    -
    20575 
    -
    20576  return result;
    -
    20577  }
    -
    20578 
    -
    20625  template < class IteratorType, typename std::enable_if <
    -
    20626  std::is_same<IteratorType, typename basic_json_t::iterator>::value ||
    -
    20627  std::is_same<IteratorType, typename basic_json_t::const_iterator>::value, int >::type
    -
    20628  = 0 >
    -
    20629  IteratorType erase(IteratorType first, IteratorType last)
    -
    20630  {
    -
    20631  // make sure iterator fits the current value
    -
    20632  if (JSON_HEDLEY_UNLIKELY(this != first.m_object || this != last.m_object))
    -
    20633  {
    -
    20634  JSON_THROW(invalid_iterator::create(203, "iterators do not fit current value"));
    -
    20635  }
    -
    20636 
    -
    20637  IteratorType result = end();
    -
    20638 
    -
    20639  switch (m_type)
    -
    20640  {
    -
    20641  case value_t::boolean:
    -
    20642  case value_t::number_float:
    - - -
    20645  case value_t::string:
    -
    20646  case value_t::binary:
    -
    20647  {
    -
    20648  if (JSON_HEDLEY_LIKELY(!first.m_it.primitive_iterator.is_begin()
    -
    20649  || !last.m_it.primitive_iterator.is_end()))
    -
    20650  {
    -
    20651  JSON_THROW(invalid_iterator::create(204, "iterators out of range"));
    -
    20652  }
    -
    20653 
    -
    20654  if (is_string())
    -
    20655  {
    -
    20656  AllocatorType<string_t> alloc;
    -
    20657  std::allocator_traits<decltype(alloc)>::destroy(alloc, m_value.string);
    -
    20658  std::allocator_traits<decltype(alloc)>::deallocate(alloc, m_value.string, 1);
    -
    20659  m_value.string = nullptr;
    -
    20660  }
    -
    20661  else if (is_binary())
    -
    20662  {
    -
    20663  AllocatorType<binary_t> alloc;
    -
    20664  std::allocator_traits<decltype(alloc)>::destroy(alloc, m_value.binary);
    -
    20665  std::allocator_traits<decltype(alloc)>::deallocate(alloc, m_value.binary, 1);
    -
    20666  m_value.binary = nullptr;
    -
    20667  }
    -
    20668 
    -
    20669  m_type = value_t::null;
    -
    20670  assert_invariant();
    -
    20671  break;
    -
    20672  }
    -
    20673 
    -
    20674  case value_t::object:
    -
    20675  {
    -
    20676  result.m_it.object_iterator = m_value.object->erase(first.m_it.object_iterator,
    -
    20677  last.m_it.object_iterator);
    -
    20678  break;
    -
    20679  }
    -
    20680 
    -
    20681  case value_t::array:
    -
    20682  {
    -
    20683  result.m_it.array_iterator = m_value.array->erase(first.m_it.array_iterator,
    -
    20684  last.m_it.array_iterator);
    -
    20685  break;
    -
    20686  }
    -
    20687 
    -
    20688  default:
    -
    20689  JSON_THROW(type_error::create(307, "cannot use erase() with " + std::string(type_name())));
    -
    20690  }
    -
    20691 
    -
    20692  return result;
    -
    20693  }
    -
    20694 
    -
    20724  size_type erase(const typename object_t::key_type& key)
    -
    20725  {
    -
    20726  // this erase only works for objects
    - -
    20728  {
    -
    20729  return m_value.object->erase(key);
    -
    20730  }
    -
    20731 
    -
    20732  JSON_THROW(type_error::create(307, "cannot use erase() with " + std::string(type_name())));
    -
    20733  }
    -
    20734 
    -
    20759  void erase(const size_type idx)
    -
    20760  {
    -
    20761  // this erase only works for arrays
    - -
    20763  {
    -
    20764  if (JSON_HEDLEY_UNLIKELY(idx >= size()))
    -
    20765  {
    -
    20766  JSON_THROW(out_of_range::create(401, "array index " + std::to_string(idx) + " is out of range"));
    -
    20767  }
    -
    20768 
    -
    20769  m_value.array->erase(m_value.array->begin() + static_cast<difference_type>(idx));
    -
    20770  }
    -
    20771  else
    -
    20772  {
    -
    20773  JSON_THROW(type_error::create(307, "cannot use erase() with " + std::string(type_name())));
    -
    20774  }
    -
    20775  }
    -
    20776 
    -
    20778 
    -
    20779 
    -
    20781  // lookup //
    -
    20783 
    -
    20786 
    -
    20811  template<typename KeyT>
    -
    20812  iterator find(KeyT&& key)
    -
    20813  {
    -
    20814  auto result = end();
    -
    20815 
    -
    20816  if (is_object())
    -
    20817  {
    -
    20818  result.m_it.object_iterator = m_value.object->find(std::forward<KeyT>(key));
    -
    20819  }
    -
    20820 
    -
    20821  return result;
    -
    20822  }
    -
    20823 
    -
    20828  template<typename KeyT>
    -
    20829  const_iterator find(KeyT&& key) const
    -
    20830  {
    -
    20831  auto result = cend();
    -
    20832 
    -
    20833  if (is_object())
    -
    20834  {
    -
    20835  result.m_it.object_iterator = m_value.object->find(std::forward<KeyT>(key));
    -
    20836  }
    -
    20837 
    -
    20838  return result;
    -
    20839  }
    -
    20840 
    -
    20862  template<typename KeyT>
    -
    20863  size_type count(KeyT&& key) const
    -
    20864  {
    -
    20865  // return 0 for all nonobject types
    -
    20866  return is_object() ? m_value.object->count(std::forward<KeyT>(key)) : 0;
    -
    20867  }
    -
    20868 
    -
    20894  template < typename KeyT, typename std::enable_if <
    -
    20895  !std::is_same<typename std::decay<KeyT>::type, json_pointer>::value, int >::type = 0 >
    -
    20896  bool contains(KeyT && key) const
    -
    20897  {
    -
    20898  return is_object() && m_value.object->find(std::forward<KeyT>(key)) != m_value.object->end();
    -
    20899  }
    -
    20900 
    -
    20927  bool contains(const json_pointer& ptr) const
    -
    20928  {
    -
    20929  return ptr.contains(this);
    -
    20930  }
    -
    20931 
    -
    20933 
    -
    20934 
    -
    20936  // iterators //
    -
    20938 
    -
    20941 
    -
    20966  iterator begin() noexcept
    -
    20967  {
    -
    20968  iterator result(this);
    -
    20969  result.set_begin();
    -
    20970  return result;
    -
    20971  }
    -
    20972 
    -
    20976  const_iterator begin() const noexcept
    -
    20977  {
    -
    20978  return cbegin();
    -
    20979  }
    -
    20980 
    -
    21006  const_iterator cbegin() const noexcept
    -
    21007  {
    -
    21008  const_iterator result(this);
    -
    21009  result.set_begin();
    -
    21010  return result;
    -
    21011  }
    -
    21012 
    -
    21037  iterator end() noexcept
    -
    21038  {
    -
    21039  iterator result(this);
    -
    21040  result.set_end();
    -
    21041  return result;
    -
    21042  }
    -
    21043 
    -
    21047  const_iterator end() const noexcept
    -
    21048  {
    -
    21049  return cend();
    -
    21050  }
    -
    21051 
    -
    21077  const_iterator cend() const noexcept
    -
    21078  {
    -
    21079  const_iterator result(this);
    -
    21080  result.set_end();
    -
    21081  return result;
    -
    21082  }
    -
    21083 
    - -
    21108  {
    -
    21109  return reverse_iterator(end());
    -
    21110  }
    -
    21111 
    - -
    21116  {
    -
    21117  return crbegin();
    -
    21118  }
    -
    21119 
    - -
    21145  {
    -
    21146  return reverse_iterator(begin());
    -
    21147  }
    -
    21148 
    -
    21152  const_reverse_iterator rend() const noexcept
    -
    21153  {
    -
    21154  return crend();
    -
    21155  }
    -
    21156 
    - -
    21182  {
    -
    21183  return const_reverse_iterator(cend());
    -
    21184  }
    -
    21185 
    - -
    21211  {
    -
    21212  return const_reverse_iterator(cbegin());
    -
    21213  }
    -
    21214 
    -
    21215  public:
    - - -
    21275  {
    -
    21276  return ref.items();
    -
    21277  }
    -
    21278 
    - - -
    21284  {
    -
    21285  return ref.items();
    -
    21286  }
    -
    21287 
    - -
    21357  {
    -
    21358  return iteration_proxy<iterator>(*this);
    -
    21359  }
    -
    21360 
    - -
    21365  {
    -
    21366  return iteration_proxy<const_iterator>(*this);
    -
    21367  }
    -
    21368 
    -
    21370 
    -
    21371 
    -
    21373  // capacity //
    -
    21375 
    -
    21378 
    -
    21421  bool empty() const noexcept
    -
    21422  {
    -
    21423  switch (m_type)
    -
    21424  {
    -
    21425  case value_t::null:
    -
    21426  {
    -
    21427  // null values are empty
    -
    21428  return true;
    -
    21429  }
    -
    21430 
    -
    21431  case value_t::array:
    -
    21432  {
    -
    21433  // delegate call to array_t::empty()
    -
    21434  return m_value.array->empty();
    -
    21435  }
    -
    21436 
    -
    21437  case value_t::object:
    -
    21438  {
    -
    21439  // delegate call to object_t::empty()
    -
    21440  return m_value.object->empty();
    -
    21441  }
    -
    21442 
    -
    21443  default:
    -
    21444  {
    -
    21445  // all other types are nonempty
    -
    21446  return false;
    -
    21447  }
    -
    21448  }
    -
    21449  }
    -
    21450 
    -
    21494  size_type size() const noexcept
    -
    21495  {
    -
    21496  switch (m_type)
    -
    21497  {
    -
    21498  case value_t::null:
    -
    21499  {
    -
    21500  // null values are empty
    -
    21501  return 0;
    -
    21502  }
    -
    21503 
    -
    21504  case value_t::array:
    -
    21505  {
    -
    21506  // delegate call to array_t::size()
    -
    21507  return m_value.array->size();
    -
    21508  }
    -
    21509 
    -
    21510  case value_t::object:
    -
    21511  {
    -
    21512  // delegate call to object_t::size()
    -
    21513  return m_value.object->size();
    -
    21514  }
    -
    21515 
    -
    21516  default:
    -
    21517  {
    -
    21518  // all other types have size 1
    -
    21519  return 1;
    -
    21520  }
    -
    21521  }
    -
    21522  }
    -
    21523 
    -
    21565  size_type max_size() const noexcept
    -
    21566  {
    -
    21567  switch (m_type)
    -
    21568  {
    -
    21569  case value_t::array:
    -
    21570  {
    -
    21571  // delegate call to array_t::max_size()
    -
    21572  return m_value.array->max_size();
    -
    21573  }
    -
    21574 
    -
    21575  case value_t::object:
    -
    21576  {
    -
    21577  // delegate call to object_t::max_size()
    -
    21578  return m_value.object->max_size();
    -
    21579  }
    -
    21580 
    -
    21581  default:
    -
    21582  {
    -
    21583  // all other types have max_size() == size()
    -
    21584  return size();
    -
    21585  }
    -
    21586  }
    -
    21587  }
    -
    21588 
    -
    21590 
    -
    21591 
    -
    21593  // modifiers //
    -
    21595 
    -
    21598 
    -
    21636  void clear() noexcept
    -
    21637  {
    -
    21638  switch (m_type)
    -
    21639  {
    - -
    21641  {
    -
    21642  m_value.number_integer = 0;
    -
    21643  break;
    -
    21644  }
    -
    21645 
    - -
    21647  {
    -
    21648  m_value.number_unsigned = 0;
    -
    21649  break;
    -
    21650  }
    -
    21651 
    -
    21652  case value_t::number_float:
    -
    21653  {
    -
    21654  m_value.number_float = 0.0;
    -
    21655  break;
    -
    21656  }
    -
    21657 
    -
    21658  case value_t::boolean:
    -
    21659  {
    -
    21660  m_value.boolean = false;
    -
    21661  break;
    -
    21662  }
    -
    21663 
    -
    21664  case value_t::string:
    -
    21665  {
    -
    21666  m_value.string->clear();
    -
    21667  break;
    -
    21668  }
    -
    21669 
    -
    21670  case value_t::binary:
    -
    21671  {
    -
    21672  m_value.binary->clear();
    -
    21673  break;
    -
    21674  }
    -
    21675 
    -
    21676  case value_t::array:
    -
    21677  {
    -
    21678  m_value.array->clear();
    -
    21679  break;
    -
    21680  }
    -
    21681 
    -
    21682  case value_t::object:
    -
    21683  {
    -
    21684  m_value.object->clear();
    -
    21685  break;
    -
    21686  }
    -
    21687 
    -
    21688  default:
    -
    21689  break;
    -
    21690  }
    -
    21691  }
    -
    21692 
    -
    21713  void push_back(basic_json&& val)
    -
    21714  {
    -
    21715  // push_back only works for null objects or arrays
    -
    21716  if (JSON_HEDLEY_UNLIKELY(!(is_null() || is_array())))
    -
    21717  {
    -
    21718  JSON_THROW(type_error::create(308, "cannot use push_back() with " + std::string(type_name())));
    -
    21719  }
    -
    21720 
    -
    21721  // transform null object into an array
    -
    21722  if (is_null())
    -
    21723  {
    -
    21724  m_type = value_t::array;
    -
    21725  m_value = value_t::array;
    -
    21726  assert_invariant();
    -
    21727  }
    -
    21728 
    -
    21729  // add element to array (move semantics)
    -
    21730  m_value.array->push_back(std::move(val));
    -
    21731  // if val is moved from, basic_json move constructor marks it null so we do not call the destructor
    -
    21732  }
    -
    21733 
    - -
    21739  {
    -
    21740  push_back(std::move(val));
    -
    21741  return *this;
    -
    21742  }
    -
    21743 
    -
    21748  void push_back(const basic_json& val)
    -
    21749  {
    -
    21750  // push_back only works for null objects or arrays
    -
    21751  if (JSON_HEDLEY_UNLIKELY(!(is_null() || is_array())))
    -
    21752  {
    -
    21753  JSON_THROW(type_error::create(308, "cannot use push_back() with " + std::string(type_name())));
    -
    21754  }
    -
    21755 
    -
    21756  // transform null object into an array
    -
    21757  if (is_null())
    -
    21758  {
    -
    21759  m_type = value_t::array;
    -
    21760  m_value = value_t::array;
    -
    21761  assert_invariant();
    -
    21762  }
    -
    21763 
    -
    21764  // add element to array
    -
    21765  m_value.array->push_back(val);
    -
    21766  }
    -
    21767 
    - -
    21773  {
    -
    21774  push_back(val);
    -
    21775  return *this;
    -
    21776  }
    -
    21777 
    -
    21798  void push_back(const typename object_t::value_type& val)
    -
    21799  {
    -
    21800  // push_back only works for null objects or objects
    -
    21801  if (JSON_HEDLEY_UNLIKELY(!(is_null() || is_object())))
    -
    21802  {
    -
    21803  JSON_THROW(type_error::create(308, "cannot use push_back() with " + std::string(type_name())));
    -
    21804  }
    -
    21805 
    -
    21806  // transform null object into an object
    -
    21807  if (is_null())
    -
    21808  {
    -
    21809  m_type = value_t::object;
    -
    21810  m_value = value_t::object;
    -
    21811  assert_invariant();
    -
    21812  }
    -
    21813 
    -
    21814  // add element to array
    -
    21815  m_value.object->insert(val);
    -
    21816  }
    -
    21817 
    -
    21822  reference operator+=(const typename object_t::value_type& val)
    -
    21823  {
    -
    21824  push_back(val);
    -
    21825  return *this;
    -
    21826  }
    -
    21827 
    - -
    21854  {
    -
    21855  if (is_object() && init.size() == 2 && (*init.begin())->is_string())
    -
    21856  {
    -
    21857  basic_json&& key = init.begin()->moved_or_copied();
    -
    21858  push_back(typename object_t::value_type(
    -
    21859  std::move(key.get_ref<string_t&>()), (init.begin() + 1)->moved_or_copied()));
    -
    21860  }
    -
    21861  else
    -
    21862  {
    -
    21863  push_back(basic_json(init));
    -
    21864  }
    -
    21865  }
    -
    21866 
    - -
    21872  {
    -
    21873  push_back(init);
    -
    21874  return *this;
    -
    21875  }
    -
    21876 
    -
    21900  template<class... Args>
    -
    21901  reference emplace_back(Args&& ... args)
    -
    21902  {
    -
    21903  // emplace_back only works for null objects or arrays
    -
    21904  if (JSON_HEDLEY_UNLIKELY(!(is_null() || is_array())))
    -
    21905  {
    -
    21906  JSON_THROW(type_error::create(311, "cannot use emplace_back() with " + std::string(type_name())));
    -
    21907  }
    -
    21908 
    -
    21909  // transform null object into an array
    -
    21910  if (is_null())
    -
    21911  {
    -
    21912  m_type = value_t::array;
    -
    21913  m_value = value_t::array;
    -
    21914  assert_invariant();
    -
    21915  }
    -
    21916 
    -
    21917  // add element to array (perfect forwarding)
    -
    21918 #ifdef JSON_HAS_CPP_17
    -
    21919  return m_value.array->emplace_back(std::forward<Args>(args)...);
    -
    21920 #else
    -
    21921  m_value.array->emplace_back(std::forward<Args>(args)...);
    -
    21922  return m_value.array->back();
    -
    21923 #endif
    -
    21924  }
    -
    21925 
    -
    21953  template<class... Args>
    -
    21954  std::pair<iterator, bool> emplace(Args&& ... args)
    -
    21955  {
    -
    21956  // emplace only works for null objects or arrays
    -
    21957  if (JSON_HEDLEY_UNLIKELY(!(is_null() || is_object())))
    -
    21958  {
    -
    21959  JSON_THROW(type_error::create(311, "cannot use emplace() with " + std::string(type_name())));
    -
    21960  }
    -
    21961 
    -
    21962  // transform null object into an object
    -
    21963  if (is_null())
    -
    21964  {
    -
    21965  m_type = value_t::object;
    -
    21966  m_value = value_t::object;
    -
    21967  assert_invariant();
    -
    21968  }
    -
    21969 
    -
    21970  // add element to array (perfect forwarding)
    -
    21971  auto res = m_value.object->emplace(std::forward<Args>(args)...);
    -
    21972  // create result iterator and set iterator to the result of emplace
    -
    21973  auto it = begin();
    -
    21974  it.m_it.object_iterator = res.first;
    -
    21975 
    -
    21976  // return pair of iterator and boolean
    -
    21977  return {it, res.second};
    -
    21978  }
    -
    21979 
    -
    21983  template<typename... Args>
    - -
    21985  {
    -
    21986  iterator result(this);
    -
    21987  JSON_ASSERT(m_value.array != nullptr);
    -
    21988 
    -
    21989  auto insert_pos = std::distance(m_value.array->begin(), pos.m_it.array_iterator);
    -
    21990  m_value.array->insert(pos.m_it.array_iterator, std::forward<Args>(args)...);
    -
    21991  result.m_it.array_iterator = m_value.array->begin() + insert_pos;
    -
    21992 
    -
    21993  // This could have been written as:
    -
    21994  // result.m_it.array_iterator = m_value.array->insert(pos.m_it.array_iterator, cnt, val);
    -
    21995  // but the return value of insert is missing in GCC 4.8, so it is written this way instead.
    -
    21996 
    -
    21997  return result;
    -
    21998  }
    -
    21999 
    - -
    22023  {
    -
    22024  // insert only works for arrays
    - -
    22026  {
    -
    22027  // check if iterator pos fits to this JSON value
    -
    22028  if (JSON_HEDLEY_UNLIKELY(pos.m_object != this))
    -
    22029  {
    -
    22030  JSON_THROW(invalid_iterator::create(202, "iterator does not fit current value"));
    -
    22031  }
    -
    22032 
    -
    22033  // insert to array and return iterator
    -
    22034  return insert_iterator(pos, val);
    -
    22035  }
    -
    22036 
    -
    22037  JSON_THROW(type_error::create(309, "cannot use insert() with " + std::string(type_name())));
    -
    22038  }
    -
    22039 
    - -
    22045  {
    -
    22046  return insert(pos, val);
    -
    22047  }
    -
    22048 
    - -
    22074  {
    -
    22075  // insert only works for arrays
    - -
    22077  {
    -
    22078  // check if iterator pos fits to this JSON value
    -
    22079  if (JSON_HEDLEY_UNLIKELY(pos.m_object != this))
    -
    22080  {
    -
    22081  JSON_THROW(invalid_iterator::create(202, "iterator does not fit current value"));
    -
    22082  }
    -
    22083 
    -
    22084  // insert to array and return iterator
    -
    22085  return insert_iterator(pos, cnt, val);
    -
    22086  }
    -
    22087 
    -
    22088  JSON_THROW(type_error::create(309, "cannot use insert() with " + std::string(type_name())));
    -
    22089  }
    -
    22090 
    - -
    22122  {
    -
    22123  // insert only works for arrays
    - -
    22125  {
    -
    22126  JSON_THROW(type_error::create(309, "cannot use insert() with " + std::string(type_name())));
    -
    22127  }
    -
    22128 
    -
    22129  // check if iterator pos fits to this JSON value
    -
    22130  if (JSON_HEDLEY_UNLIKELY(pos.m_object != this))
    -
    22131  {
    -
    22132  JSON_THROW(invalid_iterator::create(202, "iterator does not fit current value"));
    -
    22133  }
    -
    22134 
    -
    22135  // check if range iterators belong to the same JSON object
    -
    22136  if (JSON_HEDLEY_UNLIKELY(first.m_object != last.m_object))
    -
    22137  {
    -
    22138  JSON_THROW(invalid_iterator::create(210, "iterators do not fit"));
    -
    22139  }
    -
    22140 
    -
    22141  if (JSON_HEDLEY_UNLIKELY(first.m_object == this))
    -
    22142  {
    -
    22143  JSON_THROW(invalid_iterator::create(211, "passed iterators may not belong to container"));
    -
    22144  }
    -
    22145 
    -
    22146  // insert to array and return iterator
    -
    22147  return insert_iterator(pos, first.m_it.array_iterator, last.m_it.array_iterator);
    -
    22148  }
    -
    22149 
    - -
    22175  {
    -
    22176  // insert only works for arrays
    - -
    22178  {
    -
    22179  JSON_THROW(type_error::create(309, "cannot use insert() with " + std::string(type_name())));
    -
    22180  }
    -
    22181 
    -
    22182  // check if iterator pos fits to this JSON value
    -
    22183  if (JSON_HEDLEY_UNLIKELY(pos.m_object != this))
    -
    22184  {
    -
    22185  JSON_THROW(invalid_iterator::create(202, "iterator does not fit current value"));
    -
    22186  }
    -
    22187 
    -
    22188  // insert to array and return iterator
    -
    22189  return insert_iterator(pos, ilist.begin(), ilist.end());
    -
    22190  }
    -
    22191 
    - -
    22216  {
    -
    22217  // insert only works for objects
    - -
    22219  {
    -
    22220  JSON_THROW(type_error::create(309, "cannot use insert() with " + std::string(type_name())));
    -
    22221  }
    -
    22222 
    -
    22223  // check if range iterators belong to the same JSON object
    -
    22224  if (JSON_HEDLEY_UNLIKELY(first.m_object != last.m_object))
    -
    22225  {
    -
    22226  JSON_THROW(invalid_iterator::create(210, "iterators do not fit"));
    -
    22227  }
    -
    22228 
    -
    22229  // passed iterators must belong to objects
    -
    22230  if (JSON_HEDLEY_UNLIKELY(!first.m_object->is_object()))
    -
    22231  {
    -
    22232  JSON_THROW(invalid_iterator::create(202, "iterators first and last must point to objects"));
    -
    22233  }
    -
    22234 
    -
    22235  m_value.object->insert(first.m_it.object_iterator, last.m_it.object_iterator);
    -
    22236  }
    -
    22237 
    - -
    22258  {
    -
    22259  // implicitly convert null value to an empty object
    -
    22260  if (is_null())
    -
    22261  {
    -
    22262  m_type = value_t::object;
    -
    22263  m_value.object = create<object_t>();
    -
    22264  assert_invariant();
    -
    22265  }
    -
    22266 
    - -
    22268  {
    -
    22269  JSON_THROW(type_error::create(312, "cannot use update() with " + std::string(type_name())));
    -
    22270  }
    -
    22271  if (JSON_HEDLEY_UNLIKELY(!j.is_object()))
    -
    22272  {
    -
    22273  JSON_THROW(type_error::create(312, "cannot use update() with " + std::string(j.type_name())));
    -
    22274  }
    -
    22275 
    -
    22276  for (auto it = j.cbegin(); it != j.cend(); ++it)
    -
    22277  {
    -
    22278  m_value.object->operator[](it.key()) = it.value();
    -
    22279  }
    -
    22280  }
    -
    22281 
    - -
    22309  {
    -
    22310  // implicitly convert null value to an empty object
    -
    22311  if (is_null())
    -
    22312  {
    -
    22313  m_type = value_t::object;
    -
    22314  m_value.object = create<object_t>();
    -
    22315  assert_invariant();
    -
    22316  }
    -
    22317 
    - -
    22319  {
    -
    22320  JSON_THROW(type_error::create(312, "cannot use update() with " + std::string(type_name())));
    -
    22321  }
    -
    22322 
    -
    22323  // check if range iterators belong to the same JSON object
    -
    22324  if (JSON_HEDLEY_UNLIKELY(first.m_object != last.m_object))
    -
    22325  {
    -
    22326  JSON_THROW(invalid_iterator::create(210, "iterators do not fit"));
    -
    22327  }
    -
    22328 
    -
    22329  // passed iterators must belong to objects
    -
    22330  if (JSON_HEDLEY_UNLIKELY(!first.m_object->is_object()
    -
    22331  || !last.m_object->is_object()))
    -
    22332  {
    -
    22333  JSON_THROW(invalid_iterator::create(202, "iterators first and last must point to objects"));
    -
    22334  }
    -
    22335 
    -
    22336  for (auto it = first; it != last; ++it)
    -
    22337  {
    -
    22338  m_value.object->operator[](it.key()) = it.value();
    -
    22339  }
    -
    22340  }
    -
    22341 
    -
    22359  void swap(reference other) noexcept (
    -
    22360  std::is_nothrow_move_constructible<value_t>::value&&
    -
    22361  std::is_nothrow_move_assignable<value_t>::value&&
    -
    22362  std::is_nothrow_move_constructible<json_value>::value&&
    -
    22363  std::is_nothrow_move_assignable<json_value>::value
    -
    22364  )
    -
    22365  {
    -
    22366  std::swap(m_type, other.m_type);
    -
    22367  std::swap(m_value, other.m_value);
    -
    22368  assert_invariant();
    -
    22369  }
    -
    22370 
    -
    22389  friend void swap(reference left, reference right) noexcept (
    -
    22390  std::is_nothrow_move_constructible<value_t>::value&&
    -
    22391  std::is_nothrow_move_assignable<value_t>::value&&
    -
    22392  std::is_nothrow_move_constructible<json_value>::value&&
    -
    22393  std::is_nothrow_move_assignable<json_value>::value
    -
    22394  )
    -
    22395  {
    -
    22396  left.swap(right);
    -
    22397  }
    -
    22398 
    -
    22419  void swap(array_t& other)
    -
    22420  {
    -
    22421  // swap only works for arrays
    - -
    22423  {
    -
    22424  std::swap(*(m_value.array), other);
    -
    22425  }
    -
    22426  else
    -
    22427  {
    -
    22428  JSON_THROW(type_error::create(310, "cannot use swap() with " + std::string(type_name())));
    -
    22429  }
    -
    22430  }
    -
    22431 
    -
    22452  void swap(object_t& other)
    -
    22453  {
    -
    22454  // swap only works for objects
    - -
    22456  {
    -
    22457  std::swap(*(m_value.object), other);
    -
    22458  }
    -
    22459  else
    -
    22460  {
    -
    22461  JSON_THROW(type_error::create(310, "cannot use swap() with " + std::string(type_name())));
    -
    22462  }
    -
    22463  }
    -
    22464 
    -
    22485  void swap(string_t& other)
    -
    22486  {
    -
    22487  // swap only works for strings
    - -
    22489  {
    -
    22490  std::swap(*(m_value.string), other);
    -
    22491  }
    -
    22492  else
    -
    22493  {
    -
    22494  JSON_THROW(type_error::create(310, "cannot use swap() with " + std::string(type_name())));
    -
    22495  }
    -
    22496  }
    -
    22497 
    -
    22518  void swap(binary_t& other)
    -
    22519  {
    -
    22520  // swap only works for strings
    - -
    22522  {
    -
    22523  std::swap(*(m_value.binary), other);
    -
    22524  }
    -
    22525  else
    -
    22526  {
    -
    22527  JSON_THROW(type_error::create(310, "cannot use swap() with " + std::string(type_name())));
    -
    22528  }
    -
    22529  }
    -
    22530 
    -
    22532  void swap(typename binary_t::container_type& other)
    -
    22533  {
    -
    22534  // swap only works for strings
    - -
    22536  {
    -
    22537  std::swap(*(m_value.binary), other);
    -
    22538  }
    -
    22539  else
    -
    22540  {
    -
    22541  JSON_THROW(type_error::create(310, "cannot use swap() with " + std::string(type_name())));
    -
    22542  }
    -
    22543  }
    -
    22544 
    -
    22546 
    -
    22547  public:
    -
    22549  // lexicographical comparison operators //
    -
    22551 
    -
    22554 
    -
    22610  friend bool operator==(const_reference lhs, const_reference rhs) noexcept
    -
    22611  {
    -
    22612  const auto lhs_type = lhs.type();
    -
    22613  const auto rhs_type = rhs.type();
    -
    22614 
    -
    22615  if (lhs_type == rhs_type)
    -
    22616  {
    -
    22617  switch (lhs_type)
    -
    22618  {
    -
    22619  case value_t::array:
    -
    22620  return *lhs.m_value.array == *rhs.m_value.array;
    -
    22621 
    -
    22622  case value_t::object:
    -
    22623  return *lhs.m_value.object == *rhs.m_value.object;
    -
    22624 
    -
    22625  case value_t::null:
    -
    22626  return true;
    -
    22627 
    -
    22628  case value_t::string:
    -
    22629  return *lhs.m_value.string == *rhs.m_value.string;
    -
    22630 
    -
    22631  case value_t::boolean:
    -
    22632  return lhs.m_value.boolean == rhs.m_value.boolean;
    -
    22633 
    - -
    22635  return lhs.m_value.number_integer == rhs.m_value.number_integer;
    -
    22636 
    - -
    22638  return lhs.m_value.number_unsigned == rhs.m_value.number_unsigned;
    -
    22639 
    -
    22640  case value_t::number_float:
    -
    22641  return lhs.m_value.number_float == rhs.m_value.number_float;
    -
    22642 
    -
    22643  case value_t::binary:
    -
    22644  return *lhs.m_value.binary == *rhs.m_value.binary;
    -
    22645 
    -
    22646  default:
    -
    22647  return false;
    -
    22648  }
    -
    22649  }
    -
    22650  else if (lhs_type == value_t::number_integer && rhs_type == value_t::number_float)
    -
    22651  {
    -
    22652  return static_cast<number_float_t>(lhs.m_value.number_integer) == rhs.m_value.number_float;
    -
    22653  }
    -
    22654  else if (lhs_type == value_t::number_float && rhs_type == value_t::number_integer)
    -
    22655  {
    -
    22656  return lhs.m_value.number_float == static_cast<number_float_t>(rhs.m_value.number_integer);
    -
    22657  }
    -
    22658  else if (lhs_type == value_t::number_unsigned && rhs_type == value_t::number_float)
    -
    22659  {
    -
    22660  return static_cast<number_float_t>(lhs.m_value.number_unsigned) == rhs.m_value.number_float;
    -
    22661  }
    -
    22662  else if (lhs_type == value_t::number_float && rhs_type == value_t::number_unsigned)
    -
    22663  {
    -
    22664  return lhs.m_value.number_float == static_cast<number_float_t>(rhs.m_value.number_unsigned);
    -
    22665  }
    -
    22666  else if (lhs_type == value_t::number_unsigned && rhs_type == value_t::number_integer)
    -
    22667  {
    -
    22668  return static_cast<number_integer_t>(lhs.m_value.number_unsigned) == rhs.m_value.number_integer;
    -
    22669  }
    -
    22670  else if (lhs_type == value_t::number_integer && rhs_type == value_t::number_unsigned)
    -
    22671  {
    -
    22672  return lhs.m_value.number_integer == static_cast<number_integer_t>(rhs.m_value.number_unsigned);
    -
    22673  }
    -
    22674 
    -
    22675  return false;
    -
    22676  }
    -
    22677 
    -
    22682  template<typename ScalarType, typename std::enable_if<
    -
    22683  std::is_scalar<ScalarType>::value, int>::type = 0>
    -
    22684  friend bool operator==(const_reference lhs, const ScalarType rhs) noexcept
    -
    22685  {
    -
    22686  return lhs == basic_json(rhs);
    -
    22687  }
    -
    22688 
    -
    22693  template<typename ScalarType, typename std::enable_if<
    -
    22694  std::is_scalar<ScalarType>::value, int>::type = 0>
    -
    22695  friend bool operator==(const ScalarType lhs, const_reference rhs) noexcept
    -
    22696  {
    -
    22697  return basic_json(lhs) == rhs;
    -
    22698  }
    -
    22699 
    -
    22718  friend bool operator!=(const_reference lhs, const_reference rhs) noexcept
    -
    22719  {
    -
    22720  return !(lhs == rhs);
    -
    22721  }
    -
    22722 
    -
    22727  template<typename ScalarType, typename std::enable_if<
    -
    22728  std::is_scalar<ScalarType>::value, int>::type = 0>
    -
    22729  friend bool operator!=(const_reference lhs, const ScalarType rhs) noexcept
    -
    22730  {
    -
    22731  return lhs != basic_json(rhs);
    -
    22732  }
    -
    22733 
    -
    22738  template<typename ScalarType, typename std::enable_if<
    -
    22739  std::is_scalar<ScalarType>::value, int>::type = 0>
    -
    22740  friend bool operator!=(const ScalarType lhs, const_reference rhs) noexcept
    -
    22741  {
    -
    22742  return basic_json(lhs) != rhs;
    -
    22743  }
    -
    22744 
    -
    22771  friend bool operator<(const_reference lhs, const_reference rhs) noexcept
    -
    22772  {
    -
    22773  const auto lhs_type = lhs.type();
    -
    22774  const auto rhs_type = rhs.type();
    -
    22775 
    -
    22776  if (lhs_type == rhs_type)
    -
    22777  {
    -
    22778  switch (lhs_type)
    -
    22779  {
    -
    22780  case value_t::array:
    -
    22781  // note parentheses are necessary, see
    -
    22782  // https://github.com/nlohmann/json/issues/1530
    -
    22783  return (*lhs.m_value.array) < (*rhs.m_value.array);
    -
    22784 
    -
    22785  case value_t::object:
    -
    22786  return (*lhs.m_value.object) < (*rhs.m_value.object);
    -
    22787 
    -
    22788  case value_t::null:
    -
    22789  return false;
    -
    22790 
    -
    22791  case value_t::string:
    -
    22792  return (*lhs.m_value.string) < (*rhs.m_value.string);
    -
    22793 
    -
    22794  case value_t::boolean:
    -
    22795  return (lhs.m_value.boolean) < (rhs.m_value.boolean);
    -
    22796 
    - -
    22798  return (lhs.m_value.number_integer) < (rhs.m_value.number_integer);
    -
    22799 
    - -
    22801  return (lhs.m_value.number_unsigned) < (rhs.m_value.number_unsigned);
    -
    22802 
    -
    22803  case value_t::number_float:
    -
    22804  return (lhs.m_value.number_float) < (rhs.m_value.number_float);
    -
    22805 
    -
    22806  case value_t::binary:
    -
    22807  return (*lhs.m_value.binary) < (*rhs.m_value.binary);
    -
    22808 
    -
    22809  default:
    -
    22810  return false;
    -
    22811  }
    -
    22812  }
    -
    22813  else if (lhs_type == value_t::number_integer && rhs_type == value_t::number_float)
    -
    22814  {
    -
    22815  return static_cast<number_float_t>(lhs.m_value.number_integer) < rhs.m_value.number_float;
    -
    22816  }
    -
    22817  else if (lhs_type == value_t::number_float && rhs_type == value_t::number_integer)
    -
    22818  {
    -
    22819  return lhs.m_value.number_float < static_cast<number_float_t>(rhs.m_value.number_integer);
    -
    22820  }
    -
    22821  else if (lhs_type == value_t::number_unsigned && rhs_type == value_t::number_float)
    -
    22822  {
    -
    22823  return static_cast<number_float_t>(lhs.m_value.number_unsigned) < rhs.m_value.number_float;
    -
    22824  }
    -
    22825  else if (lhs_type == value_t::number_float && rhs_type == value_t::number_unsigned)
    -
    22826  {
    -
    22827  return lhs.m_value.number_float < static_cast<number_float_t>(rhs.m_value.number_unsigned);
    -
    22828  }
    -
    22829  else if (lhs_type == value_t::number_integer && rhs_type == value_t::number_unsigned)
    -
    22830  {
    -
    22831  return lhs.m_value.number_integer < static_cast<number_integer_t>(rhs.m_value.number_unsigned);
    -
    22832  }
    -
    22833  else if (lhs_type == value_t::number_unsigned && rhs_type == value_t::number_integer)
    -
    22834  {
    -
    22835  return static_cast<number_integer_t>(lhs.m_value.number_unsigned) < rhs.m_value.number_integer;
    -
    22836  }
    -
    22837 
    -
    22838  // We only reach this line if we cannot compare values. In that case,
    -
    22839  // we compare types. Note we have to call the operator explicitly,
    -
    22840  // because MSVC has problems otherwise.
    -
    22841  return operator<(lhs_type, rhs_type);
    -
    22842  }
    -
    22843 
    -
    22848  template<typename ScalarType, typename std::enable_if<
    -
    22849  std::is_scalar<ScalarType>::value, int>::type = 0>
    -
    22850  friend bool operator<(const_reference lhs, const ScalarType rhs) noexcept
    -
    22851  {
    -
    22852  return lhs < basic_json(rhs);
    -
    22853  }
    -
    22854 
    -
    22859  template<typename ScalarType, typename std::enable_if<
    -
    22860  std::is_scalar<ScalarType>::value, int>::type = 0>
    -
    22861  friend bool operator<(const ScalarType lhs, const_reference rhs) noexcept
    -
    22862  {
    -
    22863  return basic_json(lhs) < rhs;
    -
    22864  }
    -
    22865 
    -
    22885  friend bool operator<=(const_reference lhs, const_reference rhs) noexcept
    -
    22886  {
    -
    22887  return !(rhs < lhs);
    -
    22888  }
    -
    22889 
    -
    22894  template<typename ScalarType, typename std::enable_if<
    -
    22895  std::is_scalar<ScalarType>::value, int>::type = 0>
    -
    22896  friend bool operator<=(const_reference lhs, const ScalarType rhs) noexcept
    -
    22897  {
    -
    22898  return lhs <= basic_json(rhs);
    -
    22899  }
    -
    22900 
    -
    22905  template<typename ScalarType, typename std::enable_if<
    -
    22906  std::is_scalar<ScalarType>::value, int>::type = 0>
    -
    22907  friend bool operator<=(const ScalarType lhs, const_reference rhs) noexcept
    -
    22908  {
    -
    22909  return basic_json(lhs) <= rhs;
    -
    22910  }
    -
    22911 
    -
    22931  friend bool operator>(const_reference lhs, const_reference rhs) noexcept
    -
    22932  {
    -
    22933  return !(lhs <= rhs);
    -
    22934  }
    -
    22935 
    -
    22940  template<typename ScalarType, typename std::enable_if<
    -
    22941  std::is_scalar<ScalarType>::value, int>::type = 0>
    -
    22942  friend bool operator>(const_reference lhs, const ScalarType rhs) noexcept
    -
    22943  {
    -
    22944  return lhs > basic_json(rhs);
    -
    22945  }
    -
    22946 
    -
    22951  template<typename ScalarType, typename std::enable_if<
    -
    22952  std::is_scalar<ScalarType>::value, int>::type = 0>
    -
    22953  friend bool operator>(const ScalarType lhs, const_reference rhs) noexcept
    -
    22954  {
    -
    22955  return basic_json(lhs) > rhs;
    -
    22956  }
    -
    22957 
    -
    22977  friend bool operator>=(const_reference lhs, const_reference rhs) noexcept
    -
    22978  {
    -
    22979  return !(lhs < rhs);
    -
    22980  }
    -
    22981 
    -
    22986  template<typename ScalarType, typename std::enable_if<
    -
    22987  std::is_scalar<ScalarType>::value, int>::type = 0>
    -
    22988  friend bool operator>=(const_reference lhs, const ScalarType rhs) noexcept
    -
    22989  {
    -
    22990  return lhs >= basic_json(rhs);
    -
    22991  }
    -
    22992 
    -
    22997  template<typename ScalarType, typename std::enable_if<
    -
    22998  std::is_scalar<ScalarType>::value, int>::type = 0>
    -
    22999  friend bool operator>=(const ScalarType lhs, const_reference rhs) noexcept
    -
    23000  {
    -
    23001  return basic_json(lhs) >= rhs;
    -
    23002  }
    -
    23003 
    -
    23005 
    -
    23007  // serialization //
    -
    23009 
    -
    23012 
    -
    23044  friend std::ostream& operator<<(std::ostream& o, const basic_json& j)
    -
    23045  {
    -
    23046  // read width member and use it as indentation parameter if nonzero
    -
    23047  const bool pretty_print = o.width() > 0;
    -
    23048  const auto indentation = pretty_print ? o.width() : 0;
    -
    23049 
    -
    23050  // reset width to 0 for subsequent calls to this stream
    -
    23051  o.width(0);
    -
    23052 
    -
    23053  // do the actual serialization
    -
    23054  serializer s(detail::output_adapter<char>(o), o.fill());
    -
    23055  s.dump(j, pretty_print, false, static_cast<unsigned int>(indentation));
    -
    23056  return o;
    -
    23057  }
    -
    23058 
    -
    23067  JSON_HEDLEY_DEPRECATED_FOR(3.0.0, operator<<(std::ostream&, const basic_json&))
    -
    23068  friend std::ostream& operator>>(const basic_json& j, std::ostream& o)
    -
    23069  {
    -
    23070  return o << j;
    -
    23071  }
    -
    23072 
    -
    23074 
    -
    23075 
    -
    23077  // deserialization //
    -
    23079 
    -
    23082 
    -
    23134  template<typename InputType>
    - -
    23136  static basic_json parse(InputType&& i,
    -
    23137  const parser_callback_t cb = nullptr,
    -
    23138  const bool allow_exceptions = true,
    -
    23139  const bool ignore_comments = false)
    -
    23140  {
    -
    23141  basic_json result;
    -
    23142  parser(detail::input_adapter(std::forward<InputType>(i)), cb, allow_exceptions, ignore_comments).parse(true, result);
    -
    23143  return result;
    -
    23144  }
    -
    23145 
    -
    23172  template<typename IteratorType>
    - -
    23174  static basic_json parse(IteratorType first,
    -
    23175  IteratorType last,
    -
    23176  const parser_callback_t cb = nullptr,
    -
    23177  const bool allow_exceptions = true,
    -
    23178  const bool ignore_comments = false)
    -
    23179  {
    -
    23180  basic_json result;
    -
    23181  parser(detail::input_adapter(std::move(first), std::move(last)), cb, allow_exceptions, ignore_comments).parse(true, result);
    -
    23182  return result;
    -
    23183  }
    -
    23184 
    - -
    23186  JSON_HEDLEY_DEPRECATED_FOR(3.8.0, parse(ptr, ptr + len))
    -
    23187  static basic_json parse(detail::span_input_adapter&& i,
    -
    23188  const parser_callback_t cb = nullptr,
    -
    23189  const bool allow_exceptions = true,
    -
    23190  const bool ignore_comments = false)
    -
    23191  {
    -
    23192  basic_json result;
    -
    23193  parser(i.get(), cb, allow_exceptions, ignore_comments).parse(true, result);
    -
    23194  return result;
    -
    23195  }
    -
    23196 
    -
    23227  template<typename InputType>
    -
    23228  static bool accept(InputType&& i,
    -
    23229  const bool ignore_comments = false)
    -
    23230  {
    -
    23231  return parser(detail::input_adapter(std::forward<InputType>(i)), nullptr, false, ignore_comments).accept(true);
    -
    23232  }
    -
    23233 
    -
    23234  template<typename IteratorType>
    -
    23235  static bool accept(IteratorType first, IteratorType last,
    -
    23236  const bool ignore_comments = false)
    -
    23237  {
    -
    23238  return parser(detail::input_adapter(std::move(first), std::move(last)), nullptr, false, ignore_comments).accept(true);
    -
    23239  }
    -
    23240 
    - -
    23242  JSON_HEDLEY_DEPRECATED_FOR(3.8.0, accept(ptr, ptr + len))
    -
    23243  static bool accept(detail::span_input_adapter&& i,
    -
    23244  const bool ignore_comments = false)
    -
    23245  {
    -
    23246  return parser(i.get(), nullptr, false, ignore_comments).accept(true);
    -
    23247  }
    -
    23248 
    -
    23289  template <typename InputType, typename SAX>
    - -
    23291  static bool sax_parse(InputType&& i, SAX* sax,
    - -
    23293  const bool strict = true,
    -
    23294  const bool ignore_comments = false)
    -
    23295  {
    -
    23296  auto ia = detail::input_adapter(std::forward<InputType>(i));
    -
    23297  return format == input_format_t::json
    -
    23298  ? parser(std::move(ia), nullptr, true, ignore_comments).sax_parse(sax, strict)
    -
    23299  : detail::binary_reader<basic_json, decltype(ia), SAX>(std::move(ia)).sax_parse(format, sax, strict);
    -
    23300  }
    -
    23301 
    -
    23302  template<class IteratorType, class SAX>
    - -
    23304  static bool sax_parse(IteratorType first, IteratorType last, SAX* sax,
    - -
    23306  const bool strict = true,
    -
    23307  const bool ignore_comments = false)
    -
    23308  {
    -
    23309  auto ia = detail::input_adapter(std::move(first), std::move(last));
    -
    23310  return format == input_format_t::json
    -
    23311  ? parser(std::move(ia), nullptr, true, ignore_comments).sax_parse(sax, strict)
    -
    23312  : detail::binary_reader<basic_json, decltype(ia), SAX>(std::move(ia)).sax_parse(format, sax, strict);
    -
    23313  }
    -
    23314 
    -
    23315  template <typename SAX>
    -
    23316  JSON_HEDLEY_DEPRECATED_FOR(3.8.0, sax_parse(ptr, ptr + len, ...))
    - -
    23318  static bool sax_parse(detail::span_input_adapter&& i, SAX* sax,
    - -
    23320  const bool strict = true,
    -
    23321  const bool ignore_comments = false)
    -
    23322  {
    -
    23323  auto ia = i.get();
    -
    23324  return format == input_format_t::json
    -
    23325  ? parser(std::move(ia), nullptr, true, ignore_comments).sax_parse(sax, strict)
    -
    23326  : detail::binary_reader<basic_json, decltype(ia), SAX>(std::move(ia)).sax_parse(format, sax, strict);
    -
    23327  }
    -
    23328 
    -
    23337  JSON_HEDLEY_DEPRECATED_FOR(3.0.0, operator>>(std::istream&, basic_json&))
    -
    23338  friend std::istream& operator<<(basic_json& j, std::istream& i)
    -
    23339  {
    -
    23340  return operator>>(i, j);
    -
    23341  }
    -
    23342 
    -
    23368  friend std::istream& operator>>(std::istream& i, basic_json& j)
    -
    23369  {
    -
    23370  parser(detail::input_adapter(i)).parse(false, j);
    -
    23371  return i;
    -
    23372  }
    -
    23373 
    -
    23375 
    -
    23377  // convenience functions //
    -
    23379 
    - -
    23412  const char* type_name() const noexcept
    -
    23413  {
    -
    23414  {
    -
    23415  switch (m_type)
    -
    23416  {
    -
    23417  case value_t::null:
    -
    23418  return "null";
    -
    23419  case value_t::object:
    -
    23420  return "object";
    -
    23421  case value_t::array:
    -
    23422  return "array";
    -
    23423  case value_t::string:
    -
    23424  return "string";
    -
    23425  case value_t::boolean:
    -
    23426  return "boolean";
    -
    23427  case value_t::binary:
    -
    23428  return "binary";
    -
    23429  case value_t::discarded:
    -
    23430  return "discarded";
    -
    23431  default:
    -
    23432  return "number";
    -
    23433  }
    -
    23434  }
    -
    23435  }
    -
    23436 
    -
    23437 
    -
    23438  private:
    -
    23440  // member variables //
    -
    23442 
    -
    23444  value_t m_type = value_t::null;
    -
    23445 
    -
    23447  json_value m_value = {};
    -
    23448 
    -
    23450  // binary serialization/deserialization //
    -
    23452 
    -
    23455 
    -
    23456  public:
    -
    23551  static std::vector<uint8_t> to_cbor(const basic_json& j)
    -
    23552  {
    -
    23553  std::vector<uint8_t> result;
    -
    23554  to_cbor(j, result);
    -
    23555  return result;
    -
    23556  }
    -
    23557 
    - -
    23559  {
    - -
    23561  }
    -
    23562 
    - -
    23564  {
    - -
    23566  }
    -
    23567 
    -
    23646  static std::vector<uint8_t> to_msgpack(const basic_json& j)
    -
    23647  {
    -
    23648  std::vector<uint8_t> result;
    -
    23649  to_msgpack(j, result);
    -
    23650  return result;
    -
    23651  }
    -
    23652 
    - -
    23654  {
    - -
    23656  }
    -
    23657 
    - -
    23659  {
    - -
    23661  }
    -
    23662 
    -
    23749  static std::vector<uint8_t> to_ubjson(const basic_json& j,
    -
    23750  const bool use_size = false,
    -
    23751  const bool use_type = false)
    -
    23752  {
    -
    23753  std::vector<uint8_t> result;
    -
    23754  to_ubjson(j, result, use_size, use_type);
    -
    23755  return result;
    -
    23756  }
    -
    23757 
    - -
    23759  const bool use_size = false, const bool use_type = false)
    -
    23760  {
    -
    23761  binary_writer<uint8_t>(o).write_ubjson(j, use_size, use_type);
    -
    23762  }
    -
    23763 
    - -
    23765  const bool use_size = false, const bool use_type = false)
    -
    23766  {
    -
    23767  binary_writer<char>(o).write_ubjson(j, use_size, use_type);
    -
    23768  }
    -
    23769 
    -
    23770 
    -
    23827  static std::vector<uint8_t> to_bson(const basic_json& j)
    -
    23828  {
    -
    23829  std::vector<uint8_t> result;
    -
    23830  to_bson(j, result);
    -
    23831  return result;
    -
    23832  }
    -
    23833 
    - -
    23843  {
    - -
    23845  }
    -
    23846 
    - -
    23851  {
    - -
    23853  }
    -
    23854 
    -
    23855 
    -
    23958  template<typename InputType>
    - -
    23960  static basic_json from_cbor(InputType&& i,
    -
    23961  const bool strict = true,
    -
    23962  const bool allow_exceptions = true,
    -
    23963  const cbor_tag_handler_t tag_handler = cbor_tag_handler_t::error)
    -
    23964  {
    -
    23965  basic_json result;
    -
    23966  detail::json_sax_dom_parser<basic_json> sdp(result, allow_exceptions);
    -
    23967  auto ia = detail::input_adapter(std::forward<InputType>(i));
    -
    23968  const bool res = binary_reader<decltype(ia)>(std::move(ia)).sax_parse(input_format_t::cbor, &sdp, strict, tag_handler);
    -
    23969  return res ? result : basic_json(value_t::discarded);
    -
    23970  }
    -
    23971 
    -
    23975  template<typename IteratorType>
    - -
    23977  static basic_json from_cbor(IteratorType first, IteratorType last,
    -
    23978  const bool strict = true,
    -
    23979  const bool allow_exceptions = true,
    -
    23980  const cbor_tag_handler_t tag_handler = cbor_tag_handler_t::error)
    -
    23981  {
    -
    23982  basic_json result;
    -
    23983  detail::json_sax_dom_parser<basic_json> sdp(result, allow_exceptions);
    -
    23984  auto ia = detail::input_adapter(std::move(first), std::move(last));
    -
    23985  const bool res = binary_reader<decltype(ia)>(std::move(ia)).sax_parse(input_format_t::cbor, &sdp, strict, tag_handler);
    -
    23986  return res ? result : basic_json(value_t::discarded);
    -
    23987  }
    -
    23988 
    -
    23989  template<typename T>
    - -
    23991  JSON_HEDLEY_DEPRECATED_FOR(3.8.0, from_cbor(ptr, ptr + len))
    -
    23992  static basic_json from_cbor(const T* ptr, std::size_t len,
    -
    23993  const bool strict = true,
    -
    23994  const bool allow_exceptions = true,
    -
    23995  const cbor_tag_handler_t tag_handler = cbor_tag_handler_t::error)
    -
    23996  {
    -
    23997  return from_cbor(ptr, ptr + len, strict, allow_exceptions, tag_handler);
    -
    23998  }
    -
    23999 
    -
    24000 
    - -
    24002  JSON_HEDLEY_DEPRECATED_FOR(3.8.0, from_cbor(ptr, ptr + len))
    -
    24003  static basic_json from_cbor(detail::span_input_adapter&& i,
    -
    24004  const bool strict = true,
    -
    24005  const bool allow_exceptions = true,
    -
    24006  const cbor_tag_handler_t tag_handler = cbor_tag_handler_t::error)
    -
    24007  {
    -
    24008  basic_json result;
    -
    24009  detail::json_sax_dom_parser<basic_json> sdp(result, allow_exceptions);
    -
    24010  auto ia = i.get();
    -
    24011  const bool res = binary_reader<decltype(ia)>(std::move(ia)).sax_parse(input_format_t::cbor, &sdp, strict, tag_handler);
    -
    24012  return res ? result : basic_json(value_t::discarded);
    -
    24013  }
    -
    24014 
    -
    24101  template<typename InputType>
    - -
    24103  static basic_json from_msgpack(InputType&& i,
    -
    24104  const bool strict = true,
    -
    24105  const bool allow_exceptions = true)
    -
    24106  {
    -
    24107  basic_json result;
    -
    24108  detail::json_sax_dom_parser<basic_json> sdp(result, allow_exceptions);
    -
    24109  auto ia = detail::input_adapter(std::forward<InputType>(i));
    -
    24110  const bool res = binary_reader<decltype(ia)>(std::move(ia)).sax_parse(input_format_t::msgpack, &sdp, strict);
    -
    24111  return res ? result : basic_json(value_t::discarded);
    -
    24112  }
    -
    24113 
    -
    24117  template<typename IteratorType>
    - -
    24119  static basic_json from_msgpack(IteratorType first, IteratorType last,
    -
    24120  const bool strict = true,
    -
    24121  const bool allow_exceptions = true)
    -
    24122  {
    -
    24123  basic_json result;
    -
    24124  detail::json_sax_dom_parser<basic_json> sdp(result, allow_exceptions);
    -
    24125  auto ia = detail::input_adapter(std::move(first), std::move(last));
    -
    24126  const bool res = binary_reader<decltype(ia)>(std::move(ia)).sax_parse(input_format_t::msgpack, &sdp, strict);
    -
    24127  return res ? result : basic_json(value_t::discarded);
    -
    24128  }
    -
    24129 
    -
    24130 
    -
    24131  template<typename T>
    - -
    24133  JSON_HEDLEY_DEPRECATED_FOR(3.8.0, from_msgpack(ptr, ptr + len))
    -
    24134  static basic_json from_msgpack(const T* ptr, std::size_t len,
    -
    24135  const bool strict = true,
    -
    24136  const bool allow_exceptions = true)
    -
    24137  {
    -
    24138  return from_msgpack(ptr, ptr + len, strict, allow_exceptions);
    -
    24139  }
    -
    24140 
    - -
    24142  JSON_HEDLEY_DEPRECATED_FOR(3.8.0, from_msgpack(ptr, ptr + len))
    -
    24143  static basic_json from_msgpack(detail::span_input_adapter&& i,
    -
    24144  const bool strict = true,
    -
    24145  const bool allow_exceptions = true)
    -
    24146  {
    -
    24147  basic_json result;
    -
    24148  detail::json_sax_dom_parser<basic_json> sdp(result, allow_exceptions);
    -
    24149  auto ia = i.get();
    -
    24150  const bool res = binary_reader<decltype(ia)>(std::move(ia)).sax_parse(input_format_t::msgpack, &sdp, strict);
    -
    24151  return res ? result : basic_json(value_t::discarded);
    -
    24152  }
    -
    24153 
    -
    24154 
    -
    24217  template<typename InputType>
    - -
    24219  static basic_json from_ubjson(InputType&& i,
    -
    24220  const bool strict = true,
    -
    24221  const bool allow_exceptions = true)
    -
    24222  {
    -
    24223  basic_json result;
    -
    24224  detail::json_sax_dom_parser<basic_json> sdp(result, allow_exceptions);
    -
    24225  auto ia = detail::input_adapter(std::forward<InputType>(i));
    -
    24226  const bool res = binary_reader<decltype(ia)>(std::move(ia)).sax_parse(input_format_t::ubjson, &sdp, strict);
    -
    24227  return res ? result : basic_json(value_t::discarded);
    -
    24228  }
    -
    24229 
    -
    24233  template<typename IteratorType>
    - -
    24235  static basic_json from_ubjson(IteratorType first, IteratorType last,
    -
    24236  const bool strict = true,
    -
    24237  const bool allow_exceptions = true)
    -
    24238  {
    -
    24239  basic_json result;
    -
    24240  detail::json_sax_dom_parser<basic_json> sdp(result, allow_exceptions);
    -
    24241  auto ia = detail::input_adapter(std::move(first), std::move(last));
    -
    24242  const bool res = binary_reader<decltype(ia)>(std::move(ia)).sax_parse(input_format_t::ubjson, &sdp, strict);
    -
    24243  return res ? result : basic_json(value_t::discarded);
    -
    24244  }
    -
    24245 
    -
    24246  template<typename T>
    - -
    24248  JSON_HEDLEY_DEPRECATED_FOR(3.8.0, from_ubjson(ptr, ptr + len))
    -
    24249  static basic_json from_ubjson(const T* ptr, std::size_t len,
    -
    24250  const bool strict = true,
    -
    24251  const bool allow_exceptions = true)
    -
    24252  {
    -
    24253  return from_ubjson(ptr, ptr + len, strict, allow_exceptions);
    -
    24254  }
    -
    24255 
    - -
    24257  JSON_HEDLEY_DEPRECATED_FOR(3.8.0, from_ubjson(ptr, ptr + len))
    -
    24258  static basic_json from_ubjson(detail::span_input_adapter&& i,
    -
    24259  const bool strict = true,
    -
    24260  const bool allow_exceptions = true)
    -
    24261  {
    -
    24262  basic_json result;
    -
    24263  detail::json_sax_dom_parser<basic_json> sdp(result, allow_exceptions);
    -
    24264  auto ia = i.get();
    -
    24265  const bool res = binary_reader<decltype(ia)>(std::move(ia)).sax_parse(input_format_t::ubjson, &sdp, strict);
    -
    24266  return res ? result : basic_json(value_t::discarded);
    -
    24267  }
    -
    24268 
    -
    24269 
    -
    24330  template<typename InputType>
    - -
    24332  static basic_json from_bson(InputType&& i,
    -
    24333  const bool strict = true,
    -
    24334  const bool allow_exceptions = true)
    -
    24335  {
    -
    24336  basic_json result;
    -
    24337  detail::json_sax_dom_parser<basic_json> sdp(result, allow_exceptions);
    -
    24338  auto ia = detail::input_adapter(std::forward<InputType>(i));
    -
    24339  const bool res = binary_reader<decltype(ia)>(std::move(ia)).sax_parse(input_format_t::bson, &sdp, strict);
    -
    24340  return res ? result : basic_json(value_t::discarded);
    -
    24341  }
    -
    24342 
    -
    24346  template<typename IteratorType>
    - -
    24348  static basic_json from_bson(IteratorType first, IteratorType last,
    -
    24349  const bool strict = true,
    -
    24350  const bool allow_exceptions = true)
    -
    24351  {
    -
    24352  basic_json result;
    -
    24353  detail::json_sax_dom_parser<basic_json> sdp(result, allow_exceptions);
    -
    24354  auto ia = detail::input_adapter(std::move(first), std::move(last));
    -
    24355  const bool res = binary_reader<decltype(ia)>(std::move(ia)).sax_parse(input_format_t::bson, &sdp, strict);
    -
    24356  return res ? result : basic_json(value_t::discarded);
    -
    24357  }
    -
    24358 
    -
    24359  template<typename T>
    - -
    24361  JSON_HEDLEY_DEPRECATED_FOR(3.8.0, from_bson(ptr, ptr + len))
    -
    24362  static basic_json from_bson(const T* ptr, std::size_t len,
    -
    24363  const bool strict = true,
    -
    24364  const bool allow_exceptions = true)
    -
    24365  {
    -
    24366  return from_bson(ptr, ptr + len, strict, allow_exceptions);
    -
    24367  }
    -
    24368 
    - -
    24370  JSON_HEDLEY_DEPRECATED_FOR(3.8.0, from_bson(ptr, ptr + len))
    -
    24371  static basic_json from_bson(detail::span_input_adapter&& i,
    -
    24372  const bool strict = true,
    -
    24373  const bool allow_exceptions = true)
    -
    24374  {
    -
    24375  basic_json result;
    -
    24376  detail::json_sax_dom_parser<basic_json> sdp(result, allow_exceptions);
    -
    24377  auto ia = i.get();
    -
    24378  const bool res = binary_reader<decltype(ia)>(std::move(ia)).sax_parse(input_format_t::bson, &sdp, strict);
    -
    24379  return res ? result : basic_json(value_t::discarded);
    -
    24380  }
    -
    24382 
    -
    24384  // JSON Pointer support //
    -
    24386 
    -
    24389 
    - -
    24424  {
    -
    24425  return ptr.get_unchecked(this);
    -
    24426  }
    -
    24427 
    - -
    24452  {
    -
    24453  return ptr.get_unchecked(this);
    -
    24454  }
    -
    24455 
    - -
    24495  {
    -
    24496  return ptr.get_checked(this);
    -
    24497  }
    -
    24498 
    -
    24537  const_reference at(const json_pointer& ptr) const
    -
    24538  {
    -
    24539  return ptr.get_checked(this);
    -
    24540  }
    -
    24541 
    - -
    24565  {
    -
    24566  basic_json result(value_t::object);
    -
    24567  json_pointer::flatten("", *this, result);
    -
    24568  return result;
    -
    24569  }
    -
    24570 
    - -
    24602  {
    -
    24603  return json_pointer::unflatten(*this);
    -
    24604  }
    -
    24605 
    -
    24607 
    -
    24609  // JSON Patch functions //
    -
    24611 
    -
    24614 
    -
    24662  basic_json patch(const basic_json& json_patch) const
    -
    24663  {
    -
    24664  // make a working copy to apply the patch to
    -
    24665  basic_json result = *this;
    -
    24666 
    -
    24667  // the valid JSON Patch operations
    -
    24668  enum class patch_operations {add, remove, replace, move, copy, test, invalid};
    -
    24669 
    -
    24670  const auto get_op = [](const std::string & op)
    -
    24671  {
    -
    24672  if (op == "add")
    -
    24673  {
    -
    24674  return patch_operations::add;
    -
    24675  }
    -
    24676  if (op == "remove")
    -
    24677  {
    -
    24678  return patch_operations::remove;
    -
    24679  }
    -
    24680  if (op == "replace")
    -
    24681  {
    -
    24682  return patch_operations::replace;
    -
    24683  }
    -
    24684  if (op == "move")
    -
    24685  {
    -
    24686  return patch_operations::move;
    -
    24687  }
    -
    24688  if (op == "copy")
    -
    24689  {
    -
    24690  return patch_operations::copy;
    -
    24691  }
    -
    24692  if (op == "test")
    -
    24693  {
    -
    24694  return patch_operations::test;
    -
    24695  }
    -
    24696 
    -
    24697  return patch_operations::invalid;
    -
    24698  };
    -
    24699 
    -
    24700  // wrapper for "add" operation; add value at ptr
    -
    24701  const auto operation_add = [&result](json_pointer & ptr, basic_json val)
    -
    24702  {
    -
    24703  // adding to the root of the target document means replacing it
    -
    24704  if (ptr.empty())
    -
    24705  {
    -
    24706  result = val;
    -
    24707  return;
    -
    24708  }
    -
    24709 
    -
    24710  // make sure the top element of the pointer exists
    -
    24711  json_pointer top_pointer = ptr.top();
    -
    24712  if (top_pointer != ptr)
    -
    24713  {
    -
    24714  result.at(top_pointer);
    -
    24715  }
    -
    24716 
    -
    24717  // get reference to parent of JSON pointer ptr
    -
    24718  const auto last_path = ptr.back();
    -
    24719  ptr.pop_back();
    -
    24720  basic_json& parent = result[ptr];
    -
    24721 
    -
    24722  switch (parent.m_type)
    -
    24723  {
    -
    24724  case value_t::null:
    -
    24725  case value_t::object:
    -
    24726  {
    -
    24727  // use operator[] to add value
    -
    24728  parent[last_path] = val;
    -
    24729  break;
    -
    24730  }
    -
    24731 
    -
    24732  case value_t::array:
    -
    24733  {
    -
    24734  if (last_path == "-")
    -
    24735  {
    -
    24736  // special case: append to back
    -
    24737  parent.push_back(val);
    -
    24738  }
    -
    24739  else
    -
    24740  {
    -
    24741  const auto idx = json_pointer::array_index(last_path);
    -
    24742  if (JSON_HEDLEY_UNLIKELY(idx > parent.size()))
    -
    24743  {
    -
    24744  // avoid undefined behavior
    -
    24745  JSON_THROW(out_of_range::create(401, "array index " + std::to_string(idx) + " is out of range"));
    -
    24746  }
    -
    24747 
    -
    24748  // default case: insert add offset
    -
    24749  parent.insert(parent.begin() + static_cast<difference_type>(idx), val);
    -
    24750  }
    -
    24751  break;
    -
    24752  }
    -
    24753 
    -
    24754  // if there exists a parent it cannot be primitive
    -
    24755  default: // LCOV_EXCL_LINE
    -
    24756  JSON_ASSERT(false); // LCOV_EXCL_LINE
    -
    24757  }
    -
    24758  };
    -
    24759 
    -
    24760  // wrapper for "remove" operation; remove value at ptr
    -
    24761  const auto operation_remove = [&result](json_pointer & ptr)
    -
    24762  {
    -
    24763  // get reference to parent of JSON pointer ptr
    -
    24764  const auto last_path = ptr.back();
    -
    24765  ptr.pop_back();
    -
    24766  basic_json& parent = result.at(ptr);
    -
    24767 
    -
    24768  // remove child
    -
    24769  if (parent.is_object())
    -
    24770  {
    -
    24771  // perform range check
    -
    24772  auto it = parent.find(last_path);
    -
    24773  if (JSON_HEDLEY_LIKELY(it != parent.end()))
    -
    24774  {
    -
    24775  parent.erase(it);
    -
    24776  }
    -
    24777  else
    -
    24778  {
    -
    24779  JSON_THROW(out_of_range::create(403, "key '" + last_path + "' not found"));
    -
    24780  }
    -
    24781  }
    -
    24782  else if (parent.is_array())
    -
    24783  {
    -
    24784  // note erase performs range check
    -
    24785  parent.erase(json_pointer::array_index(last_path));
    -
    24786  }
    -
    24787  };
    -
    24788 
    -
    24789  // type check: top level value must be an array
    -
    24790  if (JSON_HEDLEY_UNLIKELY(!json_patch.is_array()))
    -
    24791  {
    -
    24792  JSON_THROW(parse_error::create(104, 0, "JSON patch must be an array of objects"));
    -
    24793  }
    -
    24794 
    -
    24795  // iterate and apply the operations
    -
    24796  for (const auto& val : json_patch)
    -
    24797  {
    -
    24798  // wrapper to get a value for an operation
    -
    24799  const auto get_value = [&val](const std::string & op,
    -
    24800  const std::string & member,
    -
    24801  bool string_type) -> basic_json &
    -
    24802  {
    -
    24803  // find value
    -
    24804  auto it = val.m_value.object->find(member);
    -
    24805 
    -
    24806  // context-sensitive error message
    -
    24807  const auto error_msg = (op == "op") ? "operation" : "operation '" + op + "'";
    -
    24808 
    -
    24809  // check if desired value is present
    -
    24810  if (JSON_HEDLEY_UNLIKELY(it == val.m_value.object->end()))
    -
    24811  {
    -
    24812  JSON_THROW(parse_error::create(105, 0, error_msg + " must have member '" + member + "'"));
    -
    24813  }
    -
    24814 
    -
    24815  // check if result is of type string
    -
    24816  if (JSON_HEDLEY_UNLIKELY(string_type && !it->second.is_string()))
    -
    24817  {
    -
    24818  JSON_THROW(parse_error::create(105, 0, error_msg + " must have string member '" + member + "'"));
    -
    24819  }
    -
    24820 
    -
    24821  // no error: return value
    -
    24822  return it->second;
    -
    24823  };
    -
    24824 
    -
    24825  // type check: every element of the array must be an object
    -
    24826  if (JSON_HEDLEY_UNLIKELY(!val.is_object()))
    -
    24827  {
    -
    24828  JSON_THROW(parse_error::create(104, 0, "JSON patch must be an array of objects"));
    -
    24829  }
    -
    24830 
    -
    24831  // collect mandatory members
    -
    24832  const auto op = get_value("op", "op", true).template get<std::string>();
    -
    24833  const auto path = get_value(op, "path", true).template get<std::string>();
    -
    24834  json_pointer ptr(path);
    -
    24835 
    -
    24836  switch (get_op(op))
    -
    24837  {
    -
    24838  case patch_operations::add:
    -
    24839  {
    -
    24840  operation_add(ptr, get_value("add", "value", false));
    -
    24841  break;
    -
    24842  }
    -
    24843 
    -
    24844  case patch_operations::remove:
    -
    24845  {
    -
    24846  operation_remove(ptr);
    -
    24847  break;
    -
    24848  }
    -
    24849 
    -
    24850  case patch_operations::replace:
    -
    24851  {
    -
    24852  // the "path" location must exist - use at()
    -
    24853  result.at(ptr) = get_value("replace", "value", false);
    -
    24854  break;
    -
    24855  }
    -
    24856 
    -
    24857  case patch_operations::move:
    -
    24858  {
    -
    24859  const auto from_path = get_value("move", "from", true).template get<std::string>();
    -
    24860  json_pointer from_ptr(from_path);
    -
    24861 
    -
    24862  // the "from" location must exist - use at()
    -
    24863  basic_json v = result.at(from_ptr);
    -
    24864 
    -
    24865  // The move operation is functionally identical to a
    -
    24866  // "remove" operation on the "from" location, followed
    -
    24867  // immediately by an "add" operation at the target
    -
    24868  // location with the value that was just removed.
    -
    24869  operation_remove(from_ptr);
    -
    24870  operation_add(ptr, v);
    -
    24871  break;
    -
    24872  }
    -
    24873 
    -
    24874  case patch_operations::copy:
    -
    24875  {
    -
    24876  const auto from_path = get_value("copy", "from", true).template get<std::string>();
    -
    24877  const json_pointer from_ptr(from_path);
    -
    24878 
    -
    24879  // the "from" location must exist - use at()
    -
    24880  basic_json v = result.at(from_ptr);
    -
    24881 
    -
    24882  // The copy is functionally identical to an "add"
    -
    24883  // operation at the target location using the value
    -
    24884  // specified in the "from" member.
    -
    24885  operation_add(ptr, v);
    -
    24886  break;
    -
    24887  }
    -
    24888 
    -
    24889  case patch_operations::test:
    -
    24890  {
    -
    24891  bool success = false;
    -
    24892  JSON_TRY
    -
    24893  {
    -
    24894  // check if "value" matches the one at "path"
    -
    24895  // the "path" location must exist - use at()
    -
    24896  success = (result.at(ptr) == get_value("test", "value", false));
    -
    24897  }
    - -
    24899  {
    -
    24900  // ignore out of range errors: success remains false
    -
    24901  }
    -
    24902 
    -
    24903  // throw an exception if test fails
    -
    24904  if (JSON_HEDLEY_UNLIKELY(!success))
    -
    24905  {
    -
    24906  JSON_THROW(other_error::create(501, "unsuccessful: " + val.dump()));
    -
    24907  }
    -
    24908 
    -
    24909  break;
    -
    24910  }
    -
    24911 
    -
    24912  default:
    -
    24913  {
    -
    24914  // op must be "add", "remove", "replace", "move", "copy", or
    -
    24915  // "test"
    -
    24916  JSON_THROW(parse_error::create(105, 0, "operation value '" + op + "' is invalid"));
    -
    24917  }
    -
    24918  }
    -
    24919  }
    -
    24920 
    -
    24921  return result;
    -
    24922  }
    -
    24923 
    - -
    24958  static basic_json diff(const basic_json& source, const basic_json& target,
    -
    24959  const std::string& path = "")
    -
    24960  {
    -
    24961  // the patch
    -
    24962  basic_json result(value_t::array);
    -
    24963 
    -
    24964  // if the values are the same, return empty patch
    -
    24965  if (source == target)
    -
    24966  {
    -
    24967  return result;
    -
    24968  }
    -
    24969 
    -
    24970  if (source.type() != target.type())
    -
    24971  {
    -
    24972  // different types: replace value
    -
    24973  result.push_back(
    -
    24974  {
    -
    24975  {"op", "replace"}, {"path", path}, {"value", target}
    -
    24976  });
    -
    24977  return result;
    -
    24978  }
    -
    24979 
    -
    24980  switch (source.type())
    -
    24981  {
    -
    24982  case value_t::array:
    -
    24983  {
    -
    24984  // first pass: traverse common elements
    -
    24985  std::size_t i = 0;
    -
    24986  while (i < source.size() && i < target.size())
    -
    24987  {
    -
    24988  // recursive call to compare array values at index i
    -
    24989  auto temp_diff = diff(source[i], target[i], path + "/" + std::to_string(i));
    -
    24990  result.insert(result.end(), temp_diff.begin(), temp_diff.end());
    -
    24991  ++i;
    -
    24992  }
    -
    24993 
    -
    24994  // i now reached the end of at least one array
    -
    24995  // in a second pass, traverse the remaining elements
    -
    24996 
    -
    24997  // remove my remaining elements
    -
    24998  const auto end_index = static_cast<difference_type>(result.size());
    -
    24999  while (i < source.size())
    -
    25000  {
    -
    25001  // add operations in reverse order to avoid invalid
    -
    25002  // indices
    -
    25003  result.insert(result.begin() + end_index, object(
    -
    25004  {
    -
    25005  {"op", "remove"},
    -
    25006  {"path", path + "/" + std::to_string(i)}
    -
    25007  }));
    -
    25008  ++i;
    -
    25009  }
    -
    25010 
    -
    25011  // add other remaining elements
    -
    25012  while (i < target.size())
    -
    25013  {
    -
    25014  result.push_back(
    -
    25015  {
    -
    25016  {"op", "add"},
    -
    25017  {"path", path + "/-"},
    -
    25018  {"value", target[i]}
    -
    25019  });
    -
    25020  ++i;
    -
    25021  }
    -
    25022 
    -
    25023  break;
    -
    25024  }
    -
    25025 
    -
    25026  case value_t::object:
    -
    25027  {
    -
    25028  // first pass: traverse this object's elements
    -
    25029  for (auto it = source.cbegin(); it != source.cend(); ++it)
    -
    25030  {
    -
    25031  // escape the key name to be used in a JSON patch
    -
    25032  const auto key = json_pointer::escape(it.key());
    -
    25033 
    -
    25034  if (target.find(it.key()) != target.end())
    -
    25035  {
    -
    25036  // recursive call to compare object values at key it
    -
    25037  auto temp_diff = diff(it.value(), target[it.key()], path + "/" + key);
    -
    25038  result.insert(result.end(), temp_diff.begin(), temp_diff.end());
    -
    25039  }
    -
    25040  else
    -
    25041  {
    -
    25042  // found a key that is not in o -> remove it
    -
    25043  result.push_back(object(
    -
    25044  {
    -
    25045  {"op", "remove"}, {"path", path + "/" + key}
    -
    25046  }));
    -
    25047  }
    -
    25048  }
    -
    25049 
    -
    25050  // second pass: traverse other object's elements
    -
    25051  for (auto it = target.cbegin(); it != target.cend(); ++it)
    -
    25052  {
    -
    25053  if (source.find(it.key()) == source.end())
    -
    25054  {
    -
    25055  // found a key that is not in this -> add it
    -
    25056  const auto key = json_pointer::escape(it.key());
    -
    25057  result.push_back(
    -
    25058  {
    -
    25059  {"op", "add"}, {"path", path + "/" + key},
    -
    25060  {"value", it.value()}
    -
    25061  });
    -
    25062  }
    -
    25063  }
    -
    25064 
    -
    25065  break;
    -
    25066  }
    -
    25067 
    -
    25068  default:
    -
    25069  {
    -
    25070  // both primitive type: replace value
    -
    25071  result.push_back(
    -
    25072  {
    -
    25073  {"op", "replace"}, {"path", path}, {"value", target}
    -
    25074  });
    -
    25075  break;
    -
    25076  }
    -
    25077  }
    -
    25078 
    -
    25079  return result;
    -
    25080  }
    -
    25081 
    -
    25083 
    -
    25085  // JSON Merge Patch functions //
    -
    25087 
    -
    25090 
    -
    25133  void merge_patch(const basic_json& apply_patch)
    -
    25134  {
    -
    25135  if (apply_patch.is_object())
    -
    25136  {
    -
    25137  if (!is_object())
    -
    25138  {
    -
    25139  *this = object();
    -
    25140  }
    -
    25141  for (auto it = apply_patch.begin(); it != apply_patch.end(); ++it)
    -
    25142  {
    -
    25143  if (it.value().is_null())
    -
    25144  {
    -
    25145  erase(it.key());
    -
    25146  }
    -
    25147  else
    -
    25148  {
    -
    25149  operator[](it.key()).merge_patch(it.value());
    -
    25150  }
    -
    25151  }
    -
    25152  }
    -
    25153  else
    -
    25154  {
    -
    25155  *this = apply_patch;
    -
    25156  }
    -
    25157  }
    -
    25158 
    -
    25160 };
    -
    25161 
    - -
    25172 std::string to_string(const NLOHMANN_BASIC_JSON_TPL& j)
    -
    25173 {
    -
    25174  return j.dump();
    -
    25175 }
    -
    25176 } // namespace nlohmann
    -
    25177 
    -
    25179 // nonmember support //
    -
    25181 
    -
    25182 // specialization of std::swap, and std::hash
    -
    25183 namespace std
    -
    25184 {
    -
    25185 
    -
    25187 template<>
    -
    25188 struct hash<nlohmann::json>
    -
    25189 {
    -
    25195  std::size_t operator()(const nlohmann::json& j) const
    -
    25196  {
    -
    25197  return nlohmann::detail::hash(j);
    -
    25198  }
    -
    25199 };
    -
    25200 
    -
    25204 template<>
    -
    25205 struct less<::nlohmann::detail::value_t>
    -
    25206 {
    - -
    25212  nlohmann::detail::value_t rhs) const noexcept
    -
    25213  {
    -
    25214  return nlohmann::detail::operator<(lhs, rhs);
    -
    25215  }
    -
    25216 };
    -
    25217 
    -
    25218 // C++20 prohibit function specialization in the std namespace.
    -
    25219 #ifndef JSON_HAS_CPP_20
    -
    25220 
    -
    25226 template<>
    -
    25227 inline void swap<nlohmann::json>(nlohmann::json& j1, nlohmann::json& j2) noexcept(
    -
    25228  is_nothrow_move_constructible<nlohmann::json>::value&&
    -
    25229  is_nothrow_move_assignable<nlohmann::json>::value
    -
    25230  )
    -
    25231 {
    -
    25232  j1.swap(j2);
    -
    25233 }
    -
    25234 
    -
    25235 #endif
    -
    25236 
    -
    25237 } // namespace std
    -
    25238 
    - -
    25253 inline nlohmann::json operator "" _json(const char* s, std::size_t n)
    -
    25254 {
    -
    25255  return nlohmann::json::parse(s, s + n);
    -
    25256 }
    -
    25257 
    - -
    25272 inline nlohmann::json::json_pointer operator "" _json_pointer(const char* s, std::size_t n)
    -
    25273 {
    -
    25274  return nlohmann::json::json_pointer(std::string(s, n));
    -
    25275 }
    -
    25276 
    -
    25277 // #include <nlohmann/detail/macro_unscope.hpp>
    -
    25278 
    -
    25279 
    -
    25280 // restore GCC/clang diagnostic settings
    -
    25281 #if defined(__clang__) || defined(__GNUC__) || defined(__GNUG__)
    -
    25282  #pragma GCC diagnostic pop
    -
    25283 #endif
    -
    25284 #if defined(__clang__)
    -
    25285  #pragma GCC diagnostic pop
    -
    25286 #endif
    -
    25287 
    -
    25288 // clean up
    -
    25289 #undef JSON_ASSERT
    -
    25290 #undef JSON_INTERNAL_CATCH
    -
    25291 #undef JSON_CATCH
    -
    25292 #undef JSON_THROW
    -
    25293 #undef JSON_TRY
    -
    25294 #undef JSON_HAS_CPP_14
    -
    25295 #undef JSON_HAS_CPP_17
    -
    25296 #undef NLOHMANN_BASIC_JSON_TPL_DECLARATION
    -
    25297 #undef NLOHMANN_BASIC_JSON_TPL
    -
    25298 #undef JSON_EXPLICIT
    -
    25299 
    -
    25300 // #include <nlohmann/thirdparty/hedley/hedley_undef.hpp>
    -
    25301 #undef JSON_HEDLEY_ALWAYS_INLINE
    -
    25302 #undef JSON_HEDLEY_ARM_VERSION
    -
    25303 #undef JSON_HEDLEY_ARM_VERSION_CHECK
    -
    25304 #undef JSON_HEDLEY_ARRAY_PARAM
    -
    25305 #undef JSON_HEDLEY_ASSUME
    -
    25306 #undef JSON_HEDLEY_BEGIN_C_DECLS
    -
    25307 #undef JSON_HEDLEY_CLANG_HAS_ATTRIBUTE
    -
    25308 #undef JSON_HEDLEY_CLANG_HAS_BUILTIN
    -
    25309 #undef JSON_HEDLEY_CLANG_HAS_CPP_ATTRIBUTE
    -
    25310 #undef JSON_HEDLEY_CLANG_HAS_DECLSPEC_DECLSPEC_ATTRIBUTE
    -
    25311 #undef JSON_HEDLEY_CLANG_HAS_EXTENSION
    -
    25312 #undef JSON_HEDLEY_CLANG_HAS_FEATURE
    -
    25313 #undef JSON_HEDLEY_CLANG_HAS_WARNING
    -
    25314 #undef JSON_HEDLEY_COMPCERT_VERSION
    -
    25315 #undef JSON_HEDLEY_COMPCERT_VERSION_CHECK
    -
    25316 #undef JSON_HEDLEY_CONCAT
    -
    25317 #undef JSON_HEDLEY_CONCAT3
    -
    25318 #undef JSON_HEDLEY_CONCAT3_EX
    -
    25319 #undef JSON_HEDLEY_CONCAT_EX
    -
    25320 #undef JSON_HEDLEY_CONST
    -
    25321 #undef JSON_HEDLEY_CONSTEXPR
    -
    25322 #undef JSON_HEDLEY_CONST_CAST
    -
    25323 #undef JSON_HEDLEY_CPP_CAST
    -
    25324 #undef JSON_HEDLEY_CRAY_VERSION
    -
    25325 #undef JSON_HEDLEY_CRAY_VERSION_CHECK
    -
    25326 #undef JSON_HEDLEY_C_DECL
    -
    25327 #undef JSON_HEDLEY_DEPRECATED
    -
    25328 #undef JSON_HEDLEY_DEPRECATED_FOR
    -
    25329 #undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL
    -
    25330 #undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_
    -
    25331 #undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED
    -
    25332 #undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES
    -
    25333 #undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS
    -
    25334 #undef JSON_HEDLEY_DIAGNOSTIC_POP
    -
    25335 #undef JSON_HEDLEY_DIAGNOSTIC_PUSH
    -
    25336 #undef JSON_HEDLEY_DMC_VERSION
    -
    25337 #undef JSON_HEDLEY_DMC_VERSION_CHECK
    -
    25338 #undef JSON_HEDLEY_EMPTY_BASES
    -
    25339 #undef JSON_HEDLEY_EMSCRIPTEN_VERSION
    -
    25340 #undef JSON_HEDLEY_EMSCRIPTEN_VERSION_CHECK
    -
    25341 #undef JSON_HEDLEY_END_C_DECLS
    -
    25342 #undef JSON_HEDLEY_FLAGS
    -
    25343 #undef JSON_HEDLEY_FLAGS_CAST
    -
    25344 #undef JSON_HEDLEY_GCC_HAS_ATTRIBUTE
    -
    25345 #undef JSON_HEDLEY_GCC_HAS_BUILTIN
    -
    25346 #undef JSON_HEDLEY_GCC_HAS_CPP_ATTRIBUTE
    -
    25347 #undef JSON_HEDLEY_GCC_HAS_DECLSPEC_ATTRIBUTE
    -
    25348 #undef JSON_HEDLEY_GCC_HAS_EXTENSION
    -
    25349 #undef JSON_HEDLEY_GCC_HAS_FEATURE
    -
    25350 #undef JSON_HEDLEY_GCC_HAS_WARNING
    -
    25351 #undef JSON_HEDLEY_GCC_NOT_CLANG_VERSION_CHECK
    -
    25352 #undef JSON_HEDLEY_GCC_VERSION
    -
    25353 #undef JSON_HEDLEY_GCC_VERSION_CHECK
    -
    25354 #undef JSON_HEDLEY_GNUC_HAS_ATTRIBUTE
    -
    25355 #undef JSON_HEDLEY_GNUC_HAS_BUILTIN
    -
    25356 #undef JSON_HEDLEY_GNUC_HAS_CPP_ATTRIBUTE
    -
    25357 #undef JSON_HEDLEY_GNUC_HAS_DECLSPEC_ATTRIBUTE
    -
    25358 #undef JSON_HEDLEY_GNUC_HAS_EXTENSION
    -
    25359 #undef JSON_HEDLEY_GNUC_HAS_FEATURE
    -
    25360 #undef JSON_HEDLEY_GNUC_HAS_WARNING
    -
    25361 #undef JSON_HEDLEY_GNUC_VERSION
    -
    25362 #undef JSON_HEDLEY_GNUC_VERSION_CHECK
    -
    25363 #undef JSON_HEDLEY_HAS_ATTRIBUTE
    -
    25364 #undef JSON_HEDLEY_HAS_BUILTIN
    -
    25365 #undef JSON_HEDLEY_HAS_CPP_ATTRIBUTE
    -
    25366 #undef JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS
    -
    25367 #undef JSON_HEDLEY_HAS_DECLSPEC_ATTRIBUTE
    -
    25368 #undef JSON_HEDLEY_HAS_EXTENSION
    -
    25369 #undef JSON_HEDLEY_HAS_FEATURE
    -
    25370 #undef JSON_HEDLEY_HAS_WARNING
    -
    25371 #undef JSON_HEDLEY_IAR_VERSION
    -
    25372 #undef JSON_HEDLEY_IAR_VERSION_CHECK
    -
    25373 #undef JSON_HEDLEY_IBM_VERSION
    -
    25374 #undef JSON_HEDLEY_IBM_VERSION_CHECK
    -
    25375 #undef JSON_HEDLEY_IMPORT
    -
    25376 #undef JSON_HEDLEY_INLINE
    -
    25377 #undef JSON_HEDLEY_INTEL_VERSION
    -
    25378 #undef JSON_HEDLEY_INTEL_VERSION_CHECK
    -
    25379 #undef JSON_HEDLEY_IS_CONSTANT
    -
    25380 #undef JSON_HEDLEY_IS_CONSTEXPR_
    -
    25381 #undef JSON_HEDLEY_LIKELY
    -
    25382 #undef JSON_HEDLEY_MALLOC
    -
    25383 #undef JSON_HEDLEY_MESSAGE
    -
    25384 #undef JSON_HEDLEY_MSVC_VERSION
    -
    25385 #undef JSON_HEDLEY_MSVC_VERSION_CHECK
    -
    25386 #undef JSON_HEDLEY_NEVER_INLINE
    -
    25387 #undef JSON_HEDLEY_NON_NULL
    -
    25388 #undef JSON_HEDLEY_NO_ESCAPE
    -
    25389 #undef JSON_HEDLEY_NO_RETURN
    -
    25390 #undef JSON_HEDLEY_NO_THROW
    -
    25391 #undef JSON_HEDLEY_NULL
    -
    25392 #undef JSON_HEDLEY_PELLES_VERSION
    -
    25393 #undef JSON_HEDLEY_PELLES_VERSION_CHECK
    -
    25394 #undef JSON_HEDLEY_PGI_VERSION
    -
    25395 #undef JSON_HEDLEY_PGI_VERSION_CHECK
    -
    25396 #undef JSON_HEDLEY_PREDICT
    -
    25397 #undef JSON_HEDLEY_PRINTF_FORMAT
    -
    25398 #undef JSON_HEDLEY_PRIVATE
    -
    25399 #undef JSON_HEDLEY_PUBLIC
    -
    25400 #undef JSON_HEDLEY_PURE
    -
    25401 #undef JSON_HEDLEY_REINTERPRET_CAST
    -
    25402 #undef JSON_HEDLEY_REQUIRE
    -
    25403 #undef JSON_HEDLEY_REQUIRE_CONSTEXPR
    -
    25404 #undef JSON_HEDLEY_REQUIRE_MSG
    -
    25405 #undef JSON_HEDLEY_RESTRICT
    -
    25406 #undef JSON_HEDLEY_RETURNS_NON_NULL
    -
    25407 #undef JSON_HEDLEY_SENTINEL
    -
    25408 #undef JSON_HEDLEY_STATIC_ASSERT
    -
    25409 #undef JSON_HEDLEY_STATIC_CAST
    -
    25410 #undef JSON_HEDLEY_STRINGIFY
    -
    25411 #undef JSON_HEDLEY_STRINGIFY_EX
    -
    25412 #undef JSON_HEDLEY_SUNPRO_VERSION
    -
    25413 #undef JSON_HEDLEY_SUNPRO_VERSION_CHECK
    -
    25414 #undef JSON_HEDLEY_TINYC_VERSION
    -
    25415 #undef JSON_HEDLEY_TINYC_VERSION_CHECK
    -
    25416 #undef JSON_HEDLEY_TI_ARMCL_VERSION
    -
    25417 #undef JSON_HEDLEY_TI_ARMCL_VERSION_CHECK
    -
    25418 #undef JSON_HEDLEY_TI_CL2000_VERSION
    -
    25419 #undef JSON_HEDLEY_TI_CL2000_VERSION_CHECK
    -
    25420 #undef JSON_HEDLEY_TI_CL430_VERSION
    -
    25421 #undef JSON_HEDLEY_TI_CL430_VERSION_CHECK
    -
    25422 #undef JSON_HEDLEY_TI_CL6X_VERSION
    -
    25423 #undef JSON_HEDLEY_TI_CL6X_VERSION_CHECK
    -
    25424 #undef JSON_HEDLEY_TI_CL7X_VERSION
    -
    25425 #undef JSON_HEDLEY_TI_CL7X_VERSION_CHECK
    -
    25426 #undef JSON_HEDLEY_TI_CLPRU_VERSION
    -
    25427 #undef JSON_HEDLEY_TI_CLPRU_VERSION_CHECK
    -
    25428 #undef JSON_HEDLEY_TI_VERSION
    -
    25429 #undef JSON_HEDLEY_TI_VERSION_CHECK
    -
    25430 #undef JSON_HEDLEY_UNAVAILABLE
    -
    25431 #undef JSON_HEDLEY_UNLIKELY
    -
    25432 #undef JSON_HEDLEY_UNPREDICTABLE
    -
    25433 #undef JSON_HEDLEY_UNREACHABLE
    -
    25434 #undef JSON_HEDLEY_UNREACHABLE_RETURN
    -
    25435 #undef JSON_HEDLEY_VERSION
    -
    25436 #undef JSON_HEDLEY_VERSION_DECODE_MAJOR
    -
    25437 #undef JSON_HEDLEY_VERSION_DECODE_MINOR
    -
    25438 #undef JSON_HEDLEY_VERSION_DECODE_REVISION
    -
    25439 #undef JSON_HEDLEY_VERSION_ENCODE
    -
    25440 #undef JSON_HEDLEY_WARNING
    -
    25441 #undef JSON_HEDLEY_WARN_UNUSED_RESULT
    -
    25442 #undef JSON_HEDLEY_WARN_UNUSED_RESULT_MSG
    -
    25443 #undef JSON_HEDLEY_FALL_THROUGH
    -
    25444 
    -
    25445 
    -
    25446 
    -
    25447 #endif // INCLUDE_NLOHMANN_JSON_HPP_
    -
    -
    a template for a reverse iterator class
    Definition: json.hpp:9982
    -
    const_iterator find(KeyT &&key) const
    find an element in a JSON object
    Definition: json.hpp:20829
    -
    difference_type operator-(const iter_impl &other) const
    return difference
    Definition: json.hpp:11326
    -
    void int_to_string(string_type &target, std::size_t value)
    Definition: json.hpp:3293
    -
    iteration_proxy_value< IteratorType > begin() noexcept
    return iterator begin (needed for range-based for)
    Definition: json.hpp:3941
    -
    primitive_iterator_t & operator+=(difference_type n) noexcept
    Definition: json.hpp:10724
    -
    static auto to_json(BasicJsonType &j, ValueType &&val) noexcept(noexcept(::nlohmann::to_json(j, std::forward< ValueType >(val)))) -> decltype(::nlohmann::to_json(j, std::forward< ValueType >(val)), void())
    convert any value type to a JSON value
    Definition: json.hpp:4399
    -
    basic_json unflatten() const
    unflatten a previously flattened JSON value
    Definition: json.hpp:24601
    -
    #define JSON_HEDLEY_WARN_UNUSED_RESULT
    Definition: json.hpp:1147
    -
    basic_json flatten() const
    return flattened JSON value
    Definition: json.hpp:24564
    -
    typename BasicJsonType::parse_event_t parse_event_t
    Definition: json.hpp:4644
    -
    exception indicating executing a member function with a wrong type
    Definition: json.hpp:2075
    -
    T & at(const Key &key)
    Definition: json.hpp:16447
    -
    const_reference back() const
    access the last element
    Definition: json.hpp:20459
    -
    primitive_iterator_t & operator++() noexcept
    Definition: json.hpp:10698
    -
    typename T::difference_type difference_type_t
    Definition: json.hpp:2495
    -
    std::ptrdiff_t difference_type
    Definition: json.hpp:3300
    -
    #define JSON_TRY
    Definition: json.hpp:2072
    -
    void write_cbor(const BasicJsonType &j)
    Definition: json.hpp:12793
    -
    json_ref(value_type &&value)
    Definition: json.hpp:12532
    -
    std::char_traits< char >::int_type get_character() noexcept
    get a character [0,255] or std::char_traits<char>::eof().
    Definition: json.hpp:4770
    -
    constexpr bool is_string() const noexcept
    return whether value is a string
    Definition: json.hpp:16894
    - -
    static allocator_type get_allocator()
    returns the allocator associated with the container
    Definition: json.hpp:16799
    -
    static auto from_json(BasicJsonType &&j, ValueType &val) noexcept(noexcept(::nlohmann::from_json(std::forward< BasicJsonType >(j), val))) -> decltype(::nlohmann::from_json(std::forward< BasicJsonType >(j), val), void())
    convert a JSON value to any value type
    Definition: json.hpp:4382
    -
    boundaries compute_boundaries(FloatType value)
    Definition: json.hpp:12831
    -
    pointer operator->() const
    dereference the iterator
    Definition: json.hpp:11045
    -
    decltype(std::declval< T & >().start_array(std::declval< std::size_t >())) start_array_function_t
    Definition: json.hpp:5066
    -
    basic_json(CompatibleType &&val) noexcept(noexcept(JSONSerializer< U >::to_json(std::declval< basic_json_t & >(), std::forward< CompatibleType >(val))))
    create a JSON value
    Definition: json.hpp:17927
    -
    static bool accept(detail::input_adapter &&i)
    Definition: json.hpp:20754
    -
    std::size_t hash(const BasicJsonType &j)
    hash a JSON value
    Definition: json.hpp:4613
    -
    bool string(string_t &val)
    Definition: json.hpp:5558
    -
    byte_container_with_subtype(container_type &&b) noexcept(noexcept(container_type(std::move(b))))
    Definition: json.hpp:4447
    - -
    static constexpr CharType to_char_type(InputCharType x) noexcept
    Definition: json.hpp:14307
    - -
    json_ref & operator=(const json_ref &)=delete
    -
    IteratorType::reference value() const
    return value of the iterator
    Definition: json.hpp:3922
    -
    void get_arithmetic_value(const BasicJsonType &j, ArithmeticType &val)
    Definition: json.hpp:2912
    -
    NLOHMANN_BASIC_JSON_TPL_DECLARATION std::string to_string(const NLOHMANN_BASIC_JSON_TPL &j)
    user-defined to_string function for JSON values
    Definition: json.hpp:22620
    -
    reference operator+=(const typename object_t::value_type &val)
    add an object to an object
    Definition: json.hpp:21822
    -
    bool string(string_t &val)
    Definition: json.hpp:5383
    -
    static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json from_ubjson(IteratorType first, IteratorType last, const bool strict=true, const bool allow_exceptions=true)
    create a JSON value from an input in UBJSON format
    Definition: json.hpp:24235
    -
    value_type moved_or_copied() const
    Definition: json.hpp:12565
    -
    general exception of the basic_json class
    Definition: json.hpp:1864
    - -
    iterator_input_adapter_factory< IteratorType >::adapter_type input_adapter(IteratorType first, IteratorType last)
    Definition: json.hpp:5088
    -
    basic_json(const value_t v)
    create an empty value with a given type
    Definition: json.hpp:15752
    -
    bool empty() const noexcept
    return whether pointer points to the root document
    Definition: json.hpp:10391
    -
    basic_json(std::nullptr_t=nullptr) noexcept
    create a null object
    Definition: json.hpp:17854
    -
    basic_json(initializer_list_t init, bool type_deduction=true, value_t manual_type=value_t::array)
    create a container (array or object) from an initializer list
    Definition: json.hpp:18087
    -
    Definition: json.hpp:2520
    -
    typename BasicJsonType::template json_serializer< T, void > serializer
    Definition: json.hpp:3080
    -
    value_t
    the JSON type enumeration
    Definition: json.hpp:2854
    - -
    static void fill_buffer(BaseInputAdapter &input, std::array< std::char_traits< char >::int_type, 4 > &utf8_bytes, size_t &utf8_bytes_index, size_t &utf8_bytes_filled)
    Definition: json.hpp:4887
    -
    const_reverse_iterator rbegin() const noexcept
    returns a const reverse iterator to the last element
    Definition: json.hpp:21115
    -
    detail::value_t value_t
    Definition: json.hpp:14751
    -
    iter_impl(const iter_impl< typename std::remove_const< BasicJsonType >::type > &other) noexcept
    converting constructor
    Definition: json.hpp:10918
    -
    iter_impl & operator--()
    pre-decrement (–it)
    Definition: json.hpp:11133
    -
    decltype(std::declval< T & >().start_object(std::declval< std::size_t >())) start_object_function_t
    Definition: json.hpp:5055
    -
    const iter_impl operator++(int)
    post-increment (it++)
    Definition: json.hpp:11079
    -
    iter_impl & operator=(const iter_impl< const BasicJsonType > &other) noexcept
    converting assignment
    Definition: json.hpp:10906
    - -
    @ ignore
    ignore invalid UTF-8 sequences
    -
    decltype(std::declval< T & >().boolean(std::declval< bool >())) boolean_function_t
    Definition: json.hpp:5035
    -
    ReferenceType get_ref() const
    get a reference value (implicit)
    Definition: json.hpp:19674
    -
    static void construct(BasicJsonType &j, const CompatibleArrayType &arr)
    Definition: json.hpp:4138
    -
    void grisu2_round(char *buf, int len, std::uint64_t dist, std::uint64_t delta, std::uint64_t rest, std::uint64_t ten_k)
    Definition: json.hpp:13190
    -
    bool key(string_t &val)
    Definition: json.hpp:5588
    -
    void write_character(CharType c) override
    Definition: json.hpp:12700
    - -
    static void to_msgpack(const basic_json &j, detail::output_adapter< uint8_t > o)
    Definition: json.hpp:23653
    -
    friend bool operator!=(const ScalarType lhs, const_reference rhs) noexcept
    comparison: not equal
    Definition: json.hpp:22740
    -
    bool end_object()
    Definition: json.hpp:5852
    -
    typename BasicJsonType::number_unsigned_t number_unsigned_t
    type for unsigned integers
    Definition: json.hpp:4338
    -
    bool start_array(std::size_t len)
    Definition: json.hpp:5634
    -
    friend bool operator<(const_reference lhs, const ScalarType rhs) noexcept
    comparison: less than
    Definition: json.hpp:22850
    -
    @ replace
    replace invalid UTF-8 sequences with U+FFFD
    -
    bool operator==(const iter_impl &other) const
    comparison: equal
    Definition: json.hpp:11165
    -
    constexpr bool is_discarded() const noexcept
    return whether value is discarded
    Definition: json.hpp:19144
    -
    byte_container_with_subtype(container_type &&b, std::uint8_t subtype) noexcept(noexcept(container_type(std::move(b))))
    Definition: json.hpp:4457
    -
    void from_json(const BasicJsonType &j, typename BasicJsonType::binary_t &bin)
    Definition: json.hpp:3652
    -
    typename std::iterator_traits< IteratorType >::value_type char_type
    Definition: json.hpp:4846
    -
    typename T::mapped_type mapped_type_t
    Definition: json.hpp:2486
    -
    void type
    Definition: json.hpp:2265
    -
    Definition: json.hpp:5147
    -
    bool start_object(std::size_t=std::size_t(-1))
    Definition: json.hpp:5842
    -
    value_type const & operator*() const
    Definition: json.hpp:12574
    -
    virtual bool parse_error(std::size_t position, const std::string &last_token, const detail::exception &ex)=0
    a parse error occurred
    - -
    static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json from_bson(InputType &&i, const bool strict=true, const bool allow_exceptions=true)
    Create a JSON value from an input in BSON format.
    Definition: json.hpp:24332
    -
    static void construct(BasicJsonType &j, typename BasicJsonType::object_t &&obj)
    Definition: json.hpp:4187
    -
    const_reverse_iterator rend() const noexcept
    returns a const reverse iterator to one before the first
    Definition: json.hpp:21152
    -
    virtual bool number_unsigned(number_unsigned_t val)=0
    an unsigned integer number was read
    -
    const T & operator[](const Key &key) const
    Definition: json.hpp:16442
    -
    void grisu2_digit_gen(char *buffer, int &length, int &decimal_exponent, diyfp M_minus, diyfp w, diyfp M_plus)
    Definition: json.hpp:13231
    -
    Definition: json.hpp:12699
    - -
    json_reverse_iterator operator+(difference_type i) const
    add to iterator
    Definition: json.hpp:11491
    -
    @ parse_error
    indicating a parse error
    -
    size_type size() const noexcept
    returns the number of elements
    Definition: json.hpp:19195
    -
    @ object
    object (unordered set of name/value pairs)
    -
    json_sax_dom_parser(BasicJsonType &r, const bool allow_exceptions_=true)
    Definition: json.hpp:5342
    -
    typename BasicJsonType::number_float_t number_float_t
    Definition: json.hpp:4459
    - -
    void push_back(const typename object_t::value_type &val)
    add an object to an object
    Definition: json.hpp:21798
    -
    std::string get_token_string() const
    Definition: json.hpp:7319
    -
    typename BasicJsonType::string_t string_t
    Definition: json.hpp:4460
    - -
    typename std::iterator_traits< iterator_type >::value_type char_type
    Definition: json.hpp:5053
    -
    static adapter_type create(IteratorType first, IteratorType last)
    Definition: json.hpp:5056
    -
    struct to capture the start position of the current token
    Definition: json.hpp:89
    -
    void dump(const BasicJsonType &val, const bool pretty_print, const bool ensure_ascii, const unsigned int indent_step, const unsigned int current_indent=0)
    internal implementation of the serialization function
    Definition: json.hpp:15533
    -
    diyfp w
    Definition: json.hpp:12819
    -
    basic_json get() const
    get special-case overload
    Definition: json.hpp:17101
    -
    Definition: json.hpp:2589
    -
    ::nlohmann::json_pointer< basic_json > json_pointer
    JSON Pointer, see nlohmann::json_pointer.
    Definition: json.hpp:14753
    -
    static constexpr CharType to_char_type(std::uint8_t x) noexcept
    Definition: json.hpp:12585
    -
    static bool accept(IteratorType first, IteratorType last, const bool ignore_comments=false)
    Definition: json.hpp:23235
    -
    std::less< StringType > object_comparator_t
    Definition: json.hpp:14936
    -
    binary_reader(InputAdapterType &&adapter)
    create a binary reader
    Definition: json.hpp:7712
    -
    static other_error create(int id_, const std::string &what_arg)
    Definition: json.hpp:2652
    -
    constexpr bool is_primitive() const noexcept
    return whether type is primitive
    Definition: json.hpp:18843
    -
    json_pointer(const std::string &s="")
    create JSON pointer
    Definition: json.hpp:11582
    -
    ValueType value(const json_pointer &ptr, const ValueType &default_value) const
    access specified object element via JSON Pointer with default value
    Definition: json.hpp:20351
    -
    constexpr value_t type() const noexcept
    return the type of the JSON value (explicit)
    Definition: json.hpp:16612
    -
    constexpr position_t get_position() const noexcept
    return position of last read token
    Definition: json.hpp:7311
    -
    typename BasicJsonType::number_integer_t number_integer_t
    Definition: json.hpp:4943
    -
    constexpr bool has_subtype() const noexcept
    return whether the value has a subtype
    Definition: json.hpp:4540
    -
    iteration_proxy< iterator > items() noexcept
    helper to access iterator member functions in range-based for
    Definition: json.hpp:19059
    -
    exception indicating access out of the defined range
    Definition: json.hpp:2122
    -
    typename detected_or< Default, Op, Args... >::type detected_or_t
    Definition: json.hpp:2373
    -
    #define JSON_HEDLEY_PURE
    Definition: json.hpp:1470
    -
    @ array_end
    the parser read ] and finished processing a JSON array
    -
    static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json from_bson(detail::input_adapter &&i, const bool strict=true, const bool allow_exceptions=true)
    Create a JSON value from an input in BSON format.
    Definition: json.hpp:21801
    -
    std::false_type value_t
    Definition: json.hpp:2352
    -
    static void construct(BasicJsonType &j, typename BasicJsonType::array_t &&arr)
    Definition: json.hpp:4128
    -
    exception indicating errors with iterators
    Definition: json.hpp:2021
    -
    basic_json & operator=(basic_json other) noexcept(std::is_nothrow_move_constructible< value_t >::value &&std::is_nothrow_move_assignable< value_t >::value &&std::is_nothrow_move_constructible< json_value >::value &&std::is_nothrow_move_assignable< json_value >::value)
    copy assignment
    Definition: json.hpp:18662
    -
    typename BasicJsonType::binary_t binary_t
    Definition: json.hpp:5335
    -
    basic_json(size_type cnt, const basic_json &val)
    construct an array with count copies of given value
    Definition: json.hpp:18341
    -
    typename BasicJsonType::string_t string_t
    Definition: json.hpp:4642
    - -
    AllocatorType< basic_json > allocator_type
    the allocator type
    Definition: json.hpp:14812
    -
    iterator find(const Key &key)
    Definition: json.hpp:16518
    -
    static std::string name(const std::string &ename, int id_)
    Definition: json.hpp:2369
    -
    static out_of_range create(int id_, const std::string &what_arg)
    Definition: json.hpp:2614
    -
    ValueType value(const typename object_t::key_type &key, const ValueType &default_value) const
    access specified object element with default value
    Definition: json.hpp:18003
    - -
    std::size_t chars_read_current_line
    the number of characters read in the current line
    Definition: json.hpp:94
    -
    Definition: json.hpp:2936
    -
    friend json_pointer operator/(const json_pointer &lhs, const json_pointer &rhs)
    create a new JSON pointer by appending the right JSON pointer at the end of the left JSON pointer
    Definition: json.hpp:11698
    -
    json_sax_dom_parser & operator=(const json_sax_dom_parser &)=delete
    -
    constexpr std::uint8_t subtype() const noexcept
    return the binary subtype
    Definition: json.hpp:4519
    -
    BasicJsonType::object_t::iterator object_iterator
    iterator for JSON objects
    Definition: json.hpp:9290
    -
    Definition: json.hpp:2263
    -
    const T & at(const Key &key) const
    Definition: json.hpp:16460
    -
    typename std::enable_if< B, T >::type enable_if_t
    Definition: json.hpp:2191
    -
    constexpr bool is_binary() const noexcept
    return whether value is a binary array
    Definition: json.hpp:19117
    -
    void write_msgpack(const BasicJsonType &j)
    Definition: json.hpp:13098
    -
    void from_json(const BasicJsonType &j, typename std::nullptr_t &n)
    Definition: json.hpp:2898
    -
    std::pair< iterator, bool > emplace(const key_type &key, T &&t)
    Definition: json.hpp:16424
    - -
    void write_ubjson(const BasicJsonType &j, const bool use_count, const bool use_type, const bool add_prefix=true)
    Definition: json.hpp:13422
    -
    static void to_ubjson(const basic_json &j, detail::output_adapter< uint8_t > o, const bool use_size=false, const bool use_type=false)
    Definition: json.hpp:23758
    -
    void skip_whitespace()
    Definition: json.hpp:7371
    -
    byte_container_with_subtype(const container_type &b, std::uint8_t subtype) noexcept(noexcept(container_type(b)))
    Definition: json.hpp:4451
    -
    bool start_object(std::size_t len)
    Definition: json.hpp:5395
    -
    json_sax_dom_callback_parser & operator=(const json_sax_dom_callback_parser &)=delete
    -
    static constexpr bool value
    Definition: json.hpp:5090
    -
    const_reference operator[](const json_pointer &ptr) const
    access specified element via JSON Pointer
    Definition: json.hpp:24451
    -
    auto key() const -> decltype(std::declval< Base >().key())
    return the key of an object iterator
    Definition: json.hpp:11515
    -
    namespace for Niels Lohmann
    Definition: json.hpp:84
    -
    static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json object(initializer_list_t init={})
    explicitly create an object from an initializer list
    Definition: json.hpp:16133
    -
    serialization to CBOR and MessagePack values
    Definition: json.hpp:11318
    -
    typename BasicJsonType::number_integer_t number_integer_t
    Definition: json.hpp:4457
    -
    void set_end() noexcept
    set iterator to a defined past the end
    Definition: json.hpp:10659
    -
    static diyfp normalize_to(const diyfp &x, const int target_exponent) noexcept
    normalize x such that the result has the exponent E
    Definition: json.hpp:14496
    -
    void erase(const size_type idx)
    remove element from a JSON array given an index
    Definition: json.hpp:20759
    -
    typename BasicJsonType::template json_serializer< T, void > serializer
    Definition: json.hpp:3050
    - -
    @ literal_or_value
    a literal or the begin of a value (only for diagnostics)
    -
    std::char_traits< char >::int_type get_character() noexcept
    get a character [0,255] or std::char_traits<char>::eof().
    Definition: json.hpp:5013
    -
    size_type erase(const Key &key)
    Definition: json.hpp:16473
    -
    json_reverse_iterator(const typename base_iterator::iterator_type &it) noexcept
    create reverse iterator from iterator
    Definition: json.hpp:11454
    -
    T & operator[](const Key &key)
    Definition: json.hpp:16437
    -
    static void to_bson(const basic_json &j, detail::output_adapter< char > o)
    Serializes the given JSON object j to BSON and forwards the corresponding BSON-representation to the ...
    Definition: json.hpp:23850
    -
    size_type count(KeyT &&key) const
    returns the number of occurrences of a key in a JSON object
    Definition: json.hpp:20863
    -
    decltype(std::declval< T & >().binary(std::declval< Binary & >())) binary_function_t
    Definition: json.hpp:7547
    -
    void push_back(basic_json &&val)
    add an object to an array
    Definition: json.hpp:21713
    -
    static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json meta()
    returns version information on the library
    Definition: json.hpp:16831
    -
    bool number_float(number_float_t val, const string_t &)
    Definition: json.hpp:5552
    -
    reference back()
    access the last element
    Definition: json.hpp:20449
    -
    constexpr difference_type get_value() const noexcept
    Definition: json.hpp:10647
    -
    static void construct(BasicJsonType &j, typename BasicJsonType::number_integer_t val) noexcept
    Definition: json.hpp:4108
    -
    constexpr bool is_end() const noexcept
    return whether the iterator is at end
    Definition: json.hpp:10671
    - -
    std::char_traits< char >::int_type get_character()
    get a character [0,255] or std::char_traits<char>::eof().
    Definition: json.hpp:4823
    -
    SAX implementation to create a JSON value from SAX events.
    Definition: json.hpp:4454
    - -
    static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json diff(const basic_json &source, const basic_json &target, const std::string &path="")
    creates a diff as a JSON patch
    Definition: json.hpp:24958
    -
    @ number_float
    number value (floating-point)
    -
    primitive_iterator_t & operator--() noexcept
    Definition: json.hpp:10711
    -
    static constexpr std::size_t size() noexcept
    Definition: json.hpp:2691
    -
    JSON Pointer.
    Definition: json.hpp:2435
    -
    json_pointer parent_pointer() const
    returns the parent of this JSON pointer
    Definition: json.hpp:11757
    -
    token_type
    token types for the parser
    Definition: json.hpp:7170
    -
    IteratorType erase(IteratorType first, IteratorType last)
    remove elements given an iterator range
    Definition: json.hpp:20629
    -
    bool number_integer(number_integer_t val)
    Definition: json.hpp:5365
    -
    @ parse_error
    indicating a parse error
    -
    exception indicating other library errors
    Definition: json.hpp:2160
    -
    bool sax_parse(SAX *sax, const bool strict=true)
    Definition: json.hpp:8802
    -
    iteration_proxy_value & operator*()
    dereference operator (needed for range-based for)
    Definition: json.hpp:3867
    -
    json_reverse_iterator & operator+=(difference_type i)
    add to iterator
    Definition: json.hpp:11485
    -
    void merge_patch(const basic_json &apply_patch)
    applies a JSON Merge Patch
    Definition: json.hpp:25133
    -
    #define JSON_HEDLEY_LIKELY(expr)
    Definition: json.hpp:1400
    -
    bool key(string_t &)
    Definition: json.hpp:5847
    -
    @ error
    throw a parse_error exception in case of a tag
    -
    cached_power get_cached_power_for_binary_exponent(int e)
    Definition: json.hpp:12970
    -
    bool empty() const noexcept
    checks whether the container is empty.
    Definition: json.hpp:21421
    -
    virtual bool string(string_t &val)=0
    a string was read
    -
    reverse_iterator rbegin() noexcept
    returns an iterator to the reverse-beginning
    Definition: json.hpp:21107
    -
    iterator insert(const_iterator pos, basic_json &&val)
    inserts element
    Definition: json.hpp:22044
    -
    #define NLOHMANN_JSON_VERSION_PATCH
    Definition: json.hpp:35
    -
    @ number_integer
    number value (signed integer)
    -
    Definition: json.hpp:2350
    -
    ArrayType< basic_json, AllocatorType< basic_json > > array_t
    a type for an array
    Definition: json.hpp:15072
    -
    #define JSON_HEDLEY_UNLIKELY(expr)
    Definition: json.hpp:1401
    -
    typename BasicJsonType::parser_callback_t parser_callback_t
    Definition: json.hpp:4643
    -
    static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json from_msgpack(IteratorType first, IteratorType last, const bool strict=true, const bool allow_exceptions=true)
    create a JSON value from an input in MessagePack format
    Definition: json.hpp:24119
    -
    json_sax_dom_callback_parser(BasicJsonType &r, const parser_callback_t cb, const bool allow_exceptions_=true)
    Definition: json.hpp:5513
    -
    output_vector_adapter(std::vector< CharType > &vec) noexcept
    Definition: json.hpp:12648
    -
    iter_impl operator-(difference_type i) const
    subtract from iterator
    Definition: json.hpp:11315
    -
    std::input_iterator_tag iterator_category
    Definition: json.hpp:3304
    -
    friend bool operator<=(const_reference lhs, const_reference rhs) noexcept
    comparison: less than or equal
    Definition: json.hpp:22885
    -
    string_t value(const typename object_t::key_type &key, const char *default_value) const
    overload for a default value of type const char*
    Definition: json.hpp:20301
    -
    void clear_subtype() noexcept
    clears the binary subtype
    Definition: json.hpp:4564
    -
    static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json from_ubjson(InputType &&i, const bool strict=true, const bool allow_exceptions=true)
    create a JSON value from an input in UBJSON format
    Definition: json.hpp:24219
    -
    static std::vector< uint8_t > to_msgpack(const basic_json &j)
    create a MessagePack serialization of a given JSON value
    Definition: json.hpp:23646
    -
    span_input_adapter(CharT b, std::size_t l)
    Definition: json.hpp:5156
    -
    bool parse_error(std::size_t, const std::string &, const Exception &ex)
    Definition: json.hpp:5680
    -
    std::string to_string() const
    return a string representation of the JSON pointer
    Definition: json.hpp:11600
    -
    bool string(string_t &)
    Definition: json.hpp:5832
    -
    std::function< bool(int depth, parse_event_t event, BasicJsonType &parsed)> parser_callback_t
    Definition: json.hpp:8711
    -
    friend json_pointer operator/(const json_pointer &ptr, std::size_t array_idx)
    create a new JSON pointer by appending the array-index-token at the end of the JSON pointer
    Definition: json.hpp:11739
    -
    std::function< bool(int depth, parse_event_t event, BasicJsonType &parsed)> parser_callback_t
    Definition: json.hpp:10155
    -
    typename std::remove_cv< typename std::remove_reference< decltype(std::declval< IteratorType >().key()) >::type >::type string_type
    Definition: json.hpp:3305
    -
    bool end_array()
    Definition: json.hpp:5434
    -
    static void fill_buffer(BaseInputAdapter &input, std::array< std::char_traits< char >::int_type, 4 > &utf8_bytes, size_t &utf8_bytes_index, size_t &utf8_bytes_filled)
    Definition: json.hpp:4945
    -
    output_string_adapter(StringType &s) noexcept
    Definition: json.hpp:12696
    -
    @ end_array
    the character for array end ]
    - -
    reference at(const json_pointer &ptr)
    access specified element via JSON Pointer
    Definition: json.hpp:24494
    - -
    std::initializer_list< detail::json_ref< basic_json > > initializer_list_t
    helper type for initializer lists of basic_json values
    Definition: json.hpp:14759
    -
    const primitive_iterator_t operator++(int) noexcept
    Definition: json.hpp:10704
    -
    size_type count(const Key &key) const
    Definition: json.hpp:16506
    -
    iterator insert(const_iterator pos, const basic_json &val)
    inserts element
    Definition: json.hpp:22022
    -
    std::bidirectional_iterator_tag iterator_category
    Definition: json.hpp:9367
    -
    bool end_array()
    Definition: json.hpp:5651
    -
    char char_type
    Definition: json.hpp:4793
    -
    Definition: json.hpp:5905
    -
    ~input_stream_adapter()
    Definition: json.hpp:4795
    -
    decltype(std::declval< T & >().null()) null_function_t
    Definition: json.hpp:5031
    -
    void swap(array_t &other)
    exchanges the values
    Definition: json.hpp:22419
    -
    friend json_pointer operator/(const json_pointer &ptr, std::string token)
    create a new JSON pointer by appending the unescaped token at the end of the JSON pointer
    Definition: json.hpp:11719
    -
    static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json parse(IteratorType first, IteratorType last, const parser_callback_t cb=nullptr, const bool allow_exceptions=true, const bool ignore_comments=false)
    deserialize from a pair of character iterators
    Definition: json.hpp:23174
    -
    lexical analysis
    Definition: json.hpp:7161
    -
    json_ref(std::initializer_list< json_ref > init)
    Definition: json.hpp:12543
    -
    std::random_access_iterator_tag iterator_category
    Definition: json.hpp:2310
    -
    void to_json_tuple_impl(BasicJsonType &j, const Tuple &t, index_sequence< Idx... >)
    Definition: json.hpp:3764
    -
    bool key(string_t &val)
    Definition: json.hpp:5408
    -
    virtual bool boolean(bool val)=0
    a boolean value was read
    -
    static void construct(BasicJsonType &j, const typename BasicJsonType::array_t &arr)
    Definition: json.hpp:4120
    -
    reference value() const
    return the value of an iterator
    Definition: json.hpp:11522
    -
    primitive_iterator_t operator+(difference_type n) noexcept
    Definition: json.hpp:10686
    - -
    bool boolean(bool val)
    Definition: json.hpp:5359
    -
    const std::size_t byte
    byte index of the parse error
    Definition: json.hpp:1971
    - -
    void swap(object_t &other)
    exchanges the values
    Definition: json.hpp:22452
    -
    bool number_unsigned(number_unsigned_t val)
    Definition: json.hpp:5371
    -
    const_iterator cend() const noexcept
    returns a const iterator to one past the last element
    Definition: json.hpp:18785
    -
    constexpr bool is_object() const noexcept
    return whether value is an object
    Definition: json.hpp:16850
    -
    output_stream_adapter(std::basic_ostream< CharType > &s) noexcept
    Definition: json.hpp:12672
    -
    bool operator!=(const iter_impl &other) const
    comparison: not equal
    Definition: json.hpp:11192
    -
    NumberIntegerType number_integer_t
    a type for a number (integer)
    Definition: json.hpp:15223
    -
    void set_begin() noexcept
    set iterator to a defined beginning
    Definition: json.hpp:10653
    -
    static diyfp sub(const diyfp &x, const diyfp &y) noexcept
    returns x - y
    Definition: json.hpp:14402
    -
    json_ref(Args &&... args)
    Definition: json.hpp:12552
    -
    output_adapter(std::basic_ostream< CharType > &s)
    Definition: json.hpp:12722
    -
    const std::string & back() const
    return last reference token
    Definition: json.hpp:11806
    -
    static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json parse(InputType &&i, const parser_callback_t cb=nullptr, const bool allow_exceptions=true, const bool ignore_comments=false)
    deserialize from a compatible input
    Definition: json.hpp:23136
    -
    token_type scan()
    Definition: json.hpp:7380
    -
    Definition: json.hpp:11101
    -
    static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json from_ubjson(detail::input_adapter &&i, const bool strict=true, const bool allow_exceptions=true)
    create a JSON value from an input in UBJSON format
    Definition: json.hpp:21714
    -
    bool start_array(std::size_t=std::size_t(-1))
    Definition: json.hpp:5857
    -
    decltype(std::declval< T >().template get< U >()) get_template_function
    Definition: json.hpp:2516
    -
    Definition: json.hpp:3041
    -
    bool binary(binary_t &val)
    Definition: json.hpp:5389
    -
    bool binary(binary_t &val)
    Definition: json.hpp:5564
    - -
    constexpr bool is_errored() const
    Definition: json.hpp:5453
    -
    input_stream_adapter(std::istream &i)
    Definition: json.hpp:4805
    -
    exception indicating a parse error
    Definition: json.hpp:1935
    - -
    constexpr bool is_begin() const noexcept
    return whether the iterator can be dereferenced
    Definition: json.hpp:10665
    -
    json_reverse_iterator< typename basic_json::iterator > reverse_iterator
    a reverse iterator for a basic_json container
    Definition: json.hpp:14824
    -
    decltype(std::declval< T & >().end_array()) end_array_function_t
    Definition: json.hpp:5069
    -
    friend bool operator==(const_reference lhs, const_reference rhs) noexcept
    comparison: equal
    Definition: json.hpp:22610
    -
    friend bool operator>(const ScalarType lhs, const_reference rhs) noexcept
    comparison: greater than
    Definition: json.hpp:22953
    -
    output adapter for byte vectors
    Definition: json.hpp:11211
    - -
    a template for a bidirectional iterator for the basic_json class This class implements a both iterato...
    Definition: json.hpp:9346
    -
    BasicJsonType::array_t::iterator array_iterator
    iterator for JSON arrays
    Definition: json.hpp:9292
    -
    static void construct(BasicJsonType &j, const CompatibleStringType &str)
    Definition: json.hpp:4050
    - -
    typename std::conditional< std::is_const< BasicJsonType >::value, typename BasicJsonType::const_reference, typename BasicJsonType::reference >::type reference
    defines a reference to the type iterated over (value_type)
    Definition: json.hpp:9381
    -
    bool accept(const bool strict=true)
    public accept interface
    Definition: json.hpp:10257
    -
    #define JSON_HEDLEY_CONST
    Definition: json.hpp:1500
    -
    static parse_error create(int id_, std::size_t byte_, const std::string &what_arg)
    Definition: json.hpp:2443
    -
    static diyfp mul(const diyfp &x, const diyfp &y) noexcept
    returns x * y
    Definition: json.hpp:14414
    -
    reference operator[](difference_type n) const
    access to successor
    Definition: json.hpp:11509
    -
    @ begin_object
    the character for object begin {
    - -
    typename make_void< Ts... >::type void_t
    Definition: json.hpp:2267
    -
    bool operator==(const byte_container_with_subtype &rhs) const
    Definition: json.hpp:4463
    -
    const_reference at(const json_pointer &ptr) const
    access specified element via JSON Pointer
    Definition: json.hpp:24537
    -
    void to_json(BasicJsonType &j, const typename BasicJsonType::binary_t &bin)
    Definition: json.hpp:4280
    -
    nlohmann::byte_container_with_subtype< BinaryType > binary_t
    a type for a packed binary type
    Definition: json.hpp:17398
    -
    typename BasicJsonType::number_integer_t number_integer_t
    type for (signed) integers
    Definition: json.hpp:4336
    -
    #define JSON_ASSERT(x)
    Definition: json.hpp:2100
    -
    iterator erase(iterator pos)
    Definition: json.hpp:16492
    -
    error_handler_t
    how to treat decoding errors
    Definition: json.hpp:13779
    -
    std::uint64_t f
    Definition: json.hpp:12958
    -
    StringType string_t
    a type for a string
    Definition: json.hpp:15125
    -
    static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json from_msgpack(InputType &&i, const bool strict=true, const bool allow_exceptions=true)
    create a JSON value from an input in MessagePack format
    Definition: json.hpp:24103
    -
    typename T::iterator iterator_t
    Definition: json.hpp:2507
    -
    static void fill_buffer(const WideStringType &str, size_t &current_wchar, std::array< std::char_traits< char >::int_type, 4 > &utf8_bytes, size_t &utf8_bytes_index, size_t &utf8_bytes_filled)
    Definition: json.hpp:4030
    -
    static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json array(initializer_list_t init={})
    explicitly create an array from an initializer list
    Definition: json.hpp:16089
    -
    ValueType get() const noexcept(noexcept(JSONSerializer< ValueType >::from_json(std::declval< const basic_json_t & >(), std::declval< ValueType & >())))
    get a value (explicit)
    Definition: json.hpp:19409
    -
    Target reinterpret_bits(const Source source)
    Definition: json.hpp:12690
    -
    static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json binary(typename binary_t::container_type &&init, std::uint8_t subtype)
    explicitly create a binary array (with subtype)
    Definition: json.hpp:18224
    -
    typename T::value_type value_type_t
    Definition: json.hpp:2492
    -
    lexer(InputAdapterType &&adapter, bool ignore_comments_=false)
    Definition: json.hpp:5994
    -
    friend bool operator<=(const ScalarType lhs, const_reference rhs) noexcept
    comparison: less than or equal
    Definition: json.hpp:22907
    -
    friend bool operator>(const_reference lhs, const_reference rhs) noexcept
    comparison: greater than
    Definition: json.hpp:22931
    -
    Key key_type
    Definition: json.hpp:16407
    -
    friend bool operator>(const_reference lhs, const ScalarType rhs) noexcept
    comparison: greater than
    Definition: json.hpp:22942
    -
    typename parser::parser_callback_t parser_callback_t
    per-element parser callback type
    Definition: json.hpp:15712
    -
    static void to_msgpack(const basic_json &j, detail::output_adapter< char > o)
    Definition: json.hpp:23658
    -
    typename BasicJsonType::string_t string_t
    type for strings
    Definition: json.hpp:4342
    -
    typename BasicJsonType::binary_t binary_t
    Definition: json.hpp:5208
    -
    const_reference at(size_type idx) const
    access specified array element with bounds checking
    Definition: json.hpp:19840
    - -
    static CharType to_char_type(std::uint8_t x) noexcept
    Definition: json.hpp:14285
    -
    void grisu2(char *buf, int &len, int &decimal_exponent, diyfp m_minus, diyfp v, diyfp m_plus)
    Definition: json.hpp:13472
    -
    std::pair< iterator, bool > emplace(Args &&... args)
    add an object to an object if key does not exist
    Definition: json.hpp:21954
    -
    friend std::istream & operator>>(std::istream &i, basic_json &j)
    deserialize from stream
    Definition: json.hpp:23368
    -
    auto operator()(const BasicJsonType &j, T &val) const noexcept(noexcept(from_json(j, val))) -> decltype(from_json(j, val), void())
    Definition: json.hpp:3787
    -
    static void construct(BasicJsonType &j, typename BasicJsonType::number_unsigned_t val) noexcept
    Definition: json.hpp:4096
    -
    auto get() noexcept -> decltype(std::declval< basic_json_t & >().template get_ptr< PointerType >())
    get a pointer value (explicit)
    Definition: json.hpp:19615
    -
    @ value_separator
    the value separator ,
    -
    std::ptrdiff_t difference_type
    Definition: json.hpp:9985
    -
    static constexpr bool little_endianess(int num=1) noexcept
    determine system byte order
    Definition: json.hpp:5268
    - -
    output_adapter(StringType &s)
    Definition: json.hpp:12725
    -
    bool number_integer(number_integer_t val)
    Definition: json.hpp:5540
    -
    Definition: json.hpp:2199
    -
    Definition: json.hpp:2990
    - -
    #define JSON_HEDLEY_NON_NULL(...)
    Definition: json.hpp:1296
    -
    static diyfp normalize(diyfp x) noexcept
    normalize x such that the significand is >= 2^(q-1)
    Definition: json.hpp:14479
    -
    iter_impl & operator++()
    pre-increment (++it)
    Definition: json.hpp:11090
    -
    static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json parse(detail::input_adapter &&i, const parser_callback_t cb=nullptr, const bool allow_exceptions=true)
    deserialize from a compatible input
    Definition: json.hpp:20745
    -
    ordered_map(const Allocator &alloc=Allocator())
    Definition: json.hpp:16417
    -
    reference operator+=(const basic_json &val)
    add an object to an array
    Definition: json.hpp:21772
    -
    syntax analysis
    Definition: json.hpp:8684
    - -
    span_input_adapter(IteratorType first, IteratorType last)
    Definition: json.hpp:5163
    -
    T mapped_type
    Definition: json.hpp:16408
    -
    const string_type & key() const
    return key of the iterator
    Definition: json.hpp:3350
    -
    void update(const_reference j)
    updates a JSON object from another object, overwriting existing keys
    Definition: json.hpp:22257
    -
    @ value_float
    an floating point number – use get_number_float() for actual value
    -
    int e
    Definition: json.hpp:12959
    -
    bool binary(binary_t &)
    Definition: json.hpp:5837
    -
    BinaryType container_type
    the type of the underlying container
    Definition: json.hpp:4437
    - -
    file_input_adapter & operator=(const file_input_adapter &)=delete
    -
    iterator_input_adapter< iterator_type > adapter_type
    Definition: json.hpp:5054
    -
    #define NLOHMANN_JSON_VERSION_MAJOR
    Definition: json.hpp:33
    -
    char char_type
    Definition: json.hpp:5008
    -
    string_t & get_string()
    return current string value (implicitly resets the token; useful only once)
    Definition: json.hpp:7301
    -
    typename BasicJsonType::number_unsigned_t number_unsigned_t
    Definition: json.hpp:4458
    -
    json_pointer & operator/=(std::size_t array_idx)
    append an array index at the end of this JSON pointer
    Definition: json.hpp:11678
    -
    typename Base::reference reference
    the reference type for the pointed-to element
    Definition: json.hpp:9989
    - -
    iteration_proxy_value< IteratorType > end() noexcept
    return iterator end (needed for range-based for)
    Definition: json.hpp:3947
    -
    bool number_integer(number_integer_t)
    Definition: json.hpp:5817
    -
    bool operator>=(const iter_impl &other) const
    comparison: greater than or equal
    Definition: json.hpp:11246
    -
    std::size_t size_type
    a type to represent container sizes
    Definition: json.hpp:14809
    -
    json_reverse_iterator operator-(difference_type i) const
    subtract from iterator
    Definition: json.hpp:11497
    -
    serializer & operator=(const serializer &)=delete
    -
    #define JSON_HEDLEY_DEPRECATED_FOR(since, replacement)
    Definition: json.hpp:1097
    -
    std::shared_ptr< output_adapter_protocol< CharType > > output_adapter_t
    a type to simplify interfaces
    Definition: json.hpp:11207
    -
    reference emplace_back(Args &&... args)
    add an object to an array
    Definition: json.hpp:21901
    -
    bool operator<(const value_t lhs, const value_t rhs) noexcept
    comparison operator for JSON types
    Definition: json.hpp:2877
    -
    friend bool operator==(const ScalarType lhs, const_reference rhs) noexcept
    comparison: equal
    Definition: json.hpp:22695
    -
    reverse_iterator rend() noexcept
    returns an iterator to the reverse-end
    Definition: json.hpp:21144
    -
    iter_impl(const iter_impl< const BasicJsonType > &other) noexcept
    const copy constructor
    Definition: json.hpp:10896
    -
    contiguous_bytes_input_adapter && get()
    Definition: json.hpp:5166
    -
    static std::vector< uint8_t > to_cbor(const basic_json &j)
    create a CBOR serialization of a given JSON value
    Definition: json.hpp:23551
    -
    parser(InputAdapterType &&adapter, const parser_callback_t< BasicJsonType > cb=nullptr, const bool allow_exceptions_=true, const bool skip_comments=false)
    a parser reading from an input adapter
    Definition: json.hpp:10174
    - -
    const primitive_iterator_t operator--(int) noexcept
    Definition: json.hpp:10717
    -
    input_format_t
    the supported input formats
    Definition: json.hpp:3887
    -
    bool operator<=(const iter_impl &other) const
    comparison: less than or equal
    Definition: json.hpp:11228
    - -
    @ strict
    throw a type_error exception in case of invalid UTF-8
    -
    constexpr int kGamma
    Definition: json.hpp:12954
    -
    reference operator+=(initializer_list_t init)
    add an object to an object
    Definition: json.hpp:21871
    -
    static void construct(BasicJsonType &j, const typename BasicJsonType::binary_t &b)
    Definition: json.hpp:4062
    -
    void pop_back()
    remove last reference token
    Definition: json.hpp:11782
    -
    decltype(std::declval< T & >().number_integer(std::declval< Integer >())) number_integer_function_t
    Definition: json.hpp:5039
    -
    std::uint64_t f
    Definition: json.hpp:12703
    -
    Definition: json.hpp:2297
    -
    bool number_unsigned(number_unsigned_t)
    Definition: json.hpp:5822
    -
    bool number_unsigned(number_unsigned_t val)
    Definition: json.hpp:5546
    -
    virtual bool number_float(number_float_t val, const string_t &s)=0
    an floating-point number was read
    -
    j template void())
    Definition: json.hpp:3108
    -
    ObjectType< StringType, basic_json, object_comparator_t, AllocatorType< std::pair< const StringType, basic_json > >> object_t
    a type for an object
    Definition: json.hpp:15026
    -
    bool start_array(std::size_t len)
    Definition: json.hpp:5421
    -
    diyfp minus
    Definition: json.hpp:12820
    -
    reference operator*() const
    return a reference to the value pointed to by the iterator
    Definition: json.hpp:11008
    -
    const_reference operator[](const typename object_t::key_type &key) const
    read-only access specified object element
    Definition: json.hpp:20121
    -
    ReferenceType get_ref()
    get a reference value (implicit)
    Definition: json.hpp:19661
    -
    @ binary
    binary array (ordered collection of bytes)
    -
    basic_json(InputIT first, InputIT last)
    construct a JSON container given an iterator range
    Definition: json.hpp:18406
    -
    const JSON_HEDLEY_RETURNS_NON_NULL char * type_name() const noexcept
    return the type as string
    Definition: json.hpp:20987
    -
    iteration_proxy< const_iterator > items() const noexcept
    helper to access iterator member functions in range-based for
    Definition: json.hpp:21364
    -
    static void to_cbor(const basic_json &j, detail::output_adapter< char > o)
    Definition: json.hpp:23563
    - -
    decltype(std::declval< T & >().key(std::declval< String & >())) key_function_t
    Definition: json.hpp:5059
    -
    const int id
    the id of the exception
    Definition: json.hpp:1875
    -
    void swap(typename binary_t::container_type &other)
    Definition: json.hpp:22532
    -
    json_reverse_iterator< typename basic_json::const_iterator > const_reverse_iterator
    a const reverse iterator for a basic_json container
    Definition: json.hpp:14826
    - -
    virtual bool end_object()=0
    the end of an object was read
    -
    serializer(output_adapter_t< char > s, const char ichar, error_handler_t error_handler_=error_handler_t::strict)
    Definition: json.hpp:15493
    -
    size_type erase(const typename object_t::key_type &key)
    remove element from a JSON object given a key
    Definition: json.hpp:20724
    -
    bool operator<(const iter_impl &other) const
    comparison: smaller
    Definition: json.hpp:11201
    -
    static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json from_cbor(detail::input_adapter &&i, const bool strict=true, const bool allow_exceptions=true)
    create a JSON value from an input in CBOR format
    Definition: json.hpp:21517
    -
    friend bool operator>=(const_reference lhs, const ScalarType rhs) noexcept
    comparison: greater than or equal
    Definition: json.hpp:22988
    - - -
    void update(const_iterator first, const_iterator last)
    updates a JSON object from another object, overwriting existing keys
    Definition: json.hpp:22308
    -
    @ value
    the parser finished reading a JSON value
    -
    NumberUnsignedType number_unsigned_t
    a type for a number (unsigned)
    Definition: json.hpp:15294
    -
    static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json from_cbor(IteratorType first, IteratorType last, const bool strict=true, const bool allow_exceptions=true, const cbor_tag_handler_t tag_handler=cbor_tag_handler_t::error)
    Definition: json.hpp:23977
    -
    constexpr number_unsigned_t get_number_unsigned() const noexcept
    return unsigned integer value
    Definition: json.hpp:7289
    -
    basic_json(basic_json &&other) noexcept
    move constructor
    Definition: json.hpp:18625
    -
    primitive_iterator_t primitive_iterator
    generic iterator for all other types
    Definition: json.hpp:9294
    -
    std::size_t lines_read
    the number of lines read
    Definition: json.hpp:96
    -
    @ number_unsigned
    number value (unsigned integer)
    -
    size_type max_size() const noexcept
    returns the maximum possible number of elements
    Definition: json.hpp:21565
    -
    bool sax_parse(const input_format_t format, json_sax_t *sax_, const bool strict=true)
    Definition: json.hpp:5210
    -
    Definition: json.hpp:2795
    -
    deserialization of CBOR, MessagePack, and UBJSON values
    Definition: json.hpp:5175
    - -
    JSON_HEDLEY_RETURNS_NON_NULL char * append_exponent(char *buf, int e)
    appends a decimal representation of e to buf
    Definition: json.hpp:13572
    -
    @ array
    array (ordered collection of values)
    -
    static void construct(BasicJsonType &j, typename BasicJsonType::string_t &&s)
    Definition: json.hpp:4040
    -
    @ end_of_input
    indicating the end of the input buffer
    -
    decltype(T::from_json(std::declval< Args >()...)) from_json_function
    Definition: json.hpp:2513
    -
    typename BasicJsonType::number_integer_t number_integer_t
    Definition: json.hpp:4639
    -
    BooleanType boolean_t
    a type for a boolean
    Definition: json.hpp:15151
    -
    const_iterator end() const noexcept
    returns a const iterator to one past the last element
    Definition: json.hpp:21047
    -
    wide_string_input_adapter(BaseInputAdapter base)
    Definition: json.hpp:5010
    -
    void push_back(std::string &&token)
    append an unescaped token at the end of the reference pointer
    Definition: json.hpp:11834
    -
    binary_reader & operator=(const binary_reader &)=delete
    -
    value_type const * operator->() const
    Definition: json.hpp:12579
    -
    diyfp plus
    Definition: json.hpp:12821
    -
    static type_error create(int id_, const std::string &what_arg)
    Definition: json.hpp:2567
    -
    ordered_map(It first, It last, const Allocator &alloc=Allocator())
    Definition: json.hpp:16419
    -
    IteratorType iterator_type
    Definition: json.hpp:5052
    - -
    constexpr diyfp(std::uint64_t f_, int e_) noexcept
    Definition: json.hpp:14396
    -
    reference at(size_type idx)
    access specified array element with bounds checking
    Definition: json.hpp:19793
    -
    static void construct(BasicJsonType &j, typename BasicJsonType::binary_t &&b)
    Definition: json.hpp:4071
    -
    bool contains(KeyT &&key) const
    check the existence of an element in a JSON object
    Definition: json.hpp:20896
    -
    typename detector< nonesuch, void, Op, Args... >::type detected_t
    Definition: json.hpp:2367
    -
    decltype(std::declval< T & >().end_object()) end_object_function_t
    Definition: json.hpp:5062
    -
    friend bool operator!=(json_pointer const &lhs, json_pointer const &rhs) noexcept
    compares two JSON pointers for inequality
    Definition: json.hpp:12502
    - -
    std::is_convertible< detected_t< Op, Args... >, To > is_detected_convertible
    Definition: json.hpp:2380
    -
    typename BasicJsonType::number_float_t number_float_t
    Definition: json.hpp:4945
    -
    iteration_proxy_value & operator++()
    increment operator (needed for range-based for)
    Definition: json.hpp:3873
    -
    ValueType & get_to(ValueType &v) const
    Definition: json.hpp:19519
    -
    std::pair< iterator, bool > insert(value_type &&value)
    Definition: json.hpp:16542
    -
    iteration_proxy_value(IteratorType it) noexcept
    Definition: json.hpp:3320
    -
    @ discarded
    discarded by the the parser callback function
    -
    constexpr bool is_structured() const noexcept
    return whether type is structured
    Definition: json.hpp:18870
    -
    iterator begin() noexcept
    returns an iterator to the first element
    Definition: json.hpp:18674
    -
    void swap(string_t &other)
    exchanges the values
    Definition: json.hpp:22485
    -
    void swap(binary_t &other)
    exchanges the values
    Definition: json.hpp:22518
    -
    Default type
    Definition: json.hpp:2353
    -
    bool end_object()
    Definition: json.hpp:5415
    -
    ~basic_json() noexcept
    destructor
    Definition: json.hpp:18695
    -
    string_t dump(const int indent=-1, const char indent_char=' ', const bool ensure_ascii=false, const error_handler_t error_handler=error_handler_t::strict) const
    serialization
    Definition: json.hpp:18759
    - -
    static void construct(BasicJsonType &j, const typename BasicJsonType::string_t &s)
    Definition: json.hpp:4032
    -
    static void to_bson(const basic_json &j, detail::output_adapter< uint8_t > o)
    Serializes the given JSON object j to BSON and forwards the corresponding BSON-representation to the ...
    Definition: json.hpp:23842
    -
    JSONSerializer< T, SFINAE > json_serializer
    Definition: json.hpp:14755
    -
    void push_back(initializer_list_t init)
    add an object to an object
    Definition: json.hpp:21853
    -
    Definition: json.hpp:2569
    -
    typename parser::parse_event_t parse_event_t
    parser event types
    Definition: json.hpp:15661
    -
    @ object_start
    the parser read { and started to process a JSON object
    -
    static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json binary(const typename binary_t::container_type &init)
    explicitly create a binary array (without subtype)
    Definition: json.hpp:18167
    -
    bool operator()(nlohmann::detail::value_t lhs, nlohmann::detail::value_t rhs) const noexcept
    compare two value_t enum values
    Definition: json.hpp:25211
    -
    typename detector< nonesuch, void, Op, Args... >::value_t is_detected
    Definition: json.hpp:2364
    - -
    iter_impl(pointer object) noexcept
    constructor for a given JSON instance
    Definition: json.hpp:10854
    -
    @ value_string
    a string – use get_string() for actual value
    -
    virtual bool start_object(std::size_t elements)=0
    the beginning of an object was read
    -
    lexer(detail::input_adapter_t &&adapter)
    Definition: json.hpp:7237
    -
    void push_back(const basic_json &val)
    add an object to an array
    Definition: json.hpp:21748
    -
    json_pointer & operator/=(std::string token)
    append an unescaped reference token at the end of this JSON pointer
    Definition: json.hpp:11656
    -
    friend bool operator>=(const_reference lhs, const_reference rhs) noexcept
    comparison: greater than or equal
    Definition: json.hpp:22977
    -
    static bool accept(InputType &&i, const bool ignore_comments=false)
    check if the input is valid JSON
    Definition: json.hpp:23228
    -
    static void to_cbor(const basic_json &j, detail::output_adapter< uint8_t > o)
    Definition: json.hpp:23558
    -
    BasicJsonType get() const
    get special-case overload
    Definition: json.hpp:19359
    - - -
    static void construct(BasicJsonType &j, const CompatibleObjectType &obj)
    Definition: json.hpp:4196
    -
    #define JSON_INTERNAL_CATCH(exception)
    Definition: json.hpp:2074
    -
    reference operator[](size_type idx)
    access specified array element
    Definition: json.hpp:19988
    -
    lexer & operator=(lexer &)=delete
    -
    iter_impl()=default
    default constructor
    Definition: json.hpp:9349
    - -
    static constexpr bool value
    Definition: json.hpp:3043
    -
    virtual bool number_integer(number_integer_t val)=0
    an integer number was read
    -
    Definition: json.hpp:13787
    -
    bool operator>(const iter_impl &other) const
    comparison: greater than
    Definition: json.hpp:11237
    -
    iterator find(KeyT &&key)
    find an element in a JSON object
    Definition: json.hpp:18520
    -
    typename std::allocator_traits< allocator_type >::pointer pointer
    the type of an element pointer
    Definition: json.hpp:14815
    -
    friend bool operator<(const_reference lhs, const_reference rhs) noexcept
    comparison: less than
    Definition: json.hpp:22771
    -
    @ object_end
    the parser read } and finished processing a JSON object
    -
    const_iterator cbegin() const noexcept
    returns a const iterator to the first element
    Definition: json.hpp:18714
    -
    output adapter for output streams
    Definition: json.hpp:11235
    -
    Definition: json.hpp:2476
    -
    json_pointer & operator/=(const json_pointer &ptr)
    append another JSON pointer at the end of this JSON pointer
    Definition: json.hpp:11632
    -
    const_iterator begin() const noexcept
    returns a const iterator to the first element
    Definition: json.hpp:20976
    -
    typename std::iterator_traits< T >::value_type value_type
    Definition: json.hpp:5065
    -
    a class to store JSON values
    Definition: json.hpp:2421
    -
    static invalid_iterator create(int id_, const std::string &what_arg)
    Definition: json.hpp:2513
    -
    static bool sax_parse(detail::input_adapter &&i, SAX *sax, input_format_t format=input_format_t::json, const bool strict=true)
    generate SAX events
    Definition: json.hpp:20814
    -
    const json_reverse_iterator operator++(int)
    post-increment (it++)
    Definition: json.hpp:11461
    -
    reference operator[](const typename object_t::key_type &key)
    access specified object element
    Definition: json.hpp:20072
    -
    friend bool operator==(const_reference lhs, const ScalarType rhs) noexcept
    comparison: equal
    Definition: json.hpp:22684
    - -
    virtual bool end_array()=0
    the end of an array was read
    -
    constexpr auto get() const noexcept -> decltype(std::declval< const basic_json_t & >().template get_ptr< PointerType >())
    get a pointer value (explicit)
    Definition: json.hpp:19627
    -
    static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json from_bson(IteratorType first, IteratorType last, const bool strict=true, const bool allow_exceptions=true)
    Create a JSON value from an input in BSON format.
    Definition: json.hpp:24348
    -
    Definition: json.hpp:4940
    -
    #define NLOHMANN_BASIC_JSON_TPL_DECLARATION
    Definition: json.hpp:2137
    -
    static parse_error create(int id_, const position_t &pos, const std::string &what_arg)
    create a parse error exception
    Definition: json.hpp:2436
    -
    constexpr bool is_number() const noexcept
    return whether value is a number
    Definition: json.hpp:16743
    -
    #define JSON_EXPLICIT
    Definition: json.hpp:2310
    -
    static constexpr T value
    Definition: json.hpp:2235
    -
    const_reference at(const typename object_t::key_type &key) const
    access specified object element with bounds checking
    Definition: json.hpp:19942
    -
    Definition: json.hpp:2551
    -
    reference at(const typename object_t::key_type &key)
    access specified object element with bounds checking
    Definition: json.hpp:19891
    -
    static std::vector< uint8_t > to_bson(const basic_json &j)
    Serializes the given JSON object j to BSON and returns a vector containing the corresponding BSON-rep...
    Definition: json.hpp:23827
    - -
    Definition: json.hpp:5077
    -
    friend iter_impl operator+(difference_type i, const iter_impl &it)
    addition of distance and iterator
    Definition: json.hpp:11304
    -
    constexpr number_integer_t get_number_integer() const noexcept
    return integer value
    Definition: json.hpp:7283
    -
    static constexpr int kPrecision
    Definition: json.hpp:12701
    -
    Definition: json.hpp:3431
    -
    bool parse_error(std::size_t, const std::string &, const Exception &ex)
    Definition: json.hpp:5441
    -
    json_reverse_iterator & operator++()
    pre-increment (++it)
    Definition: json.hpp:11467
    -
    basic_json<> json
    default JSON class
    Definition: json.hpp:2445
    -
    constexpr friend difference_type operator-(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept
    Definition: json.hpp:10693
    -
    Definition: json.hpp:4197
    -
    friend bool operator!=(const_reference lhs, const_reference rhs) noexcept
    comparison: not equal
    Definition: json.hpp:22718
    -
    typename std::iterator_traits< iterator_type >::value_type char_type
    Definition: json.hpp:5076
    - -
    iter_impl & operator=(const iter_impl< typename std::remove_const< BasicJsonType >::type > &other) noexcept
    converting assignment
    Definition: json.hpp:10928
    - -
    static void to_ubjson(const basic_json &j, detail::output_adapter< char > o, const bool use_size=false, const bool use_type=false)
    Definition: json.hpp:23764
    -
    void push_back(const std::string &token)
    append an unescaped token at the end of the reference pointer
    Definition: json.hpp:10366
    -
    void from_json_tuple_impl(const BasicJsonType &j, Tuple &t, index_sequence< Idx... >)
    Definition: json.hpp:3190
    -
    iterator insert(const_iterator pos, const_iterator first, const_iterator last)
    inserts elements
    Definition: json.hpp:22121
    -
    static void construct(BasicJsonType &j, typename BasicJsonType::number_float_t val) noexcept
    Definition: json.hpp:4084
    -
    void write_character(CharType c) override
    Definition: json.hpp:12652
    -
    static iteration_proxy< iterator > iterator_wrapper(reference ref) noexcept
    wrapper to access iterator member functions in range-based for
    Definition: json.hpp:18982
    -
    basic_json(const BasicJsonType &val)
    create a JSON value from an existing one
    Definition: json.hpp:17964
    -
    bool number_float(number_float_t, const string_t &)
    Definition: json.hpp:5827
    -
    #define JSON_THROW(exception)
    Definition: json.hpp:2071
    -
    std::vector< std::pair< const Key, T >, Allocator > Container
    Definition: json.hpp:16409
    -
    friend class basic_json
    Definition: json.hpp:10096
    -
    decltype(std::declval< T & >().parse_error(std::declval< std::size_t >(), std::declval< const std::string & >(), std::declval< const Exception & >())) parse_error_function_t
    Definition: json.hpp:5074
    -
    static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json binary(const typename binary_t::container_type &init, std::uint8_t subtype)
    explicitly create a binary array (with subtype)
    Definition: json.hpp:18204
    -
    auto get(const nlohmann::detail::iteration_proxy_value< IteratorType > &i) -> decltype(i.key())
    Definition: json.hpp:3412
    -
    static void construct(BasicJsonType &j, const std::vector< bool > &arr)
    Definition: json.hpp:4148
    -
    input_stream_adapter(input_stream_adapter &&rhs) noexcept
    Definition: json.hpp:4814
    -
    @ value_unsigned
    an unsigned integer – use get_number_unsigned() for actual value
    -
    constexpr friend bool operator<(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept
    Definition: json.hpp:10681
    -
    std::pair< iterator, bool > insert(const value_type &value)
    Definition: json.hpp:16547
    -
    void parse(const bool strict, BasicJsonType &result)
    public parser interface
    Definition: json.hpp:10196
    -
    const_reference front() const
    access the first element
    Definition: json.hpp:20413
    -
    void set_subtype(std::uint8_t subtype) noexcept
    sets the binary subtype
    Definition: json.hpp:4492
    -
    #define NLOHMANN_JSON_VERSION_MINOR
    Definition: json.hpp:34
    -
    iterator insert(const_iterator pos, initializer_list_t ilist)
    inserts elements
    Definition: json.hpp:22174
    -
    iter_impl & operator-=(difference_type i)
    subtract from iterator
    Definition: json.hpp:11284
    -
    typename BasicJsonType::number_unsigned_t number_unsigned_t
    Definition: json.hpp:4944
    -
    typename BasicJsonType::binary_t binary_t
    Definition: json.hpp:5805
    -
    typename BasicJsonType::number_unsigned_t number_unsigned_t
    Definition: json.hpp:4640
    -
    decltype(std::declval< T & >().number_float(std::declval< Float >(), std::declval< const String & >())) number_float_function_t
    Definition: json.hpp:5047
    -
    friend void swap(reference left, reference right) noexcept(std::is_nothrow_move_constructible< value_t >::value &&std::is_nothrow_move_assignable< value_t >::value &&std::is_nothrow_move_constructible< json_value >::value &&std::is_nothrow_move_assignable< json_value >::value)
    exchanges the values
    Definition: json.hpp:22389
    -
    token_type
    token types for the parser
    Definition: json.hpp:5909
    -
    an iterator value
    Definition: json.hpp:9287
    -
    #define JSON_CATCH(exception)
    Definition: json.hpp:2073
    -
    bool boolean(bool)
    Definition: json.hpp:5812
    - -
    json_ref(const value_type &value)
    Definition: json.hpp:12538
    -
    NumberFloatType number_float_t
    a type for a number (floating-point)
    Definition: json.hpp:15362
    -
    JSON_HEDLEY_RETURNS_NON_NULL char * to_chars(char *first, const char *last, FloatType value)
    generates a decimal representation of the floating-point number value in [first, last).
    Definition: json.hpp:13709
    -
    reference front()
    access the first element
    Definition: json.hpp:20405
    -
    std::size_t combine(std::size_t seed, std::size_t h) noexcept
    Definition: json.hpp:4595
    -
    typename BasicJsonType::value_type value_type
    the type of the values when the iterator is dereferenced
    Definition: json.hpp:9370
    -
    constexpr bool is_number_integer() const noexcept
    return whether value is an integer number
    Definition: json.hpp:16772
    -
    constexpr const JSON_HEDLEY_RETURNS_NON_NULL char * get_error_message() const noexcept
    return syntax error message
    Definition: json.hpp:7344
    -
    std::size_t chars_read_total
    the total number of characters read
    Definition: json.hpp:92
    - - -
    reference operator[](const json_pointer &ptr)
    access specified element via JSON Pointer
    Definition: json.hpp:24423
    -
    void operator=(nonesuch const &)=delete
    -
    output adapter for basic_string
    Definition: json.hpp:11259
    -
    iter_impl operator+(difference_type i) const
    add to iterator
    Definition: json.hpp:11293
    -
    binary_reader(input_adapter_t adapter)
    create a binary reader
    Definition: json.hpp:5189
    -
    static void construct(BasicJsonType &j, const std::valarray< T > &arr)
    Definition: json.hpp:4162
    -
    char char_type
    Definition: json.hpp:4757
    -
    decltype(std::declval< T & >().number_unsigned(std::declval< Unsigned >())) number_unsigned_function_t
    Definition: json.hpp:5043
    -
    reference operator[](difference_type n) const
    access to successor
    Definition: json.hpp:11347
    -
    const binary_t & get_binary() const
    Definition: json.hpp:19746
    -
    typename BasicJsonType::number_float_t number_float_t
    type for floating-point numbers
    Definition: json.hpp:4340
    -
    byte_container_with_subtype(const container_type &b) noexcept(noexcept(container_type(b)))
    Definition: json.hpp:4443
    -
    const json_reverse_iterator operator--(int)
    post-decrement (it–)
    Definition: json.hpp:11473
    - -
    constexpr bool is_number_unsigned() const noexcept
    return whether value is an unsigned integer number
    Definition: json.hpp:19001
    -
    decltype(T::to_json(std::declval< Args >()...)) to_json_function
    Definition: json.hpp:2510
    -
    static std::vector< uint8_t > to_ubjson(const basic_json &j, const bool use_size=false, const bool use_type=false)
    create a UBJSON serialization of a given JSON value
    Definition: json.hpp:23749
    -
    typename BasicJsonType::number_float_t number_float_t
    Definition: json.hpp:4641
    -
    bool start_object(std::size_t len)
    Definition: json.hpp:5570
    -
    primitive_iterator_t & operator-=(difference_type n) noexcept
    Definition: json.hpp:10730
    -
    iteration_proxy(typename IteratorType::reference cont) noexcept
    construct iteration proxy from a container
    Definition: json.hpp:3937
    -
    JSON_HEDLEY_RETURNS_NON_NULL char * format_buffer(char *buf, int len, int decimal_exponent, int min_exp, int max_exp)
    prettify v = buf * 10^decimal_exponent
    Definition: json.hpp:13624
    -
    const JSON_HEDLEY_RETURNS_NON_NULL char * what() const noexcept override
    returns the explanatory string
    Definition: json.hpp:2357
    -
    friend std::ostream & operator<<(std::ostream &o, const basic_json &j)
    serialize to stream
    Definition: json.hpp:23044
    -
    void clear() noexcept
    clears the contents
    Definition: json.hpp:21636
    -
    friend std::ostream & operator>>(const basic_json &j, std::ostream &o)
    serialize to stream
    Definition: json.hpp:20666
    -
    Definition: json.hpp:2336
    -
    ordered_map(std::initializer_list< T > init, const Allocator &alloc=Allocator())
    Definition: json.hpp:16421
    -
    static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json binary(typename binary_t::container_type &&init)
    explicitly create a binary array (without subtype)
    Definition: json.hpp:18214
    -
    constexpr bool is_null() const noexcept
    return whether value is null
    Definition: json.hpp:16691
    -
    static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json from_cbor(InputType &&i, const bool strict=true, const bool allow_exceptions=true, const cbor_tag_handler_t tag_handler=cbor_tag_handler_t::error)
    create a JSON value from an input in CBOR format
    Definition: json.hpp:23960
    -
    iterator insert(const_iterator pos, size_type cnt, const basic_json &val)
    inserts elements
    Definition: json.hpp:22073
    -
    typename T::reference reference_t
    Definition: json.hpp:2501
    -
    const_reverse_iterator crend() const noexcept
    returns a const reverse iterator to one before the first
    Definition: json.hpp:18918
    -
    make_index_sequence< sizeof...(Ts)> index_sequence_for
    Definition: json.hpp:2225
    -
    bool operator!=(const iteration_proxy_value &o) const
    inequality operator (needed for range-based for)
    Definition: json.hpp:3888
    -
    basic_json patch(const basic_json &json_patch) const
    applies a JSON patch
    Definition: json.hpp:24662
    -
    #define JSON_HEDLEY_DIAGNOSTIC_PUSH
    Definition: json.hpp:936
    -
    constexpr int kAlpha
    Definition: json.hpp:12953
    -
    constexpr number_float_t get_number_float() const noexcept
    return floating-point value
    Definition: json.hpp:7295
    - -
    #define JSON_HEDLEY_RETURNS_NON_NULL
    Definition: json.hpp:1712
    -
    Definition: json.hpp:3918
    -
    bool skip_bom()
    skip the UTF-8 byte order mark
    Definition: json.hpp:7357
    -
    bool end_object()
    Definition: json.hpp:5605
    -
    @ end_object
    the character for object end }
    - -
    IteratorType erase(IteratorType pos)
    remove element given an iterator
    Definition: json.hpp:20516
    -
    constexpr auto get_ptr() const noexcept -> decltype(std::declval< const basic_json_t & >().get_impl_ptr(std::declval< PointerType >()))
    get a pointer value (implicit)
    Definition: json.hpp:19580
    -
    decltype(std::declval< T & >().string(std::declval< String & >())) string_function_t
    Definition: json.hpp:5051
    -
    input_stream_adapter & operator=(input_stream_adapter &)=delete
    -
    constexpr bool is_array() const noexcept
    return whether value is an array
    Definition: json.hpp:16872
    -
    parse_event_t
    Definition: json.hpp:10137
    -
    bool operator==(const iteration_proxy_value &o) const
    equality operator (needed for InputIterator)
    Definition: json.hpp:3882
    -
    #define JSON_HEDLEY_DIAGNOSTIC_POP
    Definition: json.hpp:937
    -
    virtual bool start_array(std::size_t elements)=0
    the beginning of an array was read
    -
    typename T::key_type key_type_t
    Definition: json.hpp:2489
    -
    JSON_HEDLEY_RETURNS_NON_NULL static const JSON_HEDLEY_CONST char * token_type_name(const token_type t) noexcept
    return name of values of type token_type (only used for errors)
    Definition: json.hpp:5933
    -
    typename BasicJsonType::difference_type difference_type
    a type to represent differences between iterators
    Definition: json.hpp:9372
    -
    Array get_to(T(&v)[N]) const noexcept(noexcept(JSONSerializer< Array >::from_json(std::declval< const basic_json_t & >(), v)))
    Definition: json.hpp:19530
    -
    void from_json_array_impl(const BasicJsonType &j, typename BasicJsonType::array_t &arr, priority_tag< 3 >)
    Definition: json.hpp:3042
    -
    SAX interface.
    Definition: json.hpp:4333
    -
    friend bool operator>=(const ScalarType lhs, const_reference rhs) noexcept
    comparison: greater than or equal
    Definition: json.hpp:22999
    -
    void insert(const_iterator first, const_iterator last)
    inserts elements
    Definition: json.hpp:22215
    -
    file_input_adapter(std::FILE *f) noexcept
    Definition: json.hpp:3922
    -
    const_reverse_iterator crbegin() const noexcept
    returns a const reverse iterator to the last element
    Definition: json.hpp:18889
    -
    int k
    Definition: json.hpp:12960
    -
    virtual bool binary(binary_t &val)=0
    a binary string was read
    -
    constexpr bool is_boolean() const noexcept
    return whether value is a boolean
    Definition: json.hpp:16713
    -
    std::ptrdiff_t difference_type
    a type to represent differences between iterators
    Definition: json.hpp:14807
    -
    auto get_ptr() noexcept -> decltype(std::declval< basic_json_t & >().get_impl_ptr(std::declval< PointerType >()))
    get a pointer value (implicit)
    Definition: json.hpp:19567
    -
    proxy class for the items() function
    Definition: json.hpp:3385
    -
    static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json from_msgpack(detail::input_adapter &&i, const bool strict=true, const bool allow_exceptions=true)
    create a JSON value from an input in MessagePack format
    Definition: json.hpp:21626
    -
    const object_t::key_type & key() const
    return the key of an object iterator
    Definition: json.hpp:11378
    -
    static void construct(BasicJsonType &j, const typename BasicJsonType::object_t &obj)
    Definition: json.hpp:4179
    -
    iterator_input_adapter(IteratorType first, IteratorType last)
    Definition: json.hpp:4848
    -
    cbor_tag_handler_t
    how to treat CBOR tags
    Definition: json.hpp:7668
    - -
    difference_type operator-(const json_reverse_iterator &other) const
    return difference
    Definition: json.hpp:11503
    -
    bool parse_error(std::size_t, const std::string &, const detail::exception &)
    Definition: json.hpp:5867
    - -
    typename T::pointer pointer_t
    Definition: json.hpp:2498
    -
    @ begin_array
    the character for array begin [
    -
    constexpr bool is_number_float() const noexcept
    return whether value is a floating-point number
    Definition: json.hpp:16828
    -
    friend bool operator!=(const_reference lhs, const ScalarType rhs) noexcept
    comparison: not equal
    Definition: json.hpp:22729
    -
    int e
    Definition: json.hpp:12704
    -
    typename std::conditional< std::is_const< BasicJsonType >::value, typename BasicJsonType::const_pointer, typename BasicJsonType::pointer >::type pointer
    defines a pointer to the type iterated over (value_type)
    Definition: json.hpp:9376
    -
    const iter_impl operator--(int)
    post-decrement (it–)
    Definition: json.hpp:11122
    -
    virtual bool key(string_t &val)=0
    an object key was read
    -
    an internal type for a backed binary type
    Definition: json.hpp:4433
    -
    binary_writer(output_adapter_t< CharType > adapter)
    create a binary writer
    Definition: json.hpp:12764
    -
    basic_json(const basic_json &other)
    copy constructor
    Definition: json.hpp:18536
    -
    #define NLOHMANN_BASIC_JSON_TPL
    Definition: json.hpp:2146
    -
    virtual ~json_sax()=default
    -
    void write_character(CharType c) override
    Definition: json.hpp:12676
    - -
    const_iterator find(const Key &key) const
    Definition: json.hpp:16530
    -
    output_adapter(std::vector< CharType > &vec)
    Definition: json.hpp:12719
    -
    constexpr friend bool operator==(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept
    Definition: json.hpp:10676
    -
    @ value_integer
    a signed integer – use get_number_integer() for actual value
    -
    friend bool operator==(json_pointer const &lhs, json_pointer const &rhs) noexcept
    compares two JSON pointers for equality
    Definition: json.hpp:12485
    -
    typename BasicJsonType::string_t string_t
    Definition: json.hpp:4946
    -
    bool number_float(number_float_t val, const string_t &)
    Definition: json.hpp:5377
    -
    friend bool operator<=(const_reference lhs, const ScalarType rhs) noexcept
    comparison: less than or equal
    Definition: json.hpp:22896
    -
    std::char_traits< char_type >::int_type get_character()
    Definition: json.hpp:4851
    -
    const_reference operator[](size_type idx) const
    access specified array element
    Definition: json.hpp:20034
    -
    bool end_array()
    Definition: json.hpp:5862
    -
    int find_largest_pow10(const std::uint32_t n, std::uint32_t &pow10)
    Definition: json.hpp:13134
    -
    std::reverse_iterator< Base > base_iterator
    shortcut to the reverse iterator adapter
    Definition: json.hpp:9987
    -
    @ uninitialized
    indicating the scanner is uninitialized
    -
    json_reverse_iterator & operator--()
    pre-decrement (–it)
    Definition: json.hpp:11479
    -
    iterator insert_iterator(const_iterator pos, Args &&... args)
    Definition: json.hpp:21984
    -
    static void construct(BasicJsonType &j, typename BasicJsonType::boolean_t b) noexcept
    Definition: json.hpp:4020
    -
    reference value() const
    return the value of an iterator
    Definition: json.hpp:9932
    -
    JSON_HEDLEY_RETURNS_NON_NULL static const JSON_HEDLEY_CONST char * token_type_name(const token_type t) noexcept
    return name of values of type token_type (only used for errors)
    Definition: json.hpp:7194
    -
    reference operator+=(basic_json &&val)
    add an object to an array
    Definition: json.hpp:21738
    -
    json_reverse_iterator(const base_iterator &it) noexcept
    create reverse iterator from base class
    Definition: json.hpp:11458
    -
    bool operator!=(const byte_container_with_subtype &rhs) const
    Definition: json.hpp:4469
    -
    decltype(input_adapter(std::declval< const char * >(), std::declval< const char * >())) contiguous_bytes_input_adapter
    Definition: json.hpp:5121
    -
    void to_json(BasicJsonType &j, T b) noexcept
    Definition: json.hpp:3647
    -
    byte_container_with_subtype() noexcept(noexcept(container_type()))
    Definition: json.hpp:4439
    - -
    constexpr bool is_errored() const
    Definition: json.hpp:5692
    -
    void write_bson(const BasicJsonType &j)
    Definition: json.hpp:12773
    -
    typename std::allocator_traits< allocator_type >::const_pointer const_pointer
    the type of an element const pointer
    Definition: json.hpp:14817
    -
    iter_impl & operator+=(difference_type i)
    add to iterator
    Definition: json.hpp:11255
    -
    Definition: json.hpp:11282
    -
    void swap(reference other) noexcept(std::is_nothrow_move_constructible< value_t >::value and std::is_nothrow_move_assignable< value_t >::value and std::is_nothrow_move_constructible< json_value >::value and std::is_nothrow_move_assignable< json_value >::value)
    exchanges the values
    Definition: json.hpp:20054
    - -
    iterator end() noexcept
    returns an iterator to one past the last element
    Definition: json.hpp:18745
    -
    ValueType & get_to(ValueType &v) const noexcept(noexcept(JSONSerializer< ValueType >::from_json(std::declval< const basic_json_t & >(), v)))
    get a value (explicit)
    Definition: json.hpp:19506
    -
    typename T::iterator_category iterator_category_t
    Definition: json.hpp:2504
    -
    bool boolean(bool val)
    Definition: json.hpp:5534
    -
    BasicJsonType value_type
    Definition: json.hpp:11104
    -
    auto operator()(BasicJsonType &j, T &&val) const noexcept(noexcept(to_json(j, std::forward< T >(val)))) -> decltype(to_json(j, std::forward< T >(val)), void())
    Definition: json.hpp:4350
    -
    void swap(reference other) noexcept(std::is_nothrow_move_constructible< value_t >::value &&std::is_nothrow_move_assignable< value_t >::value &&std::is_nothrow_move_constructible< json_value >::value &&std::is_nothrow_move_assignable< json_value >::value)
    exchanges the values
    Definition: json.hpp:22359
    -
    binary_t & get_binary()
    Definition: json.hpp:19735
    -
    typename BasicJsonType::template json_serializer< T, void > serializer
    Definition: json.hpp:3065
    -
    std::is_same< Expected, detected_t< Op, Args... > > is_detected_exact
    Definition: json.hpp:2376
    -
    @ key
    the parser read a key of a value in an object
    -
    friend bool operator<(const ScalarType lhs, const_reference rhs) noexcept
    comparison: less than
    Definition: json.hpp:22861
    -
    ValueType get() const noexcept(noexcept(JSONSerializer< ValueType >::from_json(std::declval< const basic_json_t & >())))
    get a value (explicit); special case
    Definition: json.hpp:19460
    -
    bool contains(const json_pointer &ptr) const
    check the existence of an element in a JSON object given a JSON pointer
    Definition: json.hpp:20927
    -
    std::size_t operator()(const nlohmann::json &j) const
    return a hash value for a JSON object
    Definition: json.hpp:25195
    -
    @ array_start
    the parser read [ and started to process a JSON array
    -
    basic_json(const JsonRef &ref)
    Definition: json.hpp:18509
    -
    typename BasicJsonType::binary_t binary_t
    Definition: json.hpp:5509
    -
    typename std::remove_cv< typename std::remove_reference< T >::type >::type uncvref_t
    Definition: json.hpp:2194
    - - - - diff --git a/help/html/tokenInvalidException_8h.html b/help/html/tokenInvalidException_8h.html deleted file mode 100644 index e78e13f..0000000 --- a/help/html/tokenInvalidException_8h.html +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/exception/tokenInvalidException.h File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    tokenInvalidException.h File Reference
    -
    -
    -
    -Include dependency graph for tokenInvalidException.h:
    -
    -
    - - - - - - -
    -
    -This graph shows which files directly or indirectly include this file:
    -
    -
    - - - - - -
    -
    -

    Go to the source code of this file.

    - - - - -

    -Classes

    class  CocoaTweet::Exception::TokenInvalidException
     
    - - - - - -

    -Namespaces

     CocoaTweet
     
     CocoaTweet::Exception
     
    -
    - - - - diff --git a/help/html/tokenInvalidException_8h__dep__incl.map b/help/html/tokenInvalidException_8h__dep__incl.map deleted file mode 100644 index a82ff97..0000000 --- a/help/html/tokenInvalidException_8h__dep__incl.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/help/html/tokenInvalidException_8h__dep__incl.md5 b/help/html/tokenInvalidException_8h__dep__incl.md5 deleted file mode 100644 index c477525..0000000 --- a/help/html/tokenInvalidException_8h__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -09858f34ce750da9134987506ce867dc \ No newline at end of file diff --git a/help/html/tokenInvalidException_8h__dep__incl.png b/help/html/tokenInvalidException_8h__dep__incl.png deleted file mode 100644 index 233626d..0000000 Binary files a/help/html/tokenInvalidException_8h__dep__incl.png and /dev/null differ diff --git a/help/html/tokenInvalidException_8h__incl.map b/help/html/tokenInvalidException_8h__incl.map deleted file mode 100644 index aef3530..0000000 --- a/help/html/tokenInvalidException_8h__incl.map +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/help/html/tokenInvalidException_8h__incl.md5 b/help/html/tokenInvalidException_8h__incl.md5 deleted file mode 100644 index df46a2d..0000000 --- a/help/html/tokenInvalidException_8h__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -3072cc0ca04cd0158271906d21571960 \ No newline at end of file diff --git a/help/html/tokenInvalidException_8h__incl.png b/help/html/tokenInvalidException_8h__incl.png deleted file mode 100644 index 266df2d..0000000 Binary files a/help/html/tokenInvalidException_8h__incl.png and /dev/null differ diff --git a/help/html/tokenInvalidException_8h_source.html b/help/html/tokenInvalidException_8h_source.html deleted file mode 100644 index 2a2a9b4..0000000 --- a/help/html/tokenInvalidException_8h_source.html +++ /dev/null @@ -1,97 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/exception/tokenInvalidException.h Source File - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    tokenInvalidException.h
    -
    -
    -Go to the documentation of this file.
    1 #ifndef COCOATWEET_EXCEPTION_TOKENINVALIDEXCEPTION_H_
    -
    2 #define COCOATWEET_EXCEPTION_TOKENINVALIDEXCEPTION_H_
    -
    3 
    - -
    5 
    -
    6 namespace CocoaTweet::Exception {
    -
    7 class TokenInvalidException final : public Exception {
    - -
    9 };
    -
    10 } // namespace CocoaTweet::Exception
    -
    11 
    -
    12 #endif
    -
    -
    Exception(const char *_msg)
    Definition: exception.h:10
    -
    Definition: authenticateException.h:6
    -
    Definition: exception.h:8
    -
    Definition: tokenInvalidException.h:7
    - - - - - diff --git a/help/html/tweetDuplicateException_8h.html b/help/html/tweetDuplicateException_8h.html deleted file mode 100644 index 9554bbd..0000000 --- a/help/html/tweetDuplicateException_8h.html +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/exception/tweetDuplicateException.h File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    tweetDuplicateException.h File Reference
    -
    -
    -
    -Include dependency graph for tweetDuplicateException.h:
    -
    -
    - - - - - - -
    -
    -This graph shows which files directly or indirectly include this file:
    -
    -
    - - - - - -
    -
    -

    Go to the source code of this file.

    - - - - -

    -Classes

    class  CocoaTweet::Exception::TweetDuplicateException
     
    - - - - - -

    -Namespaces

     CocoaTweet
     
     CocoaTweet::Exception
     
    -
    - - - - diff --git a/help/html/tweetDuplicateException_8h__dep__incl.map b/help/html/tweetDuplicateException_8h__dep__incl.map deleted file mode 100644 index 6fe295a..0000000 --- a/help/html/tweetDuplicateException_8h__dep__incl.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/help/html/tweetDuplicateException_8h__dep__incl.md5 b/help/html/tweetDuplicateException_8h__dep__incl.md5 deleted file mode 100644 index 81cf9a0..0000000 --- a/help/html/tweetDuplicateException_8h__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -9d789364b136996b903db19e8afeccd6 \ No newline at end of file diff --git a/help/html/tweetDuplicateException_8h__dep__incl.png b/help/html/tweetDuplicateException_8h__dep__incl.png deleted file mode 100644 index dad29c3..0000000 Binary files a/help/html/tweetDuplicateException_8h__dep__incl.png and /dev/null differ diff --git a/help/html/tweetDuplicateException_8h__incl.map b/help/html/tweetDuplicateException_8h__incl.map deleted file mode 100644 index 5da9781..0000000 --- a/help/html/tweetDuplicateException_8h__incl.map +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/help/html/tweetDuplicateException_8h__incl.md5 b/help/html/tweetDuplicateException_8h__incl.md5 deleted file mode 100644 index f0a3ac3..0000000 --- a/help/html/tweetDuplicateException_8h__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -dd9b6a7e9fce7922c8e69b33761baea4 \ No newline at end of file diff --git a/help/html/tweetDuplicateException_8h__incl.png b/help/html/tweetDuplicateException_8h__incl.png deleted file mode 100644 index 62d24fa..0000000 Binary files a/help/html/tweetDuplicateException_8h__incl.png and /dev/null differ diff --git a/help/html/tweetDuplicateException_8h_source.html b/help/html/tweetDuplicateException_8h_source.html deleted file mode 100644 index 5b17eed..0000000 --- a/help/html/tweetDuplicateException_8h_source.html +++ /dev/null @@ -1,97 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/exception/tweetDuplicateException.h Source File - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    tweetDuplicateException.h
    -
    -
    -Go to the documentation of this file.
    1 #ifndef COCOATWEET_EXCEPTION_TWEETDUPLICATEEXCEPTION_H_
    -
    2 #define COCOATWEET_EXCEPTION_TWEETDUPLICATEEXCEPTION_H_
    -
    3 
    - -
    5 
    -
    6 namespace CocoaTweet::Exception {
    -
    7 class TweetDuplicateException final : public Exception {
    - -
    9 };
    -
    10 } // namespace CocoaTweet::Exception
    -
    11 
    -
    12 #endif
    -
    -
    Definition: tweetDuplicateException.h:7
    -
    Exception(const char *_msg)
    Definition: exception.h:10
    -
    Definition: authenticateException.h:6
    -
    Definition: exception.h:8
    - - - - - diff --git a/help/html/tweetNotFoundException_8h.html b/help/html/tweetNotFoundException_8h.html deleted file mode 100644 index 7f9adde..0000000 --- a/help/html/tweetNotFoundException_8h.html +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/exception/tweetNotFoundException.h File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    tweetNotFoundException.h File Reference
    -
    -
    -
    -Include dependency graph for tweetNotFoundException.h:
    -
    -
    - - - - - - -
    -
    -This graph shows which files directly or indirectly include this file:
    -
    -
    - - - - - -
    -
    -

    Go to the source code of this file.

    - - - - -

    -Classes

    class  CocoaTweet::Exception::TweetNotFoundException
     
    - - - - - -

    -Namespaces

     CocoaTweet
     
     CocoaTweet::Exception
     
    -
    - - - - diff --git a/help/html/tweetNotFoundException_8h__dep__incl.map b/help/html/tweetNotFoundException_8h__dep__incl.map deleted file mode 100644 index 93d587c..0000000 --- a/help/html/tweetNotFoundException_8h__dep__incl.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/help/html/tweetNotFoundException_8h__dep__incl.md5 b/help/html/tweetNotFoundException_8h__dep__incl.md5 deleted file mode 100644 index 11da60c..0000000 --- a/help/html/tweetNotFoundException_8h__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -96d61c25c5b045980fc2da0dfb87bf54 \ No newline at end of file diff --git a/help/html/tweetNotFoundException_8h__dep__incl.png b/help/html/tweetNotFoundException_8h__dep__incl.png deleted file mode 100644 index ffff4f8..0000000 Binary files a/help/html/tweetNotFoundException_8h__dep__incl.png and /dev/null differ diff --git a/help/html/tweetNotFoundException_8h__incl.map b/help/html/tweetNotFoundException_8h__incl.map deleted file mode 100644 index 7926b4e..0000000 --- a/help/html/tweetNotFoundException_8h__incl.map +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/help/html/tweetNotFoundException_8h__incl.md5 b/help/html/tweetNotFoundException_8h__incl.md5 deleted file mode 100644 index 5a35255..0000000 --- a/help/html/tweetNotFoundException_8h__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -cf704f660016618d2bab713aad168315 \ No newline at end of file diff --git a/help/html/tweetNotFoundException_8h__incl.png b/help/html/tweetNotFoundException_8h__incl.png deleted file mode 100644 index e3954b9..0000000 Binary files a/help/html/tweetNotFoundException_8h__incl.png and /dev/null differ diff --git a/help/html/tweetNotFoundException_8h_source.html b/help/html/tweetNotFoundException_8h_source.html deleted file mode 100644 index 07d4f57..0000000 --- a/help/html/tweetNotFoundException_8h_source.html +++ /dev/null @@ -1,97 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/exception/tweetNotFoundException.h Source File - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    tweetNotFoundException.h
    -
    -
    -Go to the documentation of this file.
    1 #ifndef COCOATWEET_EXCEPTION_TWEETNOTFOUNDEXCEPTION_H_
    -
    2 #define COCOATWEET_EXCEPTION_TWEETNOTFOUNDEXCEPTION_H_
    -
    3 
    - -
    5 
    -
    6 namespace CocoaTweet::Exception {
    -
    7 class TweetNotFoundException final : public Exception {
    - -
    9 };
    -
    10 } // namespace CocoaTweet::Exception
    -
    11 
    -
    12 #endif
    -
    -
    Definition: tweetNotFoundException.h:7
    -
    Exception(const char *_msg)
    Definition: exception.h:10
    -
    Definition: authenticateException.h:6
    -
    Definition: exception.h:8
    - - - - - diff --git a/help/html/tweetTooLongException_8h.html b/help/html/tweetTooLongException_8h.html deleted file mode 100644 index ea7eb41..0000000 --- a/help/html/tweetTooLongException_8h.html +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/exception/tweetTooLongException.h File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    tweetTooLongException.h File Reference
    -
    -
    -
    -Include dependency graph for tweetTooLongException.h:
    -
    -
    - - - - - - -
    -
    -This graph shows which files directly or indirectly include this file:
    -
    -
    - - - - - -
    -
    -

    Go to the source code of this file.

    - - - - -

    -Classes

    class  CocoaTweet::Exception::TweetTooLongException
     
    - - - - - -

    -Namespaces

     CocoaTweet
     
     CocoaTweet::Exception
     
    -
    - - - - diff --git a/help/html/tweetTooLongException_8h__dep__incl.map b/help/html/tweetTooLongException_8h__dep__incl.map deleted file mode 100644 index 675c028..0000000 --- a/help/html/tweetTooLongException_8h__dep__incl.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/help/html/tweetTooLongException_8h__dep__incl.md5 b/help/html/tweetTooLongException_8h__dep__incl.md5 deleted file mode 100644 index 3f0517e..0000000 --- a/help/html/tweetTooLongException_8h__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -13af3d0a5fde613947c3a792c6d7b0aa \ No newline at end of file diff --git a/help/html/tweetTooLongException_8h__dep__incl.png b/help/html/tweetTooLongException_8h__dep__incl.png deleted file mode 100644 index 409c21c..0000000 Binary files a/help/html/tweetTooLongException_8h__dep__incl.png and /dev/null differ diff --git a/help/html/tweetTooLongException_8h__incl.map b/help/html/tweetTooLongException_8h__incl.map deleted file mode 100644 index 2d3e7a1..0000000 --- a/help/html/tweetTooLongException_8h__incl.map +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/help/html/tweetTooLongException_8h__incl.md5 b/help/html/tweetTooLongException_8h__incl.md5 deleted file mode 100644 index 6465fed..0000000 --- a/help/html/tweetTooLongException_8h__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -550b0d8454554539c3f24258728a6f8b \ No newline at end of file diff --git a/help/html/tweetTooLongException_8h__incl.png b/help/html/tweetTooLongException_8h__incl.png deleted file mode 100644 index 59a06bd..0000000 Binary files a/help/html/tweetTooLongException_8h__incl.png and /dev/null differ diff --git a/help/html/tweetTooLongException_8h_source.html b/help/html/tweetTooLongException_8h_source.html deleted file mode 100644 index 6336d2f..0000000 --- a/help/html/tweetTooLongException_8h_source.html +++ /dev/null @@ -1,97 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/exception/tweetTooLongException.h Source File - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    tweetTooLongException.h
    -
    -
    -Go to the documentation of this file.
    1 #ifndef COCOATWEET_EXCEPTION_TWEETTOOLONGEXCEPTION_H_
    -
    2 #define COCOATWEET_EXCEPTION_TWEETTOOLONGEXCEPTION_H_
    -
    3 
    - -
    5 
    -
    6 namespace CocoaTweet::Exception {
    -
    7 class TweetTooLongException final : public Exception {
    - -
    9 };
    -
    10 } // namespace CocoaTweet::Exception
    -
    11 
    -
    12 #endif
    -
    -
    Exception(const char *_msg)
    Definition: exception.h:10
    -
    Definition: authenticateException.h:6
    -
    Definition: exception.h:8
    -
    Definition: tweetTooLongException.h:7
    - - - - - diff --git a/help/html/tweet_8cc.html b/help/html/tweet_8cc.html deleted file mode 100644 index 87fd31e..0000000 --- a/help/html/tweet_8cc.html +++ /dev/null @@ -1,106 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api/model/tweet.cc File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    tweet.cc File Reference
    -
    -
    -
    #include <cocoatweet/api/model/tweet.h>
    -#include "nlohmann/json.hpp"
    -
    -Include dependency graph for tweet.cc:
    -
    -
    - - - - - - - -
    -
    - - - - - - - -

    -Namespaces

     CocoaTweet
     
     CocoaTweet::API
     
     CocoaTweet::API::Model
     
    -
    - - - - diff --git a/help/html/tweet_8cc__incl.map b/help/html/tweet_8cc__incl.map deleted file mode 100644 index 1ba1b3b..0000000 --- a/help/html/tweet_8cc__incl.map +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/help/html/tweet_8cc__incl.md5 b/help/html/tweet_8cc__incl.md5 deleted file mode 100644 index 99b502c..0000000 --- a/help/html/tweet_8cc__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -412ed8ce3142c0809a0ee74f6d9cb99f \ No newline at end of file diff --git a/help/html/tweet_8cc__incl.png b/help/html/tweet_8cc__incl.png deleted file mode 100644 index 7fed31b..0000000 Binary files a/help/html/tweet_8cc__incl.png and /dev/null differ diff --git a/help/html/tweet_8h.html b/help/html/tweet_8h.html deleted file mode 100644 index a5bafb0..0000000 --- a/help/html/tweet_8h.html +++ /dev/null @@ -1,147 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api/model/tweet.h File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    tweet.h File Reference
    -
    -
    -
    #include <cocoatweet/api/model/user.h>
    -#include <string>
    -
    -Include dependency graph for tweet.h:
    -
    -
    - - - - - -
    -
    -This graph shows which files directly or indirectly include this file:
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    -

    Go to the source code of this file.

    - - - - - -

    -Classes

    class  CocoaTweet::API::Model::Tweet
     data class for tweet object More...
     
    - - - - - - - -

    -Namespaces

     CocoaTweet
     
     CocoaTweet::API
     
     CocoaTweet::API::Model
     
    -
    - - - - diff --git a/help/html/tweet_8h__dep__incl.map b/help/html/tweet_8h__dep__incl.map deleted file mode 100644 index 1299e3d..0000000 --- a/help/html/tweet_8h__dep__incl.map +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/help/html/tweet_8h__dep__incl.md5 b/help/html/tweet_8h__dep__incl.md5 deleted file mode 100644 index 935178e..0000000 --- a/help/html/tweet_8h__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -db5faeefd81ac1c938b126a0603d2e09 \ No newline at end of file diff --git a/help/html/tweet_8h__dep__incl.png b/help/html/tweet_8h__dep__incl.png deleted file mode 100644 index b6fe647..0000000 Binary files a/help/html/tweet_8h__dep__incl.png and /dev/null differ diff --git a/help/html/tweet_8h__incl.map b/help/html/tweet_8h__incl.map deleted file mode 100644 index 8ac7b04..0000000 --- a/help/html/tweet_8h__incl.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/help/html/tweet_8h__incl.md5 b/help/html/tweet_8h__incl.md5 deleted file mode 100644 index 6c3ec41..0000000 --- a/help/html/tweet_8h__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -f0efb62b3735ad2882b16029a4b275ee \ No newline at end of file diff --git a/help/html/tweet_8h__incl.png b/help/html/tweet_8h__incl.png deleted file mode 100644 index 6e1046f..0000000 Binary files a/help/html/tweet_8h__incl.png and /dev/null differ diff --git a/help/html/tweet_8h_source.html b/help/html/tweet_8h_source.html deleted file mode 100644 index 0cfe76b..0000000 --- a/help/html/tweet_8h_source.html +++ /dev/null @@ -1,140 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api/model/tweet.h Source File - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    tweet.h
    -
    -
    -Go to the documentation of this file.
    1 #ifndef COCOATWEET_API_MODEL_TWEET_H_
    -
    2 #define COCOATWEET_API_MODEL_TWEET_H_
    -
    3 
    - -
    5 #include <string>
    -
    6 
    -
    7 namespace CocoaTweet::API::Model {
    -
    8 
    -
    10 class Tweet final {
    -
    11 public:
    -
    13  Tweet() = default;
    -
    14 
    -
    16  Tweet(const Tweet&) = default;
    -
    17 
    -
    20  Tweet(const std::string& _json) : Tweet(Tweet::parse(_json)) {}
    -
    21 
    -
    25  static Tweet parse(const std::string& _json);
    -
    26 
    -
    30  void id(const std::string _id);
    -
    31 
    -
    35  void createdAt(const std::string _at);
    -
    36 
    -
    40  void text(const std::string _text);
    -
    41 
    -
    45  void source(const std::string _source);
    -
    46 
    -
    47  void user(const CocoaTweet::API::Model::User _user);
    -
    48 
    -
    52  const std::string id() const;
    -
    53 
    -
    57  const std::string createdAt() const;
    -
    58 
    -
    62  const std::string text() const;
    -
    63 
    -
    67  const std::string source() const;
    -
    68 
    -
    69  const CocoaTweet::API::Model::User user() const;
    -
    70 
    -
    71 private:
    -
    72  std::string id_;
    -
    73  std::string createdAt_;
    -
    74  std::string text_;
    -
    75  std::string source_;
    - -
    77 };
    -
    78 } // namespace CocoaTweet::API::Model
    -
    79 
    -
    80 #endif
    -
    -
    data class for tweet object
    Definition: tweet.h:10
    -
    const std::string text() const
    get tweet text
    Definition: tweet.cc:48
    -
    static Tweet parse(const std::string &_json)
    response parser for tweet object
    Definition: tweet.cc:5
    -
    Tweet(const std::string &_json)
    constructor for create object from json response
    Definition: tweet.h:20
    -
    Tweet()=default
    constructor
    -
    const std::string createdAt() const
    get tweet create time
    Definition: tweet.cc:44
    -
    const std::string source() const
    get tweet source information
    Definition: tweet.cc:52
    -
    Definition: mediaStore.cc:5
    - -
    const CocoaTweet::API::Model::User user() const
    Definition: tweet.cc:56
    -
    const std::string id() const
    get tweet id
    Definition: tweet.cc:40
    -
    data class for tweet object
    Definition: user.h:9
    - - - - diff --git a/help/html/unretweet_8cc.html b/help/html/unretweet_8cc.html deleted file mode 100644 index 3ba831f..0000000 --- a/help/html/unretweet_8cc.html +++ /dev/null @@ -1,112 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api/status/unretweet.cc File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    unretweet.cc File Reference
    -
    -
    -
    -Include dependency graph for unretweet.cc:
    -
    -
    - - - - - - - - - - - - - - -
    -
    - - - - - - - -

    -Namespaces

     CocoaTweet
     
     CocoaTweet::API
     
     CocoaTweet::API::Statuses
     
    -
    - - - - diff --git a/help/html/unretweet_8cc__incl.map b/help/html/unretweet_8cc__incl.map deleted file mode 100644 index 710fe7b..0000000 --- a/help/html/unretweet_8cc__incl.map +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/help/html/unretweet_8cc__incl.md5 b/help/html/unretweet_8cc__incl.md5 deleted file mode 100644 index 883b85f..0000000 --- a/help/html/unretweet_8cc__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -87a26e099ea6beb5fa4939ac707231bc \ No newline at end of file diff --git a/help/html/unretweet_8cc__incl.png b/help/html/unretweet_8cc__incl.png deleted file mode 100644 index 6c31da5..0000000 Binary files a/help/html/unretweet_8cc__incl.png and /dev/null differ diff --git a/help/html/unretweet_8h.html b/help/html/unretweet_8h.html deleted file mode 100644 index 428a0c2..0000000 --- a/help/html/unretweet_8h.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api/status/unretweet.h File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    unretweet.h File Reference
    -
    -
    -
    -Include dependency graph for unretweet.h:
    -
    -
    - - - - - - - - - - - - - -
    -
    -This graph shows which files directly or indirectly include this file:
    -
    -
    - - - - - -
    -
    -

    Go to the source code of this file.

    - - - - -

    -Classes

    class  CocoaTweet::API::Statuses::Unretweet
     
    - - - - - - - -

    -Namespaces

     CocoaTweet
     
     CocoaTweet::API
     
     CocoaTweet::API::Statuses
     
    -
    - - - - diff --git a/help/html/unretweet_8h__dep__incl.map b/help/html/unretweet_8h__dep__incl.map deleted file mode 100644 index 455dcd7..0000000 --- a/help/html/unretweet_8h__dep__incl.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/help/html/unretweet_8h__dep__incl.md5 b/help/html/unretweet_8h__dep__incl.md5 deleted file mode 100644 index a850f05..0000000 --- a/help/html/unretweet_8h__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -3111e3767f6eb9b50e2e3cb61eade387 \ No newline at end of file diff --git a/help/html/unretweet_8h__dep__incl.png b/help/html/unretweet_8h__dep__incl.png deleted file mode 100644 index 93462c7..0000000 Binary files a/help/html/unretweet_8h__dep__incl.png and /dev/null differ diff --git a/help/html/unretweet_8h__incl.map b/help/html/unretweet_8h__incl.map deleted file mode 100644 index 5716c70..0000000 --- a/help/html/unretweet_8h__incl.map +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/help/html/unretweet_8h__incl.md5 b/help/html/unretweet_8h__incl.md5 deleted file mode 100644 index d6a3da2..0000000 --- a/help/html/unretweet_8h__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -01c5c27a2106295734f75d669bc1d2c0 \ No newline at end of file diff --git a/help/html/unretweet_8h__incl.png b/help/html/unretweet_8h__incl.png deleted file mode 100644 index 40bb258..0000000 Binary files a/help/html/unretweet_8h__incl.png and /dev/null differ diff --git a/help/html/unretweet_8h_source.html b/help/html/unretweet_8h_source.html deleted file mode 100644 index ab9c932..0000000 --- a/help/html/unretweet_8h_source.html +++ /dev/null @@ -1,107 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api/status/unretweet.h Source File - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    unretweet.h
    -
    -
    -Go to the documentation of this file.
    1 #ifndef COCOATWEET_API_STATUS_UNRETWEET_H_
    -
    2 #define COCOATWEET_API_STATUS_UNRETWEET_H_
    -
    3 
    - - -
    6 
    - - -
    9 public:
    -
    10  Unretweet();
    -
    11 
    -
    12  void id(const std::string& _id);
    -
    13 
    -
    14  CocoaTweet::API::Model::Tweet process(std::weak_ptr<CocoaTweet::OAuth::OAuth1> _oauth);
    -
    15 };
    -
    16 } // namespace CocoaTweet::API::Statuses
    -
    17 
    -
    18 #endif
    -
    -
    class for Send request with POST method
    Definition: httpPost.h:10
    -
    Definition: unretweet.h:8
    -
    data class for tweet object
    Definition: tweet.h:10
    - -
    void id(const std::string &_id)
    Definition: unretweet.cc:6
    - -
    CocoaTweet::API::Model::Tweet process(std::weak_ptr< CocoaTweet::OAuth::OAuth1 > _oauth)
    Definition: unretweet.cc:11
    -
    Definition: destroy.cc:4
    -
    Unretweet()
    Definition: unretweet.cc:4
    - - - - diff --git a/help/html/unsupportedMediaTypeException_8h.html b/help/html/unsupportedMediaTypeException_8h.html deleted file mode 100644 index 9d8bdf5..0000000 --- a/help/html/unsupportedMediaTypeException_8h.html +++ /dev/null @@ -1,119 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/exception/unsupportedMediaTypeException.h File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    unsupportedMediaTypeException.h File Reference
    -
    -
    -
    -Include dependency graph for unsupportedMediaTypeException.h:
    -
    -
    - - - - - - -
    -
    -This graph shows which files directly or indirectly include this file:
    -
    -
    - - - - -
    -
    -

    Go to the source code of this file.

    - - - - -

    -Classes

    class  CocoaTweet::Exception::UnsupportedMediaTypeException
     
    - - - - - -

    -Namespaces

     CocoaTweet
     
     CocoaTweet::Exception
     
    -
    - - - - diff --git a/help/html/unsupportedMediaTypeException_8h__dep__incl.map b/help/html/unsupportedMediaTypeException_8h__dep__incl.map deleted file mode 100644 index ed72f16..0000000 --- a/help/html/unsupportedMediaTypeException_8h__dep__incl.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/help/html/unsupportedMediaTypeException_8h__dep__incl.md5 b/help/html/unsupportedMediaTypeException_8h__dep__incl.md5 deleted file mode 100644 index 6f00c9f..0000000 --- a/help/html/unsupportedMediaTypeException_8h__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -ea735e2c0a865afc984b8dc1725f7445 \ No newline at end of file diff --git a/help/html/unsupportedMediaTypeException_8h__dep__incl.png b/help/html/unsupportedMediaTypeException_8h__dep__incl.png deleted file mode 100644 index 6945a1f..0000000 Binary files a/help/html/unsupportedMediaTypeException_8h__dep__incl.png and /dev/null differ diff --git a/help/html/unsupportedMediaTypeException_8h__incl.map b/help/html/unsupportedMediaTypeException_8h__incl.map deleted file mode 100644 index 9f86bf4..0000000 --- a/help/html/unsupportedMediaTypeException_8h__incl.map +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/help/html/unsupportedMediaTypeException_8h__incl.md5 b/help/html/unsupportedMediaTypeException_8h__incl.md5 deleted file mode 100644 index 15c5a17..0000000 --- a/help/html/unsupportedMediaTypeException_8h__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -5550d662a45dc2c25d731f3b7221dbce \ No newline at end of file diff --git a/help/html/unsupportedMediaTypeException_8h__incl.png b/help/html/unsupportedMediaTypeException_8h__incl.png deleted file mode 100644 index 71961e4..0000000 Binary files a/help/html/unsupportedMediaTypeException_8h__incl.png and /dev/null differ diff --git a/help/html/unsupportedMediaTypeException_8h_source.html b/help/html/unsupportedMediaTypeException_8h_source.html deleted file mode 100644 index 77efd7e..0000000 --- a/help/html/unsupportedMediaTypeException_8h_source.html +++ /dev/null @@ -1,97 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/exception/unsupportedMediaTypeException.h Source File - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    unsupportedMediaTypeException.h
    -
    -
    -Go to the documentation of this file.
    1 #ifndef COCOATWEET_EXCEPTION_UNSUPPORTEDMEDIATYPEEXCEPTION_H_
    -
    2 #define COCOATWEET_EXCEPTION_UNSUPPORTEDMEDIATYPEEXCEPTION_H_
    -
    3 
    - -
    5 
    -
    6 namespace CocoaTweet::Exception {
    - - -
    9 };
    -
    10 } // namespace CocoaTweet::Exception
    -
    11 
    -
    12 #endif
    -
    -
    Definition: unsupportedMediaTypeException.h:7
    -
    Exception(const char *_msg)
    Definition: exception.h:10
    -
    Definition: authenticateException.h:6
    -
    Definition: exception.h:8
    - - - - - diff --git a/help/html/update_8cc.html b/help/html/update_8cc.html deleted file mode 100644 index a9a8d81..0000000 --- a/help/html/update_8cc.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api/status/update.cc File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    update.cc File Reference
    -
    -
    -
    -Include dependency graph for update.cc:
    -
    -
    - - - - - - - - - - - - - - - - - - -
    -
    - - - - - - - -

    -Namespaces

     CocoaTweet
     
     CocoaTweet::API
     
     CocoaTweet::API::Statuses
     
    -
    - - - - diff --git a/help/html/update_8cc__incl.map b/help/html/update_8cc__incl.map deleted file mode 100644 index 91e7b63..0000000 --- a/help/html/update_8cc__incl.map +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/help/html/update_8cc__incl.md5 b/help/html/update_8cc__incl.md5 deleted file mode 100644 index b94a6a9..0000000 --- a/help/html/update_8cc__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -227dc41272df49f3adb7a4ea5bc2353e \ No newline at end of file diff --git a/help/html/update_8cc__incl.png b/help/html/update_8cc__incl.png deleted file mode 100644 index 2896033..0000000 Binary files a/help/html/update_8cc__incl.png and /dev/null differ diff --git a/help/html/update_8h.html b/help/html/update_8h.html deleted file mode 100644 index 4ad312e..0000000 --- a/help/html/update_8h.html +++ /dev/null @@ -1,136 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api/status/update.h File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    update.h File Reference
    -
    -
    -
    #include <cocoatweet/api/interface/httpPost.h>
    -#include <cocoatweet/api/model/tweet.h>
    -#include <vector>
    -#include <utility>
    -#include <memory>
    -
    -Include dependency graph for update.h:
    -
    -
    - - - - - - - - - - - - - - - -
    -
    -This graph shows which files directly or indirectly include this file:
    -
    -
    - - - - - -
    -
    -

    Go to the source code of this file.

    - - - - - -

    -Classes

    class  CocoaTweet::API::Statuses::Update
     class for using statuses/update endpoint More...
     
    - - - - - - - -

    -Namespaces

     CocoaTweet
     
     CocoaTweet::API
     
     CocoaTweet::API::Statuses
     
    -
    - - - - diff --git a/help/html/update_8h__dep__incl.map b/help/html/update_8h__dep__incl.map deleted file mode 100644 index d9df50a..0000000 --- a/help/html/update_8h__dep__incl.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/help/html/update_8h__dep__incl.md5 b/help/html/update_8h__dep__incl.md5 deleted file mode 100644 index 5b8d0a0..0000000 --- a/help/html/update_8h__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -9dd5200def6a66ab7beba597c06c69cc \ No newline at end of file diff --git a/help/html/update_8h__dep__incl.png b/help/html/update_8h__dep__incl.png deleted file mode 100644 index a4db974..0000000 Binary files a/help/html/update_8h__dep__incl.png and /dev/null differ diff --git a/help/html/update_8h__incl.map b/help/html/update_8h__incl.map deleted file mode 100644 index 8f05f31..0000000 --- a/help/html/update_8h__incl.map +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/help/html/update_8h__incl.md5 b/help/html/update_8h__incl.md5 deleted file mode 100644 index 194f64b..0000000 --- a/help/html/update_8h__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -2de3796305be5fd5caafb30db2ebbeb1 \ No newline at end of file diff --git a/help/html/update_8h__incl.png b/help/html/update_8h__incl.png deleted file mode 100644 index 9d8cc2c..0000000 Binary files a/help/html/update_8h__incl.png and /dev/null differ diff --git a/help/html/update_8h_source.html b/help/html/update_8h_source.html deleted file mode 100644 index f35e232..0000000 --- a/help/html/update_8h_source.html +++ /dev/null @@ -1,143 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api/status/update.h Source File - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    update.h
    -
    -
    -Go to the documentation of this file.
    1 #ifndef COCOATWEET_API_STATUS_UPDATE_H_
    -
    2 #define COCOATWEET_API_STATUS_UPDATE_H_
    -
    3 
    - - -
    6 #include <vector>
    -
    7 #include <utility>
    -
    8 #include <memory>
    -
    9 
    -
    10 namespace CocoaTweet::API::Statuses {
    - -
    13 public:
    -
    15  Update();
    -
    16 
    -
    20  void status(const std::string _status);
    -
    21 
    -
    22  void mediaId(const std::vector<std::string> _media);
    -
    23 
    -
    24  void replyToStatusId(const std::string _reply);
    -
    25 
    -
    26  void autoPopulateReplyMetaData(bool _meta);
    -
    27 
    -
    28  void excludeReplyUserId(const std::vector<std::string> _ex);
    -
    29 
    -
    30  void attachmentUrl(const std::string _url);
    -
    31 
    -
    32  void coord(std::pair<std::string, std::string> _coord);
    -
    33 
    -
    34  void displayCoord(bool _disp);
    -
    35 
    -
    36  void trimUser(bool _trim);
    -
    37 
    -
    38  void enableDMCommands(bool _enable);
    -
    39 
    -
    40  void failDMCommands(bool _fail);
    -
    41 
    -
    45  CocoaTweet::API::Model::Tweet process(std::weak_ptr<CocoaTweet::OAuth::OAuth1> _oauth);
    -
    46 
    -
    47 private:
    -
    48  std::string status_;
    -
    49 };
    -
    50 } // namespace CocoaTweet::API::Statuses
    -
    51 
    -
    52 #endif
    -
    -
    CocoaTweet::API::Model::Tweet process(std::weak_ptr< CocoaTweet::OAuth::OAuth1 > _oauth)
    process request for endpoint
    Definition: update.cc:56
    -
    class for Send request with POST method
    Definition: httpPost.h:10
    -
    data class for tweet object
    Definition: tweet.h:10
    -
    void coord(std::pair< std::string, std::string > _coord)
    Definition: update.cc:35
    - -
    void attachmentUrl(const std::string _url)
    Definition: update.cc:31
    -
    void excludeReplyUserId(const std::vector< std::string > _ex)
    Definition: update.cc:27
    -
    void autoPopulateReplyMetaData(bool _meta)
    Definition: update.cc:23
    -
    void enableDMCommands(bool _enable)
    Definition: update.cc:48
    -
    Update()
    primary constructor
    Definition: update.cc:5
    -
    class for using statuses/update endpoint
    Definition: update.h:12
    -
    void trimUser(bool _trim)
    Definition: update.cc:44
    - -
    void replyToStatusId(const std::string _reply)
    Definition: update.cc:19
    -
    void displayCoord(bool _disp)
    Definition: update.cc:40
    -
    void failDMCommands(bool _fail)
    Definition: update.cc:52
    -
    Definition: destroy.cc:4
    -
    void mediaId(const std::vector< std::string > _media)
    Definition: update.cc:15
    -
    void status(const std::string _status)
    set tweet text for sending request to statuses/update
    Definition: update.cc:10
    - - - - diff --git a/help/html/update_8py.html b/help/html/update_8py.html deleted file mode 100644 index d753df2..0000000 --- a/help/html/update_8py.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - - -CocoaTweet: build/_deps/json-src/update.py File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    update.py File Reference
    -
    -
    - - - - -

    -Namespaces

     update
     
    - - - - - - - - - - - - - - - - - - - - - - - -

    -Variables

     update.releases = json.loads(str(urllib.request.urlopen('https://api.github.com/repos/nlohmann/json/releases').read(), 'utf-8'))
     
    list update.release_url_map = []
     
     update.process = subprocess.Popen(['git', 'tag'], stdout=subprocess.PIPE)
     
     update.tags = set(filter(None, str(tags, 'utf-8').split("\n")))
     
    bool update.did_update = False
     
     update.mode
     
     update.o777
     
     update.exist_ok
     
     update.data = urllib.request.urlopen(url).read();
     
    bool update.has_json_fwd = False
     
    string update.json_fwd_url = 'https://github.com/nlohmann/json/raw/{}/include/nlohmann/json_fwd.hpp'.format(tag);
     
    -
    - - - - diff --git a/help/html/upload_8cc.html b/help/html/upload_8cc.html deleted file mode 100644 index 7c22e00..0000000 --- a/help/html/upload_8cc.html +++ /dev/null @@ -1,119 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api/media/upload.cc File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    upload.cc File Reference
    -
    -
    -
    -Include dependency graph for upload.cc:
    -
    -
    - - - - - - - - - - - - - - - - - - -
    -
    - - - - - - - -

    -Namespaces

     CocoaTweet
     
     CocoaTweet::API
     
     CocoaTweet::API::Medias
     
    -
    - - - - diff --git a/help/html/upload_8cc__incl.map b/help/html/upload_8cc__incl.map deleted file mode 100644 index b63db7e..0000000 --- a/help/html/upload_8cc__incl.map +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/help/html/upload_8cc__incl.md5 b/help/html/upload_8cc__incl.md5 deleted file mode 100644 index a905ec4..0000000 --- a/help/html/upload_8cc__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -e155116fa04b527b3b5a29cfd7082e48 \ No newline at end of file diff --git a/help/html/upload_8cc__incl.png b/help/html/upload_8cc__incl.png deleted file mode 100644 index 3a334c0..0000000 Binary files a/help/html/upload_8cc__incl.png and /dev/null differ diff --git a/help/html/upload_8h.html b/help/html/upload_8h.html deleted file mode 100644 index edcd061..0000000 --- a/help/html/upload_8h.html +++ /dev/null @@ -1,137 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api/media/upload.h File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    upload.h File Reference
    -
    -
    -
    #include <cocoatweet/api/interface/httpPost.h>
    -#include <cocoatweet/api/model/mediaStore.h>
    -#include <string>
    -#include <filesystem>
    -
    -Include dependency graph for upload.h:
    -
    -
    - - - - - - - - - - - - - -
    -
    -This graph shows which files directly or indirectly include this file:
    -
    -
    - - - - - - - - - -
    -
    -

    Go to the source code of this file.

    - - - - - -

    -Classes

    class  CocoaTweet::API::Medias::Upload
     entry point for using media/upload endpoint More...
     
    - - - - - - - -

    -Namespaces

     CocoaTweet
     
     CocoaTweet::API
     
     CocoaTweet::API::Medias
     
    -
    - - - - diff --git a/help/html/upload_8h__dep__incl.map b/help/html/upload_8h__dep__incl.map deleted file mode 100644 index f7f28f3..0000000 --- a/help/html/upload_8h__dep__incl.map +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/help/html/upload_8h__dep__incl.md5 b/help/html/upload_8h__dep__incl.md5 deleted file mode 100644 index b1e2045..0000000 --- a/help/html/upload_8h__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -6cc24dc5e905aba0eda697f20737bb5a \ No newline at end of file diff --git a/help/html/upload_8h__dep__incl.png b/help/html/upload_8h__dep__incl.png deleted file mode 100644 index 9f192e9..0000000 Binary files a/help/html/upload_8h__dep__incl.png and /dev/null differ diff --git a/help/html/upload_8h__incl.map b/help/html/upload_8h__incl.map deleted file mode 100644 index 9b683e2..0000000 --- a/help/html/upload_8h__incl.map +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/help/html/upload_8h__incl.md5 b/help/html/upload_8h__incl.md5 deleted file mode 100644 index 5599f86..0000000 --- a/help/html/upload_8h__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -221fccd988a656f18eab18857d5a92d2 \ No newline at end of file diff --git a/help/html/upload_8h__incl.png b/help/html/upload_8h__incl.png deleted file mode 100644 index 886be26..0000000 Binary files a/help/html/upload_8h__incl.png and /dev/null differ diff --git a/help/html/upload_8h_source.html b/help/html/upload_8h_source.html deleted file mode 100644 index dfe3c42..0000000 --- a/help/html/upload_8h_source.html +++ /dev/null @@ -1,116 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api/media/upload.h Source File - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    upload.h
    -
    -
    -Go to the documentation of this file.
    1 #ifndef COCOATWEET_API_MEDIA_UPLOAD_H_
    -
    2 #define COCOATWEET_API_MEDIA_UPLOAD_H_
    -
    3 
    - - -
    6 #include <string>
    -
    7 #include <filesystem>
    -
    8 
    -
    9 namespace CocoaTweet::API::Medias {
    - -
    12 private:
    -
    13  std::string media_;
    -
    14  static const std::map<std::string, std::string> mimeType;
    -
    15 
    -
    16 public:
    -
    18  Upload();
    -
    19 
    -
    23  void media(const std::string& _media);
    -
    24 
    -
    26  void mediaId(const std::string& _mediaId);
    -
    27 
    -
    33  CocoaTweet::API::Model::MediaStore process(std::weak_ptr<CocoaTweet::OAuth::OAuth1> _oauth);
    -
    34 };
    -
    35 } // namespace CocoaTweet::API::Medias
    -
    36 
    -
    37 #endif
    -
    -
    CocoaTweet::API::Model::MediaStore process(std::weak_ptr< CocoaTweet::OAuth::OAuth1 > _oauth)
    upload media
    Definition: upload.cc:21
    -
    class for Send request with POST method
    Definition: httpPost.h:10
    -
    data class for tweet object
    Definition: mediaStore.h:9
    -
    void media(const std::string &_media)
    set media file with absolute path
    Definition: upload.cc:15
    -
    Upload()
    default constructor
    Definition: upload.cc:11
    -
    Definition: media.cc:3
    -
    void mediaId(const std::string &_mediaId)
    set media id(no affect to process. will be obsoleted)
    Definition: upload.cc:19
    - -
    entry point for using media/upload endpoint
    Definition: upload.h:11
    - - - - - diff --git a/help/html/userTimeline_8cc.html b/help/html/userTimeline_8cc.html deleted file mode 100644 index a01c144..0000000 --- a/help/html/userTimeline_8cc.html +++ /dev/null @@ -1,119 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api/status/userTimeline.cc File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    userTimeline.cc File Reference
    -
    -
    -
    #include "cocoatweet/api/status/userTimeline.h"
    -#include <cocoatweet/util/util.h>
    -#include "nlohmann/json.hpp"
    -
    -Include dependency graph for userTimeline.cc:
    -
    -
    - - - - - - - - - - - - - - - - - - - -
    -
    - - - - - - - -

    -Namespaces

     CocoaTweet
     
     CocoaTweet::API
     
     CocoaTweet::API::Statuses
     
    -
    - - - - diff --git a/help/html/userTimeline_8cc__incl.map b/help/html/userTimeline_8cc__incl.map deleted file mode 100644 index 39134c3..0000000 --- a/help/html/userTimeline_8cc__incl.map +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/help/html/userTimeline_8cc__incl.md5 b/help/html/userTimeline_8cc__incl.md5 deleted file mode 100644 index d06a132..0000000 --- a/help/html/userTimeline_8cc__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -92e10190a4d278a9eef0cdf454c1fd8b \ No newline at end of file diff --git a/help/html/userTimeline_8cc__incl.png b/help/html/userTimeline_8cc__incl.png deleted file mode 100644 index a559682..0000000 Binary files a/help/html/userTimeline_8cc__incl.png and /dev/null differ diff --git a/help/html/userTimeline_8h.html b/help/html/userTimeline_8h.html deleted file mode 100644 index be9d639..0000000 --- a/help/html/userTimeline_8h.html +++ /dev/null @@ -1,136 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api/status/userTimeline.h File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    userTimeline.h File Reference
    -
    -
    -
    #include <cocoatweet/api/interface/httpGet.h>
    -#include <cocoatweet/api/model/tweet.h>
    -#include <vector>
    -#include <utility>
    -#include <memory>
    -
    -Include dependency graph for userTimeline.h:
    -
    -
    - - - - - - - - - - - - - - - -
    -
    -This graph shows which files directly or indirectly include this file:
    -
    -
    - - - - - -
    -
    -

    Go to the source code of this file.

    - - - - - -

    -Classes

    class  CocoaTweet::API::Statuses::UserTimeline
     class for using statuses/user_timeline endpoint More...
     
    - - - - - - - -

    -Namespaces

     CocoaTweet
     
     CocoaTweet::API
     
     CocoaTweet::API::Statuses
     
    -
    - - - - diff --git a/help/html/userTimeline_8h__dep__incl.map b/help/html/userTimeline_8h__dep__incl.map deleted file mode 100644 index e2ea538..0000000 --- a/help/html/userTimeline_8h__dep__incl.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/help/html/userTimeline_8h__dep__incl.md5 b/help/html/userTimeline_8h__dep__incl.md5 deleted file mode 100644 index eee9411..0000000 --- a/help/html/userTimeline_8h__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -d4e37aec4ed8492709897b1f36dbcdc9 \ No newline at end of file diff --git a/help/html/userTimeline_8h__dep__incl.png b/help/html/userTimeline_8h__dep__incl.png deleted file mode 100644 index 14d6d28..0000000 Binary files a/help/html/userTimeline_8h__dep__incl.png and /dev/null differ diff --git a/help/html/userTimeline_8h__incl.map b/help/html/userTimeline_8h__incl.map deleted file mode 100644 index de650af..0000000 --- a/help/html/userTimeline_8h__incl.map +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/help/html/userTimeline_8h__incl.md5 b/help/html/userTimeline_8h__incl.md5 deleted file mode 100644 index cab66d0..0000000 --- a/help/html/userTimeline_8h__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -60bf0dd4d9a2436f22c7d58871abad47 \ No newline at end of file diff --git a/help/html/userTimeline_8h__incl.png b/help/html/userTimeline_8h__incl.png deleted file mode 100644 index 844cdcc..0000000 Binary files a/help/html/userTimeline_8h__incl.png and /dev/null differ diff --git a/help/html/userTimeline_8h_source.html b/help/html/userTimeline_8h_source.html deleted file mode 100644 index 5dab264..0000000 --- a/help/html/userTimeline_8h_source.html +++ /dev/null @@ -1,113 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api/status/userTimeline.h Source File - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    userTimeline.h
    -
    -
    -Go to the documentation of this file.
    1 #ifndef COCOATWEET_API_STATUS_USERTIMELINE_H_
    -
    2 #define COCOATWEET_API_STATUS_USERTIMELINE_H_
    -
    3 
    - - -
    6 #include <vector>
    -
    7 #include <utility>
    -
    8 #include <memory>
    -
    9 
    -
    10 namespace CocoaTweet::API::Statuses {
    - -
    13 public:
    -
    15  UserTimeline();
    -
    16 
    -
    19  void screenName(const std::string& _screenName);
    -
    20 
    -
    24  std::vector<CocoaTweet::API::Model::Tweet> process(
    -
    25  std::weak_ptr<CocoaTweet::OAuth::OAuth1> _oauth);
    -
    26 
    -
    27 private:
    -
    28  std::string status_;
    -
    29 };
    -
    30 } // namespace CocoaTweet::API::Statuses
    -
    31 
    -
    32 #endif
    -
    - - -
    UserTimeline()
    primary constructor
    Definition: userTimeline.cc:6
    -
    class for using statuses/user_timeline endpoint
    Definition: userTimeline.h:12
    -
    class for Send request with POST method
    Definition: httpGet.h:10
    -
    void screenName(const std::string &_screenName)
    set screen name to get timeline
    Definition: userTimeline.cc:11
    -
    std::vector< CocoaTweet::API::Model::Tweet > process(std::weak_ptr< CocoaTweet::OAuth::OAuth1 > _oauth)
    process request for endpoint
    Definition: userTimeline.cc:15
    -
    Definition: destroy.cc:4
    - - - - diff --git a/help/html/user_8cc.html b/help/html/user_8cc.html deleted file mode 100644 index 4174e5a..0000000 --- a/help/html/user_8cc.html +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api/model/user.cc File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    user.cc File Reference
    -
    -
    -
    #include <cocoatweet/api/model/user.h>
    -#include "nlohmann/json.hpp"
    -
    -Include dependency graph for user.cc:
    -
    -
    - - - - - - -
    -
    - - - - - - - -

    -Namespaces

     CocoaTweet
     
     CocoaTweet::API
     
     CocoaTweet::API::Model
     
    -
    - - - - diff --git a/help/html/user_8cc__incl.map b/help/html/user_8cc__incl.map deleted file mode 100644 index 547e222..0000000 --- a/help/html/user_8cc__incl.map +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/help/html/user_8cc__incl.md5 b/help/html/user_8cc__incl.md5 deleted file mode 100644 index 6cdf4d7..0000000 --- a/help/html/user_8cc__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -bde5f2e64d7d0efbfe8490b5df874d84 \ No newline at end of file diff --git a/help/html/user_8cc__incl.png b/help/html/user_8cc__incl.png deleted file mode 100644 index e4971e4..0000000 Binary files a/help/html/user_8cc__incl.png and /dev/null differ diff --git a/help/html/user_8h.html b/help/html/user_8h.html deleted file mode 100644 index 643a40e..0000000 --- a/help/html/user_8h.html +++ /dev/null @@ -1,147 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api/model/user.h File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    user.h File Reference
    -
    -
    -
    #include <string>
    -
    -Include dependency graph for user.h:
    -
    -
    - - - - -
    -
    -This graph shows which files directly or indirectly include this file:
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    -

    Go to the source code of this file.

    - - - - - -

    -Classes

    class  CocoaTweet::API::Model::User
     data class for tweet object More...
     
    - - - - - - - -

    -Namespaces

     CocoaTweet
     
     CocoaTweet::API
     
     CocoaTweet::API::Model
     
    -
    - - - - diff --git a/help/html/user_8h__dep__incl.map b/help/html/user_8h__dep__incl.map deleted file mode 100644 index 6767a3b..0000000 --- a/help/html/user_8h__dep__incl.map +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/help/html/user_8h__dep__incl.md5 b/help/html/user_8h__dep__incl.md5 deleted file mode 100644 index c03ebd6..0000000 --- a/help/html/user_8h__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -cd3b88987eb84285aaf76f2a662348d3 \ No newline at end of file diff --git a/help/html/user_8h__dep__incl.png b/help/html/user_8h__dep__incl.png deleted file mode 100644 index 2d123d3..0000000 Binary files a/help/html/user_8h__dep__incl.png and /dev/null differ diff --git a/help/html/user_8h__incl.map b/help/html/user_8h__incl.map deleted file mode 100644 index 10d842e..0000000 --- a/help/html/user_8h__incl.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/help/html/user_8h__incl.md5 b/help/html/user_8h__incl.md5 deleted file mode 100644 index 9734734..0000000 --- a/help/html/user_8h__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -ea8c01375c4ffed0683db51e68b59761 \ No newline at end of file diff --git a/help/html/user_8h__incl.png b/help/html/user_8h__incl.png deleted file mode 100644 index d1a5903..0000000 Binary files a/help/html/user_8h__incl.png and /dev/null differ diff --git a/help/html/user_8h_source.html b/help/html/user_8h_source.html deleted file mode 100644 index 252f21d..0000000 --- a/help/html/user_8h_source.html +++ /dev/null @@ -1,167 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/api/model/user.h Source File - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    user.h
    -
    -
    -Go to the documentation of this file.
    1 #ifndef COCOATWEET_API_MODEL_USER_H_
    -
    2 #define COCOATWEET_API_MODEL_USER_H_
    -
    3 
    -
    4 #include <string>
    -
    5 
    -
    6 namespace CocoaTweet::API::Model {
    -
    7 
    -
    9 class User final {
    -
    10 public:
    -
    12  User() = default;
    -
    13 
    -
    15  User(const User&) = default;
    -
    16 
    -
    19  User(const std::string& _json) : User(User::parse(_json)) {}
    -
    20 
    -
    24  static User parse(const std::string& _json);
    -
    25 
    -
    26  void id(const std::string& _id);
    -
    27  void name(const std::string& _name);
    -
    28  void screenName(const std::string& _screen);
    -
    29  void location(const std::string& _location);
    -
    30  void url(const std::string& _url);
    -
    31  void description(const std::string& _description);
    -
    32  void protectedUser(const bool _protected);
    -
    33  void follower(const long _follower);
    -
    34  void follow(const long _follow);
    -
    35  void listed(const long _listed);
    -
    36  void favorite(const long _favorite);
    -
    37  void createdAt(const std::string& _created);
    -
    38  void bannerUrl(const std::string& _banner);
    -
    39  void iconUrl(const std::string& _icon);
    -
    40 
    -
    41  const std::string& id() const;
    -
    42  const std::string& name() const;
    -
    43  const std::string& screenName() const;
    -
    44  const std::string& location() const;
    -
    45  const std::string& url() const;
    -
    46  const std::string& description() const;
    -
    47  bool protectedUser() const;
    -
    48  long follower() const;
    -
    49  long follow() const;
    -
    50  long listed() const;
    -
    51  long favorite() const;
    -
    52  const std::string& created() const;
    -
    53  const std::string& bannerUrl() const;
    -
    54  const std::string& icon() const;
    -
    55 
    -
    56 private:
    -
    57  std::string id_;
    -
    58  std::string name_;
    -
    59  std::string screenName_;
    -
    60  std::string location_;
    -
    61  std::string url_;
    -
    62  std::string description_;
    -
    63  bool protectedUser_;
    -
    64  long follower_;
    -
    65  long follow_;
    -
    66  long listed_;
    -
    67  long favorite_;
    -
    68  std::string createdAt_;
    -
    69  std::string bannerUrl_;
    -
    70  std::string iconUrl_;
    -
    71 };
    -
    72 } // namespace CocoaTweet::API::Model
    -
    73 
    -
    74 #endif
    -
    -
    const std::string & icon() const
    Definition: user.cc:126
    -
    long follower() const
    Definition: user.cc:108
    -
    void createdAt(const std::string &_created)
    Definition: user.cc:76
    -
    const std::string & url() const
    Definition: user.cc:99
    -
    bool protectedUser() const
    Definition: user.cc:105
    -
    const std::string & created() const
    Definition: user.cc:120
    -
    const std::string & description() const
    Definition: user.cc:102
    -
    long listed() const
    Definition: user.cc:114
    -
    User(const std::string &_json)
    constructor for create object from json response
    Definition: user.h:19
    -
    User()=default
    constructor
    -
    const std::string & id() const
    Definition: user.cc:86
    -
    long follow() const
    Definition: user.cc:111
    -
    Definition: mediaStore.cc:5
    -
    const std::string & location() const
    Definition: user.cc:96
    -
    long favorite() const
    Definition: user.cc:117
    -
    void iconUrl(const std::string &_icon)
    Definition: user.cc:82
    -
    const std::string & name() const
    Definition: user.cc:90
    -
    const std::string & bannerUrl() const
    Definition: user.cc:123
    -
    static User parse(const std::string &_json)
    response parser for user object
    Definition: user.cc:5
    -
    const std::string & screenName() const
    Definition: user.cc:93
    -
    data class for tweet object
    Definition: user.h:9
    - - - - diff --git a/help/html/util_8cc.html b/help/html/util_8cc.html deleted file mode 100644 index 5422a81..0000000 --- a/help/html/util_8cc.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/util/util.cc File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    util.cc File Reference
    -
    -
    -
    #include "cocoatweet/util/util.h"
    -#include <cctype>
    -#include <iomanip>
    -
    -Include dependency graph for util.cc:
    -
    -
    - - - - - - - - - -
    -
    - - - - - -

    -Namespaces

     CocoaTweet
     
     CocoaTweet::Util
     
    - - - - - -

    -Functions

    std::string CocoaTweet::Util::urlEncode (const std::string &_str)
     
    std::string CocoaTweet::Util::join (const std::vector< std::string > _vec, const std::string &_delim)
     
    -
    - - - - diff --git a/help/html/util_8cc__incl.map b/help/html/util_8cc__incl.map deleted file mode 100644 index ec6a21d..0000000 --- a/help/html/util_8cc__incl.map +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/help/html/util_8cc__incl.md5 b/help/html/util_8cc__incl.md5 deleted file mode 100644 index 68ace1f..0000000 --- a/help/html/util_8cc__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -3922e1bf7ca1447c9244afe1dffe6c1f \ No newline at end of file diff --git a/help/html/util_8cc__incl.png b/help/html/util_8cc__incl.png deleted file mode 100644 index ef0b18a..0000000 Binary files a/help/html/util_8cc__incl.png and /dev/null differ diff --git a/help/html/util_8h.html b/help/html/util_8h.html deleted file mode 100644 index 0dcb8da..0000000 --- a/help/html/util_8h.html +++ /dev/null @@ -1,129 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/util/util.h File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    util.h File Reference
    -
    -
    -
    #include <vector>
    -#include <string>
    -#include <sstream>
    -
    -Include dependency graph for util.h:
    -
    -
    - - - - - - -
    -
    -This graph shows which files directly or indirectly include this file:
    -
    -
    - - - - - - - - - - -
    -
    -

    Go to the source code of this file.

    - - - - - - -

    -Namespaces

     CocoaTweet
     
     CocoaTweet::Util
     
    - - - - - -

    -Functions

    std::string CocoaTweet::Util::urlEncode (const std::string &_str)
     
    std::string CocoaTweet::Util::join (const std::vector< std::string > _vec, const std::string &_delim)
     
    -
    - - - - diff --git a/help/html/util_8h__dep__incl.map b/help/html/util_8h__dep__incl.map deleted file mode 100644 index 7b5ceb6..0000000 --- a/help/html/util_8h__dep__incl.map +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/help/html/util_8h__dep__incl.md5 b/help/html/util_8h__dep__incl.md5 deleted file mode 100644 index e71eca8..0000000 --- a/help/html/util_8h__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -1834c1155d9a4ba3a9914a01c1dee097 \ No newline at end of file diff --git a/help/html/util_8h__dep__incl.png b/help/html/util_8h__dep__incl.png deleted file mode 100644 index 337ac49..0000000 Binary files a/help/html/util_8h__dep__incl.png and /dev/null differ diff --git a/help/html/util_8h__incl.map b/help/html/util_8h__incl.map deleted file mode 100644 index 94f7e73..0000000 --- a/help/html/util_8h__incl.map +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/help/html/util_8h__incl.md5 b/help/html/util_8h__incl.md5 deleted file mode 100644 index 48ddf92..0000000 --- a/help/html/util_8h__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -020a174cd31d85b1e2a8568690961306 \ No newline at end of file diff --git a/help/html/util_8h__incl.png b/help/html/util_8h__incl.png deleted file mode 100644 index 08715fa..0000000 Binary files a/help/html/util_8h__incl.png and /dev/null differ diff --git a/help/html/util_8h_source.html b/help/html/util_8h_source.html deleted file mode 100644 index 33c2a30..0000000 --- a/help/html/util_8h_source.html +++ /dev/null @@ -1,96 +0,0 @@ - - - - - - - -CocoaTweet: src/cocoatweet/util/util.h Source File - - - - - - - - - -
    -
    - - - - - - -
    -
    CocoaTweet -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    util.h
    -
    -
    -Go to the documentation of this file.
    1 #ifndef COCOATWEET_UTIL_UTIL_H_
    -
    2 #define COCOATWEET_UTIL_UTIL_H_
    -
    3 
    -
    4 #include <vector>
    -
    5 #include <string>
    -
    6 #include <sstream>
    -
    7 
    -
    8 namespace CocoaTweet::Util {
    -
    9 std::string urlEncode(const std::string& _str);
    -
    10 std::string join(const std::vector<std::string> _vec, const std::string& _delim);
    -
    11 } // namespace CocoaTweet::Util
    -
    12 
    -
    13 #endif
    -
    -
    Definition: util.cc:5
    -
    std::string join(const std::vector< std::string > _vec, const std::string &_delim)
    Definition: util.cc:22
    -
    std::string urlEncode(const std::string &_str)
    Definition: util.cc:6
    - - - - diff --git a/src/cocoatweet/api/api.cc b/src/cocoatweet/api/api.cc index 04ca82d..d6d6ec7 100644 --- a/src/cocoatweet/api/api.cc +++ b/src/cocoatweet/api/api.cc @@ -1,16 +1,34 @@ #include +#include +#include +#include namespace CocoaTweet::API { -API::API(CocoaTweet::OAuth::Key _key) { - oauth_ = std::make_shared(_key); +API::API(CocoaTweet::Authentication::Key _key) { + swapKey(_key); +} + +void API::swapKey(const CocoaTweet::Authentication::Key _key) { + if (_key.authType() == CocoaTweet::Authentication::Key::OAUTH10A) { + oauth_ = std::make_shared(_key); + } else if (_key.authType() == CocoaTweet::Authentication::Key::OAUTH2) { + oauth_ = std::make_shared(_key); + } + user_ = Users::User(oauth_); status_ = Statuses::Status(oauth_); favorite_ = Favorites::Favorite(oauth_); media_ = Medias::Media(oauth_); directMessage_ = DirectMessages::DirectMessage(oauth_); + oauth1_ = OAuth1::OAuth(oauth_); + oauth2_ = OAuth2::OAuth2(oauth_); } -const std::string& API::generateBearerToken() const { - return oauth_->generateBearerToken(); +// const std::string& API::generateBearerToken() const { +// return oauth_->generateBearerToken(); +// } + +Users::User API::user() const { + return user_; } Statuses::Status API::status() const { @@ -28,4 +46,10 @@ Medias::Media API::media() const { DirectMessages::DirectMessage API::directMessage() const { return directMessage_; } +OAuth1::OAuth API::oauth1() const { + return oauth1_; +} +OAuth2::OAuth2 API::oauth2() const { + return oauth2_; +} } // namespace CocoaTweet::API diff --git a/src/cocoatweet/api/api.h b/src/cocoatweet/api/api.h index 62ab2ff..85b5c02 100644 --- a/src/cocoatweet/api/api.h +++ b/src/cocoatweet/api/api.h @@ -1,19 +1,24 @@ #ifndef COCOATWEET_API_API_H_ #define COCOATWEET_API_API_H_ +#include #include #include #include #include -#include +#include +#include +#include namespace CocoaTweet::API { /// @brief Twitter API Entry Point class API { public: /// @brief primary constructor - /// @param[in] _key Twitter API Key typed CocoaTweet::OAuth::Key - API(CocoaTweet::OAuth::Key _key); + /// @param[in] _key Twitter API Key typed CocoaTweet::Authentication::Key + API(CocoaTweet::Authentication::Key _key); + + Users::User user() const; /// @brief Getter for Grouped by Statuses/* /// @param[out] Status object typed CocoaTweet::API::Statuses::Status @@ -26,14 +31,22 @@ public: Medias::Media media() const; DirectMessages::DirectMessage directMessage() const; + + OAuth1::OAuth oauth1() const; + OAuth2::OAuth2 oauth2() const; + const std::string& generateBearerToken() const; + void swapKey(const CocoaTweet::Authentication::Key _key); private: + Users::User user_; Statuses::Status status_; Favorites::Favorite favorite_; Medias::Media media_; DirectMessages::DirectMessage directMessage_; - std::shared_ptr oauth_; + OAuth1::OAuth oauth1_; + OAuth2::OAuth2 oauth2_; + std::shared_ptr oauth_; }; } // namespace CocoaTweet::API diff --git a/src/cocoatweet/api/directMessage/directMessage.cc b/src/cocoatweet/api/directMessage/directMessage.cc index 4788418..1ae89b1 100644 --- a/src/cocoatweet/api/directMessage/directMessage.cc +++ b/src/cocoatweet/api/directMessage/directMessage.cc @@ -2,7 +2,8 @@ #include namespace CocoaTweet::API::DirectMessages { -DirectMessage::DirectMessage(std::shared_ptr _oauth) { +DirectMessage::DirectMessage( + std::shared_ptr _oauth) { oauth_ = _oauth; } diff --git a/src/cocoatweet/api/directMessage/directMessage.h b/src/cocoatweet/api/directMessage/directMessage.h index d796111..a9e1603 100644 --- a/src/cocoatweet/api/directMessage/directMessage.h +++ b/src/cocoatweet/api/directMessage/directMessage.h @@ -2,7 +2,7 @@ #define COCOATWEET_API_DIRECTMESSAGE_DIRECTMESSAGE_H_ #include "cocoatweet/api/interface/groupInterface.h" -#include "cocoatweet/oauth/oauth.h" +#include "cocoatweet/authentication/authenticator.h" #include #include #include @@ -15,8 +15,9 @@ public: DirectMessage() = default; /// @brief constructor which finally should to be called. - /// @param[in] std::shared_ptr : pointer to OAuth object - DirectMessage(std::shared_ptr _oauth); + /// @param[in] std::shared_ptr : pointer to + /// OAuth object + DirectMessage(std::shared_ptr _oauth); void messageCreate(const std::string& _recipient, const std::string& _message); diff --git a/src/cocoatweet/api/directMessage/new.cc b/src/cocoatweet/api/directMessage/new.cc index 7cbbbec..04cecde 100644 --- a/src/cocoatweet/api/directMessage/new.cc +++ b/src/cocoatweet/api/directMessage/new.cc @@ -23,7 +23,7 @@ void New::message(const std::string& _message) { json_["event"]["message_create"]["message_data"]["text"] = _message; } -void New::process(std::weak_ptr _oauth) { +void New::process(std::weak_ptr _oauth) { bodyParam_.insert_or_assign("data", json_.dump()); HttpPost::process(_oauth, [](const std::string& _rcv) {}); } diff --git a/src/cocoatweet/api/directMessage/new.h b/src/cocoatweet/api/directMessage/new.h index e717e9a..ded38d6 100644 --- a/src/cocoatweet/api/directMessage/new.h +++ b/src/cocoatweet/api/directMessage/new.h @@ -17,9 +17,10 @@ public: void message(const std::string& _message); /// @brief process request for endpoint - /// @param[in] std::weak_ptr _oauth : pointer to oauth object + /// @param[in] std::weak_ptr _oauth : pointer + /// to oauth object /// @param[out] CocoaTweet::API::Model::Tweet : request result - void process(std::weak_ptr _oauth); + void process(std::weak_ptr _oauth); private: std::string status_; diff --git a/src/cocoatweet/api/favorite/create.cc b/src/cocoatweet/api/favorite/create.cc index 74a4358..4fa36d8 100644 --- a/src/cocoatweet/api/favorite/create.cc +++ b/src/cocoatweet/api/favorite/create.cc @@ -11,7 +11,8 @@ void Create::id(const std::string& _id) { bodyParam_.insert_or_assign("id", _id); } -CocoaTweet::API::Model::Tweet Create::process(std::weak_ptr _oauth) { +CocoaTweet::API::Model::Tweet Create::process( + std::weak_ptr _oauth) { CocoaTweet::API::Model::Tweet tweet; HttpPost::process(_oauth, [&tweet](const std::string& _rcv) { tweet = CocoaTweet::API::Model::Tweet(_rcv); diff --git a/src/cocoatweet/api/favorite/create.h b/src/cocoatweet/api/favorite/create.h index 58e6c88..5d7ee18 100644 --- a/src/cocoatweet/api/favorite/create.h +++ b/src/cocoatweet/api/favorite/create.h @@ -9,7 +9,8 @@ class Create : public CocoaTweet::API::Interface::HttpPost { public: Create(); void id(const std::string& _id); - CocoaTweet::API::Model::Tweet process(std::weak_ptr _oauth); + CocoaTweet::API::Model::Tweet process( + std::weak_ptr _oauth); private: }; diff --git a/src/cocoatweet/api/favorite/destroy.cc b/src/cocoatweet/api/favorite/destroy.cc index ef88c9a..26143cc 100644 --- a/src/cocoatweet/api/favorite/destroy.cc +++ b/src/cocoatweet/api/favorite/destroy.cc @@ -12,7 +12,7 @@ void Destroy::id(const std::string& _id) { } CocoaTweet::API::Model::Tweet Destroy::process( - std::weak_ptr _oauth) { + std::weak_ptr _oauth) { CocoaTweet::API::Model::Tweet tweet; HttpPost::process(_oauth, [&tweet](const std::string& _rcv) { tweet = CocoaTweet::API::Model::Tweet(_rcv); diff --git a/src/cocoatweet/api/favorite/destroy.h b/src/cocoatweet/api/favorite/destroy.h index 5515375..cad1e36 100644 --- a/src/cocoatweet/api/favorite/destroy.h +++ b/src/cocoatweet/api/favorite/destroy.h @@ -9,7 +9,8 @@ class Destroy : public CocoaTweet::API::Interface::HttpPost { public: Destroy(); void id(const std::string& _id); - CocoaTweet::API::Model::Tweet process(std::weak_ptr _oauth); + CocoaTweet::API::Model::Tweet process( + std::weak_ptr _oauth); private: }; diff --git a/src/cocoatweet/api/favorite/favorite.cc b/src/cocoatweet/api/favorite/favorite.cc index 37da144..9b9aceb 100644 --- a/src/cocoatweet/api/favorite/favorite.cc +++ b/src/cocoatweet/api/favorite/favorite.cc @@ -3,7 +3,7 @@ #include "cocoatweet/api/favorite/destroy.h" namespace CocoaTweet::API::Favorites { -Favorite::Favorite(std::shared_ptr _oauth) { +Favorite::Favorite(std::shared_ptr _oauth) { oauth_ = _oauth; } diff --git a/src/cocoatweet/api/favorite/favorite.h b/src/cocoatweet/api/favorite/favorite.h index 92355c2..6b32d29 100644 --- a/src/cocoatweet/api/favorite/favorite.h +++ b/src/cocoatweet/api/favorite/favorite.h @@ -2,14 +2,14 @@ #define COCOATWEET_API_FAVORITE_FAVORITE_H_ #include "cocoatweet/api/interface/groupInterface.h" -#include "cocoatweet/oauth/oauth.h" +#include "cocoatweet/authentication/authenticator.h" #include namespace CocoaTweet::API::Favorites { class Favorite : public groupInterface { public: Favorite() = default; - Favorite(std::shared_ptr _oauth); + Favorite(std::shared_ptr _oauth); CocoaTweet::API::Model::Tweet create(const std::string& _id) const; CocoaTweet::API::Model::Tweet destroy(const std::string& _id) const; }; diff --git a/src/cocoatweet/api/interface/groupInterface.h b/src/cocoatweet/api/interface/groupInterface.h index 64866fa..609c223 100644 --- a/src/cocoatweet/api/interface/groupInterface.h +++ b/src/cocoatweet/api/interface/groupInterface.h @@ -2,12 +2,12 @@ #define COCOATWEET_API_INTERFACE_GROUPINTERFACE_H_ #include -#include "cocoatweet/oauth/oauth.h" +#include "cocoatweet/authentication/authenticator.h" namespace CocoaTweet::API { class groupInterface { protected: - std::weak_ptr oauth_; + std::weak_ptr oauth_; }; } // namespace CocoaTweet::API diff --git a/src/cocoatweet/api/interface/httpBase.h b/src/cocoatweet/api/interface/httpBase.h index e6314a3..1be4bf8 100644 --- a/src/cocoatweet/api/interface/httpBase.h +++ b/src/cocoatweet/api/interface/httpBase.h @@ -2,17 +2,18 @@ #define COCOATWEET_API_INTERFACE_HTTPBASE_H_ #include -#include "cocoatweet/oauth/oauth.h" +#include +#include "cocoatweet/authentication/authenticator.h" namespace CocoaTweet::API::Interface { class HttpBase { public: protected: - std::weak_ptr oauth_; + std::weak_ptr oauth_; std::map bodyParam_; std::string url_; std::string contentType_; - virtual void process(std::weak_ptr _oauth, + virtual void process(std::weak_ptr _oauth, std::function _callback) = 0; static size_t curlCallback_(char* _ptr, size_t _size, size_t _nmemb, std::string* _stream) { int realsize = _size * _nmemb; diff --git a/src/cocoatweet/api/interface/httpGet.cc b/src/cocoatweet/api/interface/httpGet.cc index 9699e2c..5b1edba 100644 --- a/src/cocoatweet/api/interface/httpGet.cc +++ b/src/cocoatweet/api/interface/httpGet.cc @@ -6,6 +6,10 @@ #include #include #include +#include +#include +#include +#include #include "nlohmann/json.hpp" #include #include @@ -21,7 +25,7 @@ extern "C" { #endif namespace CocoaTweet::API::Interface { -void HttpGet::process(std::weak_ptr _oauth, +void HttpGet::process(std::weak_ptr _oauth, std::function _callback) { auto url = url_; @@ -107,13 +111,15 @@ void HttpGet::process(std::weak_ptr _oauth, std::cout << rcv << std::endl; #endif if ((responseCode / 100) == 4) { - auto j = nlohmann::json::parse(rcv); - auto error = j["errors"][0]["code"]; - auto message = j["errors"][0]["message"]; + auto j = nlohmann::json::parse(rcv); if (j.count("error") != 0) { // この形式はエラーコードを持たないのでエラー種別が特定できない throw new CocoaTweet::Exception::Exception(j["error"]); } + + auto error = j["errors"][0]["code"]; + auto message = j["errors"][0]["message"]; + if (error.get() == 144) { throw CocoaTweet::Exception::TweetNotFoundException(message.get().c_str()); } else if (error.get() == 32) { @@ -126,6 +132,17 @@ void HttpGet::process(std::weak_ptr _oauth, throw CocoaTweet::Exception::RateLimitException(message.get().c_str()); } else if (error.get() == 186) { throw CocoaTweet::Exception::TweetTooLongException(message.get().c_str()); + } else if (error.get() == 170) { + throw CocoaTweet::Exception::MissingRequiredParamException( + message.get().c_str()); + } else if (error.get() == 220) { + throw CocoaTweet::Exception::CredentialNotAllowedException( + message.get().c_str()); + } else if (error.get() == 99) { + throw CocoaTweet::Exception::CredentialNotVerifiedException( + message.get().c_str()); + } else if (error.get() == 348) { + throw CocoaTweet::Exception::InvalidateTokenException(message.get().c_str()); } else { } } diff --git a/src/cocoatweet/api/interface/httpGet.h b/src/cocoatweet/api/interface/httpGet.h index bf98421..c356623 100644 --- a/src/cocoatweet/api/interface/httpGet.h +++ b/src/cocoatweet/api/interface/httpGet.h @@ -2,7 +2,7 @@ #define COCOATWEET_API_INTERFACE_HTTPGET_H_ #include -#include "cocoatweet/oauth/oauth.h" +#include "cocoatweet/authentication/authenticator.h" #include namespace CocoaTweet::API::Interface { @@ -11,11 +11,11 @@ class HttpGet : public virtual HttpBase { public: protected: /// @brief Send HTTP/POST using OAuth object - /// @param[in] std::weak_ptr _oauth : pointer to OAuth object to - /// authenticate + /// @param[in] std::weak_ptr _oauth : pointer + /// to OAuth object to authenticate /// @param[in] std::function _callback : /// callback method for processing to response - void process(std::weak_ptr _oauth, + void process(std::weak_ptr _oauth, std::function _callback); }; } // namespace CocoaTweet::API::Interface diff --git a/src/cocoatweet/api/interface/httpPost.cc b/src/cocoatweet/api/interface/httpPost.cc index e318245..4853e24 100644 --- a/src/cocoatweet/api/interface/httpPost.cc +++ b/src/cocoatweet/api/interface/httpPost.cc @@ -6,6 +6,10 @@ #include #include #include +#include +#include +#include +#include #include "nlohmann/json.hpp" #include #include @@ -21,22 +25,22 @@ extern "C" { #endif namespace CocoaTweet::API::Interface { -void HttpPost::process(std::weak_ptr _oauth, +void HttpPost::process(std::weak_ptr _oauth, std::function _callback) { // エンドポイントへのパラメータにOAuthパラメータを付加して署名作成 - auto oauth = _oauth.lock(); - auto oauthParam = oauth->oauthParam(); - auto sigingParam = oauthParam; - if (contentType_ == "application/x-www-form-urlencoded") { - for (const auto [k, v] : bodyParam_) { - sigingParam.insert_or_assign(k, v); - } - } + auto oauth = _oauth.lock(); + // auto oauthParam = oauth->oauthParam(); + // auto sigingParam = oauthParam; + // if (contentType_ == "application/x-www-form-urlencoded") { + // for (const auto [k, v] : bodyParam_) { + // sigingParam.insert_or_assign(k, v); + // } + // } - auto signature = oauth->signature(sigingParam, "POST", url_); + // auto signature = oauth->signature(sigingParam, "POST", url_); // 作成した署名をエンドポイントへのパラメータ及びOAuthパラメータに登録 - oauthParam.merge(signature); + // oauthParam.merge(signature); // リクエストボディの構築 std::string requestBody = ""; @@ -60,13 +64,20 @@ void HttpPost::process(std::weak_ptr _oauth, } // ヘッダの構築 - std::string oauthHeader = "authorization: OAuth "; - { - std::vector tmp; - for (const auto& [key, value] : oauthParam) { - tmp.push_back(key + "=" + CocoaTweet::Util::urlEncode(value)); - } - oauthHeader += CocoaTweet::Util::join(tmp, ","); + // std::string oauthHeader = "authorization: OAuth "; + // { + // std::vector tmp; + // for (const auto& [key, value] : oauthParam) { + // tmp.push_back(key + "=" + CocoaTweet::Util::urlEncode(value)); + // } + // oauthHeader += CocoaTweet::Util::join(tmp, ","); + // } + + auto oauthHeader = std::string(); + if (contentType_ == "application/x-www-form-urlencoded") { + oauthHeader = oauth->calculateAuthHeader(bodyParam_, "POST", url_); + } else { + oauthHeader = oauth->calculateAuthHeader({}, "POST", url_); } // do post @@ -118,13 +129,14 @@ void HttpPost::process(std::weak_ptr _oauth, std::cout << rcv << std::endl; #endif if ((responseCode / 100) == 4) { - auto j = nlohmann::json::parse(rcv); - auto error = j["errors"][0]["code"]; - auto message = j["errors"][0]["message"]; + auto j = nlohmann::json::parse(rcv); if (j.count("error") != 0) { // この形式はエラーコードを持たないのでエラー種別が特定できない throw new CocoaTweet::Exception::Exception(j["error"]); } + + auto error = j["errors"][0]["code"]; + auto message = j["errors"][0]["message"]; if (error.get() == 144) { throw CocoaTweet::Exception::TweetNotFoundException(message.get().c_str()); } else if (error.get() == 32) { @@ -137,6 +149,17 @@ void HttpPost::process(std::weak_ptr _oauth, throw CocoaTweet::Exception::RateLimitException(message.get().c_str()); } else if (error.get() == 186) { throw CocoaTweet::Exception::TweetTooLongException(message.get().c_str()); + } else if (error.get() == 170) { + throw CocoaTweet::Exception::MissingRequiredParamException( + message.get().c_str()); + } else if (error.get() == 220) { + throw CocoaTweet::Exception::CredentialNotAllowedException( + message.get().c_str()); + } else if (error.get() == 99) { + throw CocoaTweet::Exception::CredentialNotVerifiedException( + message.get().c_str()); + } else if (error.get() == 348) { + throw CocoaTweet::Exception::InvalidateTokenException(message.get().c_str()); } } diff --git a/src/cocoatweet/api/interface/httpPost.h b/src/cocoatweet/api/interface/httpPost.h index 441fe58..deb1d10 100644 --- a/src/cocoatweet/api/interface/httpPost.h +++ b/src/cocoatweet/api/interface/httpPost.h @@ -2,7 +2,7 @@ #define COCOATWEET_API_INTERFACE_HTTPPOST_H_ #include -#include "cocoatweet/oauth/oauth.h" +#include "cocoatweet/authentication/authenticator.h" #include namespace CocoaTweet::API::Interface { @@ -11,11 +11,11 @@ class HttpPost : public HttpBase { public: protected: /// @brief Send HTTP/POST using OAuth object - /// @param[in] std::weak_ptr _oauth : pointer to OAuth object to - /// authenticate + /// @param[in] std::weak_ptr _oauth : pointer + /// to OAuth object to authenticate /// @param[in] std::function _callback : /// callback method for processing to response - void process(std::weak_ptr _oauth, + void process(std::weak_ptr _oauth, std::function _callback); }; } // namespace CocoaTweet::API::Interface diff --git a/src/cocoatweet/api/media/media.cc b/src/cocoatweet/api/media/media.cc index 6414edf..f41d097 100644 --- a/src/cocoatweet/api/media/media.cc +++ b/src/cocoatweet/api/media/media.cc @@ -1,7 +1,7 @@ #include "cocoatweet/api/media/media.h" namespace CocoaTweet::API::Medias { -Media::Media(std::shared_ptr _oauth) { +Media::Media(std::shared_ptr _oauth) { oauth_ = _oauth; } diff --git a/src/cocoatweet/api/media/media.h b/src/cocoatweet/api/media/media.h index d435c78..3aa3660 100644 --- a/src/cocoatweet/api/media/media.h +++ b/src/cocoatweet/api/media/media.h @@ -2,7 +2,7 @@ #define COCOATWEET_API_MEDIA_MEDIA_H_ #include "cocoatweet/api/interface/groupInterface.h" -#include "cocoatweet/oauth/oauth.h" +#include "cocoatweet/authentication/authenticator.h" #include #include #include @@ -16,8 +16,9 @@ public: Media() = default; /// @brief constructor which finally should to be called. - /// @param[in] std::shared_ptr : pointer to OAuth object - Media(std::shared_ptr _oauth); + /// @param[in] std::shared_ptr : pointer to + /// OAuth object + Media(std::shared_ptr _oauth); CocoaTweet::API::Model::MediaStore upload(const std::string& _file) const; diff --git a/src/cocoatweet/api/media/upload.cc b/src/cocoatweet/api/media/upload.cc index 16c3019..5348cb0 100644 --- a/src/cocoatweet/api/media/upload.cc +++ b/src/cocoatweet/api/media/upload.cc @@ -19,7 +19,7 @@ void Upload::media(const std::string& _media) { void Upload::mediaId(const std::string& _mediaId) {} CocoaTweet::API::Model::MediaStore Upload::process( - std::weak_ptr _oauth) { + std::weak_ptr _oauth) { auto extension = std::filesystem::path(media_).extension().string(); if (mimeType.count(extension) == 0) { throw new CocoaTweet::Exception::UnsupportedMediaTypeException( diff --git a/src/cocoatweet/api/media/upload.h b/src/cocoatweet/api/media/upload.h index a021855..630288b 100644 --- a/src/cocoatweet/api/media/upload.h +++ b/src/cocoatweet/api/media/upload.h @@ -26,11 +26,12 @@ public: void mediaId(const std::string& _mediaId); /// @brief upload media - /// @param[in] std::weak_ptr _oauth : pointer to OAuth object for - /// authenticate + /// @param[in] std::weak_ptr _oauth : pointer + /// to OAuth object for authenticate /// @param[out] CocoaTweet::API::Model::MediaStore : media upload result. use id() for post /// tweet. - CocoaTweet::API::Model::MediaStore process(std::weak_ptr _oauth); + CocoaTweet::API::Model::MediaStore process( + std::weak_ptr _oauth); }; } // namespace CocoaTweet::API::Medias diff --git a/src/cocoatweet/api/model/bearerToken.cc b/src/cocoatweet/api/model/bearerToken.cc new file mode 100644 index 0000000..29364b9 --- /dev/null +++ b/src/cocoatweet/api/model/bearerToken.cc @@ -0,0 +1,13 @@ +#include "bearerToken.h" + +namespace CocoaTweet::API::Model { + +BearerToken::BearerToken() : token_("") {} +BearerToken::BearerToken(const std::string _token) : token_(_token) {} +const std::string& BearerToken::token() const { + return token_; +} +void BearerToken::token(const std::string& _token) { + token_ = _token; +} +} // namespace CocoaTweet::API::Model \ No newline at end of file diff --git a/src/cocoatweet/api/model/bearerToken.h b/src/cocoatweet/api/model/bearerToken.h new file mode 100644 index 0000000..5ac023f --- /dev/null +++ b/src/cocoatweet/api/model/bearerToken.h @@ -0,0 +1,17 @@ +#ifndef COCOATWEET_API_MODEL_BEARERTOKEN_H_ +#define COCOATWEET_API_MODEL_BEARERTOKEN_H_ +#include + +namespace CocoaTweet::API::Model { +class BearerToken { + std::string token_; + +public: + BearerToken(); + BearerToken(const std::string _token); + const std::string& token() const; + void token(const std::string& _token); +}; +} // namespace CocoaTweet::API::Model + +#endif \ No newline at end of file diff --git a/src/cocoatweet/api/model/oauthToken.cc b/src/cocoatweet/api/model/oauthToken.cc new file mode 100644 index 0000000..3fc3e80 --- /dev/null +++ b/src/cocoatweet/api/model/oauthToken.cc @@ -0,0 +1,20 @@ +#include "oauthToken.h" + +namespace CocoaTweet::API::Model { + +OAuthToken::OAuthToken() : oauthToken_(""), oauthTokenSecret_("") {} +OAuthToken::OAuthToken(const std::string _oauthToken, const std::string& _oauthTokenSecret) + : oauthToken_(_oauthToken), oauthTokenSecret_(_oauthTokenSecret) {} +const std::string& OAuthToken::oauthToken() const { + return oauthToken_; +} +const std::string& OAuthToken::oauthTokenSecret() const { + return oauthTokenSecret_; +} +void OAuthToken::oauthToken(const std::string& _oauthToken) { + oauthToken_ = _oauthToken; +} +void OAuthToken::oauthTokenSecret(const std::string& _oauthTokenSecret) { + oauthTokenSecret_ = _oauthTokenSecret; +} +} // namespace CocoaTweet::API::Model \ No newline at end of file diff --git a/src/cocoatweet/api/model/oauthToken.h b/src/cocoatweet/api/model/oauthToken.h new file mode 100644 index 0000000..8aad786 --- /dev/null +++ b/src/cocoatweet/api/model/oauthToken.h @@ -0,0 +1,20 @@ +#ifndef COCOATWEET_API_MODEL_OAUTHTOKEN_H_ +#define COCOATWEET_API_MODEL_OAUTHTOKEN_H_ +#include + +namespace CocoaTweet::API::Model { +class OAuthToken { + std::string oauthToken_; + std::string oauthTokenSecret_; + +public: + OAuthToken(); + OAuthToken(const std::string _oauthToken, const std::string& _oauthTokenSecret); + const std::string& oauthToken() const; + const std::string& oauthTokenSecret() const; + void oauthToken(const std::string& _oauthToken); + void oauthTokenSecret(const std::string& _oauthTokenSecret); +}; +} // namespace CocoaTweet::API::Model + +#endif \ No newline at end of file diff --git a/src/cocoatweet/api/model/tweet.cc b/src/cocoatweet/api/model/tweet.cc index 22f971e..ab978ba 100644 --- a/src/cocoatweet/api/model/tweet.cc +++ b/src/cocoatweet/api/model/tweet.cc @@ -10,11 +10,10 @@ Tweet Tweet::parse(const std::string& _json) { tweet.createdAt(j["created_at"]); tweet.text(j["text"]); tweet.source(j["source"]); - if(j.contains("user")){ + if (j.contains("user")) { tweet.user(CocoaTweet::API::Model::User(j["user"].dump())); } - return tweet; } diff --git a/src/cocoatweet/api/oauth1/accessToken.cc b/src/cocoatweet/api/oauth1/accessToken.cc new file mode 100644 index 0000000..1bd3688 --- /dev/null +++ b/src/cocoatweet/api/oauth1/accessToken.cc @@ -0,0 +1,40 @@ +#include +#include + +#include + +namespace CocoaTweet::API::OAuth1 { +AccessToken::AccessToken() { + contentType_ = "application/x-www-form-urlencoded"; + url_ = "https://api.twitter.com/oauth/access_token"; +} + +void AccessToken::oauthVerifier(const std::string& _verifier) { + bodyParam_.insert_or_assign("oauth_verifier", _verifier); +} + +void AccessToken::oauthToken(const CocoaTweet::API::Model::OAuthToken _token) { + oauthToken_ = _token; +} + +const CocoaTweet::API::Model::OAuthToken AccessToken::process( + std::weak_ptr _oauth) { + auto key = _oauth.lock()->key(); + key.authType(CocoaTweet::Authentication::Key::AUTH_TYPE::OAUTH10A); + key.accessToken(oauthToken_.oauthToken()); + key.accessTokenSecret(oauthToken_.oauthTokenSecret()); + auto oauth = std::make_shared(key); + + CocoaTweet::API::Model::OAuthToken oauthToken; + HttpPost::process(oauth, [&oauthToken](const std::string& _rcv) { + auto mp = CocoaTweet::Util::parse(_rcv, '&', '='); + if (mp.count("oauth_token")) { + oauthToken.oauthToken(mp.at("oauth_token")); + } + if (mp.count("oauth_token_secret")) { + oauthToken.oauthTokenSecret(mp.at("oauth_token_secret")); + } + }); + return oauthToken; +} +} // namespace CocoaTweet::API::OAuth1 \ No newline at end of file diff --git a/src/cocoatweet/api/oauth1/accessToken.h b/src/cocoatweet/api/oauth1/accessToken.h new file mode 100644 index 0000000..efdc4f2 --- /dev/null +++ b/src/cocoatweet/api/oauth1/accessToken.h @@ -0,0 +1,22 @@ +#ifndef COCOATWEET_API_OAUTH1_ACCESSTOKEN_H_ +#define COCOATWEET_API_OAUTH1_ACCESSTOKEN_H_ + +#include +#include +namespace CocoaTweet::API::OAuth1 { +class AccessToken : public CocoaTweet::API::Interface::HttpPost { +private: + CocoaTweet::API::Model::OAuthToken oauthToken_; + +public: + AccessToken(); + + void oauthVerifier(const std::string& _verifier); + void oauthToken(const CocoaTweet::API::Model::OAuthToken _token); + + const CocoaTweet::API::Model::OAuthToken process( + std::weak_ptr _oauth); +}; +} // namespace CocoaTweet::API::OAuth1 + +#endif \ No newline at end of file diff --git a/src/cocoatweet/api/oauth1/authenticate.cc b/src/cocoatweet/api/oauth1/authenticate.cc new file mode 100644 index 0000000..e69de29 diff --git a/src/cocoatweet/api/oauth1/authenticate.h b/src/cocoatweet/api/oauth1/authenticate.h new file mode 100644 index 0000000..b725a22 --- /dev/null +++ b/src/cocoatweet/api/oauth1/authenticate.h @@ -0,0 +1,4 @@ +#ifndef COCOATWEET_API_OAUTH1_AUTHENTICATE_H_ +#define COCOATWEET_API_OAUTH1_AUTHENTICATE_H_ + +#endif \ No newline at end of file diff --git a/src/cocoatweet/api/oauth1/authorize.cc b/src/cocoatweet/api/oauth1/authorize.cc new file mode 100644 index 0000000..86a1b20 --- /dev/null +++ b/src/cocoatweet/api/oauth1/authorize.cc @@ -0,0 +1,35 @@ +#include +#include +#include +#include + +namespace CocoaTweet::API::OAuth1 { +Authorize::Authorize() { + contentType_ = "application/x-www-form-urlencoded"; + url_ = "https://api.twitter.com/oauth/authorize"; +} + +void Authorize::oauthToken(const std::string& _oauthToken) { + bodyParam_.insert_or_assign("oauth_token", _oauthToken); +} + +void Authorize::forceLogin(const bool _forceLogin) { + bodyParam_.insert_or_assign("force_login", std::to_string(static_cast(_forceLogin))); +} + +void Authorize::screenName(const std::string& _screenName) { + bodyParam_.insert_or_assign("screen_name", _screenName); +} + +const std::string Authorize::process( + std::weak_ptr __unused__) { + std::vector tmp; + std::string query = ""; + for (const auto& [key, value] : bodyParam_) { + tmp.push_back(key + "=" + value); + query = CocoaTweet::Util::join(tmp, "&"); + } + return url_ + "?" + query; + ; +} +} // namespace CocoaTweet::API::OAuth1 \ No newline at end of file diff --git a/src/cocoatweet/api/oauth1/authorize.h b/src/cocoatweet/api/oauth1/authorize.h new file mode 100644 index 0000000..9f0e0d2 --- /dev/null +++ b/src/cocoatweet/api/oauth1/authorize.h @@ -0,0 +1,21 @@ +#ifndef COCOATWEET_API_OAUTH1_AUTHORIZE_H_ +#define COCOATWEET_API_OAUTH1_AUTHORIZE_H_ + +#include +namespace CocoaTweet::API::OAuth1 { +class Authorize : public CocoaTweet::API::Interface::HttpPost { +public: + Authorize(); + + void oauthToken(const std::string& _oauthToken); + + void forceLogin(const bool _forceLogin); + + void screenName(const std::string& _screenName); + + const std::string process( + std::weak_ptr __unused__); +}; +} // namespace CocoaTweet::API::OAuth1 + +#endif \ No newline at end of file diff --git a/src/cocoatweet/api/oauth1/invalidateToken.cc b/src/cocoatweet/api/oauth1/invalidateToken.cc new file mode 100644 index 0000000..9fbc048 --- /dev/null +++ b/src/cocoatweet/api/oauth1/invalidateToken.cc @@ -0,0 +1,27 @@ +#include +#include +#include "nlohmann/json.hpp" + +#include +#include + +namespace CocoaTweet::API::OAuth1 { +InvalidateToken::InvalidateToken() { + contentType_ = "application/x-www-form-urlencoded"; + url_ = "https://api.twitter.com/1.1/oauth/invalidate_token"; +} + +const CocoaTweet::API::Model::OAuthToken InvalidateToken::process( + std::weak_ptr _oauth) { + auto key = _oauth.lock()->key(); + key.authType(CocoaTweet::Authentication::Key::AUTH_TYPE::OAUTH10A); + auto oauth = std::make_shared(key); + CocoaTweet::API::Model::OAuthToken oauthToken; + HttpPost::process(oauth, [&oauthToken](const std::string& _rcv) { + std::cout << _rcv << std::endl; + auto j = nlohmann::json::parse(_rcv); + oauthToken.oauthToken(j["access_token"]); + }); + return oauthToken; +} +} // namespace CocoaTweet::API::OAuth1 \ No newline at end of file diff --git a/src/cocoatweet/api/oauth1/invalidateToken.h b/src/cocoatweet/api/oauth1/invalidateToken.h new file mode 100644 index 0000000..1c72bd9 --- /dev/null +++ b/src/cocoatweet/api/oauth1/invalidateToken.h @@ -0,0 +1,17 @@ +#ifndef COCOATWEET_API_OAUTH1_INVALIDATETOKEN_H_ +#define COCOATWEET_API_OAUTH1_INVALIDATETOKEN_H_ + +#include +#include +namespace CocoaTweet::API::OAuth1 { +class InvalidateToken : public CocoaTweet::API::Interface::HttpPost { +private: +public: + InvalidateToken(); + + const CocoaTweet::API::Model::OAuthToken process( + std::weak_ptr _oauth); +}; +} // namespace CocoaTweet::API::OAuth1 + +#endif \ No newline at end of file diff --git a/src/cocoatweet/api/oauth1/oauth.cc b/src/cocoatweet/api/oauth1/oauth.cc new file mode 100644 index 0000000..24392b7 --- /dev/null +++ b/src/cocoatweet/api/oauth1/oauth.cc @@ -0,0 +1,45 @@ +#include +#include + +namespace CocoaTweet::API::OAuth1 { +OAuth::OAuth(std::shared_ptr _oauth) { + oauth_ = _oauth; +} + +CocoaTweet::API::Model::OAuthToken OAuth::requestToken( + const std::string& _oauthCallback) const { + // auto key = oauth_.lock()->key(); + // key.authType(CocoaTweet::Authentication::Key::AUTH_TYPE::OAUTH10A); + // auto oauth = std::make_shared(key); + + CocoaTweet::API::OAuth1::RequestToken requestToken; + requestToken.oauthCallback(_oauthCallback); + return requestToken.process(oauth_); +} + +const std::string OAuth::authorize(const CocoaTweet::API::Model::OAuthToken _oauthToken) const { + CocoaTweet::API::OAuth1::Authorize authorize; + authorize.oauthToken(_oauthToken.oauthToken()); + return authorize.process(oauth_); +} + +const CocoaTweet::API::Model::OAuthToken OAuth::accessToken( + const CocoaTweet::API::Model::OAuthToken _oauthToken, const std::string _verifier) const { + // auto key = oauth_.lock()->key(); + // key.authType(CocoaTweet::Authentication::Key::AUTH_TYPE::OAUTH10A); + // key.accessToken(_oauthToken.oauthToken()); + // key.accessTokenSecret(_oauthToken.oauthTokenSecret()); + // auto oauth = std::make_shared(key); + CocoaTweet::API::OAuth1::AccessToken accessToken; + accessToken.oauthVerifier(_verifier); + return accessToken.process(oauth_); +} + +const CocoaTweet::API::Model::OAuthToken OAuth::invalidateToken() const { + // auto key = oauth_.lock()->key(); + // key.authType(CocoaTweet::Authentication::Key::AUTH_TYPE::OAUTH10A); + // auto oauth = std::make_shared(key); + CocoaTweet::API::OAuth1::InvalidateToken invalidateToken; + return invalidateToken.process(oauth_); +} +} // namespace CocoaTweet::API::OAuth1 diff --git a/src/cocoatweet/api/oauth1/oauth.h b/src/cocoatweet/api/oauth1/oauth.h new file mode 100644 index 0000000..8f4f952 --- /dev/null +++ b/src/cocoatweet/api/oauth1/oauth.h @@ -0,0 +1,33 @@ +#ifndef COCOATWEET_API_OAUTH1_OAUTH_H_ +#define COCOATWEET_API_OAUTH1_OAUTH_H_ + +#include "cocoatweet/api/interface/groupInterface.h" +#include +#include +#include +#include +#include +#include +#include + +namespace CocoaTweet::API::OAuth1 { +/// @brief class for using users/show endpoint +class OAuth : public groupInterface { +public: + /// @brief primary constructor + OAuth() = default; + + /// @brief constructor which finally should to be called. + /// @param[in] std::shared_ptr : pointer to + /// OAuth object + OAuth(std::shared_ptr _oauth); + + CocoaTweet::API::Model::OAuthToken requestToken(const std::string& _oauthCallback) const; + const std::string authorize(const CocoaTweet::API::Model::OAuthToken _oauthToken) const; + const CocoaTweet::API::Model::OAuthToken accessToken( + const CocoaTweet::API::Model::OAuthToken _oauthToken, const std::string _verifier) const; + const CocoaTweet::API::Model::OAuthToken invalidateToken() const; +}; +} // namespace CocoaTweet::API::OAuth1 + +#endif diff --git a/src/cocoatweet/api/oauth1/requestToken.cc b/src/cocoatweet/api/oauth1/requestToken.cc new file mode 100644 index 0000000..6fe201b --- /dev/null +++ b/src/cocoatweet/api/oauth1/requestToken.cc @@ -0,0 +1,33 @@ +#include +#include +#include + +namespace CocoaTweet::API::OAuth1 { +RequestToken::RequestToken() { + contentType_ = "application/x-www-form-urlencoded"; + url_ = "https://api.twitter.com/oauth/request_token"; +} + +void RequestToken::oauthCallback(const std::string& _oauthCallback) { + bodyParam_.insert_or_assign("oauth_callback", _oauthCallback); +} + +CocoaTweet::API::Model::OAuthToken RequestToken::process( + std::weak_ptr _oauth) { + auto key = _oauth.lock()->key(); + key.authType(CocoaTweet::Authentication::Key::AUTH_TYPE::OAUTH10A); + auto oauth = std::make_shared(key); + + CocoaTweet::API::Model::OAuthToken oauthToken; + HttpPost::process(oauth, [&oauthToken](const std::string& _rcv) { + auto mp = CocoaTweet::Util::parse(_rcv, '&', '='); + if (mp.count("oauth_token")) { + oauthToken.oauthToken(mp.at("oauth_token")); + } + if (mp.count("oauth_token_secret")) { + oauthToken.oauthTokenSecret(mp.at("oauth_token_secret")); + } + }); + return oauthToken; +} +} // namespace CocoaTweet::API::OAuth1 \ No newline at end of file diff --git a/src/cocoatweet/api/oauth1/requestToken.h b/src/cocoatweet/api/oauth1/requestToken.h new file mode 100644 index 0000000..2c285e7 --- /dev/null +++ b/src/cocoatweet/api/oauth1/requestToken.h @@ -0,0 +1,18 @@ +#ifndef COCOATWEET_API_OAUTH1_REQUESTTOKEN_H_ +#define COCOATWEET_API_OAUTH1_REQUESTTOKEN_H_ + +#include +#include + +namespace CocoaTweet::API::OAuth1 { +class RequestToken : public CocoaTweet::API::Interface::HttpPost { +public: + RequestToken(); + void oauthCallback(const std::string& _oauthCallback); + + CocoaTweet::API::Model::OAuthToken process( + std::weak_ptr _oauth); +}; +} // namespace CocoaTweet::API::OAuth1 + +#endif \ No newline at end of file diff --git a/src/cocoatweet/api/oauth2/invalidateToken.cc b/src/cocoatweet/api/oauth2/invalidateToken.cc new file mode 100644 index 0000000..3f424e0 --- /dev/null +++ b/src/cocoatweet/api/oauth2/invalidateToken.cc @@ -0,0 +1,30 @@ +#include +#include "nlohmann/json.hpp" + +namespace CocoaTweet::API::OAuth2 { +InvalidateToken::InvalidateToken() { + contentType_ = "application/x-www-form-urlencoded"; + url_ = "https://api.twitter.com/oauth2/invalidate_token"; +} + +void InvalidateToken::accessToken(const std::string _bearer) { + // bodyParam_.insert_or_assign("access_token", _bearer); + bearer_ = _bearer; +} + +const CocoaTweet::API::Model::BearerToken InvalidateToken::process( + std::weak_ptr _oauth) { + auto org = url_; + auto url = url_ + "?access_token=" + bearer_; + url_ = url; + auto basic = std::make_shared(_oauth.lock()->key()); + CocoaTweet::API::Model::BearerToken bearer; + HttpPost::process(basic, [&bearer](const std::string& _rcv) { + auto j = nlohmann::json::parse(_rcv); + bearer.token(j["access_token"]); + }); + url_ = org; + return bearer; +} + +} // namespace CocoaTweet::API::OAuth2 \ No newline at end of file diff --git a/src/cocoatweet/api/oauth2/invalidateToken.h b/src/cocoatweet/api/oauth2/invalidateToken.h new file mode 100644 index 0000000..a24fd4b --- /dev/null +++ b/src/cocoatweet/api/oauth2/invalidateToken.h @@ -0,0 +1,21 @@ +#ifndef COCOATWEET_API_OAUTH2_INVALIDATETOKEN_H_ +#define COCOATWEET_API_OAUTH2_INVALIDATETOKEN_H_ + +#include +#include +#include + +namespace CocoaTweet::API::OAuth2 { +class InvalidateToken : public CocoaTweet::API::Interface::HttpPost { +public: + InvalidateToken(); + void accessToken(const std::string _bearer); + const CocoaTweet::API::Model::BearerToken process( + std::weak_ptr _oauth); + +private: + std::string bearer_; +}; +} // namespace CocoaTweet::API::OAuth2 + +#endif \ No newline at end of file diff --git a/src/cocoatweet/api/oauth2/oauth2.cc b/src/cocoatweet/api/oauth2/oauth2.cc new file mode 100644 index 0000000..0858725 --- /dev/null +++ b/src/cocoatweet/api/oauth2/oauth2.cc @@ -0,0 +1,26 @@ +#include +#include + +namespace CocoaTweet::API::OAuth2 { +OAuth2::OAuth2(std::shared_ptr _oauth) { + oauth_ = _oauth; +} + +const std::string OAuth2::token() const { + // auto key = oauth_.lock()->key(); + // auto oauth = std::make_shared(key); + + CocoaTweet::API::OAuth2::Token token; + return token.process(oauth_); +} + +const CocoaTweet::API::Model::BearerToken OAuth2::invalidateToken( + const std::string& _bearer) const { + // auto key = oauth_.lock()->key(); + // auto oauth = std::make_shared(key); + + CocoaTweet::API::OAuth2::InvalidateToken invalidateToken; + invalidateToken.accessToken(_bearer); + return invalidateToken.process(oauth_); +} +} // namespace CocoaTweet::API::OAuth2 diff --git a/src/cocoatweet/api/oauth2/oauth2.h b/src/cocoatweet/api/oauth2/oauth2.h new file mode 100644 index 0000000..6d66aad --- /dev/null +++ b/src/cocoatweet/api/oauth2/oauth2.h @@ -0,0 +1,30 @@ +#ifndef COCOATWEET_API_OAUTH2_OAUTH2_H_ +#define COCOATWEET_API_OAUTH2_OAUTH2_H_ + +#include "cocoatweet/api/interface/groupInterface.h" +#include +#include +#include +#include +#include +#include + +namespace CocoaTweet::API::OAuth2 { +/// @brief class for using users/show endpoint +class OAuth2 : public groupInterface { +public: + /// @brief primary constructor + OAuth2() = default; + + /// @brief constructor which finally should to be called. + /// @param[in] std::shared_ptr : pointer to + /// OAuth object + OAuth2(std::shared_ptr _oauth); + + const std::string token() const; + + const CocoaTweet::API::Model::BearerToken invalidateToken(const std::string& _bearer) const; +}; +} // namespace CocoaTweet::API::OAuth2 + +#endif diff --git a/src/cocoatweet/api/oauth2/token.cc b/src/cocoatweet/api/oauth2/token.cc new file mode 100644 index 0000000..3de92b9 --- /dev/null +++ b/src/cocoatweet/api/oauth2/token.cc @@ -0,0 +1,23 @@ +#include +#include "nlohmann/json.hpp" + +namespace CocoaTweet::API::OAuth2 { +Token::Token() { + contentType_ = "application/x-www-form-urlencoded"; + url_ = "https://api.twitter.com/oauth2/token"; + + bodyParam_.insert_or_assign("grant_type", "client_credentials"); +} + +const std::string Token::process( + std::weak_ptr _oauth) { + auto basic = std::make_shared(_oauth.lock()->key()); + std::string bearer = ""; + HttpPost::process(basic, [&bearer](const std::string& _rcv) { + auto j = nlohmann::json::parse(_rcv); + bearer = j["access_token"]; + }); + return bearer; +} + +} // namespace CocoaTweet::API::OAuth2 \ No newline at end of file diff --git a/src/cocoatweet/api/oauth2/token.h b/src/cocoatweet/api/oauth2/token.h new file mode 100644 index 0000000..4fc0196 --- /dev/null +++ b/src/cocoatweet/api/oauth2/token.h @@ -0,0 +1,16 @@ +#ifndef COCOATWEET_API_OAUTH2_TOKEN_H_ +#define COCOATWEET_API_OAUTH2_TOKEN_H_ + +#include +#include + +namespace CocoaTweet::API::OAuth2 { +class Token : public CocoaTweet::API::Interface::HttpPost { +public: + Token(); + const std::string process( + std::weak_ptr _oauth); +}; +} // namespace CocoaTweet::API::OAuth2 + +#endif \ No newline at end of file diff --git a/src/cocoatweet/api/status/destroy.cc b/src/cocoatweet/api/status/destroy.cc index caa0860..974b965 100644 --- a/src/cocoatweet/api/status/destroy.cc +++ b/src/cocoatweet/api/status/destroy.cc @@ -9,7 +9,7 @@ void Destroy::id(const std::string _id) { } CocoaTweet::API::Model::Tweet Destroy::process( - std::weak_ptr _oauth) { + std::weak_ptr _oauth) { CocoaTweet::API::Model::Tweet tweet; HttpPost::process(_oauth, [&tweet](const std::string& _rcv) { tweet = CocoaTweet::API::Model::Tweet::parse(_rcv); diff --git a/src/cocoatweet/api/status/destroy.h b/src/cocoatweet/api/status/destroy.h index 6e2a036..34f0b38 100644 --- a/src/cocoatweet/api/status/destroy.h +++ b/src/cocoatweet/api/status/destroy.h @@ -18,9 +18,11 @@ public: void id(const std::string _id); /// @brief process request for endpoint - /// @param[in] std::weak_ptr _oauth : pointer to oauth object + /// @param[in] std::weak_ptr _oauth : pointer + /// to oauth object /// @param[out] CocoaTweet::API::Model::Tweet : request result - CocoaTweet::API::Model::Tweet process(std::weak_ptr _oauth); + CocoaTweet::API::Model::Tweet process( + std::weak_ptr _oauth); }; } // namespace CocoaTweet::API::Statuses diff --git a/src/cocoatweet/api/status/retweet.cc b/src/cocoatweet/api/status/retweet.cc index 32d34b5..28b91d3 100644 --- a/src/cocoatweet/api/status/retweet.cc +++ b/src/cocoatweet/api/status/retweet.cc @@ -9,7 +9,7 @@ void Retweet::id(const std::string& _id) { } CocoaTweet::API::Model::Tweet Retweet::process( - std::weak_ptr _oauth) { + std::weak_ptr _oauth) { CocoaTweet::API::Model::Tweet tweet; HttpPost::process(_oauth, [&tweet](const std::string& _rcv) { tweet = CocoaTweet::API::Model::Tweet(_rcv); diff --git a/src/cocoatweet/api/status/retweet.h b/src/cocoatweet/api/status/retweet.h index add7a97..c6eb01a 100644 --- a/src/cocoatweet/api/status/retweet.h +++ b/src/cocoatweet/api/status/retweet.h @@ -11,7 +11,8 @@ public: void id(const std::string& _id); - CocoaTweet::API::Model::Tweet process(std::weak_ptr _oauth); + CocoaTweet::API::Model::Tweet process( + std::weak_ptr _oauth); }; } // namespace CocoaTweet::API::Statuses diff --git a/src/cocoatweet/api/status/status.cc b/src/cocoatweet/api/status/status.cc index 7e050aa..9f50d85 100644 --- a/src/cocoatweet/api/status/status.cc +++ b/src/cocoatweet/api/status/status.cc @@ -6,7 +6,7 @@ #include "cocoatweet/api/status/userTimeline.h" namespace CocoaTweet::API::Statuses { -Status::Status(std::shared_ptr _oauth) { +Status::Status(std::shared_ptr _oauth) { oauth_ = _oauth; } diff --git a/src/cocoatweet/api/status/status.h b/src/cocoatweet/api/status/status.h index 74e4bb7..4c2e738 100644 --- a/src/cocoatweet/api/status/status.h +++ b/src/cocoatweet/api/status/status.h @@ -2,7 +2,7 @@ #define COCOATWEET_API_STATUS_STATUS_H_ #include "cocoatweet/api/interface/groupInterface.h" -#include "cocoatweet/oauth/oauth.h" +#include "cocoatweet/authentication/authenticator.h" #include #include #include @@ -28,8 +28,9 @@ public: Status() = default; /// @brief constructor which finally should to be called. - /// @param[in] std::shared_ptr : pointer to OAuth object - Status(std::shared_ptr _oauth); + /// @param[in] std::shared_ptr : pointer to + /// OAuth object + Status(std::shared_ptr _oauth); /// @brief send request to statuses/update with specified status /// @details this function throws CocoaTweet::Exception::* if something happen diff --git a/src/cocoatweet/api/status/unretweet.cc b/src/cocoatweet/api/status/unretweet.cc index 3d59158..3674591 100644 --- a/src/cocoatweet/api/status/unretweet.cc +++ b/src/cocoatweet/api/status/unretweet.cc @@ -9,7 +9,7 @@ void Unretweet::id(const std::string& _id) { } CocoaTweet::API::Model::Tweet Unretweet::process( - std::weak_ptr _oauth) { + std::weak_ptr _oauth) { CocoaTweet::API::Model::Tweet tweet; HttpPost::process(_oauth, [&tweet](const std::string& _rcv) { tweet = CocoaTweet::API::Model::Tweet(_rcv); diff --git a/src/cocoatweet/api/status/unretweet.h b/src/cocoatweet/api/status/unretweet.h index 4f2421f..b21502a 100644 --- a/src/cocoatweet/api/status/unretweet.h +++ b/src/cocoatweet/api/status/unretweet.h @@ -11,7 +11,8 @@ public: void id(const std::string& _id); - CocoaTweet::API::Model::Tweet process(std::weak_ptr _oauth); + CocoaTweet::API::Model::Tweet process( + std::weak_ptr _oauth); }; } // namespace CocoaTweet::API::Statuses diff --git a/src/cocoatweet/api/status/update.cc b/src/cocoatweet/api/status/update.cc index 866ad8b..2b79d25 100644 --- a/src/cocoatweet/api/status/update.cc +++ b/src/cocoatweet/api/status/update.cc @@ -53,7 +53,8 @@ void Update::failDMCommands(bool _fail) { bodyParam_.insert_or_assign("fail_dmcommands", std::to_string(_fail)); } -CocoaTweet::API::Model::Tweet Update::process(std::weak_ptr _oauth) { +CocoaTweet::API::Model::Tweet Update::process( + std::weak_ptr _oauth) { CocoaTweet::API::Model::Tweet tweet; HttpPost::process(_oauth, [&tweet](const std::string& _rcv) { tweet = CocoaTweet::API::Model::Tweet::parse(_rcv); diff --git a/src/cocoatweet/api/status/update.h b/src/cocoatweet/api/status/update.h index 1f3ff38..f11b82a 100644 --- a/src/cocoatweet/api/status/update.h +++ b/src/cocoatweet/api/status/update.h @@ -40,9 +40,11 @@ public: void failDMCommands(bool _fail); /// @brief process request for endpoint - /// @param[in] std::weak_ptr _oauth : pointer to oauth object + /// @param[in] std::weak_ptr _oauth : pointer + /// to oauth object /// @param[out] CocoaTweet::API::Model::Tweet : request result - CocoaTweet::API::Model::Tweet process(std::weak_ptr _oauth); + CocoaTweet::API::Model::Tweet process( + std::weak_ptr _oauth); private: std::string status_; diff --git a/src/cocoatweet/api/status/userTimeline.cc b/src/cocoatweet/api/status/userTimeline.cc index 7da4a3f..59c4930 100644 --- a/src/cocoatweet/api/status/userTimeline.cc +++ b/src/cocoatweet/api/status/userTimeline.cc @@ -13,7 +13,7 @@ void UserTimeline::screenName(const std::string& _screenName) { } std::vector UserTimeline::process( - std::weak_ptr _oauth) { + std::weak_ptr _oauth) { std::vector tweet; HttpGet::process(_oauth, [&tweet](const std::string& _rcv) { auto json = nlohmann::json::parse(_rcv); diff --git a/src/cocoatweet/api/status/userTimeline.h b/src/cocoatweet/api/status/userTimeline.h index 2da1b17..8de981a 100644 --- a/src/cocoatweet/api/status/userTimeline.h +++ b/src/cocoatweet/api/status/userTimeline.h @@ -19,10 +19,11 @@ public: void screenName(const std::string& _screenName); /// @brief process request for endpoint - /// @param[in] std::weak_ptr _oauth : pointer to oauth object + /// @param[in] std::weak_ptr _oauth : pointer + /// to oauth object /// @param[out] std::vector : request result std::vector process( - std::weak_ptr _oauth); + std::weak_ptr _oauth); private: std::string status_; diff --git a/src/cocoatweet/api/user/show.cc b/src/cocoatweet/api/user/show.cc new file mode 100644 index 0000000..731a4e1 --- /dev/null +++ b/src/cocoatweet/api/user/show.cc @@ -0,0 +1,34 @@ +#include "cocoatweet/api/user/show.h" +#include +#include "nlohmann/json.hpp" + +namespace CocoaTweet::API::Users { +Show::Show() { + contentType_ = "application/x-www-form-urlencoded"; + url_ = "https://api.twitter.com/1.1/users/show.json"; +} + +void Show::screenName(const std::string& _screenName) { + if (bodyParam_.count("user_id") > 0) { + bodyParam_.erase("user_id"); + } + bodyParam_.insert_or_assign("screen_name", _screenName); +} + +void Show::id(const std::string& _id) { + if (bodyParam_.count("screen_name") > 0) { + bodyParam_.erase("screen_name"); + } + bodyParam_.insert_or_assign("id", _id); +} + +CocoaTweet::API::Model::User Show::process( + std::weak_ptr _oauth) { + CocoaTweet::API::Model::User user; + HttpGet::process(_oauth, [&user](const std::string& _rcv) { + user = CocoaTweet::API::Model::User::parse(_rcv); + }); + return user; +} + +} // namespace CocoaTweet::API::Users diff --git a/src/cocoatweet/api/user/show.h b/src/cocoatweet/api/user/show.h new file mode 100644 index 0000000..5074ce0 --- /dev/null +++ b/src/cocoatweet/api/user/show.h @@ -0,0 +1,37 @@ +#ifndef COCOATWEET_API_USER_SHOW_H_ +#define COCOATWEET_API_USER_SHOW_H_ + +#include +#include +#include +#include +#include + +namespace CocoaTweet::API::Users { +/// @brief class for using users/show endpoint +class Show : public CocoaTweet::API::Interface::HttpGet { +public: + /// @brief primary constructor + Show(); + + /// @brief set screen name to get user information + /// @param[in] const std::string& _id : screen name for getting information + void id(const std::string& _id); + + /// @brief set screen name to get user information + /// @param[in] const std::string& _screenName : screen name for getting information + void screenName(const std::string& _screenName); + + /// @brief process request for endpoint + /// @param[in] std::weak_ptr _oauth : pointer + /// to oauth object + /// @param[out] CocoaTweet::API::Model::User : request result + CocoaTweet::API::Model::User process( + std::weak_ptr _oauth); + +private: + std::string status_; +}; +} // namespace CocoaTweet::API::Users + +#endif diff --git a/src/cocoatweet/api/user/user.cc b/src/cocoatweet/api/user/user.cc new file mode 100644 index 0000000..773ec3a --- /dev/null +++ b/src/cocoatweet/api/user/user.cc @@ -0,0 +1,14 @@ +#include +#include + +namespace CocoaTweet::API::Users { +User::User(std::shared_ptr _oauth) { + oauth_ = _oauth; +} + +CocoaTweet::API::Model::User User::show(const std::string& _screenName) const { + CocoaTweet::API::Users::Show show; + show.screenName(_screenName); + return show.process(oauth_); +} +} // namespace CocoaTweet::API::Users \ No newline at end of file diff --git a/src/cocoatweet/api/user/user.h b/src/cocoatweet/api/user/user.h new file mode 100644 index 0000000..318ed2a --- /dev/null +++ b/src/cocoatweet/api/user/user.h @@ -0,0 +1,26 @@ +#ifndef COCOATWEET_API_USER_USER_H_ +#define COCOATWEET_API_USER_USER_H_ + +#include "cocoatweet/api/interface/groupInterface.h" +#include "cocoatweet/authentication/authenticator.h" +#include +#include +#include + +namespace CocoaTweet::API::Users { +/// @brief class for using users/show endpoint +class User : public groupInterface { +public: + /// @brief primary constructor + User() = default; + + /// @brief constructor which finally should to be called. + /// @param[in] std::shared_ptr : pointer to + /// OAuth object + User(std::shared_ptr _oauth); + + CocoaTweet::API::Model::User show(const std::string& _screenName) const; +}; +} // namespace CocoaTweet::API::Users + +#endif diff --git a/src/cocoatweet/authentication/authenticator.cc b/src/cocoatweet/authentication/authenticator.cc new file mode 100644 index 0000000..e69de29 diff --git a/src/cocoatweet/authentication/authenticator.h b/src/cocoatweet/authentication/authenticator.h new file mode 100644 index 0000000..f393b16 --- /dev/null +++ b/src/cocoatweet/authentication/authenticator.h @@ -0,0 +1,29 @@ +#ifndef COCOATWEET_AUTHENTICATION_AUTHENTICATOR_H_ +#define COCOATWEET_AUTHENTICATION_AUTHENTICATOR_H_ + +#include +namespace CocoaTweet::Authentication { +class AuthenticatorBase { +public: + enum class AuthenticationMethod { OAUTH10A, OAUTH2, BASIC, PLAIN, NONE }; + + virtual const std::string calculateAuthHeader(std::map _bodyParam, + const std::string& _method, + const std::string& _url) = 0; + + const Key key() const { + return key_; + } + +protected: + AuthenticationMethod method_; + Key key_; + static size_t curlCallback_(char* _ptr, size_t _size, size_t _nmemb, std::string* _stream) { + int realsize = _size * _nmemb; + _stream->append(_ptr, realsize); + return realsize; + } +}; +} // namespace CocoaTweet::Authentication + +#endif diff --git a/src/cocoatweet/authentication/basic.cc b/src/cocoatweet/authentication/basic.cc new file mode 100644 index 0000000..b97f63d --- /dev/null +++ b/src/cocoatweet/authentication/basic.cc @@ -0,0 +1,74 @@ +#include "basic.h" +#include "cocoatweet/util/util.h" +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +extern "C" { +#include +#include +#include +#include +} + +#ifndef NDEBUG +#include +#endif + +namespace CocoaTweet::Authentication { +Basic::Basic() { + method_ = AuthenticationMethod::BASIC; +} + +Basic::Basic(const Key _key) { + key_ = _key; + method_ = AuthenticationMethod::BASIC; +} +const std::string Basic::calculateAuthHeader(std::map _bodyParam, + const std::string& _method, + const std::string& _url) { + auto signature = key_.consumerKey() + ":" + key_.consumerSecret(); + auto k64Signature = base64(signature); + auto authHeader = std::string("Authorization: Basic ") + k64Signature; + + return authHeader; +} + +const std::string Basic::base64(const std::string& _raw) { + auto base64Table = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; + std::stringstream ss; + for (auto r : _raw) { + ss << std::bitset<8>(r); + } + + if (_raw.length() % 3 == 1) { + ss << "0000"; + } else if (_raw.length() % 3 == 2) { + ss << "00"; + } + + auto bin = ss.str(); + std::string base64 = ""; + for (auto i = 0; i < bin.length() / 6; i++) { + base64 += base64Table[std::stoi(bin.substr(i * 6, 6), nullptr, 2)]; + } + + if (base64.length() % 4 == 3) { + base64 += "="; + } else if (base64.length() % 4 == 2) { + base64 += "=="; + } else if (base64.length() % 4 == 1) { + base64 += "==="; + } + + return base64; +} + +} // namespace CocoaTweet::Authentication diff --git a/src/cocoatweet/authentication/basic.h b/src/cocoatweet/authentication/basic.h new file mode 100644 index 0000000..06e3fd6 --- /dev/null +++ b/src/cocoatweet/authentication/basic.h @@ -0,0 +1,24 @@ +#ifndef COCOATWEET_AUTHENTICATION_BASIC_H_ +#define COCOATWEET_AUTHENTICATION_BASIC_H_ + +#include +#include +#include +#include "key.h" +#include + +namespace CocoaTweet::Authentication { +class Basic : public AuthenticatorBase { +public: + Basic(); + Basic(const Key _key); + + // const std::string& generateBearerToken(); + + const std::string calculateAuthHeader(std::map _bodyParam, + const std::string& _method, const std::string& _url); + const std::string base64(const std::string& _raw); +}; +} // namespace CocoaTweet::Authentication + +#endif diff --git a/src/cocoatweet/authentication/bearer.cc b/src/cocoatweet/authentication/bearer.cc new file mode 100644 index 0000000..543b7b8 --- /dev/null +++ b/src/cocoatweet/authentication/bearer.cc @@ -0,0 +1,42 @@ +#include "bearer.h" +#include "cocoatweet/util/util.h" +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +extern "C" { +#include +#include +#include +#include +} + +#ifndef NDEBUG +#include +#endif + +namespace CocoaTweet::Authentication { +Bearer::Bearer() { + method_ = AuthenticationMethod::OAUTH2; +} + +Bearer::Bearer(const Key _key) { + key_ = _key; + method_ = AuthenticationMethod::OAUTH2; +} +const std::string Bearer::calculateAuthHeader(std::map _bodyParam, + const std::string& _method, + const std::string& _url) { + auto authHeader = std::string("Authorization: Bearer ") + key_.bearerToken(); + + return authHeader; +} + +} // namespace CocoaTweet::Authentication diff --git a/src/cocoatweet/authentication/bearer.h b/src/cocoatweet/authentication/bearer.h new file mode 100644 index 0000000..7d2f5c6 --- /dev/null +++ b/src/cocoatweet/authentication/bearer.h @@ -0,0 +1,21 @@ +#ifndef COCOATWEET_AUTHENTICATION_BEARER_H_ +#define COCOATWEET_AUTHENTICATION_BEARER_H_ + +#include +#include +#include +#include "key.h" +#include + +namespace CocoaTweet::Authentication { +class Bearer : public AuthenticatorBase { +public: + Bearer(); + Bearer(const Key _key); + + const std::string calculateAuthHeader(std::map _bodyParam, + const std::string& _method, const std::string& _url); +}; +} // namespace CocoaTweet::Authentication + +#endif diff --git a/src/cocoatweet/oauth/key.cc b/src/cocoatweet/authentication/key.cc similarity index 81% rename from src/cocoatweet/oauth/key.cc rename to src/cocoatweet/authentication/key.cc index 6230935..318c1a1 100644 --- a/src/cocoatweet/oauth/key.cc +++ b/src/cocoatweet/authentication/key.cc @@ -1,16 +1,19 @@ -#include "cocoatweet/oauth/key.h" +#include "cocoatweet/authentication/key.h" #include "nlohmann/json.hpp" #include #include #include -namespace CocoaTweet::OAuth { +namespace CocoaTweet::Authentication { Key Key::fromJsonFile(const std::string _jsonFile) { std::ifstream ifs(_jsonFile); std::string str((std::istreambuf_iterator(ifs)), std::istreambuf_iterator()); auto j = nlohmann::json::parse(str); Key key; + + key.authType(Key::AUTH_TYPE::OAUTH10A); + if (j.contains("consumer_key")) { key.consumerKey(j["consumer_key"].get()); } @@ -29,4 +32,4 @@ Key Key::fromJsonFile(const std::string _jsonFile) { return key; } -} // namespace CocoaTweet::OAuth +} // namespace CocoaTweet::Authentication diff --git a/src/cocoatweet/oauth/key.h b/src/cocoatweet/authentication/key.h similarity index 76% rename from src/cocoatweet/oauth/key.h rename to src/cocoatweet/authentication/key.h index 8a39755..97aacc9 100644 --- a/src/cocoatweet/oauth/key.h +++ b/src/cocoatweet/authentication/key.h @@ -1,27 +1,35 @@ -#ifndef COCOATWEET_OAUTH_KEY_H_ -#define COCOATWEET_OAUTH_KEY_H_ +#ifndef COCOATWEET_AUTHENTICATION_KEY_H_ +#define COCOATWEET_AUTHENTICATION_KEY_H_ #include #include -namespace CocoaTweet::OAuth { +namespace CocoaTweet::Authentication { class Key { +public: + enum AUTH_TYPE { OAUTH10A, OAUTH2 }; + +private: std::string consumerKey_; std::string consumerSecret_; std::string accessToken_; std::string accessTokenSecret_; std::string bearerToken_; + AUTH_TYPE authType_; public: Key() : consumerKey_(""), consumerSecret_(""), accessToken_(""), accessTokenSecret_("") {} Key(const std::string& _consumerKey, const std::string& _consumerSecret, - const std::string& _accessToken, const std::string& _accessTokenSecret) + const std::string& _accessToken, const std::string& _accessTokenSecret, + const AUTH_TYPE _authType = AUTH_TYPE::OAUTH10A) : consumerKey_(_consumerKey), consumerSecret_(_consumerSecret), accessToken_(_accessToken), - accessTokenSecret_(_accessTokenSecret) {} - Key(const std::string& _consumerKey, const std::string& _consumerSecret) - : consumerKey_(_consumerKey), consumerSecret_(_consumerSecret) {} + accessTokenSecret_(_accessTokenSecret), + authType_(_authType) {} + Key(const std::string& _consumerKey, const std::string& _consumerSecret, + const AUTH_TYPE _authType = AUTH_TYPE::OAUTH2) + : consumerKey_(_consumerKey), consumerSecret_(_consumerSecret), authType_(_authType) {} void consumerKey(const std::string& _consumerKey) { consumerKey_ = _consumerKey; @@ -59,6 +67,14 @@ public: return bearerToken_; } + const AUTH_TYPE authType() const { + return authType_; + } + + void authType(AUTH_TYPE _authType) { + authType_ = _authType; + } + std::map noSecret() const { return std::map{{"oauth_consumer_key", consumerKey_}, {"oauth_token", accessToken_}}; @@ -70,6 +86,6 @@ public: static Key fromJsonFile(const std::string _jsonFile); }; -} // namespace CocoaTweet::OAuth +} // namespace CocoaTweet::Authentication #endif diff --git a/src/cocoatweet/oauth/oauth.cc b/src/cocoatweet/authentication/oauth.cc similarity index 62% rename from src/cocoatweet/oauth/oauth.cc rename to src/cocoatweet/authentication/oauth.cc index 1b8b7ae..1b36b16 100644 --- a/src/cocoatweet/oauth/oauth.cc +++ b/src/cocoatweet/authentication/oauth.cc @@ -22,10 +22,15 @@ extern "C" { #include #endif -namespace CocoaTweet::OAuth { -OAuth1::OAuth1() : authType_(AuthType::OAuth) {} +namespace CocoaTweet::Authentication { +OAuth1::OAuth1() { + method_ = AuthenticationMethod::OAUTH10A; +} -OAuth1::OAuth1(const Key _key) : key_(_key), authType_(AuthType::OAuth) {} +OAuth1::OAuth1(const Key _key) { + key_ = _key; + method_ = AuthenticationMethod::OAUTH10A; +} std::map OAuth1::signature( const std::map& _param, const std::string& _method, @@ -49,10 +54,6 @@ std::map OAuth1::signature( const std::string OAuth1::calculateAuthHeader(std::map _bodyParam, const std::string& _method, const std::string& _url) { - if (authType_ == AuthType::Bearer) { - return "Authorization: Bearer " + key_.bearerToken(); - } - auto authParam = oauthParam(); auto sigingParam = authParam; if (!_bodyParam.empty()) { @@ -77,67 +78,6 @@ const std::string OAuth1::calculateAuthHeader(std::map return oauthHeader; } -const std::string& OAuth1::generateBearerToken() { - auto signature = key_.consumerKey() + ":" + key_.consumerSecret(); - auto k64Signature = base64(signature); - auto authHeader = std::string("Authorization: Basic ") + k64Signature; - auto contentType = - std::string("Content-Type: application/x-www-form-urlencoded;charset=UTF-8"); - auto url = std::string("https://api.twitter.com/oauth2/token"); - auto requestBody = std::string("grant_type=client_credentials"); - - // do post - CURL* curl; - CURLcode res; - std::string rcv; - long responseCode; - curl = curl_easy_init(); - if (curl) { - curl_easy_setopt(curl, CURLOPT_URL, url.c_str()); - curl_easy_setopt(curl, CURLOPT_POST, 1); - curl_easy_setopt(curl, CURLOPT_POSTFIELDS, requestBody.c_str()); - curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, requestBody.length()); - curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L); - curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, curlCallback_); - curl_easy_setopt(curl, CURLOPT_WRITEDATA, (std::string*)&rcv); -#ifndef NDEBUG - std::cout << "requestBody : " << requestBody << std::endl; - curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L); -#endif - // Headerを保持するcurl_slist*を初期化 - struct curl_slist* headers = NULL; - // Authorizationをヘッダに追加 - headers = curl_slist_append(headers, authHeader.c_str()); - headers = curl_slist_append(headers, contentType.c_str()); - curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers); - res = curl_easy_perform(curl); - curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &responseCode); - curl_easy_cleanup(curl); - } - if (res != CURLE_OK) { - throw std::runtime_error(std::string("INTERNAL ERROR : curl(") + std::to_string(res) + ")"); - exit(1); - } - - auto j = nlohmann::json::parse(rcv); - if ((responseCode / 100) == 4) { - auto error = j["errors"][0]["code"]; - auto message = j["errors"][0]["message"]; - if (j.count("error") != 0) { - // この形式はエラーコードを持たないのでエラー種別が特定できない - throw new CocoaTweet::Exception::Exception(j["error"]); - } - if (error.get() == 44) { - throw CocoaTweet::Exception::InvalidParameterException( - message.get().c_str()); - } - } - - key_.bearerToken(j["access_token"]); - authType_ = AuthType::Bearer; - return key_.bearerToken(); -} - const std::string OAuth1::nonce() const { std::random_device engine; std::string nonceTable = "abcdefghijklmnopqrstuvwxyz0123456789"; @@ -156,15 +96,11 @@ const std::string OAuth1::timestamp() const { } const std::string OAuth1::method() const { - return SIGNATURE_METHOD_; + return "HMAC-SHA1"; } const std::string OAuth1::version() const { - return OAUTH_VERSION_; -} - -const Key OAuth1::key() const { - return key_; + return "1.0"; } std::map OAuth1::oauthParam() const { @@ -235,4 +171,4 @@ std::string OAuth1::hmacSha1(std::string _key, std::string _data) { return static_cast(k64); } -} // namespace CocoaTweet::OAuth +} // namespace CocoaTweet::Authentication diff --git a/src/cocoatweet/oauth/oauth.h b/src/cocoatweet/authentication/oauth.h similarity index 59% rename from src/cocoatweet/oauth/oauth.h rename to src/cocoatweet/authentication/oauth.h index ccd2cfe..ca65f47 100644 --- a/src/cocoatweet/oauth/oauth.h +++ b/src/cocoatweet/authentication/oauth.h @@ -1,23 +1,23 @@ -#ifndef COCOATWEET_OAUTH_OAUTH_H_ -#define COCOATWEET_OAUTH_OAUTH_H_ +#ifndef COCOATWEET_AUTHENTICATION_OAUTH_H_ +#define COCOATWEET_AUTHENTICATION_OAUTH_H_ #include #include #include #include "key.h" +#include -namespace CocoaTweet::OAuth { -class OAuth1 { +namespace CocoaTweet::Authentication { +class OAuth1 : public AuthenticatorBase { public: - enum AuthType { OAuth, Bearer }; - OAuth1(); OAuth1(const Key _key); std::map signature(const std::map& _param, const std::string& _method, const std::string& _url); - const std::string& generateBearerToken(); + // const std::string& generateBearerToken(); + const std::string calculateAuthHeader(std::map _bodyParam, const std::string& _method, const std::string& _url); @@ -25,22 +25,10 @@ public: const std::string timestamp() const; const std::string method() const; const std::string version() const; - const Key key() const; std::map oauthParam() const; std::string hmacSha1(std::string _key, std::string _data); const std::string base64(const std::string& _raw); - -private: - AuthType authType_; - Key key_; - const std::string SIGNATURE_METHOD_ = "HMAC-SHA1"; - const std::string OAUTH_VERSION_ = "1.0"; - static size_t curlCallback_(char* _ptr, size_t _size, size_t _nmemb, std::string* _stream) { - int realsize = _size * _nmemb; - _stream->append(_ptr, realsize); - return realsize; - } }; -} // namespace CocoaTweet::OAuth +} // namespace CocoaTweet::Authentication #endif diff --git a/src/cocoatweet/authentication/plain.cc b/src/cocoatweet/authentication/plain.cc new file mode 100644 index 0000000..e69de29 diff --git a/src/cocoatweet/authentication/plain.h b/src/cocoatweet/authentication/plain.h new file mode 100644 index 0000000..64fe5df --- /dev/null +++ b/src/cocoatweet/authentication/plain.h @@ -0,0 +1,10 @@ +#ifndef COCOATWEET_AUTHENTICATION_PLAIN_H_ +#define COCOATWEET_AUTHENTICATION_PLAIN_H_ + +#include + +namespace CocoaTweet::Authentication { +class Plain : public AuthenticatorBase {}; +} // namespace CocoaTweet::Authentication + +#endif diff --git a/src/cocoatweet/exception/credentialNotAllowedException.h b/src/cocoatweet/exception/credentialNotAllowedException.h new file mode 100644 index 0000000..b7005bf --- /dev/null +++ b/src/cocoatweet/exception/credentialNotAllowedException.h @@ -0,0 +1,12 @@ +#ifndef COCOATWEET_EXCEPTION_CREDENTIALNOTALLOWEDEXCEPTION_H_ +#define COCOATWEET_EXCEPTION_CREDENTIALNOTALLOWEDEXCEPTION_H_ + +#include + +namespace CocoaTweet::Exception { +class CredentialNotAllowedException final : public Exception { + using Exception::Exception; +}; +} // namespace CocoaTweet::Exception + +#endif diff --git a/src/cocoatweet/exception/credentialNotVerifiedException.h b/src/cocoatweet/exception/credentialNotVerifiedException.h new file mode 100644 index 0000000..186a1e8 --- /dev/null +++ b/src/cocoatweet/exception/credentialNotVerifiedException.h @@ -0,0 +1,12 @@ +#ifndef COCOATWEET_EXCEPTION_CREDENTIALNOTVERIFIEDEXCEPTION_H_ +#define COCOATWEET_EXCEPTION_CREDENTIALNOTVERIFIEDEXCEPTION_H_ + +#include + +namespace CocoaTweet::Exception { +class CredentialNotVerifiedException final : public Exception { + using Exception::Exception; +}; +} // namespace CocoaTweet::Exception + +#endif diff --git a/src/cocoatweet/exception/invalidateTokenException.h b/src/cocoatweet/exception/invalidateTokenException.h new file mode 100644 index 0000000..3ce180e --- /dev/null +++ b/src/cocoatweet/exception/invalidateTokenException.h @@ -0,0 +1,12 @@ +#ifndef COCOATWEET_EXCEPTION_INVALIDATETOKENEXCEPTION_H_ +#define COCOATWEET_EXCEPTION_INVALIDATETOKENEXCEPTION_H_ + +#include + +namespace CocoaTweet::Exception { +class InvalidateTokenException final : public Exception { + using Exception::Exception; +}; +} // namespace CocoaTweet::Exception + +#endif diff --git a/src/cocoatweet/exception/missingRequiredParamException.h b/src/cocoatweet/exception/missingRequiredParamException.h new file mode 100644 index 0000000..a2fffc8 --- /dev/null +++ b/src/cocoatweet/exception/missingRequiredParamException.h @@ -0,0 +1,12 @@ +#ifndef COCOATWEET_EXCEPTION_MISSINGREQUIREDPARAMEXCEPTION_H_ +#define COCOATWEET_EXCEPTION_MISSINGREQUIREDPARAMEXCEPTION_H_ + +#include + +namespace CocoaTweet::Exception { +class MissingRequiredParamException final : public Exception { + using Exception::Exception; +}; +} // namespace CocoaTweet::Exception + +#endif diff --git a/src/cocoatweet/oauth/authorize.h b/src/cocoatweet/oauth/authorize.h new file mode 100644 index 0000000..8b6efb3 --- /dev/null +++ b/src/cocoatweet/oauth/authorize.h @@ -0,0 +1,22 @@ +#ifndef COCOATWEET_OAUTH_AUTHORIZE_H_ +#define COCOATWEET_OAUTH_AUTHORIZE_H_ + +#include "cocoatweet/api/interface/groupInterface.h" +#include +#include + +namespace CocoaTweet::Authentication { +class Auth : public groupInterface { +public: + enum AuthType { OAuth, Bearer }; + + Auth(); + Auth(Key _key); + authorize(const bool app_only); + +private: + Key key_; +} +} // namespace CocoaTweet::Authentication + +#endif \ No newline at end of file diff --git a/src/cocoatweet/util/util.cc b/src/cocoatweet/util/util.cc index cb1ebfc..dd54b30 100644 --- a/src/cocoatweet/util/util.cc +++ b/src/cocoatweet/util/util.cc @@ -1,6 +1,9 @@ #include "cocoatweet/util/util.h" #include #include +#include + +#include namespace CocoaTweet::Util { std::string urlEncode(const std::string& _str) { @@ -19,6 +22,32 @@ std::string urlEncode(const std::string& _str) { return out.str(); } +std::string urlDecode(const std::string& _str) { + std::stringstream out; + int first = 0; + int last = _str.find_first_of('%'); + + while (first < _str.size()) { + if (last == std::string::npos) { + out << _str.substr(first); + break; + } + + auto s = _str.substr(first, last - first); + auto encoded = _str.substr(last + 1, 2); // %を飛ばし読みする + + std::cout << encoded << std::endl; + auto c = static_cast(static_cast(strtol(encoded.c_str(), nullptr, 16))); + + out << s << c; + + first = last + 3; + last = _str.find_first_of('%', first); + } + + return out.str(); +} + std::string join(const std::vector _vec, const std::string& _delim) { std::string str(""); @@ -33,4 +62,34 @@ std::string join(const std::vector _vec, const std::string& _delim) return str; } +std::unordered_map parse(const std::string str, const char _delim, + const char _conn) { + int first = 0; + int last = str.find_first_of(_delim); + std::vector result; + + while (first < str.size()) { + result.push_back(str.substr(first, last - first)); + first = last + 1; + last = str.find_first_of(_delim, first); + if (last == std::string::npos) last = str.size(); + } + + auto mp = std::unordered_map(); + for (auto elm : result) { + int pos = elm.find_first_of(_conn); + + std::cout << pos << std::endl; + if (pos == std::string::npos) { + mp.insert_or_assign(elm, ""); + } else { + auto key = elm.substr(0, pos); + auto val = elm.substr(pos + 1); + mp.insert_or_assign(key, val); + } + } + + return mp; +} + } // namespace CocoaTweet::Util diff --git a/src/cocoatweet/util/util.h b/src/cocoatweet/util/util.h index a35e2f0..a3cddfd 100644 --- a/src/cocoatweet/util/util.h +++ b/src/cocoatweet/util/util.h @@ -4,10 +4,14 @@ #include #include #include +#include namespace CocoaTweet::Util { std::string urlEncode(const std::string& _str); +std::string urlDecode(const std::string& _str); std::string join(const std::vector _vec, const std::string& _delim); +std::unordered_map parse(const std::string str, const char _delim, + const char _conn); } // namespace CocoaTweet::Util #endif diff --git a/src/main.cc b/src/main.cc index fdc0563..8db98d1 100644 --- a/src/main.cc +++ b/src/main.cc @@ -2,35 +2,41 @@ #include #include +#include +#include +#include +#include +#include + +#include + auto main() -> int { // Generate Key object // auto consumerKey = "your consumer key"; // auto consumerSecret = "your consumer secret"; // auto accessToken = "your access token"; // auto accessTokenSecret = "your access token secret"; - // CocoaTweet::OAuth::Key key = CocoaTweet::OAuth::Key(consumerKey, + // CocoaTweet::Authentication::Key key = CocoaTweet::Authentication::Key(consumerKey, // consumerSecret, // accessToken, // accessTokenSecret); - // also can generate Key object from JSON file - // CocoaTweet::OAuth::Key key = CocoaTweet::OAuth::Key::fromJsonFile("api_key.json"); + try { + // also can generate Key object from JSON file + CocoaTweet::Authentication::Key key = + CocoaTweet::Authentication::Key::fromJsonFile("api_key.json"); - // Generate API Entry object using Key object - // CocoaTweet::API::API api(key); - - // if you want to access api using Bearer Token, call this for get BearerToken; - // NOTE: call this, always authenticate with Bearer Token, which is Read Only Token - // try { - // api.generateBearerToken(); + // Generate API Entry object using Key object + CocoaTweet::API::API api(key); // Now, you can use a twitter api - // auto status = api.status().update("Hello Twitter World via Cocoa Twitter Library"); + // auto status = api.status().update("Hello Twitter World via Cocoa Twitter Library!!"); + // std::cout << status.id() << std::endl; // api.favorite().create(status.id()); // api.favorite().destroy(status.id()); // api.status().destroy(status.id()); // auto timeline = api.status().userTimeline("milkcocoa0902"); - // } catch (CocoaTweet::Exception::Exception e) { - // std::cout << e.what() << std::endl; - // } + } catch (CocoaTweet::Exception::Exception e) { + std::cout << e.what() << std::endl; + } } diff --git a/test/oauth/key.cc b/test/oauth/key.cc index f03b2b8..e6dc8ad 100644 --- a/test/oauth/key.cc +++ b/test/oauth/key.cc @@ -2,11 +2,11 @@ #include -#include "cocoatweet/oauth/key.h" +#include "cocoatweet/authentication/key.h" BOOST_AUTO_TEST_SUITE(oauth_key) BOOST_AUTO_TEST_CASE(test01) { - CocoaTweet::OAuth::Key key; + CocoaTweet::Authentication::Key key; BOOST_TEST(key.consumerKey() == ""); BOOST_TEST(key.consumerSecret() == ""); @@ -15,8 +15,8 @@ BOOST_AUTO_TEST_CASE(test01) { } BOOST_AUTO_TEST_CASE(test02) { - CocoaTweet::OAuth::Key key("consumerKey", "consumerSecret", "accessToken", - "accessTokenSecret"); + CocoaTweet::Authentication::Key key("consumerKey", "consumerSecret", "accessToken", + "accessTokenSecret"); BOOST_TEST(key.consumerKey() == "consumerKey"); BOOST_TEST(key.consumerSecret() == "consumerSecret");