♻️ remove "#define private public"

pull/2352/head
Niels Lohmann 2020-08-12 13:30:06 +02:00
parent b888afe5f4
commit 9d726c25d5
No known key found for this signature in database
GPG Key ID: 7F3CEA63AE251B69
22 changed files with 59 additions and 36 deletions

View File

@ -81,7 +81,6 @@ doctest:
# -Wno-documentation-unknown-command: code uses user-defined commands like @complexity # -Wno-documentation-unknown-command: code uses user-defined commands like @complexity
# -Wno-exit-time-destructors: warning in json code triggered by NLOHMANN_JSON_SERIALIZE_ENUM # -Wno-exit-time-destructors: warning in json code triggered by NLOHMANN_JSON_SERIALIZE_ENUM
# -Wno-float-equal: not all comparisons in the tests can be replaced by Approx # -Wno-float-equal: not all comparisons in the tests can be replaced by Approx
# -Wno-keyword-macro: unit-tests use "#define private public"
# -Wno-missing-prototypes: for NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE # -Wno-missing-prototypes: for NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE
# -Wno-padded: padding is nothing to warn about # -Wno-padded: padding is nothing to warn about
# -Wno-range-loop-analysis: items tests "for(const auto i...)" # -Wno-range-loop-analysis: items tests "for(const auto i...)"
@ -98,7 +97,6 @@ pedantic_clang:
-Wno-documentation-unknown-command \ -Wno-documentation-unknown-command \
-Wno-exit-time-destructors \ -Wno-exit-time-destructors \
-Wno-float-equal \ -Wno-float-equal \
-Wno-keyword-macro \
-Wno-missing-prototypes \ -Wno-missing-prototypes \
-Wno-padded \ -Wno-padded \
-Wno-range-loop-analysis \ -Wno-range-loop-analysis \

View File

@ -163,7 +163,7 @@ class iter_impl
return *this; return *this;
} }
private: JSON_PRIVATE_UNLESS_TESTED:
/*! /*!
@brief set the iterator to the first value @brief set the iterator to the first value
@pre The iterator is initialized; i.e. `m_object != nullptr`. @pre The iterator is initialized; i.e. `m_object != nullptr`.
@ -627,7 +627,7 @@ class iter_impl
return operator*(); return operator*();
} }
private: JSON_PRIVATE_UNLESS_TESTED:
/// associated JSON instance /// associated JSON instance
pointer m_object = nullptr; pointer m_object = nullptr;
/// the actual iterator of the associated instance /// the actual iterator of the associated instance

View File

@ -23,6 +23,7 @@ class primitive_iterator_t
static constexpr difference_type begin_value = 0; static constexpr difference_type begin_value = 0;
static constexpr difference_type end_value = begin_value + 1; static constexpr difference_type end_value = begin_value + 1;
JSON_PRIVATE_UNLESS_TESTED:
/// iterator as signed integer type /// iterator as signed integer type
difference_type m_it = (std::numeric_limits<std::ptrdiff_t>::min)(); difference_type m_it = (std::numeric_limits<std::ptrdiff_t>::min)();

View File

@ -375,6 +375,7 @@ class json_pointer
return static_cast<size_type>(res); return static_cast<size_type>(res);
} }
JSON_PRIVATE_UNLESS_TESTED:
json_pointer top() const json_pointer top() const
{ {
if (JSON_HEDLEY_UNLIKELY(empty())) if (JSON_HEDLEY_UNLIKELY(empty()))
@ -387,6 +388,7 @@ class json_pointer
return result; return result;
} }
private:
/*! /*!
@brief create and return a reference to the pointed to value @brief create and return a reference to the pointed to value
@ -823,6 +825,7 @@ class json_pointer
{} {}
} }
JSON_PRIVATE_UNLESS_TESTED:
/// escape "~" to "~0" and "/" to "~1" /// escape "~" to "~0" and "/" to "~1"
static std::string escape(std::string s) static std::string escape(std::string s)
{ {
@ -838,6 +841,7 @@ class json_pointer
replace_substring(s, "~0", "~"); replace_substring(s, "~0", "~");
} }
private:
/*! /*!
@param[in] reference_string the reference string to the current value @param[in] reference_string the reference string to the current value
@param[in] value the value to consider @param[in] value the value to consider

View File

@ -83,6 +83,13 @@
#define JSON_ASSERT(x) assert(x) #define JSON_ASSERT(x) assert(x)
#endif #endif
// allow to access some private functions (needed by the test suite)
#if defined(JSON_TESTS_PRIVATE)
#define JSON_PRIVATE_UNLESS_TESTED public
#else
#define JSON_PRIVATE_UNLESS_TESTED private
#endif
/*! /*!
@brief macro to briefly define a mapping between an enum and JSON @brief macro to briefly define a mapping between an enum and JSON
@def NLOHMANN_JSON_SERIALIZE_ENUM @def NLOHMANN_JSON_SERIALIZE_ENUM

View File

@ -14,6 +14,7 @@
#undef JSON_CATCH #undef JSON_CATCH
#undef JSON_THROW #undef JSON_THROW
#undef JSON_TRY #undef JSON_TRY
#undef JSON_PRIVATE_UNLESS_TESTED
#undef JSON_HAS_CPP_14 #undef JSON_HAS_CPP_14
#undef JSON_HAS_CPP_17 #undef JSON_HAS_CPP_17
#undef NLOHMANN_BASIC_JSON_TPL_DECLARATION #undef NLOHMANN_BASIC_JSON_TPL_DECLARATION

View File

@ -362,7 +362,7 @@ class serializer
} }
} }
private: JSON_PRIVATE_UNLESS_TESTED:
/*! /*!
@brief dump escaped string @brief dump escaped string
@ -625,6 +625,7 @@ class serializer
} }
} }
private:
/*! /*!
@brief count digits @brief count digits

View File

@ -189,6 +189,7 @@ class basic_json
/// workaround type for MSVC /// workaround type for MSVC
using basic_json_t = NLOHMANN_BASIC_JSON_TPL; using basic_json_t = NLOHMANN_BASIC_JSON_TPL;
JSON_PRIVATE_UNLESS_TESTED:
// convenience aliases for types residing in namespace detail; // convenience aliases for types residing in namespace detail;
using lexer = ::nlohmann::detail::lexer_base<basic_json>; using lexer = ::nlohmann::detail::lexer_base<basic_json>;
@ -204,6 +205,7 @@ class basic_json
std::move(cb), allow_exceptions, ignore_comments); std::move(cb), allow_exceptions, ignore_comments);
} }
private:
using primitive_iterator_t = ::nlohmann::detail::primitive_iterator_t; using primitive_iterator_t = ::nlohmann::detail::primitive_iterator_t;
template<typename BasicJsonType> template<typename BasicJsonType>
using internal_iterator = ::nlohmann::detail::internal_iterator<BasicJsonType>; using internal_iterator = ::nlohmann::detail::internal_iterator<BasicJsonType>;
@ -220,6 +222,7 @@ class basic_json
using binary_reader = ::nlohmann::detail::binary_reader<basic_json, InputType>; using binary_reader = ::nlohmann::detail::binary_reader<basic_json, InputType>;
template<typename CharType> using binary_writer = ::nlohmann::detail::binary_writer<basic_json, CharType>; template<typename CharType> using binary_writer = ::nlohmann::detail::binary_writer<basic_json, CharType>;
JSON_PRIVATE_UNLESS_TESTED:
using serializer = ::nlohmann::detail::serializer<basic_json>; using serializer = ::nlohmann::detail::serializer<basic_json>;
public: public:
@ -934,6 +937,7 @@ class basic_json
// JSON value storage // // JSON value storage //
//////////////////////// ////////////////////////
JSON_PRIVATE_UNLESS_TESTED:
/*! /*!
@brief a JSON value @brief a JSON value
@ -1210,6 +1214,7 @@ class basic_json
} }
}; };
private:
/*! /*!
@brief checks the class invariants @brief checks the class invariants
@ -6947,7 +6952,7 @@ class basic_json
} }
private: JSON_PRIVATE_UNLESS_TESTED:
////////////////////// //////////////////////
// member variables // // member variables //
////////////////////// //////////////////////

View File

@ -2100,6 +2100,13 @@ JSON_HEDLEY_DIAGNOSTIC_POP
#define JSON_ASSERT(x) assert(x) #define JSON_ASSERT(x) assert(x)
#endif #endif
// allow to access some private functions (needed by the test suite)
#if defined(JSON_TESTS_PRIVATE)
#define JSON_PRIVATE_UNLESS_TESTED public
#else
#define JSON_PRIVATE_UNLESS_TESTED private
#endif
/*! /*!
@brief macro to briefly define a mapping between an enum and JSON @brief macro to briefly define a mapping between an enum and JSON
@def NLOHMANN_JSON_SERIALIZE_ENUM @def NLOHMANN_JSON_SERIALIZE_ENUM
@ -10642,6 +10649,7 @@ class primitive_iterator_t
static constexpr difference_type begin_value = 0; static constexpr difference_type begin_value = 0;
static constexpr difference_type end_value = begin_value + 1; static constexpr difference_type end_value = begin_value + 1;
JSON_PRIVATE_UNLESS_TESTED:
/// iterator as signed integer type /// iterator as signed integer type
difference_type m_it = (std::numeric_limits<std::ptrdiff_t>::min)(); difference_type m_it = (std::numeric_limits<std::ptrdiff_t>::min)();
@ -10934,7 +10942,7 @@ class iter_impl
return *this; return *this;
} }
private: JSON_PRIVATE_UNLESS_TESTED:
/*! /*!
@brief set the iterator to the first value @brief set the iterator to the first value
@pre The iterator is initialized; i.e. `m_object != nullptr`. @pre The iterator is initialized; i.e. `m_object != nullptr`.
@ -11398,7 +11406,7 @@ class iter_impl
return operator*(); return operator*();
} }
private: JSON_PRIVATE_UNLESS_TESTED:
/// associated JSON instance /// associated JSON instance
pointer m_object = nullptr; pointer m_object = nullptr;
/// the actual iterator of the associated instance /// the actual iterator of the associated instance
@ -11913,6 +11921,7 @@ class json_pointer
return static_cast<size_type>(res); return static_cast<size_type>(res);
} }
JSON_PRIVATE_UNLESS_TESTED:
json_pointer top() const json_pointer top() const
{ {
if (JSON_HEDLEY_UNLIKELY(empty())) if (JSON_HEDLEY_UNLIKELY(empty()))
@ -11925,6 +11934,7 @@ class json_pointer
return result; return result;
} }
private:
/*! /*!
@brief create and return a reference to the pointed to value @brief create and return a reference to the pointed to value
@ -12361,6 +12371,7 @@ class json_pointer
{} {}
} }
JSON_PRIVATE_UNLESS_TESTED:
/// escape "~" to "~0" and "/" to "~1" /// escape "~" to "~0" and "/" to "~1"
static std::string escape(std::string s) static std::string escape(std::string s)
{ {
@ -12376,6 +12387,7 @@ class json_pointer
replace_substring(s, "~0", "~"); replace_substring(s, "~0", "~");
} }
private:
/*! /*!
@param[in] reference_string the reference string to the current value @param[in] reference_string the reference string to the current value
@param[in] value the value to consider @param[in] value the value to consider
@ -15801,7 +15813,7 @@ class serializer
} }
} }
private: JSON_PRIVATE_UNLESS_TESTED:
/*! /*!
@brief dump escaped string @brief dump escaped string
@ -16064,6 +16076,7 @@ class serializer
} }
} }
private:
/*! /*!
@brief count digits @brief count digits
@ -16682,6 +16695,7 @@ class basic_json
/// workaround type for MSVC /// workaround type for MSVC
using basic_json_t = NLOHMANN_BASIC_JSON_TPL; using basic_json_t = NLOHMANN_BASIC_JSON_TPL;
JSON_PRIVATE_UNLESS_TESTED:
// convenience aliases for types residing in namespace detail; // convenience aliases for types residing in namespace detail;
using lexer = ::nlohmann::detail::lexer_base<basic_json>; using lexer = ::nlohmann::detail::lexer_base<basic_json>;
@ -16697,6 +16711,7 @@ class basic_json
std::move(cb), allow_exceptions, ignore_comments); std::move(cb), allow_exceptions, ignore_comments);
} }
private:
using primitive_iterator_t = ::nlohmann::detail::primitive_iterator_t; using primitive_iterator_t = ::nlohmann::detail::primitive_iterator_t;
template<typename BasicJsonType> template<typename BasicJsonType>
using internal_iterator = ::nlohmann::detail::internal_iterator<BasicJsonType>; using internal_iterator = ::nlohmann::detail::internal_iterator<BasicJsonType>;
@ -16713,6 +16728,7 @@ class basic_json
using binary_reader = ::nlohmann::detail::binary_reader<basic_json, InputType>; using binary_reader = ::nlohmann::detail::binary_reader<basic_json, InputType>;
template<typename CharType> using binary_writer = ::nlohmann::detail::binary_writer<basic_json, CharType>; template<typename CharType> using binary_writer = ::nlohmann::detail::binary_writer<basic_json, CharType>;
JSON_PRIVATE_UNLESS_TESTED:
using serializer = ::nlohmann::detail::serializer<basic_json>; using serializer = ::nlohmann::detail::serializer<basic_json>;
public: public:
@ -17427,6 +17443,7 @@ class basic_json
// JSON value storage // // JSON value storage //
//////////////////////// ////////////////////////
JSON_PRIVATE_UNLESS_TESTED:
/*! /*!
@brief a JSON value @brief a JSON value
@ -17703,6 +17720,7 @@ class basic_json
} }
}; };
private:
/*! /*!
@brief checks the class invariants @brief checks the class invariants
@ -23440,7 +23458,7 @@ class basic_json
} }
private: JSON_PRIVATE_UNLESS_TESTED:
////////////////////// //////////////////////
// member variables // // member variables //
////////////////////// //////////////////////
@ -25296,6 +25314,7 @@ inline nlohmann::json::json_pointer operator "" _json_pointer(const char* s, std
#undef JSON_CATCH #undef JSON_CATCH
#undef JSON_THROW #undef JSON_THROW
#undef JSON_TRY #undef JSON_TRY
#undef JSON_PRIVATE_UNLESS_TESTED
#undef JSON_HAS_CPP_14 #undef JSON_HAS_CPP_14
#undef JSON_HAS_CPP_17 #undef JSON_HAS_CPP_17
#undef NLOHMANN_BASIC_JSON_TPL_DECLARATION #undef NLOHMANN_BASIC_JSON_TPL_DECLARATION

View File

@ -29,10 +29,9 @@ SOFTWARE.
#include "doctest_compatibility.h" #include "doctest_compatibility.h"
#define private public #define JSON_TESTS_PRIVATE
#include <nlohmann/json.hpp> #include <nlohmann/json.hpp>
using nlohmann::json; using nlohmann::json;
#undef private
namespace namespace
{ {

View File

@ -29,10 +29,9 @@ SOFTWARE.
#include "doctest_compatibility.h" #include "doctest_compatibility.h"
#define private public #define JSON_TESTS_PRIVATE
#include <nlohmann/json.hpp> #include <nlohmann/json.hpp>
using nlohmann::json; using nlohmann::json;
#undef private
TEST_CASE("const_iterator class") TEST_CASE("const_iterator class")
{ {

View File

@ -29,10 +29,9 @@ SOFTWARE.
#include "doctest_compatibility.h" #include "doctest_compatibility.h"
#define private public #define JSON_TESTS_PRIVATE
#include <nlohmann/json.hpp> #include <nlohmann/json.hpp>
using nlohmann::json; using nlohmann::json;
#undef private
TEST_CASE("iterator class") TEST_CASE("iterator class")
{ {

View File

@ -29,10 +29,9 @@ SOFTWARE.
#include "doctest_compatibility.h" #include "doctest_compatibility.h"
#define private public #define JSON_TESTS_PRIVATE
#include <nlohmann/json.hpp> #include <nlohmann/json.hpp>
using nlohmann::json; using nlohmann::json;
#undef private
namespace namespace
{ {

View File

@ -29,10 +29,9 @@ SOFTWARE.
#include "doctest_compatibility.h" #include "doctest_compatibility.h"
#define private public #define JSON_TESTS_PRIVATE
#include <nlohmann/json.hpp> #include <nlohmann/json.hpp>
using nlohmann::json; using nlohmann::json;
#undef private
#include <valarray> #include <valarray>

View File

@ -30,10 +30,9 @@ SOFTWARE.
#include "doctest_compatibility.h" #include "doctest_compatibility.h"
DOCTEST_GCC_SUPPRESS_WARNING("-Wfloat-equal") DOCTEST_GCC_SUPPRESS_WARNING("-Wfloat-equal")
#define private public #define JSON_TESTS_PRIVATE
#include <nlohmann/json.hpp> #include <nlohmann/json.hpp>
using nlohmann::json; using nlohmann::json;
#undef private
#include <deque> #include <deque>
#include <forward_list> #include <forward_list>

View File

@ -29,10 +29,9 @@ SOFTWARE.
#include "doctest_compatibility.h" #include "doctest_compatibility.h"
#define private public #define JSON_TESTS_PRIVATE
#include <nlohmann/json.hpp> #include <nlohmann/json.hpp>
using nlohmann::json; using nlohmann::json;
#undef private
#include <sstream> #include <sstream>

View File

@ -29,10 +29,9 @@ SOFTWARE.
#include "doctest_compatibility.h" #include "doctest_compatibility.h"
#define private public #define JSON_TESTS_PRIVATE
#include <nlohmann/json.hpp> #include <nlohmann/json.hpp>
using nlohmann::json; using nlohmann::json;
#undef private
#include <deque> #include <deque>
#include <forward_list> #include <forward_list>

View File

@ -29,10 +29,9 @@ SOFTWARE.
#include "doctest_compatibility.h" #include "doctest_compatibility.h"
#define private public #define JSON_TESTS_PRIVATE
#include <nlohmann/json.hpp> #include <nlohmann/json.hpp>
using nlohmann::json; using nlohmann::json;
#undef private
TEST_CASE("iterators 1") TEST_CASE("iterators 1")
{ {

View File

@ -29,10 +29,9 @@ SOFTWARE.
#include "doctest_compatibility.h" #include "doctest_compatibility.h"
#define private public #define JSON_TESTS_PRIVATE
#include <nlohmann/json.hpp> #include <nlohmann/json.hpp>
using nlohmann::json; using nlohmann::json;
#undef private
TEST_CASE("JSON pointers") TEST_CASE("JSON pointers")
{ {

View File

@ -33,10 +33,9 @@ DOCTEST_GCC_SUPPRESS_WARNING("-Wfloat-equal")
// for some reason including this after the json header leads to linker errors with VS 2017... // for some reason including this after the json header leads to linker errors with VS 2017...
#include <locale> #include <locale>
#define private public #define JSON_TESTS_PRIVATE
#include <nlohmann/json.hpp> #include <nlohmann/json.hpp>
using nlohmann::json; using nlohmann::json;
#undef private
#include <fstream> #include <fstream>
#include <sstream> #include <sstream>

View File

@ -33,10 +33,9 @@ DOCTEST_GCC_SUPPRESS_WARNING("-Wfloat-equal")
// for some reason including this after the json header leads to linker errors with VS 2017... // for some reason including this after the json header leads to linker errors with VS 2017...
#include <locale> #include <locale>
#define private public #define JSON_TESTS_PRIVATE
#include <nlohmann/json.hpp> #include <nlohmann/json.hpp>
using nlohmann::json; using nlohmann::json;
#undef private
#include <fstream> #include <fstream>
#include <sstream> #include <sstream>

View File

@ -32,10 +32,9 @@ SOFTWARE.
// for some reason including this after the json header leads to linker errors with VS 2017... // for some reason including this after the json header leads to linker errors with VS 2017...
#include <locale> #include <locale>
#define private public #define JSON_TESTS_PRIVATE
#include <nlohmann/json.hpp> #include <nlohmann/json.hpp>
using nlohmann::json; using nlohmann::json;
#undef private
#include <fstream> #include <fstream>
#include <sstream> #include <sstream>