Add json_pointer/string_t equality comparison operators
This commit is contained in:
parent
e839f58a2a
commit
d3ff992356
@ -846,55 +846,118 @@ class json_pointer
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
public:
|
||||||
@brief compares two JSON pointers for equality
|
#ifdef JSON_HAS_CPP_20
|
||||||
|
/// @brief compares two JSON pointers for equality
|
||||||
|
/// @sa https://json.nlohmann.me/api/json_pointer/operator_eq/
|
||||||
|
template<typename RefStringTypeRhs>
|
||||||
|
bool operator==(const json_pointer<RefStringTypeRhs>& rhs) const noexcept
|
||||||
|
{
|
||||||
|
return reference_tokens == rhs.reference_tokens;
|
||||||
|
}
|
||||||
|
|
||||||
@param[in] lhs JSON pointer to compare
|
/// @brief compares JSON pointer and string for equality
|
||||||
@param[in] rhs JSON pointer to compare
|
/// @sa https://json.nlohmann.me/api/json_pointer/operator_eq/
|
||||||
@return whether @a lhs is equal to @a rhs
|
bool operator==(const string_t& rhs) const
|
||||||
|
{
|
||||||
@complexity Linear in the length of the JSON pointer
|
return *this == json_pointer(rhs);
|
||||||
|
}
|
||||||
@exceptionsafety No-throw guarantee: this function never throws exceptions.
|
#else
|
||||||
*/
|
/// @brief compares two JSON pointers for equality
|
||||||
|
/// @sa https://json.nlohmann.me/api/json_pointer/operator_eq/
|
||||||
template<typename RefStringTypeLhs, typename RefStringTypeRhs>
|
template<typename RefStringTypeLhs, typename RefStringTypeRhs>
|
||||||
// NOLINTNEXTLINE(readability-redundant-declaration)
|
// NOLINTNEXTLINE(readability-redundant-declaration)
|
||||||
friend bool operator==(json_pointer<RefStringTypeLhs> const& lhs,
|
friend bool operator==(const json_pointer<RefStringTypeLhs>& lhs,
|
||||||
json_pointer<RefStringTypeRhs> const& rhs) noexcept;
|
const json_pointer<RefStringTypeRhs>& rhs) noexcept;
|
||||||
|
|
||||||
/*!
|
/// @brief compares JSON pointer and string for equality
|
||||||
@brief compares two JSON pointers for inequality
|
/// @sa https://json.nlohmann.me/api/json_pointer/operator_eq/
|
||||||
|
template<typename RefStringTypeLhs, typename StringType>
|
||||||
|
// NOLINTNEXTLINE(readability-redundant-declaration)
|
||||||
|
friend bool operator==(const json_pointer<RefStringTypeLhs>& lhs,
|
||||||
|
const StringType& rhs);
|
||||||
|
|
||||||
@param[in] lhs JSON pointer to compare
|
/// @brief compares string and JSON pointer for equality
|
||||||
@param[in] rhs JSON pointer to compare
|
/// @sa https://json.nlohmann.me/api/json_pointer/operator_eq/
|
||||||
@return whether @a lhs is not equal @a rhs
|
template<typename RefStringTypeRhs, typename StringType>
|
||||||
|
// NOLINTNEXTLINE(readability-redundant-declaration)
|
||||||
|
friend bool operator==(const StringType& lhs,
|
||||||
|
const json_pointer<RefStringTypeRhs>& rhs);
|
||||||
|
|
||||||
@complexity Linear in the length of the JSON pointer
|
/// @brief compares two JSON pointers for inequality
|
||||||
|
/// @sa https://json.nlohmann.me/api/json_pointer/operator_ne/
|
||||||
@exceptionsafety No-throw guarantee: this function never throws exceptions.
|
|
||||||
*/
|
|
||||||
template<typename RefStringTypeLhs, typename RefStringTypeRhs>
|
template<typename RefStringTypeLhs, typename RefStringTypeRhs>
|
||||||
// NOLINTNEXTLINE(readability-redundant-declaration)
|
// NOLINTNEXTLINE(readability-redundant-declaration)
|
||||||
friend bool operator!=(json_pointer<RefStringTypeLhs> const& lhs,
|
friend bool operator!=(const json_pointer<RefStringTypeLhs>& lhs,
|
||||||
json_pointer<RefStringTypeRhs> const& rhs) noexcept;
|
const json_pointer<RefStringTypeRhs>& rhs) noexcept;
|
||||||
|
|
||||||
|
/// @brief compares JSON pointer and string for inequality
|
||||||
|
/// @sa https://json.nlohmann.me/api/json_pointer/operator_ne/
|
||||||
|
template<typename RefStringTypeLhs, typename StringType>
|
||||||
|
// NOLINTNEXTLINE(readability-redundant-declaration)
|
||||||
|
friend bool operator!=(const json_pointer<RefStringTypeLhs>& lhs,
|
||||||
|
const StringType& rhs);
|
||||||
|
|
||||||
|
/// @brief compares string and JSON pointer for inequality
|
||||||
|
/// @sa https://json.nlohmann.me/api/json_pointer/operator_ne/
|
||||||
|
template<typename RefStringTypeRhs, typename StringType>
|
||||||
|
// NOLINTNEXTLINE(readability-redundant-declaration)
|
||||||
|
friend bool operator!=(const StringType& lhs,
|
||||||
|
const json_pointer<RefStringTypeRhs>& rhs);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
private:
|
||||||
/// the reference tokens
|
/// the reference tokens
|
||||||
std::vector<string_t> reference_tokens;
|
std::vector<string_t> reference_tokens;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#ifndef JSON_HAS_CPP_20
|
||||||
// functions cannot be defined inside class due to ODR violations
|
// functions cannot be defined inside class due to ODR violations
|
||||||
template<typename RefStringTypeLhs, typename RefStringTypeRhs>
|
template<typename RefStringTypeLhs, typename RefStringTypeRhs>
|
||||||
inline bool operator==(json_pointer<RefStringTypeLhs> const& lhs,
|
inline bool operator==(const json_pointer<RefStringTypeLhs>& lhs,
|
||||||
json_pointer<RefStringTypeRhs> const& rhs) noexcept
|
const json_pointer<RefStringTypeRhs>& rhs) noexcept
|
||||||
{
|
{
|
||||||
return lhs.reference_tokens == rhs.reference_tokens;
|
return lhs.reference_tokens == rhs.reference_tokens;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template<typename RefStringTypeLhs,
|
||||||
|
typename StringType = typename json_pointer<RefStringTypeLhs>::string_t>
|
||||||
|
inline bool operator==(const json_pointer<RefStringTypeLhs>& lhs,
|
||||||
|
const StringType& rhs)
|
||||||
|
{
|
||||||
|
return lhs == json_pointer<RefStringTypeLhs>(rhs);
|
||||||
|
}
|
||||||
|
|
||||||
|
template<typename RefStringTypeRhs,
|
||||||
|
typename StringType = typename json_pointer<RefStringTypeRhs>::string_t>
|
||||||
|
inline bool operator==(const StringType& lhs,
|
||||||
|
const json_pointer<RefStringTypeRhs>& rhs)
|
||||||
|
{
|
||||||
|
return json_pointer<RefStringTypeRhs>(lhs) == rhs;
|
||||||
|
}
|
||||||
|
|
||||||
template<typename RefStringTypeLhs, typename RefStringTypeRhs>
|
template<typename RefStringTypeLhs, typename RefStringTypeRhs>
|
||||||
inline bool operator!=(json_pointer<RefStringTypeLhs> const& lhs,
|
inline bool operator!=(const json_pointer<RefStringTypeLhs>& lhs,
|
||||||
json_pointer<RefStringTypeRhs> const& rhs) noexcept
|
const json_pointer<RefStringTypeRhs>& rhs) noexcept
|
||||||
{
|
{
|
||||||
return !(lhs == rhs);
|
return !(lhs == rhs);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template<typename RefStringTypeLhs,
|
||||||
|
typename StringType = typename json_pointer<RefStringTypeLhs>::string_t>
|
||||||
|
inline bool operator!=(const json_pointer<RefStringTypeLhs>& lhs,
|
||||||
|
const StringType& rhs)
|
||||||
|
{
|
||||||
|
return !(lhs == rhs);
|
||||||
|
}
|
||||||
|
|
||||||
|
template<typename RefStringTypeRhs,
|
||||||
|
typename StringType = typename json_pointer<RefStringTypeRhs>::string_t>
|
||||||
|
inline bool operator!=(const StringType& lhs,
|
||||||
|
const json_pointer<RefStringTypeRhs>& rhs)
|
||||||
|
{
|
||||||
|
return !(lhs == rhs);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
NLOHMANN_JSON_NAMESPACE_END
|
NLOHMANN_JSON_NAMESPACE_END
|
||||||
|
|||||||
@ -3373,7 +3373,7 @@ NLOHMANN_JSON_NAMESPACE_END
|
|||||||
|
|
||||||
/// @brief JSON Pointer defines a string syntax for identifying a specific value within a JSON document
|
/// @brief JSON Pointer defines a string syntax for identifying a specific value within a JSON document
|
||||||
/// @sa https://json.nlohmann.me/api/json_pointer/
|
/// @sa https://json.nlohmann.me/api/json_pointer/
|
||||||
template<typename BasicJsonType>
|
template<typename RefStringType>
|
||||||
class json_pointer;
|
class json_pointer;
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@ -14448,57 +14448,120 @@ class json_pointer
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
public:
|
||||||
@brief compares two JSON pointers for equality
|
#ifdef JSON_HAS_CPP_20
|
||||||
|
/// @brief compares two JSON pointers for equality
|
||||||
|
/// @sa https://json.nlohmann.me/api/json_pointer/operator_eq/
|
||||||
|
template<typename RefStringTypeRhs>
|
||||||
|
bool operator==(const json_pointer<RefStringTypeRhs>& rhs) const noexcept
|
||||||
|
{
|
||||||
|
return reference_tokens == rhs.reference_tokens;
|
||||||
|
}
|
||||||
|
|
||||||
@param[in] lhs JSON pointer to compare
|
/// @brief compares JSON pointer and string for equality
|
||||||
@param[in] rhs JSON pointer to compare
|
/// @sa https://json.nlohmann.me/api/json_pointer/operator_eq/
|
||||||
@return whether @a lhs is equal to @a rhs
|
bool operator==(const string_t& rhs) const
|
||||||
|
{
|
||||||
@complexity Linear in the length of the JSON pointer
|
return *this == json_pointer(rhs);
|
||||||
|
}
|
||||||
@exceptionsafety No-throw guarantee: this function never throws exceptions.
|
#else
|
||||||
*/
|
/// @brief compares two JSON pointers for equality
|
||||||
|
/// @sa https://json.nlohmann.me/api/json_pointer/operator_eq/
|
||||||
template<typename RefStringTypeLhs, typename RefStringTypeRhs>
|
template<typename RefStringTypeLhs, typename RefStringTypeRhs>
|
||||||
// NOLINTNEXTLINE(readability-redundant-declaration)
|
// NOLINTNEXTLINE(readability-redundant-declaration)
|
||||||
friend bool operator==(json_pointer<RefStringTypeLhs> const& lhs,
|
friend bool operator==(const json_pointer<RefStringTypeLhs>& lhs,
|
||||||
json_pointer<RefStringTypeRhs> const& rhs) noexcept;
|
const json_pointer<RefStringTypeRhs>& rhs) noexcept;
|
||||||
|
|
||||||
/*!
|
/// @brief compares JSON pointer and string for equality
|
||||||
@brief compares two JSON pointers for inequality
|
/// @sa https://json.nlohmann.me/api/json_pointer/operator_eq/
|
||||||
|
template<typename RefStringTypeLhs, typename StringType>
|
||||||
|
// NOLINTNEXTLINE(readability-redundant-declaration)
|
||||||
|
friend bool operator==(const json_pointer<RefStringTypeLhs>& lhs,
|
||||||
|
const StringType& rhs);
|
||||||
|
|
||||||
@param[in] lhs JSON pointer to compare
|
/// @brief compares string and JSON pointer for equality
|
||||||
@param[in] rhs JSON pointer to compare
|
/// @sa https://json.nlohmann.me/api/json_pointer/operator_eq/
|
||||||
@return whether @a lhs is not equal @a rhs
|
template<typename RefStringTypeRhs, typename StringType>
|
||||||
|
// NOLINTNEXTLINE(readability-redundant-declaration)
|
||||||
|
friend bool operator==(const StringType& lhs,
|
||||||
|
const json_pointer<RefStringTypeRhs>& rhs);
|
||||||
|
|
||||||
@complexity Linear in the length of the JSON pointer
|
/// @brief compares two JSON pointers for inequality
|
||||||
|
/// @sa https://json.nlohmann.me/api/json_pointer/operator_ne/
|
||||||
@exceptionsafety No-throw guarantee: this function never throws exceptions.
|
|
||||||
*/
|
|
||||||
template<typename RefStringTypeLhs, typename RefStringTypeRhs>
|
template<typename RefStringTypeLhs, typename RefStringTypeRhs>
|
||||||
// NOLINTNEXTLINE(readability-redundant-declaration)
|
// NOLINTNEXTLINE(readability-redundant-declaration)
|
||||||
friend bool operator!=(json_pointer<RefStringTypeLhs> const& lhs,
|
friend bool operator!=(const json_pointer<RefStringTypeLhs>& lhs,
|
||||||
json_pointer<RefStringTypeRhs> const& rhs) noexcept;
|
const json_pointer<RefStringTypeRhs>& rhs) noexcept;
|
||||||
|
|
||||||
|
/// @brief compares JSON pointer and string for inequality
|
||||||
|
/// @sa https://json.nlohmann.me/api/json_pointer/operator_ne/
|
||||||
|
template<typename RefStringTypeLhs, typename StringType>
|
||||||
|
// NOLINTNEXTLINE(readability-redundant-declaration)
|
||||||
|
friend bool operator!=(const json_pointer<RefStringTypeLhs>& lhs,
|
||||||
|
const StringType& rhs);
|
||||||
|
|
||||||
|
/// @brief compares string and JSON pointer for inequality
|
||||||
|
/// @sa https://json.nlohmann.me/api/json_pointer/operator_ne/
|
||||||
|
template<typename RefStringTypeRhs, typename StringType>
|
||||||
|
// NOLINTNEXTLINE(readability-redundant-declaration)
|
||||||
|
friend bool operator!=(const StringType& lhs,
|
||||||
|
const json_pointer<RefStringTypeRhs>& rhs);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
private:
|
||||||
/// the reference tokens
|
/// the reference tokens
|
||||||
std::vector<string_t> reference_tokens;
|
std::vector<string_t> reference_tokens;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#ifndef JSON_HAS_CPP_20
|
||||||
// functions cannot be defined inside class due to ODR violations
|
// functions cannot be defined inside class due to ODR violations
|
||||||
template<typename RefStringTypeLhs, typename RefStringTypeRhs>
|
template<typename RefStringTypeLhs, typename RefStringTypeRhs>
|
||||||
inline bool operator==(json_pointer<RefStringTypeLhs> const& lhs,
|
inline bool operator==(const json_pointer<RefStringTypeLhs>& lhs,
|
||||||
json_pointer<RefStringTypeRhs> const& rhs) noexcept
|
const json_pointer<RefStringTypeRhs>& rhs) noexcept
|
||||||
{
|
{
|
||||||
return lhs.reference_tokens == rhs.reference_tokens;
|
return lhs.reference_tokens == rhs.reference_tokens;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template<typename RefStringTypeLhs,
|
||||||
|
typename StringType = typename json_pointer<RefStringTypeLhs>::string_t>
|
||||||
|
inline bool operator==(const json_pointer<RefStringTypeLhs>& lhs,
|
||||||
|
const StringType& rhs)
|
||||||
|
{
|
||||||
|
return lhs == json_pointer<RefStringTypeLhs>(rhs);
|
||||||
|
}
|
||||||
|
|
||||||
|
template<typename RefStringTypeRhs,
|
||||||
|
typename StringType = typename json_pointer<RefStringTypeRhs>::string_t>
|
||||||
|
inline bool operator==(const StringType& lhs,
|
||||||
|
const json_pointer<RefStringTypeRhs>& rhs)
|
||||||
|
{
|
||||||
|
return json_pointer<RefStringTypeRhs>(lhs) == rhs;
|
||||||
|
}
|
||||||
|
|
||||||
template<typename RefStringTypeLhs, typename RefStringTypeRhs>
|
template<typename RefStringTypeLhs, typename RefStringTypeRhs>
|
||||||
inline bool operator!=(json_pointer<RefStringTypeLhs> const& lhs,
|
inline bool operator!=(const json_pointer<RefStringTypeLhs>& lhs,
|
||||||
json_pointer<RefStringTypeRhs> const& rhs) noexcept
|
const json_pointer<RefStringTypeRhs>& rhs) noexcept
|
||||||
{
|
{
|
||||||
return !(lhs == rhs);
|
return !(lhs == rhs);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template<typename RefStringTypeLhs,
|
||||||
|
typename StringType = typename json_pointer<RefStringTypeLhs>::string_t>
|
||||||
|
inline bool operator!=(const json_pointer<RefStringTypeLhs>& lhs,
|
||||||
|
const StringType& rhs)
|
||||||
|
{
|
||||||
|
return !(lhs == rhs);
|
||||||
|
}
|
||||||
|
|
||||||
|
template<typename RefStringTypeRhs,
|
||||||
|
typename StringType = typename json_pointer<RefStringTypeRhs>::string_t>
|
||||||
|
inline bool operator!=(const StringType& lhs,
|
||||||
|
const json_pointer<RefStringTypeRhs>& rhs)
|
||||||
|
{
|
||||||
|
return !(lhs == rhs);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
NLOHMANN_JSON_NAMESPACE_END
|
NLOHMANN_JSON_NAMESPACE_END
|
||||||
|
|
||||||
// #include <nlohmann/detail/json_ref.hpp>
|
// #include <nlohmann/detail/json_ref.hpp>
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user