📝 overwork macro documentation
This commit is contained in:
parent
03a5483533
commit
b94e90e66e
@ -45,6 +45,10 @@ Constant.
|
||||
--8<-- "examples/meta.output"
|
||||
```
|
||||
|
||||
## See also
|
||||
|
||||
- [**NLOHMANN_JSON_VERSION_MAJOR**/**NLOHMANN_JSON_VERSION_MINOR**/**NLOHMANN_JSON_VERSION_PATCH**](../macros/nlohmann_json_version_major.md) - library version information
|
||||
|
||||
## Version history
|
||||
|
||||
- Added in version 2.1.0.
|
||||
|
||||
@ -21,19 +21,22 @@ header.
|
||||
|
||||
## Language support
|
||||
|
||||
- `JSON_HAS_CPP_11`, `JSON_HAS_CPP_14`, `JSON_HAS_CPP_17`, `JSON_HAS_CPP_20`
|
||||
- [**JSON_HAS_FILESYSTEM**/**JSON_HAS_EXPERIMENTAL_FILESYSTEM**](json_has_filesystem.md) - control `std::filesystem` support
|
||||
- `JSON_NO_IO`
|
||||
- [**JSON_HAS_CPP_11**<br>**JSON_HAS_CPP_14**<br>**JSON_HAS_CPP_17**<br>**JSON_HAS_CPP_20**](json_has_cpp_11.md) - set supported C++ standard
|
||||
- [**JSON_HAS_FILESYSTEM**<br>**JSON_HAS_EXPERIMENTAL_FILESYSTEM**](json_has_filesystem.md) - control `std::filesystem` support
|
||||
- [**JSON_NO_IO**](json_no_io.md) - switch off functions relying on certain C++ I/O headers
|
||||
- [**JSON_SKIP_UNSUPPORTED_COMPILER_CHECK**](json_skip_unsupported_compiler_check.md) - do not warn about unsupported compilers
|
||||
- `JSON_SKIP_LIBRARY_VERSION_CHECK`
|
||||
|
||||
## Library version
|
||||
|
||||
- [**JSON_SKIP_LIBRARY_VERSION_CHECK**](json_skip_library_version_check.md) - skip library version check
|
||||
- [**NLOHMANN_JSON_VERSION_MAJOR**<br>**NLOHMANN_JSON_VERSION_MINOR**<br>**NLOHMANN_JSON_VERSION_PATCH**](nlohmann_json_version_major.md) - library version information
|
||||
|
||||
## Type conversions
|
||||
|
||||
- `JSON_USE_IMPLICIT_CONVERSIONS`
|
||||
- [**JSON_USE_IMPLICIT_CONVERSIONS**](json_use_implicit_conversions.md) - control implicit conversions
|
||||
|
||||
## Serialization/deserialization macros
|
||||
|
||||
- `NLOHMANN_DEFINE_TYPE_INTRUSIVE(type, member...)`
|
||||
- `NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE(type, member...)`
|
||||
- `NLOHMANN_JSON_SERIALIZE_ENUM(type, ...)`
|
||||
- `NLOHMANN_JSON_VERSION_MAJOR`, `NLOHMANN_JSON_VERSION_MINOR`, `NLOHMANN_JSON_VERSION_PATCH`
|
||||
|
||||
@ -4,7 +4,8 @@
|
||||
#define JSON_ASSERT(x) /* value */
|
||||
```
|
||||
|
||||
This macro controls which code is executed for [runtime assertions](../../features/assertions.md) of the libraries.
|
||||
This macro controls which code is executed for [runtime assertions](../../features/assertions.md) of the libraries. It
|
||||
is set by the library, but can be overridden by defining it before including the library.
|
||||
|
||||
## Parameters
|
||||
|
||||
|
||||
28
doc/mkdocs/docs/api/macros/json_has_cpp_11.md
Normal file
28
doc/mkdocs/docs/api/macros/json_has_cpp_11.md
Normal file
@ -0,0 +1,28 @@
|
||||
# JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20
|
||||
|
||||
```cpp
|
||||
#define JSON_HAS_CPP_11
|
||||
#define JSON_HAS_CPP_14
|
||||
#define JSON_HAS_CPP_17
|
||||
#define JSON_HAS_CPP_20
|
||||
```
|
||||
|
||||
The library targets C++11, but also supports some features introduced in later C++ versions (e.g., `std::string_view`
|
||||
support for C++17). For these new features, the library implements some preprocessor checks to determine the C++
|
||||
standard. By defining any of these symbols, the internal check is overridden and the provided C++ version is
|
||||
unconditionally assumed. This can be helpful for compilers that only implement parts of the standard and would be
|
||||
detected incorrectly.
|
||||
|
||||
## Default definition
|
||||
|
||||
The default value is detected based on the preprocessor macros `#!cpp __cplusplus`, `#!cpp _HAS_CXX17`, or
|
||||
`#!cpp _MSVC_LANG`.
|
||||
|
||||
## Notes
|
||||
|
||||
- `#!cpp JSON_HAS_CPP_11` is always defined.
|
||||
- All macros are undefined outside the library.
|
||||
|
||||
## Version history
|
||||
|
||||
- Added in version 3.10.5.
|
||||
21
doc/mkdocs/docs/api/macros/json_no_io.md
Normal file
21
doc/mkdocs/docs/api/macros/json_no_io.md
Normal file
@ -0,0 +1,21 @@
|
||||
# JSON_NO_IO
|
||||
|
||||
```cpp
|
||||
#define JSON_NO_IO
|
||||
```
|
||||
|
||||
When defined, headers `<cstdio>`, `<ios>`, `<iosfwd>`, `<istream>`, and `<ostream>` are not included and parse functions
|
||||
relying on these headers are excluded. This is relevant for environment where these I/O functions are disallowed for
|
||||
security reasons (e.g., Intel Software Guard Extensions (SGX)).
|
||||
|
||||
## Default definition
|
||||
|
||||
By default, `#!cpp JSON_NO_IO` is not defined.
|
||||
|
||||
```cpp
|
||||
#undef JSON_NO_IO
|
||||
```
|
||||
|
||||
## Version history
|
||||
|
||||
- Added in version 3.10.0.
|
||||
@ -0,0 +1,20 @@
|
||||
# JSON_SKIP_LIBRARY_VERSION_CHECK
|
||||
|
||||
```cpp
|
||||
#define JSON_SKIP_LIBRARY_VERSION_CHECK
|
||||
```
|
||||
|
||||
When defined, the library will not create a compiler warning when a different version of the library was already
|
||||
included.
|
||||
|
||||
## Default definition
|
||||
|
||||
By default, the macro is not defined.
|
||||
|
||||
```cpp
|
||||
#undef JSON_SKIP_LIBRARY_VERSION_CHECK
|
||||
```
|
||||
|
||||
## Version history
|
||||
|
||||
Added in version 3.11.0.
|
||||
@ -1,7 +1,7 @@
|
||||
# JSON_SKIP_UNSUPPORTED_COMPILER_CHECK
|
||||
|
||||
```cpp
|
||||
#undef JSON_SKIP_UNSUPPORTED_COMPILER_CHECK
|
||||
#define JSON_SKIP_UNSUPPORTED_COMPILER_CHECK
|
||||
```
|
||||
|
||||
When defined, the library will not create a compile error when a known unsupported compiler is detected. This allows to
|
||||
|
||||
41
doc/mkdocs/docs/api/macros/json_use_implicit_conversions.md
Normal file
41
doc/mkdocs/docs/api/macros/json_use_implicit_conversions.md
Normal file
@ -0,0 +1,41 @@
|
||||
# JSON_USE_IMPLICIT_CONVERSIONS
|
||||
|
||||
```cpp
|
||||
#define JSON_USE_IMPLICIT_CONVERSIONS /* value */
|
||||
```
|
||||
|
||||
When defined to `0`, implicit conversions are switched off. By default, implicit conversions are switched on.
|
||||
|
||||
Implicit conversions can also be controlled with the CMake option `JSON_ImplicitConversions` (`ON` by default) which
|
||||
sets `JSON_USE_IMPLICIT_CONVERSIONS` accordingly.
|
||||
|
||||
## Default definition
|
||||
|
||||
By default, implicit conversions are enabled
|
||||
|
||||
```cpp
|
||||
#define JSON_USE_IMPLICIT_CONVERSIONS 1
|
||||
```
|
||||
|
||||
## Examples
|
||||
|
||||
??? example
|
||||
|
||||
This is an example for an implicit conversion:
|
||||
|
||||
```cpp
|
||||
json j = "Hello, world!";
|
||||
std::string s = j;
|
||||
```
|
||||
|
||||
When `JSON_USE_IMPLICIT_CONVERSIONS` is defined to `0`, the code above does no longer compile. Instead, it must be
|
||||
written like this:
|
||||
|
||||
```cpp
|
||||
json j = "Hello, world!";
|
||||
auto s = j.get<std::string>();
|
||||
```
|
||||
|
||||
## Version history
|
||||
|
||||
- Added in version 3.9.0.
|
||||
23
doc/mkdocs/docs/api/macros/nlohmann_json_version_major.md
Normal file
23
doc/mkdocs/docs/api/macros/nlohmann_json_version_major.md
Normal file
@ -0,0 +1,23 @@
|
||||
# NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH
|
||||
|
||||
```cpp
|
||||
#define NLOHMANN_JSON_VERSION_MAJOR /* value */
|
||||
#define NLOHMANN_JSON_VERSION_MINOR /* value */
|
||||
#define NLOHMANN_JSON_VERSION_PATCH /* value */
|
||||
```
|
||||
|
||||
These macros are defined by the library and contain the version numbers according to
|
||||
[Semantic Versioning 2.0.0](https://semver.org/spec/v2.0.0.html).
|
||||
|
||||
## Default definition
|
||||
|
||||
The macros are defined according to the current library version.
|
||||
|
||||
## See also
|
||||
|
||||
- [meta](../basic_json/meta.md) - returns version information on the library
|
||||
- [JSON_SKIP_LIBRARY_VERSION_CHECK](json_skip_library_version_check.md) - skip library version check
|
||||
|
||||
## Version history
|
||||
|
||||
- Added in version 3.1.0.
|
||||
@ -57,12 +57,7 @@ standard. By defining any of these symbols, the internal check is overridden and
|
||||
unconditionally assumed. This can be helpful for compilers that only implement parts of the standard and would be
|
||||
detected incorrectly.
|
||||
|
||||
!!! info "Default behavior"
|
||||
|
||||
The default value is detected based on the preprocessor macros `#!cpp __cplusplus`, `#!cpp _HAS_CXX17`, or
|
||||
`#!cpp _MSVC_LANG`.
|
||||
|
||||
The macros were introduced in version 3.10.5.
|
||||
See [full documentation of `JSON_HAS_CPP_11`, `JSON_HAS_CPP_14`, `JSON_HAS_CPP_17`, and `JSON_HAS_CPP_20`](../api/macros/json_has_cpp_11.md).
|
||||
|
||||
## `JSON_HAS_FILESYSTEM`, `JSON_HAS_EXPERIMENTAL_FILESYSTEM`
|
||||
|
||||
@ -100,30 +95,14 @@ When defined, headers `<cstdio>`, `<ios>`, `<iosfwd>`, `<istream>`, and `<ostrea
|
||||
relying on these headers are excluded. This is relevant for environment where these I/O functions are disallowed for
|
||||
security reasons (e.g., Intel Software Guard Extensions (SGX)).
|
||||
|
||||
!!! info "Default behavior"
|
||||
|
||||
By default, the macro is not defined.
|
||||
|
||||
```cpp
|
||||
#undef JSON_NO_IO
|
||||
```
|
||||
|
||||
The macro was introduced in version 3.10.0.
|
||||
See [full documentation of `JSON_NO_IO`](../api/macros/json_no_io.md).
|
||||
|
||||
## `JSON_SKIP_LIBRARY_VERSION_CHECK`
|
||||
|
||||
When defined, the library will not create a compiler warning when a different version of the library was already
|
||||
included.
|
||||
|
||||
!!! info "Default behavior"
|
||||
|
||||
By default, the macro is not defined.
|
||||
|
||||
```cpp
|
||||
#undef JSON_SKIP_LIBRARY_VERSION_CHECK
|
||||
```
|
||||
|
||||
The macro was introduced in version 3.11.0.
|
||||
See [full documentation of `JSON_SKIP_LIBRARY_VERSION_CHECK`](../api/macros/json_skip_library_version_check.md).
|
||||
|
||||
## `JSON_SKIP_UNSUPPORTED_COMPILER_CHECK`
|
||||
|
||||
@ -187,33 +166,7 @@ The macro was introduced in version 3.1.0.
|
||||
|
||||
When defined to `0`, implicit conversions are switched off. By default, implicit conversions are switched on.
|
||||
|
||||
??? example
|
||||
|
||||
This is an example for an implicit conversion:
|
||||
|
||||
```cpp
|
||||
json j = "Hello, world!";
|
||||
std::string s = j;
|
||||
```
|
||||
|
||||
When `JSON_USE_IMPLICIT_CONVERSIONS` is defined to `0`, the code above does no longer compile. Instead, it must be
|
||||
written like this:
|
||||
|
||||
```cpp
|
||||
json j = "Hello, world!";
|
||||
auto s = j.get<std::string>();
|
||||
```
|
||||
|
||||
Implicit conversions can also be controlled with the CMake option `JSON_ImplicitConversions` (`ON` by default) which
|
||||
sets `JSON_USE_IMPLICIT_CONVERSIONS` accordingly.
|
||||
|
||||
!!! info "Default behavior"
|
||||
|
||||
```cpp
|
||||
#define JSON_USE_IMPLICIT_CONVERSIONS 1
|
||||
```
|
||||
|
||||
The macro was introduced in version 3.9.0.
|
||||
See [full documentation of `JSON_USE_IMPLICIT_CONVERSIONS`](../api/macros/json_use_implicit_conversions.md).
|
||||
|
||||
## `NLOHMANN_DEFINE_TYPE_INTRUSIVE(type, member...)`
|
||||
|
||||
@ -269,6 +222,6 @@ The macro was introduced in version 3.4.0.
|
||||
## `NLOHMANN_JSON_VERSION_MAJOR`, `NLOHMANN_JSON_VERSION_MINOR`, `NLOHMANN_JSON_VERSION_PATCH`
|
||||
|
||||
These macros are defined by the library and contain the version numbers according to
|
||||
[Semantic Versioning 2.0.0](https://semver.org).
|
||||
[Semantic Versioning 2.0.0](https://semver.org/spec/v2.0.0.html).
|
||||
|
||||
The macros were introduced in version 3.1.0.
|
||||
See [full documentation of `NLOHMANN_JSON_VERSION_MAJOR`, `NLOHMANN_JSON_VERSION_MINOR`, and `NLOHMANN_JSON_VERSION_PATCH`](../api/macros/nlohmann_json_version_major.md).
|
||||
|
||||
@ -236,8 +236,18 @@ nav:
|
||||
- 'JSON_ASSERT(x)': api/macros/json_assert.md
|
||||
- 'JSON_DIAGNOSTICS': api/macros/json_diagnostics.md
|
||||
- 'JSON_HAS_EXPERIMENTAL_FILESYSTEM': api/macros/json_has_filesystem.md
|
||||
- 'JSON_HAS_CPP_11': api/macros/json_has_cpp_11.md
|
||||
- 'JSON_HAS_CPP_14': api/macros/json_has_cpp_11.md
|
||||
- 'JSON_HAS_CPP_17': api/macros/json_has_cpp_11.md
|
||||
- 'JSON_HAS_CPP_20': api/macros/json_has_cpp_11.md
|
||||
- 'JSON_HAS_FILESYSTEM': api/macros/json_has_filesystem.md
|
||||
- 'JSON_USE_IMPLICIT_CONVERSIONS': api/macros/json_use_implicit_conversions.md
|
||||
- 'JSON_NO_IO': api/macros/json_no_io.md
|
||||
- 'JSON_SKIP_LIBRARY_VERSION_CHECK': api/macros/json_skip_library_version_check.md
|
||||
- 'JSON_SKIP_UNSUPPORTED_COMPILER_CHECK': api/macros/json_skip_unsupported_compiler_check.md
|
||||
- 'NLOHMANN_JSON_VERSION_MAJOR': api/macros/nlohmann_json_version_major.md
|
||||
- 'NLOHMANN_JSON_VERSION_MINOR': api/macros/nlohmann_json_version_major.md
|
||||
- 'NLOHMANN_JSON_VERSION_PATCH': api/macros/nlohmann_json_version_major.md
|
||||
|
||||
# Extras
|
||||
extra:
|
||||
|
||||
Loading…
Reference in New Issue
Block a user