sync : vendor (#13901)

* sync : vendor

ggml-ci

* cont : fix httplib version

ggml-ci

* cont : fix lint

* cont : fix lint

* vendor : move to common folder /vendor

ggml-ci

* cont : fix lint

* cont : move httplib to /vendor + use json_fwd.hpp

ggml-ci

* cont : fix server build

ggml-ci

* cont : add missing headers

ggml-ci

* cont : header clean-up

ggml-ci
This commit is contained in:
Georgi Gerganov
2025-05-30 16:25:45 +03:00
committed by GitHub
parent db38704f01
commit 53f925074d
27 changed files with 2084 additions and 1096 deletions

View File

@ -49,6 +49,6 @@ charset = unset
trim_trailing_whitespace = unset trim_trailing_whitespace = unset
insert_final_newline = unset insert_final_newline = unset
[tools/mtmd/vendor/miniaudio.h] [vendor/miniaudio/miniaudio.h]
trim_trailing_whitespace = unset trim_trailing_whitespace = unset
insert_final_newline = unset insert_final_newline = unset

View File

@ -58,23 +58,20 @@ add_library(${TARGET} STATIC
arg.cpp arg.cpp
arg.h arg.h
base64.hpp base64.hpp
chat.cpp
chat.h
chat-parser.cpp chat-parser.cpp
chat-parser.h chat-parser.h
chat.cpp
chat.h
common.cpp common.cpp
common.h common.h
console.cpp console.cpp
console.h console.h
json-schema-to-grammar.cpp
json.hpp
json-partial.h
json-partial.cpp json-partial.cpp
json-partial.h
json-schema-to-grammar.cpp
llguidance.cpp llguidance.cpp
log.cpp log.cpp
log.h log.h
minja/chat-template.hpp
minja/minja.hpp
ngram-cache.cpp ngram-cache.cpp
ngram-cache.h ngram-cache.h
regex-partial.cpp regex-partial.cpp
@ -147,7 +144,7 @@ if (LLAMA_LLGUIDANCE)
set(LLAMA_COMMON_EXTRA_LIBS ${LLAMA_COMMON_EXTRA_LIBS} llguidance ${LLGUIDANCE_PLATFORM_LIBS}) set(LLAMA_COMMON_EXTRA_LIBS ${LLAMA_COMMON_EXTRA_LIBS} llguidance ${LLGUIDANCE_PLATFORM_LIBS})
endif () endif ()
target_include_directories(${TARGET} PUBLIC .) target_include_directories(${TARGET} PUBLIC . ../vendor)
target_compile_features (${TARGET} PUBLIC cxx_std_17) target_compile_features (${TARGET} PUBLIC cxx_std_17)
target_link_libraries (${TARGET} PRIVATE ${LLAMA_COMMON_EXTRA_LIBS} PUBLIC llama Threads::Threads) target_link_libraries (${TARGET} PRIVATE ${LLAMA_COMMON_EXTRA_LIBS} PUBLIC llama Threads::Threads)

View File

@ -1,10 +1,11 @@
#include "gguf.h" // for reading GGUF splits
#include "arg.h" #include "arg.h"
#include "chat.h"
#include "common.h" #include "common.h"
#include "gguf.h" // for reading GGUF splits
#include "json-schema-to-grammar.h"
#include "log.h" #include "log.h"
#include "sampling.h" #include "sampling.h"
#include "chat.h"
// fix problem with std::min and std::max // fix problem with std::min and std::max
#if defined(_WIN32) #if defined(_WIN32)
@ -15,6 +16,9 @@
#include <windows.h> #include <windows.h>
#endif #endif
#define JSON_ASSERT GGML_ASSERT
#include <nlohmann/json.hpp>
#include <algorithm> #include <algorithm>
#include <climits> #include <climits>
#include <cstdarg> #include <cstdarg>
@ -34,8 +38,6 @@
#include <future> #include <future>
#endif #endif
#include "json-schema-to-grammar.h"
using json = nlohmann::ordered_json; using json = nlohmann::ordered_json;
std::initializer_list<enum llama_example> mmproj_examples = { std::initializer_list<enum llama_example> mmproj_examples = {

View File

@ -2,9 +2,10 @@
#include "chat.h" #include "chat.h"
#include "json-partial.h" #include "json-partial.h"
#include "json.hpp"
#include "regex-partial.h" #include "regex-partial.h"
#include <nlohmann/json.hpp>
#include <optional> #include <optional>
#include <string> #include <string>
#include <vector> #include <vector>

View File

@ -1,13 +1,14 @@
#include "chat.h" #include "chat.h"
#include "chat-parser.h" #include "chat-parser.h"
#include "common.h" #include "common.h"
#include "json-partial.h"
#include "json-schema-to-grammar.h" #include "json-schema-to-grammar.h"
#include "log.h" #include "log.h"
#include "json-partial.h"
#include "minja/chat-template.hpp"
#include "minja/minja.hpp"
#include "regex-partial.h" #include "regex-partial.h"
#include <minja/chat-template.hpp>
#include <minja/minja.hpp>
#include <cstdio> #include <cstdio>
#include <exception> #include <exception>
#include <iostream> #include <iostream>
@ -16,7 +17,6 @@
#include <string> #include <string>
#include <vector> #include <vector>
static std::string format_time(const std::chrono::system_clock::time_point & now, const std::string & format) { static std::string format_time(const std::chrono::system_clock::time_point & now, const std::string & format) {
auto time = std::chrono::system_clock::to_time_t(now); auto time = std::chrono::system_clock::to_time_t(now);
auto local_time = *std::localtime(&time); auto local_time = *std::localtime(&time);

View File

@ -1,9 +1,10 @@
#include <json-partial.h> #include "json-partial.h"
#include "ggml.h"
#include "log.h"
#include <string>
#include <json.hpp> #include "log.h"
#include <nlohmann/json.hpp>
#include <string>
using json = nlohmann::ordered_json; using json = nlohmann::ordered_json;

View File

@ -1,5 +1,6 @@
#pragma once #pragma once
#include <json.hpp>
#include <nlohmann/json.hpp>
// Healing marker (empty if the JSON was fully parsed / wasn't healed). // Healing marker (empty if the JSON was fully parsed / wasn't healed).
struct common_healing_marker { struct common_healing_marker {

View File

@ -1,8 +1,9 @@
#include "json-schema-to-grammar.h" #include "json-schema-to-grammar.h"
#include "common.h" #include "common.h"
#include <nlohmann/json.hpp>
#include <algorithm> #include <algorithm>
#include <fstream>
#include <map> #include <map>
#include <regex> #include <regex>
#include <sstream> #include <sstream>

View File

@ -1,9 +1,9 @@
#pragma once #pragma once
#include "ggml.h" #include <nlohmann/json_fwd.hpp>
// Change JSON_ASSERT from assert() to GGML_ASSERT:
#define JSON_ASSERT GGML_ASSERT #include <functional>
#include "json.hpp" #include <string>
std::string json_schema_to_grammar(const nlohmann::ordered_json & schema, std::string json_schema_to_grammar(const nlohmann::ordered_json & schema,
bool force_gbnf = false); bool force_gbnf = false);

22
scripts/sync_vendor.py Executable file
View File

@ -0,0 +1,22 @@
#!/usr/bin/env python3
import urllib.request
vendor = {
"https://github.com/nlohmann/json/releases/latest/download/json.hpp": "vendor/nlohmann/json.hpp",
"https://github.com/nlohmann/json/releases/latest/download/json_fwd.hpp": "vendor/nlohmann/json_fwd.hpp",
# sync manually
# "https://raw.githubusercontent.com/ochafik/minja/refs/heads/main/include/minja/minja.hpp": "vendor/minja/minja.hpp",
# "https://raw.githubusercontent.com/ochafik/minja/refs/heads/main/include/minja/chat-template.hpp": "vendor/minja/chat-template.hpp",
"https://raw.githubusercontent.com/nothings/stb/refs/heads/master/stb_image.h": "vendor/stb/stb_image.h",
"https://github.com/mackron/miniaudio/raw/refs/tags/0.11.22/miniaudio.h": "vendor/miniaudio/miniaudio.h",
"https://raw.githubusercontent.com/yhirose/cpp-httplib/refs/tags/v0.20.1/httplib.h": "vendor/cpp-httplib/httplib.h",
}
for url, filename in vendor.items():
print(f"downloading {url} to {filename}") # noqa: NP100
urllib.request.urlretrieve(url, filename)

View File

@ -5,16 +5,17 @@
// //
// cmake -B build && cmake --build build --parallel && ./build/bin/test-chat ../minja/build/tests/*.jinja 2>/dev/null // cmake -B build && cmake --build build --parallel && ./build/bin/test-chat ../minja/build/tests/*.jinja 2>/dev/null
// //
#include <fstream>
#include <iostream>
#include <json.hpp>
#include <string>
#include "chat.h" #include "chat.h"
#include "../src/unicode.h" #include "../src/unicode.h"
#include "../src/llama-grammar.h" #include "../src/llama-grammar.h"
#include <nlohmann/json.hpp>
#include <fstream>
#include <iostream>
#include <string>
using json = nlohmann::ordered_json; using json = nlohmann::ordered_json;
static std::ostream & operator<<(std::ostream & os, const common_chat_msg_diff & diff) { static std::ostream & operator<<(std::ostream & os, const common_chat_msg_diff & diff) {

View File

@ -7,6 +7,8 @@
#include "../src/unicode.h" #include "../src/unicode.h"
#include "../src/llama-grammar.h" #include "../src/llama-grammar.h"
#include <nlohmann/json.hpp>
#include <cassert> #include <cassert>
#include <string> #include <string>
#include <vector> #include <vector>

View File

@ -6,6 +6,8 @@
#include "../src/llama-grammar.h" #include "../src/llama-grammar.h"
#include <nlohmann/json.hpp>
#include <cassert> #include <cassert>
#include <fstream> #include <fstream>
#include <sstream> #include <sstream>

View File

@ -23,8 +23,7 @@ add_library(mtmd_helper OBJECT
target_link_libraries(mtmd_helper PRIVATE ggml llama mtmd ${CMAKE_THREAD_LIBS_INIT}) target_link_libraries(mtmd_helper PRIVATE ggml llama mtmd ${CMAKE_THREAD_LIBS_INIT})
target_include_directories(mtmd_helper PUBLIC .) target_include_directories(mtmd_helper PUBLIC .)
target_include_directories(mtmd_helper PRIVATE ./vendor) target_include_directories(mtmd_helper PRIVATE ../../vendor)
target_include_directories(mtmd_helper PRIVATE ../..)
target_compile_features(mtmd_helper PRIVATE cxx_std_17) target_compile_features(mtmd_helper PRIVATE cxx_std_17)
if (BUILD_SHARED_LIBS) if (BUILD_SHARED_LIBS)

View File

@ -27,10 +27,10 @@
#define MA_NO_ENGINE #define MA_NO_ENGINE
#define MA_NO_GENERATION #define MA_NO_GENERATION
#define MA_API static #define MA_API static
#include "vendor/miniaudio.h" #include "miniaudio/miniaudio.h"
#define STB_IMAGE_IMPLEMENTATION #define STB_IMAGE_IMPLEMENTATION
#include "vendor/stb_image.h" #include "stb/stb_image.h"
#define LOG_INF(...) fprintf(stdout, __VA_ARGS__) #define LOG_INF(...) fprintf(stdout, __VA_ARGS__)
#define LOG_ERR(...) fprintf(stderr, __VA_ARGS__) #define LOG_ERR(...) fprintf(stderr, __VA_ARGS__)

View File

@ -1,3 +1,13 @@
#include "chat.h"
#include "common.h"
#include "llama-cpp.h"
#include "log.h"
#include "linenoise.cpp/linenoise.h"
#define JSON_ASSERT GGML_ASSERT
#include <nlohmann/json.hpp>
#if defined(_WIN32) #if defined(_WIN32)
# include <windows.h> # include <windows.h>
# include <io.h> # include <io.h>
@ -24,13 +34,6 @@
#include <string> #include <string>
#include <vector> #include <vector>
#include "chat.h"
#include "common.h"
#include "json.hpp"
#include "linenoise.cpp/linenoise.h"
#include "llama-cpp.h"
#include "log.h"
#if defined(__unix__) || (defined(__APPLE__) && defined(__MACH__)) || defined(_WIN32) #if defined(__unix__) || (defined(__APPLE__) && defined(__MACH__)) || defined(_WIN32)
[[noreturn]] static void sigint_handler(int) { [[noreturn]] static void sigint_handler(int) {
printf("\n" LOG_COL_DEFAULT); printf("\n" LOG_COL_DEFAULT);

View File

@ -12,7 +12,6 @@ endif()
set(TARGET_SRCS set(TARGET_SRCS
server.cpp server.cpp
utils.hpp utils.hpp
httplib.h
) )
set(PUBLIC_ASSETS set(PUBLIC_ASSETS
index.html.gz index.html.gz

View File

@ -11,9 +11,6 @@
#include "mtmd.h" #include "mtmd.h"
#include "mtmd-helper.h" #include "mtmd-helper.h"
// Change JSON_ASSERT from assert() to GGML_ASSERT:
#define JSON_ASSERT GGML_ASSERT
#include "json.hpp"
// mime type for sending response // mime type for sending response
#define MIMETYPE_JSON "application/json; charset=utf-8" #define MIMETYPE_JSON "application/json; charset=utf-8"

View File

@ -7,17 +7,16 @@
#include "base64.hpp" #include "base64.hpp"
#include "mtmd.h" #include "mtmd.h"
#include "mtmd-helper.h" #include "mtmd-helper.h"
#include "chat.h"
// increase max payload length to allow use of larger context size // increase max payload length to allow use of larger context size
#define CPPHTTPLIB_FORM_URL_ENCODED_PAYLOAD_MAX_LENGTH 1048576 #define CPPHTTPLIB_FORM_URL_ENCODED_PAYLOAD_MAX_LENGTH 1048576
// disable Nagle's algorithm // disable Nagle's algorithm
#define CPPHTTPLIB_TCP_NODELAY true #define CPPHTTPLIB_TCP_NODELAY true
#include "httplib.h" #include <cpp-httplib/httplib.h>
// Change JSON_ASSERT from assert() to GGML_ASSERT:
#define JSON_ASSERT GGML_ASSERT #define JSON_ASSERT GGML_ASSERT
#include "json.hpp" #include <nlohmann/json.hpp>
#include "chat.h"
#include <random> #include <random>
#include <sstream> #include <sstream>

View File

@ -5,7 +5,9 @@
#include "sampling.h" #include "sampling.h"
#include "log.h" #include "log.h"
#include "llama.h" #include "llama.h"
#include "json.hpp"
#define JSON_ASSERT GGML_ASSERT
#include <nlohmann/json.hpp>
#include <algorithm> #include <algorithm>
#include <cmath> #include <cmath>

View File

@ -8,7 +8,7 @@
#ifndef CPPHTTPLIB_HTTPLIB_H #ifndef CPPHTTPLIB_HTTPLIB_H
#define CPPHTTPLIB_HTTPLIB_H #define CPPHTTPLIB_HTTPLIB_H
#define CPPHTTPLIB_VERSION "0.20.0" #define CPPHTTPLIB_VERSION "0.20.1"
/* /*
* Configuration * Configuration
@ -145,6 +145,10 @@
#define CPPHTTPLIB_LISTEN_BACKLOG 5 #define CPPHTTPLIB_LISTEN_BACKLOG 5
#endif #endif
#ifndef CPPHTTPLIB_MAX_LINE_LENGTH
#define CPPHTTPLIB_MAX_LINE_LENGTH 32768
#endif
/* /*
* Headers * Headers
*/ */
@ -3067,6 +3071,11 @@ inline bool stream_line_reader::getline() {
#endif #endif
for (size_t i = 0;; i++) { for (size_t i = 0;; i++) {
if (size() >= CPPHTTPLIB_MAX_LINE_LENGTH) {
// Treat exceptionally long lines as an error to
// prevent infinite loops/memory exhaustion
return false;
}
char byte; char byte;
auto n = strm_.read(&byte, 1); auto n = strm_.read(&byte, 1);
@ -6055,6 +6064,8 @@ inline void calc_actual_timeout(time_t max_timeout_msec, time_t duration_msec,
auto actual_timeout_msec = auto actual_timeout_msec =
(std::min)(max_timeout_msec - duration_msec, timeout_msec); (std::min)(max_timeout_msec - duration_msec, timeout_msec);
if (actual_timeout_msec < 0) { actual_timeout_msec = 0; }
actual_timeout_sec = actual_timeout_msec / 1000; actual_timeout_sec = actual_timeout_msec / 1000;
actual_timeout_usec = (actual_timeout_msec % 1000) * 1000; actual_timeout_usec = (actual_timeout_msec % 1000) * 1000;
} }
@ -7327,8 +7338,9 @@ Server::process_request(Stream &strm, const std::string &remote_addr,
} }
// Setup `is_connection_closed` method // Setup `is_connection_closed` method
req.is_connection_closed = [&]() { auto sock = strm.socket();
return !detail::is_socket_alive(strm.socket()); req.is_connection_closed = [sock]() {
return !detail::is_socket_alive(sock);
}; };
// Routing // Routing

View File

@ -22,7 +22,7 @@
#include <string> #include <string>
#include <vector> #include <vector>
#include <json.hpp> #include <nlohmann/json.hpp>
using json = nlohmann::ordered_json; using json = nlohmann::ordered_json;

View File

@ -29,7 +29,7 @@
#include <utility> #include <utility>
#include <vector> #include <vector>
#include <json.hpp> #include <nlohmann/json.hpp>
using json = nlohmann::ordered_json; using json = nlohmann::ordered_json;

File diff suppressed because it is too large Load Diff

187
vendor/nlohmann/json_fwd.hpp vendored Normal file
View File

@ -0,0 +1,187 @@
// __ _____ _____ _____
// __| | __| | | | JSON for Modern C++
// | | |__ | | | | | | version 3.12.0
// |_____|_____|_____|_|___| https://github.com/nlohmann/json
//
// SPDX-FileCopyrightText: 2013 - 2025 Niels Lohmann <https://nlohmann.me>
// SPDX-License-Identifier: MIT
#ifndef INCLUDE_NLOHMANN_JSON_FWD_HPP_
#define INCLUDE_NLOHMANN_JSON_FWD_HPP_
#include <cstdint> // int64_t, uint64_t
#include <map> // map
#include <memory> // allocator
#include <string> // string
#include <vector> // vector
// #include <nlohmann/detail/abi_macros.hpp>
// __ _____ _____ _____
// __| | __| | | | JSON for Modern C++
// | | |__ | | | | | | version 3.12.0
// |_____|_____|_____|_|___| https://github.com/nlohmann/json
//
// SPDX-FileCopyrightText: 2013 - 2025 Niels Lohmann <https://nlohmann.me>
// SPDX-License-Identifier: MIT
// This file contains all macro definitions affecting or depending on the ABI
#ifndef JSON_SKIP_LIBRARY_VERSION_CHECK
#if defined(NLOHMANN_JSON_VERSION_MAJOR) && defined(NLOHMANN_JSON_VERSION_MINOR) && defined(NLOHMANN_JSON_VERSION_PATCH)
#if NLOHMANN_JSON_VERSION_MAJOR != 3 || NLOHMANN_JSON_VERSION_MINOR != 12 || NLOHMANN_JSON_VERSION_PATCH != 0
#warning "Already included a different version of the library!"
#endif
#endif
#endif
#define NLOHMANN_JSON_VERSION_MAJOR 3 // NOLINT(modernize-macro-to-enum)
#define NLOHMANN_JSON_VERSION_MINOR 12 // NOLINT(modernize-macro-to-enum)
#define NLOHMANN_JSON_VERSION_PATCH 0 // NOLINT(modernize-macro-to-enum)
#ifndef JSON_DIAGNOSTICS
#define JSON_DIAGNOSTICS 0
#endif
#ifndef JSON_DIAGNOSTIC_POSITIONS
#define JSON_DIAGNOSTIC_POSITIONS 0
#endif
#ifndef JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON
#define JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON 0
#endif
#if JSON_DIAGNOSTICS
#define NLOHMANN_JSON_ABI_TAG_DIAGNOSTICS _diag
#else
#define NLOHMANN_JSON_ABI_TAG_DIAGNOSTICS
#endif
#if JSON_DIAGNOSTIC_POSITIONS
#define NLOHMANN_JSON_ABI_TAG_DIAGNOSTIC_POSITIONS _dp
#else
#define NLOHMANN_JSON_ABI_TAG_DIAGNOSTIC_POSITIONS
#endif
#if JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON
#define NLOHMANN_JSON_ABI_TAG_LEGACY_DISCARDED_VALUE_COMPARISON _ldvcmp
#else
#define NLOHMANN_JSON_ABI_TAG_LEGACY_DISCARDED_VALUE_COMPARISON
#endif
#ifndef NLOHMANN_JSON_NAMESPACE_NO_VERSION
#define NLOHMANN_JSON_NAMESPACE_NO_VERSION 0
#endif
// Construct the namespace ABI tags component
#define NLOHMANN_JSON_ABI_TAGS_CONCAT_EX(a, b, c) json_abi ## a ## b ## c
#define NLOHMANN_JSON_ABI_TAGS_CONCAT(a, b, c) \
NLOHMANN_JSON_ABI_TAGS_CONCAT_EX(a, b, c)
#define NLOHMANN_JSON_ABI_TAGS \
NLOHMANN_JSON_ABI_TAGS_CONCAT( \
NLOHMANN_JSON_ABI_TAG_DIAGNOSTICS, \
NLOHMANN_JSON_ABI_TAG_LEGACY_DISCARDED_VALUE_COMPARISON, \
NLOHMANN_JSON_ABI_TAG_DIAGNOSTIC_POSITIONS)
// Construct the namespace version component
#define NLOHMANN_JSON_NAMESPACE_VERSION_CONCAT_EX(major, minor, patch) \
_v ## major ## _ ## minor ## _ ## patch
#define NLOHMANN_JSON_NAMESPACE_VERSION_CONCAT(major, minor, patch) \
NLOHMANN_JSON_NAMESPACE_VERSION_CONCAT_EX(major, minor, patch)
#if NLOHMANN_JSON_NAMESPACE_NO_VERSION
#define NLOHMANN_JSON_NAMESPACE_VERSION
#else
#define NLOHMANN_JSON_NAMESPACE_VERSION \
NLOHMANN_JSON_NAMESPACE_VERSION_CONCAT(NLOHMANN_JSON_VERSION_MAJOR, \
NLOHMANN_JSON_VERSION_MINOR, \
NLOHMANN_JSON_VERSION_PATCH)
#endif
// Combine namespace components
#define NLOHMANN_JSON_NAMESPACE_CONCAT_EX(a, b) a ## b
#define NLOHMANN_JSON_NAMESPACE_CONCAT(a, b) \
NLOHMANN_JSON_NAMESPACE_CONCAT_EX(a, b)
#ifndef NLOHMANN_JSON_NAMESPACE
#define NLOHMANN_JSON_NAMESPACE \
nlohmann::NLOHMANN_JSON_NAMESPACE_CONCAT( \
NLOHMANN_JSON_ABI_TAGS, \
NLOHMANN_JSON_NAMESPACE_VERSION)
#endif
#ifndef NLOHMANN_JSON_NAMESPACE_BEGIN
#define NLOHMANN_JSON_NAMESPACE_BEGIN \
namespace nlohmann \
{ \
inline namespace NLOHMANN_JSON_NAMESPACE_CONCAT( \
NLOHMANN_JSON_ABI_TAGS, \
NLOHMANN_JSON_NAMESPACE_VERSION) \
{
#endif
#ifndef NLOHMANN_JSON_NAMESPACE_END
#define NLOHMANN_JSON_NAMESPACE_END \
} /* namespace (inline namespace) NOLINT(readability/namespace) */ \
} // namespace nlohmann
#endif
/*!
@brief namespace for Niels Lohmann
@see https://github.com/nlohmann
@since version 1.0.0
*/
NLOHMANN_JSON_NAMESPACE_BEGIN
/*!
@brief default JSONSerializer template argument
This serializer ignores the template arguments and uses ADL
([argument-dependent lookup](https://en.cppreference.com/w/cpp/language/adl))
for serialization.
*/
template<typename T = void, typename SFINAE = void>
struct adl_serializer;
/// a class to store JSON values
/// @sa https://json.nlohmann.me/api/basic_json/
template<template<typename U, typename V, typename... Args> class ObjectType =
std::map,
template<typename U, typename... Args> class ArrayType = std::vector,
class StringType = std::string, class BooleanType = bool,
class NumberIntegerType = std::int64_t,
class NumberUnsignedType = std::uint64_t,
class NumberFloatType = double,
template<typename U> class AllocatorType = std::allocator,
template<typename T, typename SFINAE = void> class JSONSerializer =
adl_serializer,
class BinaryType = std::vector<std::uint8_t>, // cppcheck-suppress syntaxError
class CustomBaseClass = void>
class basic_json;
/// @brief JSON Pointer defines a string syntax for identifying a specific value within a JSON document
/// @sa https://json.nlohmann.me/api/json_pointer/
template<typename RefStringType>
class json_pointer;
/*!
@brief default specialization
@sa https://json.nlohmann.me/api/json/
*/
using json = basic_json<>;
/// @brief a minimal map-like container that preserves insertion order
/// @sa https://json.nlohmann.me/api/ordered_map/
template<class Key, class T, class IgnoredLess, class Allocator>
struct ordered_map;
/// @brief specialization that maintains the insertion order of object keys
/// @sa https://json.nlohmann.me/api/ordered_json/
using ordered_json = basic_json<nlohmann::ordered_map>;
NLOHMANN_JSON_NAMESPACE_END
#endif // INCLUDE_NLOHMANN_JSON_FWD_HPP_