| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 | //     __ _____ _____ _____//  __|  |   __|     |   | |  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#pragma once#include <nlohmann/detail/abi_macros.hpp>NLOHMANN_JSON_NAMESPACE_BEGINnamespace detail{/*!@brief replace all occurrences of a substring by another string@param[in,out] s  the string to manipulate; changed so that all               occurrences of @a f are replaced with @a t@param[in]     f  the substring to replace with @a t@param[in]     t  the string to replace @a f@pre The search string @a f must not be empty. **This precondition isenforced with an assertion.**@since version 2.0.0*/template<typename StringType>inline void replace_substring(StringType& s, const StringType& f,                              const StringType& t){    JSON_ASSERT(!f.empty());    for (auto pos = s.find(f);                // find first occurrence of f            pos != StringType::npos;          // make sure f was found            s.replace(pos, f.size(), t),      // replace with t, and            pos = s.find(f, pos + t.size()))  // find next occurrence of f    {}}/*! * @brief string escaping as described in RFC 6901 (Sect. 4) * @param[in] s string to escape * @return    escaped string * * Note the order of escaping "~" to "~0" and "/" to "~1" is important. */template<typename StringType>inline StringType escape(StringType s){    replace_substring(s, StringType{"~"}, StringType{"~0"});    replace_substring(s, StringType{"/"}, StringType{"~1"});    return s;}/*! * @brief string unescaping as described in RFC 6901 (Sect. 4) * @param[in] s string to unescape * @return    unescaped string * * Note the order of escaping "~1" to "/" and "~0" to "~" is important. */template<typename StringType>static void unescape(StringType& s){    replace_substring(s, StringType{"~1"}, StringType{"/"});    replace_substring(s, StringType{"~0"}, StringType{"~"});}}  // namespace detailNLOHMANN_JSON_NAMESPACE_END
 |