Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
J
json
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Libraries
json
Commits
2e7d340d
Commit
2e7d340d
authored
Mar 25, 2020
by
chenguoping
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
docs:modify the document about operator==
parent
0feea616
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
36 additions
and
5 deletions
+36
-5
include/nlohmann/json.hpp
include/nlohmann/json.hpp
+18
-2
single_include/nlohmann/json.hpp
single_include/nlohmann/json.hpp
+18
-3
No files found.
include/nlohmann/json.hpp
View file @
2e7d340d
...
@@ -5637,13 +5637,13 @@ class basic_json
...
@@ -5637,13 +5637,13 @@ class basic_json
their stored values are the same according to their respective
their stored values are the same according to their respective
`operator==`.
`operator==`.
- Integer and floating-point numbers are automatically converted before
- Integer and floating-point numbers are automatically converted before
comparison. Note tha
n
two NaN values are always treated as unequal.
comparison. Note tha
t
two NaN values are always treated as unequal.
- Two JSON null values are equal.
- Two JSON null values are equal.
@note Floating-point inside JSON values numbers are compared with
@note Floating-point inside JSON values numbers are compared with
`json::number_float_t::operator==` which is `double::operator==` by
`json::number_float_t::operator==` which is `double::operator==` by
default. To compare floating-point while respecting an epsilon, an alternative
default. To compare floating-point while respecting an epsilon, an alternative
[comparison function](https://github.com/mariokonrad/marnav/blob/master/
src
/marnav/math/floatingpoint.hpp#L34-#L39)
[comparison function](https://github.com/mariokonrad/marnav/blob/master/
include
/marnav/math/floatingpoint.hpp#L34-#L39)
could be used, for instance
could be used, for instance
@code {.cpp}
@code {.cpp}
template<typename T, typename = typename std::enable_if<std::is_floating_point<T>::value, T>::type>
template<typename T, typename = typename std::enable_if<std::is_floating_point<T>::value, T>::type>
...
@@ -5652,6 +5652,22 @@ class basic_json
...
@@ -5652,6 +5652,22 @@ class basic_json
return std::abs(a - b) <= epsilon;
return std::abs(a - b) <= epsilon;
}
}
@endcode
@endcode
Or you can self-defined operator equal function like this:
@code {.cpp}
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
case value_t::number_float:
return std::abs(lhs - rhs) <= std::numeric_limits<float>::epsilon();
// other cases remain the same with the original
...
}
...
}
@endcode
@note NaN values never compare equal to themselves or to other NaN values.
@note NaN values never compare equal to themselves or to other NaN values.
...
...
single_include/nlohmann/json.hpp
View file @
2e7d340d
...
@@ -20180,13 +20180,13 @@ class basic_json
...
@@ -20180,13 +20180,13 @@ class basic_json
their stored values are the same according to their respective
their stored values are the same according to their respective
`operator==`.
`operator==`.
- Integer and floating-point numbers are automatically converted before
- Integer and floating-point numbers are automatically converted before
comparison. Note tha
n
two NaN values are always treated as unequal.
comparison. Note tha
t
two NaN values are always treated as unequal.
- Two JSON null values are equal.
- Two JSON null values are equal.
@note Floating-point inside JSON values numbers are compared with
@note Floating-point inside JSON values numbers are compared with
`json::number_float_t::operator==` which is `double::operator==` by
`json::number_float_t::operator==` which is `double::operator==` by
default. To compare floating-point while respecting an epsilon, an alternative
default. To compare floating-point while respecting an epsilon, an alternative
[comparison function](https://github.com/mariokonrad/marnav/blob/master/
src
/marnav/math/floatingpoint.hpp#L34-#L39)
[comparison function](https://github.com/mariokonrad/marnav/blob/master/
include
/marnav/math/floatingpoint.hpp#L34-#L39)
could be used, for instance
could be used, for instance
@code {.cpp}
@code {.cpp}
template<typename T, typename = typename std::enable_if<std::is_floating_point<T>::value, T>::type>
template<typename T, typename = typename std::enable_if<std::is_floating_point<T>::value, T>::type>
...
@@ -20195,7 +20195,22 @@ class basic_json
...
@@ -20195,7 +20195,22 @@ class basic_json
return std::abs(a - b) <= epsilon;
return std::abs(a - b) <= epsilon;
}
}
@endcode
@endcode
Or you can self-defined operator equal function like this:
@code {.cpp}
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
case value_t::number_float:
return std::abs(lhs - rhs) <= std::numeric_limits<float>::epsilon();
// other cases remain the same with the original
...
}
...
}
@endcode
@note NaN values never compare equal to themselves or to other NaN values.
@note NaN values never compare equal to themselves or to other NaN values.
@param[in] lhs first JSON value to consider
@param[in] lhs first JSON value to consider
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment