diff --git a/.clang-tidy b/.clang-tidy
new file mode 100644
index 00000000..c3a1244c
--- /dev/null
+++ b/.clang-tidy
@@ -0,0 +1,77 @@
+# TODO: The first three checks are only removed to get the CI going. They have to be addressed at some point.
+
+Checks: '*,
+
+ -portability-template-virtual-member-function,
+ -bugprone-use-after-move,
+ -hicpp-invalid-access-moved,
+
+ -altera-id-dependent-backward-branch,
+ -altera-struct-pack-align,
+ -altera-unroll-loops,
+ -android-cloexec-fopen,
+ -boost-use-ranges,
+ -bugprone-easily-swappable-parameters,
+ -cert-err58-cpp,
+ -clang-analyzer-webkit.NoUncountedMemberChecker,
+ -concurrency-mt-unsafe,
+ -cppcoreguidelines-avoid-const-or-ref-data-members,
+ -cppcoreguidelines-avoid-do-while,
+ -cppcoreguidelines-avoid-goto,
+ -cppcoreguidelines-avoid-magic-numbers,
+ -cppcoreguidelines-avoid-non-const-global-variables,
+ -cppcoreguidelines-macro-usage,
+ -cppcoreguidelines-pro-bounds-array-to-pointer-decay,
+ -cppcoreguidelines-pro-bounds-constant-array-index,
+ -cppcoreguidelines-pro-bounds-pointer-arithmetic,
+ -cppcoreguidelines-pro-type-reinterpret-cast,
+ -cppcoreguidelines-pro-type-union-access,
+ -cppcoreguidelines-rvalue-reference-param-not-moved,
+ -cppcoreguidelines-virtual-class-destructor,
+ -fuchsia-default-arguments-calls,
+ -fuchsia-default-arguments-declarations,
+ -fuchsia-overloaded-operator,
+ -google-explicit-constructor,
+ -google-readability-function-size,
+ -google-runtime-int,
+ -google-runtime-references,
+ -hicpp-avoid-goto,
+ -hicpp-explicit-conversions,
+ -hicpp-function-size,
+ -hicpp-no-array-decay,
+ -hicpp-no-assembler,
+ -hicpp-signed-bitwise,
+ -hicpp-uppercase-literal-suffix,
+ -llvm-header-guard,
+ -llvm-include-order,
+ -llvmlibc-*,
+ -misc-use-anonymous-namespace,
+ -misc-confusable-identifiers,
+ -misc-include-cleaner,
+ -misc-no-recursion,
+ -misc-non-private-member-variables-in-classes,
+ -modernize-concat-nested-namespaces,
+ -modernize-type-traits,
+ -modernize-use-constraints,
+ -modernize-use-designated-initializers,
+ -modernize-use-nodiscard,
+ -modernize-use-ranges,
+ -modernize-use-std-numbers,
+ -modernize-use-trailing-return-type,
+ -performance-enum-size,
+ -readability-function-cognitive-complexity,
+ -readability-function-size,
+ -readability-identifier-length,
+ -readability-magic-numbers,
+ -readability-redundant-access-specifiers,
+ -readability-simplify-boolean-expr,
+ -readability-uppercase-literal-suffix'
+
+CheckOptions:
+ - key: hicpp-special-member-functions.AllowSoleDefaultDtor
+ value: 1
+
+WarningsAsErrors: '*'
+
+#HeaderFilterRegex: '.*nlohmann.*'
+HeaderFilterRegex: '.*hpp$'
diff --git a/.github/workflows/gitlint.yml b/.github/workflows/linting.yml
similarity index 88%
rename from .github/workflows/gitlint.yml
rename to .github/workflows/linting.yml
index 76004a2b..f938245a 100644
--- a/.github/workflows/gitlint.yml
+++ b/.github/workflows/linting.yml
@@ -11,7 +11,7 @@
# SPDX-License-Identifier: Apache-2.0
# *******************************************************************************
-name: Gitlint check
+name: Linting Checks
on:
pull_request:
types: [opened, synchronize, reopened]
@@ -60,6 +60,9 @@ jobs:
ignore: 'tests'
database: nlohmann_json/build/compile_commands.json
version: 16
+ style: '' # deactivate style checks (nlohmann does not use a style guide)
+ tidy-checks: '' # use the .clang-tidy configuration file
+
- name: Run linters on tests
continue-on-error: true
@@ -71,6 +74,8 @@ jobs:
ignore: 'src|include'
database: nlohmann_json/build/compile_commands.json
version: 16
+ style: '' # deactivate style checks (nlohmann does not use a style guide)
+ tidy-checks: '' # use the .clang-tidy configuration file
- name: Report lint failure
if: steps.source-linter.outputs.checks-failed > 0 || steps.test-linter.outputs.checks-failed > 0
diff --git a/.github/workflows/nlohmannunittests.yml b/.github/workflows/nlohmannunittests.yml
index 88849d35..795c5eaa 100644
--- a/.github/workflows/nlohmannunittests.yml
+++ b/.github/workflows/nlohmannunittests.yml
@@ -41,4 +41,4 @@ jobs:
bazelisk-cache: true
- name: Run Bazel Test
- run: bazel test //nlohmann_json/tests/src:all_nlohmann_tests
+ run: bazel test //nlohmann_json/tests/src:all
diff --git a/.yamlfmt b/.yamlfmt
index 25ed669f..6bac7ad5 100644
--- a/.yamlfmt
+++ b/.yamlfmt
@@ -7,3 +7,6 @@ exclude:
- nlohmann_json/.github/ISSUE_TEMPLATE/bug.yaml
- nlohmann_json/docs/mkdocs/mkdocs.yml
- nlohmann_json/.clang-tidy
+ - nlohmann_json/.github
+ - nlohmann_json/.cirrus.yml
+ - .clang-tidy
diff --git a/README.md b/README.md
index 854ddda8..5b66598a 100644
--- a/README.md
+++ b/README.md
@@ -74,3 +74,14 @@ pdflatex nlohmannjsonlibrary.tex
```
Feel free to copy and use this Markdown format for your documentation purposes!
+
+## Integration of nlohmann_json library
+
+- Imported as a git subtree in folder nlohmann_json at the top-level of this repository
+- Initial version 3.12.0
+- All code is contained in this repository, so no special setup is needed unless you want to pull changes from nlohmann_json
+- Setup steps to pull changes from nlohmann_json:
+ - `git remote add nlohmann_json https://github.com/nlohmann/json.git`
+ - `git fetch nlohmann_json`
+ - Pull changes:
+ - `git subtree pull --prefix=nlohmann_json nlohmann_json versionX `
diff --git a/nlohmann_json/.cirrus.yml b/nlohmann_json/.cirrus.yml
index b2a78390..be633150 100644
--- a/nlohmann_json/.cirrus.yml
+++ b/nlohmann_json/.cirrus.yml
@@ -3,15 +3,15 @@ arm_container:
check_task:
check_script:
- - wget https://github.com/Kitware/CMake/releases/download/v3.20.2/cmake-3.20.2.tar.gz
- - tar xfz cmake-3.20.2.tar.gz
- - cd cmake-3.20.2
- - ./configure
- - make cmake ctest -j4
- - cd ..
- - mkdir build
- - cd build
- - ../cmake-3.20.2/bin/cmake .. -DJSON_FastTests=ON
- - make -j4
- - cd tests
- - ../../cmake-3.20.2/bin/ctest -j4
+ - wget https://github.com/Kitware/CMake/releases/download/v3.20.2/cmake-3.20.2.tar.gz
+ - tar xfz cmake-3.20.2.tar.gz
+ - cd cmake-3.20.2
+ - ./configure
+ - make cmake ctest -j4
+ - cd ..
+ - mkdir build
+ - cd build
+ - ../cmake-3.20.2/bin/cmake .. -DJSON_FastTests=ON
+ - make -j4
+ - cd tests
+ - ../../cmake-3.20.2/bin/ctest -j4
diff --git a/nlohmann_json/.clang-tidy b/nlohmann_json/.clang-tidy
index 4587c964..c3a1244c 100644
--- a/nlohmann_json/.clang-tidy
+++ b/nlohmann_json/.clang-tidy
@@ -1,5 +1,4 @@
# TODO: The first three checks are only removed to get the CI going. They have to be addressed at some point.
-# TODO: portability-avoid-pragma-once: should be fixed eventually
Checks: '*,
@@ -60,7 +59,6 @@ Checks: '*,
-modernize-use-std-numbers,
-modernize-use-trailing-return-type,
-performance-enum-size,
- -portability-avoid-pragma-once,
-readability-function-cognitive-complexity,
-readability-function-size,
-readability-identifier-length,
diff --git a/nlohmann_json/.github/CONTRIBUTING.md b/nlohmann_json/.github/CONTRIBUTING.md
index 5dfb74b5..ad9820fc 100644
--- a/nlohmann_json/.github/CONTRIBUTING.md
+++ b/nlohmann_json/.github/CONTRIBUTING.md
@@ -1,7 +1,7 @@
# Contribution Guidelines
Thank you for your interest in contributing to this project! What began as an exercise to explore the exciting features
-of C++11 has evolved into a [widely used](https://json.nlohmann.me/home/customers/) JSON library. I truly appreciate all
+of C++11 has evolved into a [widely-used](https://json.nlohmann.me/home/customers/) JSON library. I truly appreciate all
the contributions from the community, whether it's proposing features, identifying bugs, or fixing mistakes! To ensure
that our collaboration is efficient and effective, please follow these guidelines.
@@ -21,7 +21,7 @@ Clearly describe the issue:
- If it is a bug, please describe how to **reproduce** it. If possible, attach a _complete example_ which demonstrates
the error. Please also state what you **expected** to happen instead of the error.
-- If you propose a change or addition, try to give an **example** what the improved code could look like or how to use
+- If you propose a change or addition, try to give an **example** how the improved code could look like or how to use
it.
- If you found a compilation error, please tell us which **compiler** (version and operating system) you used and paste
the (relevant part of) the error messages to the ticket.
@@ -66,21 +66,21 @@ certification that he or she has the right to submit the patch for inclusion int
### Describe your changes
-This library is primarily maintained as a spare-time project. As such, I cannot make any guarantee how quickly changes
+This library is primarily maintained as a spare-time project. As such, I can not make any guarantee how quickly changes
are merged and released. Therefore, it is very important to make the review as smooth as possible by explaining not only
_what_ you changed, but _why_. This rationale can be very valuable down the road when improvements or bugs are discussed
years later.
-### Reference an existing issue
+### Reference existing issues
[Link a pull request to an issue](https://docs.github.com/en/issues/tracking-your-work-with-issues/using-issues/linking-a-pull-request-to-an-issue)
-to clarify that a fix is forthcoming and which issue can be closed after merging. Only a few cases (e.g., fixing typos)
-do not require prior discussions.
+to clarify that a fix is forthcoming and which issue can be closed after merging. Only few cases (e.g., fixing typos)
+don’t require prior discussions.
### Write tests
The library has an extensive test suite that currently covers [100 %](https://coveralls.io/github/nlohmann/json) of the
-library's code. These tests are crucial to maintain API stability and give future contributors confidence that they do
+library's code. These test are crucial to maintain API stability and give future contributors confidence that they do
not accidentally break things. As Titus Winters aptly put it:
> If you liked it, you should have put a test on it.
@@ -118,14 +118,14 @@ exception into account.
#### Coverage
If test coverage decreases, an automatic warning comment will be posted on the pull request. You can access a code
-coverage report as an artifact to the “Ubuntu” workflow.
+coverage report as artifact to the “Ubuntu” workflow.
### Update the documentation
The [main documentation](https://json.nlohmann.me) of the library is generated from the files
[`docs/mkdocs/docs`](https://github.com/nlohmann/json/blob/develop/docs/mkdocs/docs). This folder contains dedicated
pages for [certain features](https://github.com/nlohmann/json/tree/develop/docs/mkdocs/docs/features), a list of
-[all exceptions](https://github.com/nlohmann/json/blob/develop/docs/mkdocs/docs/home/exceptions.md), and
+[all exceptions](https://github.com/nlohmann/json/blob/develop/docs/mkdocs/docs/home/exceptions.md), and an
[extensive API documentation](https://github.com/nlohmann/json/tree/develop/docs/mkdocs/docs/api) with details on every
public API function.
@@ -136,7 +136,7 @@ make install_venv -C docs/mkdocs
make serve -C docs/mkdocs
```
-The documentation will then be available at . See the documentation of
+The documentation will then available at . See the documentation of
[mkdocs](https://www.mkdocs.org) and [Material for MkDocs](https://squidfunk.github.io/mkdocs-material/) for more
information.
@@ -184,8 +184,8 @@ API of the 3.x.y version is broken. This includes:
Although these guidelines may seem restrictive, they are essential for maintaining the library’s utility.
Breaking changes may be introduced when they are guarded with a feature macro such as
-[`JSON_USE_IMPLICIT_CONVERSIONS`](https://json.nlohmann.me/api/macros/json_use_implicit_conversions/) which allows
-selectively changing the behavior of the library. In next steps, the current behavior can then be deprecated. Using
+[`JSON_USE_IMPLICIT_CONVERSIONS`](https://json.nlohmann.me/api/macros/json_use_implicit_conversions/) which allows to
+selectively change the behavior of the library. In next steps, the current behavior can then be deprecated. Using
feature macros then allows users to test their code against the library in the next major release.
### Break C++11 language conformance
@@ -211,7 +211,7 @@ The following areas really need contribution and are always welcomed:
- Extending the **continuous integration** toward more exotic compilers such as Android NDK, Intel's Compiler, or the
bleeding-edge versions Clang.
- Improving the efficiency of the **JSON parser**. The current parser is implemented as a naive recursive descent parser
- with hand-coded string handling. More sophisticated approaches like LALR parsers would be really appreciated. That
+ with hand coded string handling. More sophisticated approaches like LALR parsers would be really appreciated. That
said, parser generators like Bison or ANTLR do not play nice with single-header files -- I really would like to keep
the parser inside the `json.hpp` header, and I am not aware of approaches similar to [`re2c`](http://re2c.org) for
parsing.
diff --git a/nlohmann_json/.github/PULL_REQUEST_TEMPLATE.md b/nlohmann_json/.github/PULL_REQUEST_TEMPLATE.md
index 53709532..4bb90e75 100644
--- a/nlohmann_json/.github/PULL_REQUEST_TEMPLATE.md
+++ b/nlohmann_json/.github/PULL_REQUEST_TEMPLATE.md
@@ -1,4 +1,4 @@
-[Describe your pull request here. Please read the text below the line and make sure you follow the checklist.]
+[Describe your pull request here. Please read the text below the line, and make sure you follow the checklist.]
- [ ] The changes are described in detail, both the what and why.
- [ ] If applicable, an [existing issue](https://github.com/nlohmann/json/issues) is referenced.
diff --git a/nlohmann_json/.github/config.yml b/nlohmann_json/.github/config.yml
index 7aa59307..4e321747 100644
--- a/nlohmann_json/.github/config.yml
+++ b/nlohmann_json/.github/config.yml
@@ -8,6 +8,7 @@ sentimentBotToxicityThreshold: .7
sentimentBotReplyComment: >
Please be sure to review the [code of conduct](https://github.com/nlohmann/json/blob/develop/.github/CODE_OF_CONDUCT.md) and be respectful of other users. cc/ @nlohmann
+
# Configuration for request-info - https://github.com/behaviorbot/request-info
# *Required* Comment to reply with
diff --git a/nlohmann_json/.github/external_ci/appveyor.yml b/nlohmann_json/.github/external_ci/appveyor.yml
index d99b8e56..5c6b47a3 100644
--- a/nlohmann_json/.github/external_ci/appveyor.yml
+++ b/nlohmann_json/.github/external_ci/appveyor.yml
@@ -1,4 +1,4 @@
-version: "{build}"
+version: '{build}'
# only build PRs and commits to develop branch
# (see https://help.appveyor.com/discussions/questions/55079-two-builds-per-commit-to-pull-request)
diff --git a/nlohmann_json/.github/labeler.yml b/nlohmann_json/.github/labeler.yml
index 6b64013a..024d3e6d 100644
--- a/nlohmann_json/.github/labeler.yml
+++ b/nlohmann_json/.github/labeler.yml
@@ -1,38 +1,38 @@
version: 1
labels:
- - label: "documentation"
- files:
- - "README.md"
-
- - label: "documentation"
- files:
- - "docs/.*"
-
- - label: "tests"
- files:
- - "tests/.*"
-
- - label: "CMake"
- files:
- - ".*CMakeLists.txt"
-
- - label: "CMake"
- files:
- - "cmake/.*"
-
- - label: "CI"
- files:
- - "github/workflows/.*"
-
- - label: "CI"
- files:
- - "github/external_ci/.*"
-
- - label: "S"
- size-below: 10
- - label: "M"
- size-above: 9
- size-below: 100
- - label: "L"
- size-above: 100
+- label: "documentation"
+ files:
+ - "README.md"
+
+- label: "documentation"
+ files:
+ - "docs/.*"
+
+- label: "tests"
+ files:
+ - "tests/.*"
+
+- label: "CMake"
+ files:
+ - ".*CMakeLists.txt"
+
+- label: "CMake"
+ files:
+ - "cmake/.*"
+
+- label: "CI"
+ files:
+ - "github/workflows/.*"
+
+- label: "CI"
+ files:
+ - "github/external_ci/.*"
+
+- label: "S"
+ size-below: 10
+- label: "M"
+ size-above: 9
+ size-below: 100
+- label: "L"
+ size-above: 100
diff --git a/nlohmann_json/.github/workflows/check_amalgamation.yml b/nlohmann_json/.github/workflows/check_amalgamation.yml
index 4cd4bbc0..906a5c5b 100644
--- a/nlohmann_json/.github/workflows/check_amalgamation.yml
+++ b/nlohmann_json/.github/workflows/check_amalgamation.yml
@@ -11,7 +11,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Harden Runner
- uses: step-security/harden-runner@002fdce3c6a235733a90a27c80493a3241e56863 # v2.12.1
+ uses: step-security/harden-runner@c6295a65d1254861815972266d5933fd6e532bdf # v2.11.1
with:
egress-policy: audit
@@ -34,7 +34,7 @@ jobs:
steps:
- name: Harden Runner
- uses: step-security/harden-runner@002fdce3c6a235733a90a27c80493a3241e56863 # v2.12.1
+ uses: step-security/harden-runner@c6295a65d1254861815972266d5933fd6e532bdf # v2.11.1
with:
egress-policy: audit
diff --git a/nlohmann_json/.github/workflows/cifuzz.yml b/nlohmann_json/.github/workflows/cifuzz.yml
index 7a5ca506..256d4986 100644
--- a/nlohmann_json/.github/workflows/cifuzz.yml
+++ b/nlohmann_json/.github/workflows/cifuzz.yml
@@ -8,28 +8,28 @@ jobs:
Fuzzing:
runs-on: ubuntu-latest
steps:
- - name: Harden Runner
- uses: step-security/harden-runner@002fdce3c6a235733a90a27c80493a3241e56863 # v2.12.1
- with:
- egress-policy: audit
+ - name: Harden Runner
+ uses: step-security/harden-runner@c6295a65d1254861815972266d5933fd6e532bdf # v2.11.1
+ with:
+ egress-policy: audit
- - name: Build Fuzzers
- id: build
- uses: google/oss-fuzz/infra/cifuzz/actions/build_fuzzers@57fe4475324c5506adbfecdcdd2917f65c86ee9e # master
- with:
- oss-fuzz-project-name: "json"
- dry-run: false
- language: c++
- - name: Run Fuzzers
- uses: google/oss-fuzz/infra/cifuzz/actions/run_fuzzers@57fe4475324c5506adbfecdcdd2917f65c86ee9e # master
- with:
- oss-fuzz-project-name: "json"
- fuzz-seconds: 300
- dry-run: false
- language: c++
- - name: Upload Crash
- uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
- if: failure() && steps.build.outcome == 'success'
- with:
- name: artifacts
- path: ./out/artifacts
+ - name: Build Fuzzers
+ id: build
+ uses: google/oss-fuzz/infra/cifuzz/actions/build_fuzzers@57fe4475324c5506adbfecdcdd2917f65c86ee9e # master
+ with:
+ oss-fuzz-project-name: 'json'
+ dry-run: false
+ language: c++
+ - name: Run Fuzzers
+ uses: google/oss-fuzz/infra/cifuzz/actions/run_fuzzers@57fe4475324c5506adbfecdcdd2917f65c86ee9e # master
+ with:
+ oss-fuzz-project-name: 'json'
+ fuzz-seconds: 300
+ dry-run: false
+ language: c++
+ - name: Upload Crash
+ uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
+ if: failure() && steps.build.outcome == 'success'
+ with:
+ name: artifacts
+ path: ./out/artifacts
diff --git a/nlohmann_json/.github/workflows/codeql-analysis.yml b/nlohmann_json/.github/workflows/codeql-analysis.yml
index b607a17c..b7af3212 100644
--- a/nlohmann_json/.github/workflows/codeql-analysis.yml
+++ b/nlohmann_json/.github/workflows/codeql-analysis.yml
@@ -8,9 +8,9 @@ on:
- release/*
pull_request:
schedule:
- - cron: "0 19 * * 1"
+ - cron: '0 19 * * 1'
workflow_dispatch:
-
+
concurrency:
group: ${{ github.workflow }}-${{ github.ref || github.run_id }}
cancel-in-progress: true
@@ -20,29 +20,30 @@ permissions:
jobs:
CodeQL-Build:
+
runs-on: ubuntu-latest
permissions:
security-events: write
steps:
- - name: Harden Runner
- uses: step-security/harden-runner@002fdce3c6a235733a90a27c80493a3241e56863 # v2.12.1
- with:
- egress-policy: audit
-
- - name: Checkout repository
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
-
- # Initializes the CodeQL tools for scanning.
- - name: Initialize CodeQL
- uses: github/codeql-action/init@ff0a06e83cb2de871e5a09832bc6a81e7276941f # v3.28.18
- with:
- languages: c-cpp
-
- # Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
- # If this step fails, then you should remove it and run the build manually (see below)
- - name: Autobuild
- uses: github/codeql-action/autobuild@ff0a06e83cb2de871e5a09832bc6a81e7276941f # v3.28.18
-
- - name: Perform CodeQL Analysis
- uses: github/codeql-action/analyze@ff0a06e83cb2de871e5a09832bc6a81e7276941f # v3.28.18
+ - name: Harden Runner
+ uses: step-security/harden-runner@c6295a65d1254861815972266d5933fd6e532bdf # v2.11.1
+ with:
+ egress-policy: audit
+
+ - name: Checkout repository
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+
+ # Initializes the CodeQL tools for scanning.
+ - name: Initialize CodeQL
+ uses: github/codeql-action/init@fc7e4a0fa01c3cca5fd6a1fddec5c0740c977aa2 # v3.28.14
+ with:
+ languages: c-cpp
+
+ # Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
+ # If this step fails, then you should remove it and run the build manually (see below)
+ - name: Autobuild
+ uses: github/codeql-action/autobuild@fc7e4a0fa01c3cca5fd6a1fddec5c0740c977aa2 # v3.28.14
+
+ - name: Perform CodeQL Analysis
+ uses: github/codeql-action/analyze@fc7e4a0fa01c3cca5fd6a1fddec5c0740c977aa2 # v3.28.14
diff --git a/nlohmann_json/.github/workflows/comment_check_amalgamation.yml b/nlohmann_json/.github/workflows/comment_check_amalgamation.yml
index fc690da4..4308ed10 100644
--- a/nlohmann_json/.github/workflows/comment_check_amalgamation.yml
+++ b/nlohmann_json/.github/workflows/comment_check_amalgamation.yml
@@ -19,11 +19,11 @@ jobs:
pull-requests: write
steps:
- name: Harden Runner
- uses: step-security/harden-runner@002fdce3c6a235733a90a27c80493a3241e56863 # v2.12.1
+ uses: step-security/harden-runner@c6295a65d1254861815972266d5933fd6e532bdf # v2.11.1
with:
egress-policy: audit
- - name: "Download artifact"
+ - name: 'Download artifact'
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
with:
script: |
@@ -44,7 +44,8 @@ jobs:
var fs = require('fs');
fs.writeFileSync('${{github.workspace}}/pr.zip', Buffer.from(download.data));
- run: unzip pr.zip
- - name: "Comment on PR"
+
+ - name: 'Comment on PR'
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
diff --git a/nlohmann_json/.github/workflows/dependency-review.yml b/nlohmann_json/.github/workflows/dependency-review.yml
index 4f44295f..70f08cee 100644
--- a/nlohmann_json/.github/workflows/dependency-review.yml
+++ b/nlohmann_json/.github/workflows/dependency-review.yml
@@ -6,7 +6,7 @@
# PRs introducing known-vulnerable packages will be blocked from merging.
#
# Source repository: https://github.com/actions/dependency-review-action
-name: "Dependency Review"
+name: 'Dependency Review'
on: [pull_request]
permissions:
@@ -17,11 +17,11 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Harden Runner
- uses: step-security/harden-runner@002fdce3c6a235733a90a27c80493a3241e56863 # v2.12.1
+ uses: step-security/harden-runner@c6295a65d1254861815972266d5933fd6e532bdf # v2.11.1
with:
egress-policy: audit
- - name: "Checkout Repository"
+ - name: 'Checkout Repository'
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- - name: "Dependency Review"
- uses: actions/dependency-review-action@da24556b548a50705dd671f47852072ea4c105d9 # v4.7.1
+ - name: 'Dependency Review'
+ uses: actions/dependency-review-action@ce3cf9537a52e8119d91fd484ab5b8a807627bf8 # v4.6.0
diff --git a/nlohmann_json/.github/workflows/labeler.yml b/nlohmann_json/.github/workflows/labeler.yml
index edeb9012..a71bd0f4 100644
--- a/nlohmann_json/.github/workflows/labeler.yml
+++ b/nlohmann_json/.github/workflows/labeler.yml
@@ -17,10 +17,10 @@ jobs:
steps:
- name: Harden Runner
- uses: step-security/harden-runner@002fdce3c6a235733a90a27c80493a3241e56863 # v2.12.1
+ uses: step-security/harden-runner@c6295a65d1254861815972266d5933fd6e532bdf # v2.11.1
with:
egress-policy: audit
- - uses: srvaroa/labeler@e7bef2249506ba9cbbd3ca5cee256abd9f930b04 # master
+ - uses: srvaroa/labeler@e216fb40e2e6d3b17d90fb1d950f98bee92f65ce # master
env:
GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
diff --git a/nlohmann_json/.github/workflows/macos.yml b/nlohmann_json/.github/workflows/macos.yml
index 34c63a9a..dc99a2dd 100644
--- a/nlohmann_json/.github/workflows/macos.yml
+++ b/nlohmann_json/.github/workflows/macos.yml
@@ -17,47 +17,47 @@ permissions:
contents: read
jobs:
- # macos-11 is deprecated
- # macos-11:
- # runs-on: macos-11
- # strategy:
- # matrix:
- # xcode: ['11.7', '12.4', '12.5.1', '13.0']
- # env:
- # DEVELOPER_DIR: /Applications/Xcode_${{ matrix.xcode }}.app/Contents/Developer
- #
- # steps:
- # - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- # - name: Run CMake
- # run: cmake -S . -B build -D CMAKE_BUILD_TYPE=Debug -DJSON_BuildTests=On -DJSON_FastTests=ON
- # - name: Build
- # run: cmake --build build --parallel 10
- # - name: Test
- # run: cd build ; ctest -j 10 --output-on-failure
+# macos-11 is deprecated
+# macos-11:
+# runs-on: macos-11
+# strategy:
+# matrix:
+# xcode: ['11.7', '12.4', '12.5.1', '13.0']
+# env:
+# DEVELOPER_DIR: /Applications/Xcode_${{ matrix.xcode }}.app/Contents/Developer
+#
+# steps:
+# - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+# - name: Run CMake
+# run: cmake -S . -B build -D CMAKE_BUILD_TYPE=Debug -DJSON_BuildTests=On -DJSON_FastTests=ON
+# - name: Build
+# run: cmake --build build --parallel 10
+# - name: Test
+# run: cd build ; ctest -j 10 --output-on-failure
- # macos-12 is deprecated (https://github.com/actions/runner-images/issues/10721)
- # macos-12:
- # runs-on: macos-12 # https://github.com/actions/runner-images/blob/main/images/macos/macos-12-Readme.md
- # strategy:
- # matrix:
- # xcode: ['13.1', '13.2.1', '13.3.1', '13.4.1', '14.0', '14.0.1', '14.1']
- # env:
- # DEVELOPER_DIR: /Applications/Xcode_${{ matrix.xcode }}.app/Contents/Developer
- #
- # steps:
- # - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- # - name: Run CMake
- # run: cmake -S . -B build -D CMAKE_BUILD_TYPE=Debug -DJSON_BuildTests=On -DJSON_FastTests=ON
- # - name: Build
- # run: cmake --build build --parallel 10
- # - name: Test
- # run: cd build ; ctest -j 10 --output-on-failure
+# macos-12 is deprecated (https://github.com/actions/runner-images/issues/10721)
+# macos-12:
+# runs-on: macos-12 # https://github.com/actions/runner-images/blob/main/images/macos/macos-12-Readme.md
+# strategy:
+# matrix:
+# xcode: ['13.1', '13.2.1', '13.3.1', '13.4.1', '14.0', '14.0.1', '14.1']
+# env:
+# DEVELOPER_DIR: /Applications/Xcode_${{ matrix.xcode }}.app/Contents/Developer
+#
+# steps:
+# - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+# - name: Run CMake
+# run: cmake -S . -B build -D CMAKE_BUILD_TYPE=Debug -DJSON_BuildTests=On -DJSON_FastTests=ON
+# - name: Build
+# run: cmake --build build --parallel 10
+# - name: Test
+# run: cd build ; ctest -j 10 --output-on-failure
macos-13:
runs-on: macos-13 # https://github.com/actions/runner-images/blob/main/images/macos/macos-13-Readme.md
strategy:
matrix:
- xcode: ["14.1", "14.2", "14.3", "14.3.1", "15.0.1", "15.1", "15.2"]
+ xcode: ['14.1', '14.2', '14.3', '14.3.1', '15.0.1', '15.1', '15.2']
env:
DEVELOPER_DIR: /Applications/Xcode_${{ matrix.xcode }}.app/Contents/Developer
@@ -74,7 +74,7 @@ jobs:
runs-on: macos-14 # https://github.com/actions/runner-images/blob/main/images/macos/macos-14-Readme.md
strategy:
matrix:
- xcode: ["15.3", "15.4"]
+ xcode: ['15.3', '15.4']
env:
DEVELOPER_DIR: /Applications/Xcode_${{ matrix.xcode }}.app/Contents/Developer
@@ -91,7 +91,7 @@ jobs:
runs-on: macos-15 # https://github.com/actions/runner-images/blob/main/images/macos/macos-15-Readme.md
strategy:
matrix:
- xcode: ["16.0", "16.1", "16.2", "16.3"]
+ xcode: ['16.0', '16.1', '16.2']
env:
DEVELOPER_DIR: /Applications/Xcode_${{ matrix.xcode }}.app/Contents/Developer
diff --git a/nlohmann_json/.github/workflows/publish_documentation.yml b/nlohmann_json/.github/workflows/publish_documentation.yml
index 21566519..c0e85ab1 100644
--- a/nlohmann_json/.github/workflows/publish_documentation.yml
+++ b/nlohmann_json/.github/workflows/publish_documentation.yml
@@ -27,7 +27,7 @@ jobs:
runs-on: ubuntu-22.04
steps:
- name: Harden Runner
- uses: step-security/harden-runner@002fdce3c6a235733a90a27c80493a3241e56863 # v2.12.1
+ uses: step-security/harden-runner@c6295a65d1254861815972266d5933fd6e532bdf # v2.11.1
with:
egress-policy: audit
diff --git a/nlohmann_json/.github/workflows/scorecards.yml b/nlohmann_json/.github/workflows/scorecards.yml
index ca0f8454..a95e5fa8 100644
--- a/nlohmann_json/.github/workflows/scorecards.yml
+++ b/nlohmann_json/.github/workflows/scorecards.yml
@@ -10,7 +10,7 @@ on:
# To guarantee Maintained check is occasionally updated. See
# https://github.com/ossf/scorecard/blob/main/docs/checks.md#maintained
schedule:
- - cron: "20 7 * * 2"
+ - cron: '20 7 * * 2'
push:
branches: ["develop"]
@@ -36,7 +36,7 @@ jobs:
steps:
- name: Harden Runner
- uses: step-security/harden-runner@002fdce3c6a235733a90a27c80493a3241e56863 # v2.12.1
+ uses: step-security/harden-runner@c6295a65d1254861815972266d5933fd6e532bdf # v2.11.1
with:
egress-policy: audit
@@ -46,7 +46,7 @@ jobs:
persist-credentials: false
- name: "Run analysis"
- uses: ossf/scorecard-action@05b42c624433fc40578a4040d5cf5e36ddca8cde # v2.4.2
+ uses: ossf/scorecard-action@f49aabe0b5af0936a0987cfb85d86b75731b0186 # v2.4.1
with:
results_file: results.sarif
results_format: sarif
@@ -76,6 +76,6 @@ jobs:
# Upload the results to GitHub's code scanning dashboard.
- name: "Upload to code-scanning"
- uses: github/codeql-action/upload-sarif@ff0a06e83cb2de871e5a09832bc6a81e7276941f # v3.28.18
+ uses: github/codeql-action/upload-sarif@fc7e4a0fa01c3cca5fd6a1fddec5c0740c977aa2 # v3.28.14
with:
sarif_file: results.sarif
diff --git a/nlohmann_json/.github/workflows/stale.yml b/nlohmann_json/.github/workflows/stale.yml
index 49de023e..f00a973d 100644
--- a/nlohmann_json/.github/workflows/stale.yml
+++ b/nlohmann_json/.github/workflows/stale.yml
@@ -1,7 +1,7 @@
-name: "Comment and close stale issues and PR"
+name: 'Comment and close stale issues and PR'
on:
schedule:
- - cron: "0 0 * * *"
+ - cron: '0 0 * * *'
permissions:
contents: read
@@ -16,18 +16,18 @@ jobs:
steps:
- name: Harden Runner
- uses: step-security/harden-runner@002fdce3c6a235733a90a27c80493a3241e56863 # v2.12.1
+ uses: step-security/harden-runner@c6295a65d1254861815972266d5933fd6e532bdf # v2.11.1
with:
egress-policy: audit
- uses: actions/stale@5bef64f19d7facfb25b37b414482c7164d639639 # v9.1.0
with:
- stale-issue-label: "state: stale"
- stale-pr-label: "state: stale"
- exempt-issue-labels: "pinned,security"
+ stale-issue-label: 'state: stale'
+ stale-pr-label: 'state: stale'
+ exempt-issue-labels: 'pinned,security'
stale-issue-message: 'This issue has been marked as stale because it has been open for 90 days without activity. If this issue is still relevant, please add a comment or remove the "stale" label. Otherwise, it will be closed in 10 days. Thank you for helping us prioritize our work!'
- stale-pr-message: "This pull request has been marked as stale because it has had no activity for 30 days. While we won’t close it automatically, we encourage you to update or comment if it is still relevant. Keeping pull requests active and up-to-date helps us review and merge changes more efficiently. Thank you for your contributions!"
- close-issue-message: "This issue has been closed after being marked as stale for 10 days without any further activity. If this was done in error or the issue is still relevant, please feel free to reopen it or create a new issue. We appreciate your understanding and contributions."
+ stale-pr-message: 'This pull request has been marked as stale because it has had no activity for 30 days. While we won’t close it automatically, we encourage you to update or comment if it is still relevant. Keeping pull requests active and up-to-date helps us review and merge changes more efficiently. Thank you for your contributions!'
+ close-issue-message: 'This issue has been closed after being marked as stale for 10 days without any further activity. If this was done in error or the issue is still relevant, please feel free to reopen it or create a new issue. We appreciate your understanding and contributions.'
days-before-stale: 90
days-before-pr-stale: 30
days-before-close: 10
diff --git a/nlohmann_json/.github/workflows/ubuntu.yml b/nlohmann_json/.github/workflows/ubuntu.yml
index 831eebf6..87d0d799 100644
--- a/nlohmann_json/.github/workflows/ubuntu.yml
+++ b/nlohmann_json/.github/workflows/ubuntu.yml
@@ -23,7 +23,7 @@ jobs:
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- name: Get latest CMake and ninja
- uses: lukka/get-cmake@6b3e96a9bc9976b8b546346fdd102effedae0ca8 # v4.02
+ uses: lukka/get-cmake@28983e0d3955dba2bb0a6810caae0c6cf268ec0c # v4.0.0
- name: Run CMake
run: cmake -S . -B build -DJSON_CI=On
- name: Build
@@ -46,7 +46,7 @@ jobs:
target: [ci_test_amalgamation, ci_test_single_header, ci_cppcheck, ci_cpplint, ci_reproducible_tests, ci_non_git_tests, ci_offline_testdata, ci_reuse_compliance, ci_test_valgrind]
steps:
- name: Harden Runner
- uses: step-security/harden-runner@002fdce3c6a235733a90a27c80493a3241e56863 # v2.12.1
+ uses: step-security/harden-runner@c6295a65d1254861815972266d5933fd6e532bdf # v2.11.1
with:
egress-policy: audit
@@ -54,7 +54,7 @@ jobs:
run: sudo apt-get update ; sudo apt-get install -y valgrind
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- name: Get latest CMake and ninja
- uses: lukka/get-cmake@6b3e96a9bc9976b8b546346fdd102effedae0ca8 # v4.02
+ uses: lukka/get-cmake@28983e0d3955dba2bb0a6810caae0c6cf268ec0c # v4.0.0
- name: Run CMake
run: cmake -S . -B build -DJSON_CI=On
- name: Build
@@ -71,7 +71,7 @@ jobs:
run: apt-get update ; apt-get install -y git clang-tools iwyu unzip
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- name: Get latest CMake and ninja
- uses: lukka/get-cmake@6b3e96a9bc9976b8b546346fdd102effedae0ca8 # v4.02
+ uses: lukka/get-cmake@28983e0d3955dba2bb0a6810caae0c6cf268ec0c # v4.0.0
- name: Run CMake
run: cmake -S . -B build -DJSON_CI=On
- name: Build
@@ -88,7 +88,7 @@ jobs:
run: apt-get update ; apt-get install -y build-essential unzip wget git libssl-dev
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- name: Get latest CMake and ninja
- uses: lukka/get-cmake@6b3e96a9bc9976b8b546346fdd102effedae0ca8 # v4.02
+ uses: lukka/get-cmake@28983e0d3955dba2bb0a6810caae0c6cf268ec0c # v4.0.0
- name: Run CMake
run: cmake -S . -B build -DJSON_CI=On
- name: Build
@@ -98,7 +98,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Harden Runner
- uses: step-security/harden-runner@002fdce3c6a235733a90a27c80493a3241e56863 # v2.12.1
+ uses: step-security/harden-runner@c6295a65d1254861815972266d5933fd6e532bdf # v2.11.1
with:
egress-policy: audit
@@ -143,12 +143,12 @@ jobs:
strategy:
matrix:
# older GCC docker images (4, 5, 6) fail to check out code
- compiler: ['7', '8', '9', '10', '11', '12', '13', '14', '15', 'latest']
+ compiler: ['7', '8', '9', '10', '11', '12', '13', '14', 'latest']
container: gcc:${{ matrix.compiler }}
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- name: Get latest CMake and ninja
- uses: lukka/get-cmake@6b3e96a9bc9976b8b546346fdd102effedae0ca8 # v4.02
+ uses: lukka/get-cmake@28983e0d3955dba2bb0a6810caae0c6cf268ec0c # v4.0.0
- name: Run CMake
run: cmake -S . -B build -DJSON_CI=On
- name: Build
@@ -165,7 +165,7 @@ jobs:
run: apt-get update ; apt-get install -y unzip git
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- name: Get latest CMake and ninja
- uses: lukka/get-cmake@6b3e96a9bc9976b8b546346fdd102effedae0ca8 # v4.02
+ uses: lukka/get-cmake@28983e0d3955dba2bb0a6810caae0c6cf268ec0c # v4.0.0
- name: Set env FORCE_STDCPPFS_FLAG for clang 7 / 8 / 9 / 10
run: echo "JSON_FORCED_GLOBAL_COMPILE_OPTIONS=-DJSON_HAS_FILESYSTEM=0;-DJSON_HAS_EXPERIMENTAL_FILESYSTEM=0" >> "$GITHUB_ENV"
if: ${{ matrix.compiler == '7' || matrix.compiler == '8' || matrix.compiler == '9' || matrix.compiler == '10' }}
@@ -183,7 +183,7 @@ jobs:
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- name: Get latest CMake and ninja
- uses: lukka/get-cmake@6b3e96a9bc9976b8b546346fdd102effedae0ca8 # v4.02
+ uses: lukka/get-cmake@28983e0d3955dba2bb0a6810caae0c6cf268ec0c # v4.0.0
- name: Run CMake
run: cmake -S . -B build -DJSON_CI=On
- name: Build
@@ -201,7 +201,7 @@ jobs:
run: apt-get update ; apt-get install -y git unzip
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- name: Get latest CMake and ninja
- uses: lukka/get-cmake@6b3e96a9bc9976b8b546346fdd102effedae0ca8 # v4.02
+ uses: lukka/get-cmake@28983e0d3955dba2bb0a6810caae0c6cf268ec0c # v4.0.0
- name: Run CMake
run: cmake -S . -B build -DJSON_CI=On
- name: Build with libc++
@@ -221,21 +221,6 @@ jobs:
- name: Build
run: cmake --build build --target ci_cuda_example
- ci_module_cpp20:
- strategy:
- matrix:
- container: ['gcc:latest', 'silkeh/clang:latest']
- runs-on: ubuntu-latest
- container: ${{ matrix.container }}
- steps:
- - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- - name: Get latest CMake and ninja
- uses: lukka/get-cmake@6b3e96a9bc9976b8b546346fdd102effedae0ca8 # v4.02
- - name: Run CMake
- run: cmake -S . -B build -DJSON_CI=On
- - name: Build
- run: cmake --build build --target ci_module_cpp20
-
ci_icpc:
runs-on: ubuntu-latest
container: ghcr.io/nlohmann/json-ci:v2.2.0
@@ -248,24 +233,6 @@ jobs:
. /opt/intel/oneapi/setvars.sh
cmake --build build --target ci_icpc
- ci_emscripten:
- runs-on: ubuntu-latest
- steps:
- - name: Harden Runner
- uses: step-security/harden-runner@002fdce3c6a235733a90a27c80493a3241e56863 # v2.12.1
- with:
- egress-policy: audit
-
- - name: Install emscripten
- uses: mymindstorm/setup-emsdk@v14
- - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- - name: Get latest CMake and ninja
- uses: lukka/get-cmake@6b3e96a9bc9976b8b546346fdd102effedae0ca8 # v4.02
- - name: Run CMake
- run: cmake -S . -B build -DCMAKE_TOOLCHAIN_FILE=$EMSDK/upstream/emscripten/cmake/Modules/Platform/Emscripten.cmake -GNinja
- - name: Build
- run: cmake --build build
-
ci_test_documentation:
runs-on: ubuntu-latest
strategy:
@@ -273,7 +240,7 @@ jobs:
target: [ci_test_examples, ci_test_build_documentation]
steps:
- name: Harden Runner
- uses: step-security/harden-runner@002fdce3c6a235733a90a27c80493a3241e56863 # v2.12.1
+ uses: step-security/harden-runner@c6295a65d1254861815972266d5933fd6e532bdf # v2.11.1
with:
egress-policy: audit
diff --git a/nlohmann_json/.github/workflows/windows.yml b/nlohmann_json/.github/workflows/windows.yml
index 124b089d..4e21d995 100644
--- a/nlohmann_json/.github/workflows/windows.yml
+++ b/nlohmann_json/.github/workflows/windows.yml
@@ -37,48 +37,69 @@ jobs:
- name: Test
run: cd build ; ctest -j 10 -C Debug --output-on-failure
- msvc:
+ msvc2019:
+ runs-on: windows-2019
strategy:
matrix:
- runs_on: [windows-2019, windows-2022]
build_type: [Debug, Release]
architecture: [Win32, x64]
- std_version: [default, latest]
- runs-on: ${{ matrix.runs_on }}
+ steps:
+ - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ - name: Run CMake
+ run: cmake -S . -B build -G "Visual Studio 16 2019" -A ${{ matrix.architecture }} -DJSON_BuildTests=On -DCMAKE_CXX_FLAGS="/W4 /WX"
+ if: matrix.build_type == 'Release'
+ - name: Run CMake
+ run: cmake -S . -B build -G "Visual Studio 16 2019" -A ${{ matrix.architecture }} -DJSON_BuildTests=On -DJSON_FastTests=ON -DCMAKE_CXX_FLAGS="/W4 /WX"
+ if: matrix.build_type == 'Debug'
+ - name: Build
+ run: cmake --build build --config ${{ matrix.build_type }} --parallel 10
+ - name: Test
+ run: cd build ; ctest -j 10 -C ${{ matrix.build_type }} --output-on-failure
+
+ msvc2019_latest:
+ runs-on: windows-2019
steps:
- - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- - name: Set generator
- id: generator
- run: |
- if [ "${{ matrix.runs_on }}" = "windows-2019" ]; then
- echo "generator=Visual Studio 16 2019" >> $GITHUB_ENV
- else
- echo "generator=Visual Studio 17 2022" >> $GITHUB_ENV
- fi
- shell: bash
- - name: Set extra CXX_FLAGS for latest std_version
- id: cxxflags
- run: |
- if [ "${{ matrix.std_version }}" = "latest" ]; then
- echo "flags=/permissive- /std:c++latest /utf-8 /W4 /WX" >> $GITHUB_ENV
- else
- echo "flags=/W4 /WX" >> $GITHUB_ENV
- fi
- shell: bash
- - name: Run CMake (Release)
- run: cmake -S . -B build -G "$env:generator" -A ${{ matrix.architecture }} -DJSON_BuildTests=On -DCMAKE_CXX_FLAGS="$env:flags"
- if: matrix.build_type == 'Release'
- shell: pwsh
- - name: Run CMake (Debug)
- run: cmake -S . -B build -G "$env:generator" -A ${{ matrix.architecture }} -DJSON_BuildTests=On -DJSON_FastTests=ON -DCMAKE_CXX_FLAGS="$env:flags"
- if: matrix.build_type == 'Debug'
- shell: pwsh
- - name: Build
- run: cmake --build build --config ${{ matrix.build_type }} --parallel 10
- - name: Test
- run: cd build ; ctest -j 10 -C ${{ matrix.build_type }} --output-on-failure
+ - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ - name: Run CMake
+ run: cmake -S . -B build -G "Visual Studio 16 2019" -DJSON_BuildTests=On -DCMAKE_CXX_FLAGS="/permissive- /std:c++latest /utf-8 /W4 /WX"
+ - name: Build
+ run: cmake --build build --config Release --parallel 10
+ - name: Test
+ run: cd build ; ctest -j 10 -C Release --output-on-failure
+
+ msvc2022:
+ runs-on: windows-2022
+ strategy:
+ matrix:
+ build_type: [Debug, Release]
+ architecture: [Win32, x64]
+
+ steps:
+ - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ - name: Run CMake
+ run: cmake -S . -B build -G "Visual Studio 17 2022" -A ${{ matrix.architecture }} -DJSON_BuildTests=On -DCMAKE_CXX_FLAGS="/W4 /WX"
+ if: matrix.build_type == 'Release'
+ - name: Run CMake
+ run: cmake -S . -B build -G "Visual Studio 17 2022" -A ${{ matrix.architecture }} -DJSON_BuildTests=On -DJSON_FastTests=ON -DCMAKE_CXX_FLAGS="/W4 /WX"
+ if: matrix.build_type == 'Debug'
+ - name: Build
+ run: cmake --build build --config ${{ matrix.build_type }} --parallel 10
+ - name: Test
+ run: cd build ; ctest -j 10 -C ${{ matrix.build_type }} --output-on-failure
+
+ msvc2022_latest:
+ runs-on: windows-2022
+
+ steps:
+ - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ - name: Run CMake
+ run: cmake -S . -B build -G "Visual Studio 17 2022" -DJSON_BuildTests=On -DCMAKE_CXX_FLAGS="/permissive- /std:c++latest /utf-8 /W4 /WX"
+ - name: Build
+ run: cmake --build build --config Release --parallel 10
+ - name: Test
+ run: cd build ; ctest -j 10 -C Release --output-on-failure
clang:
runs-on: windows-2019
@@ -97,7 +118,7 @@ jobs:
- name: Test
run: cd build ; ctest -j 10 -C Debug --exclude-regex "test-unicode" --output-on-failure
- clang-cl-12:
+ clang-cl-11:
runs-on: windows-2019
strategy:
matrix:
diff --git a/nlohmann_json/BUILD.bazel b/nlohmann_json/BUILD.bazel
index 49866c2c..de0ff714 100644
--- a/nlohmann_json/BUILD.bazel
+++ b/nlohmann_json/BUILD.bazel
@@ -69,3 +69,12 @@ cc_library(
visibility = ["//visibility:public"],
alwayslink = True,
)
+
+cc_library(
+ name = "singleheader-json",
+ hdrs = [
+ "single_include/nlohmann/json.hpp",
+ ],
+ includes = ["single_include"],
+ visibility = ["//visibility:public"],
+)
diff --git a/nlohmann_json/FILES.md b/nlohmann_json/FILES.md
index 91326ab6..a7a35f7f 100644
--- a/nlohmann_json/FILES.md
+++ b/nlohmann_json/FILES.md
@@ -92,7 +92,7 @@ Further documentation:
### `.github/dependabot.yml`
-The configuration of [dependabot](https://github.com/dependabot) which ensures the dependencies (GitHub actions and Python packages used in the CI) remain up to date.
+The configuration of [dependabot](https://github.com/dependabot) which ensures the dependencies (GitHub actions and Python packages used in the CI) remain up-to-date.
Further documentation:
@@ -185,7 +185,7 @@ Further documentation:
### `.reuse/dep5`
-The file defines the licenses of certain third-party components in the repository. The root `Makefile` contains a target `reuse` that checks for compliance.
+The file defines the licenses of certain third-party component in the repository. The root `Makefile` contains a target `reuse` that checks for compliance.
Further documentation:
@@ -212,7 +212,7 @@ Further information:
### `LICENSES`
-A folder that contains every license of all license files (library and third-party code).
+A folder that contains every license of all licenses files (library and third-party code).
Further documentation:
diff --git a/nlohmann_json/README.md b/nlohmann_json/README.md
index 8a48d07c..f97afeb4 100644
--- a/nlohmann_json/README.md
+++ b/nlohmann_json/README.md
@@ -19,7 +19,6 @@
[](https://isitmaintained.com/project/nlohmann/json "Average time to resolve an issue")
[](https://bestpractices.coreinfrastructure.org/projects/289)
[](https://scorecard.dev/viewer/?uri=github.com/nlohmann/json)
-[](https://cloudback.it)
[](https://github.com/sponsors/nlohmann)
[](https://api.reuse.software/info/github.com/nlohmann/json)
[](https://discord.gg/6mrGXKvX7y)
@@ -31,7 +30,7 @@
- [Examples](#examples)
- [Read JSON from a file](#read-json-from-a-file)
- [Creating `json` objects from JSON literals](#creating-json-objects-from-json-literals)
- - [JSON as a first-class data type](#json-as-a-first-class-data-type)
+ - [JSON as first-class data type](#json-as-first-class-data-type)
- [Serialization / Deserialization](#serialization--deserialization)
- [STL-like access](#stl-like-access)
- [Conversion from STL containers](#conversion-from-stl-containers)
@@ -58,7 +57,7 @@
There are myriads of [JSON](https://json.org) libraries out there, and each may even have its reason to exist. Our class had these design goals:
-- **Intuitive syntax**. In languages such as Python, JSON feels like a first-class data type. We used all the operator magic of modern C++ to achieve the same feeling in your code. Check out the [examples below](#examples) and you'll know what I mean.
+- **Intuitive syntax**. In languages such as Python, JSON feels like a first class data type. We used all the operator magic of modern C++ to achieve the same feeling in your code. Check out the [examples below](#examples) and you'll know what I mean.
- **Trivial integration**. Our whole code consists of a single header file [`json.hpp`](https://github.com/nlohmann/json/blob/develop/single_include/nlohmann/json.hpp). That's it. No library, no subproject, no dependencies, no complex build system. The class is written in vanilla C++11. All in all, everything should require no adjustment of your compiler flags or project settings. The library is also included in all popular [package managers](https://json.nlohmann.me/integration/package_managers/).
@@ -108,7 +107,7 @@ Thanks everyone!
:bug: If you found a **bug**, please check the [**FAQ**](https://json.nlohmann.me/home/faq/) if it is a known issue or the result of a design decision. Please also have a look at the [**issue list**](https://github.com/nlohmann/json/issues) before you [**create a new issue**](https://github.com/nlohmann/json/issues/new/choose). Please provide as much information as possible to help us understand and reproduce your issue.
-There is also a [**docset**](https://github.com/Kapeli/Dash-User-Contributions/tree/master/docsets/JSON_for_Modern_C%2B%2B) for the documentation browsers [Dash](https://kapeli.com/dash), [Velocity](https://velocity.silverlakesoftware.com), and [Zeal](https://zealdocs.org) that contains the full [documentation](https://json.nlohmann.me) as an offline resource.
+There is also a [**docset**](https://github.com/Kapeli/Dash-User-Contributions/tree/master/docsets/JSON_for_Modern_C%2B%2B) for the documentation browsers [Dash](https://kapeli.com/dash), [Velocity](https://velocity.silverlakesoftware.com), and [Zeal](https://zealdocs.org) that contains the full [documentation](https://json.nlohmann.me) as offline resource.
## Quick reference
@@ -137,7 +136,7 @@ There is also a [**docset**](https://github.com/Kapeli/Dash-User-Contributions/t
Here are some examples to give you an idea how to use the class.
-Besides the examples below, you may want to:
+Beside the examples below, you may want to:
→ Check the [documentation](https://json.nlohmann.me/)\
→ Browse the [standalone example files](https://github.com/nlohmann/json/tree/develop/docs/mkdocs/docs/examples)\
@@ -196,7 +195,7 @@ json ex3 = {
};
```
-### JSON as a first-class data type
+### JSON as first-class data type
Here are some examples to give you an idea how to use the class.
@@ -225,13 +224,13 @@ With this library, you could write:
// create an empty structure (null)
json j;
-// add a number stored as double (note the implicit conversion of j to an object)
+// add a number that is stored as double (note the implicit conversion of j to an object)
j["pi"] = 3.141;
-// add a Boolean stored as bool
+// add a Boolean that is stored as bool
j["happy"] = true;
-// add a string stored as std::string
+// add a string that is stored as std::string
j["name"] = "Niels";
// add another null object by passing nullptr
@@ -240,7 +239,7 @@ j["nothing"] = nullptr;
// add an object inside the object
j["answer"]["everything"] = 42;
-// add an array stored as std::vector (using an initializer list)
+// add an array that is stored as std::vector (using an initializer list)
j["list"] = { 1, 0, 2 };
// add another object (using an initializer list of pairs)
@@ -350,7 +349,7 @@ std::cout << j_string << " == " << serialized_string << std::endl;
Note the library only supports UTF-8. When you store strings with different encodings in the library, calling [`dump()`](https://json.nlohmann.me/api/basic_json/dump/) may throw an exception unless `json::error_handler_t::replace` or `json::error_handler_t::ignore` are used as error handlers.
-#### To/from streams (e.g., files, string streams)
+#### To/from streams (e.g. files, string streams)
You can also use streams to serialize and deserialize:
@@ -383,7 +382,7 @@ Please note that setting the exception bit for `failbit` is inappropriate for th
#### Read from iterator range
-You can also parse JSON from an iterator range; that is, from any container accessible by iterators whose `value_type` is an integral type of 1, 2, or 4 bytes, which will be interpreted as UTF-8, UTF-16, and UTF-32 respectively. For instance, a `std::vector`, or a `std::list`:
+You can also parse JSON from an iterator range; that is, from any container accessible by iterators whose `value_type` is an integral type of 1, 2 or 4 bytes, which will be interpreted as UTF-8, UTF-16 and UTF-32 respectively. For instance, a `std::vector`, or a `std::list`:
```cpp
std::vector v = {'t', 'r', 'u', 'e'};
@@ -487,7 +486,7 @@ To implement your own SAX handler, proceed as follows:
2. Create an object of your SAX interface class, e.g. `my_sax`.
3. Call `bool json::sax_parse(input, &my_sax)`; where the first parameter can be any input like a string or an input stream and the second parameter is a pointer to your SAX interface.
-Note the `sax_parse` function only returns a `bool` indicating the result of the last executed SAX event. It does not return a `json` value - it is up to you to decide what to do with the SAX events. Furthermore, no exceptions are thrown in case of a parse error -- it is up to you what to do with the exception object passed to your `parse_error` implementation. Internally, the SAX interface is used for the DOM parser (class `json_sax_dom_parser`) as well as the acceptor (`json_sax_acceptor`), see file [`json_sax.hpp`](https://github.com/nlohmann/json/blob/develop/include/nlohmann/detail/input/json_sax.hpp).
+Note the `sax_parse` function only returns a `bool` indicating the result of the last executed SAX event. It does not return a `json` value - it is up to you to decide what to do with the SAX events. Furthermore, no exceptions are thrown in case of a parse error - it is up to you what to do with the exception object passed to your `parse_error` implementation. Internally, the SAX interface is used for the DOM parser (class `json_sax_dom_parser`) as well as the acceptor (`json_sax_acceptor`), see file [`json_sax.hpp`](https://github.com/nlohmann/json/blob/develop/include/nlohmann/detail/input/json_sax.hpp).
### STL-like access
@@ -619,7 +618,7 @@ json j_umset(c_umset); // both entries for "one" are used
// maybe ["one", "two", "one", "four"]
```
-Likewise, any associative key-value containers (`std::map`, `std::multimap`, `std::unordered_map`, `std::unordered_multimap`) whose keys can construct an `std::string` and whose values can be used to construct JSON values (see examples above) can be used to create a JSON object. Note that in case of multimaps, only one key is used in the JSON object and the value depends on the internal order of the STL container.
+Likewise, any associative key-value containers (`std::map`, `std::multimap`, `std::unordered_map`, `std::unordered_multimap`) whose keys can construct an `std::string` and whose values can be used to construct JSON values (see examples above) can be used to create a JSON object. Note that in case of multimaps only one key is used in the JSON object and the value depends on the internal order of the STL container.
```cpp
std::map c_map { {"one", 1}, {"two", 2}, {"three", 3} };
@@ -641,7 +640,7 @@ json j_ummap(c_ummap); // only one entry for key "three" is used
### JSON Pointer and JSON Patch
-The library supports **JSON Pointer** ([RFC 6901](https://tools.ietf.org/html/rfc6901)) as an alternative means to address structured values. On top of this, **JSON Patch** ([RFC 6902](https://tools.ietf.org/html/rfc6902)) allows describing differences between two JSON values -- effectively allowing patch and diff operations known from Unix.
+The library supports **JSON Pointer** ([RFC 6901](https://tools.ietf.org/html/rfc6901)) as alternative means to address structured values. On top of this, **JSON Patch** ([RFC 6902](https://tools.ietf.org/html/rfc6902)) allows describing differences between two JSON values - effectively allowing patch and diff operations known from Unix.
```cpp
// a JSON value
@@ -874,7 +873,7 @@ namespace ns {
This requires a bit more advanced technique. But first, let's see how this conversion mechanism works:
-The library uses **JSON Serializers** to convert types to JSON.
+The library uses **JSON Serializers** to convert types to json.
The default serializer for `nlohmann::json` is `nlohmann::adl_serializer` (ADL means [Argument-Dependent Lookup](https://en.cppreference.com/w/cpp/language/adl)).
It is implemented like this (simplified):
@@ -924,7 +923,7 @@ namespace nlohmann {
#### How can I use `get()` for non-default constructible/non-copyable types?
-There is a way if your type is [MoveConstructible](https://en.cppreference.com/w/cpp/named_req/MoveConstructible). You will need to specialize the `adl_serializer` as well, but with a special `from_json` overload:
+There is a way, if your type is [MoveConstructible](https://en.cppreference.com/w/cpp/named_req/MoveConstructible). You will need to specialize the `adl_serializer` as well, but with a special `from_json` overload:
```cpp
struct move_only_type {
@@ -1013,7 +1012,7 @@ struct bad_serializer
### Specializing enum conversion
-By default, enum values are serialized to JSON as integers. In some cases, this could result in undesired behavior. If an enum is modified or re-ordered after data has been serialized to JSON, the later deserialized JSON data may be undefined or a different enum value than was originally intended.
+By default, enum values are serialized to JSON as integers. In some cases this could result in undesired behavior. If an enum is modified or re-ordered after data has been serialized to JSON, the later de-serialized JSON data may be undefined or a different enum value than was originally intended.
It is possible to more precisely specify how a given enum is mapped to and from JSON as shown below:
@@ -1169,7 +1168,7 @@ Please note:
The code compiles successfully with [Android NDK](https://developer.android.com/ndk/index.html?hl=ml), Revision 9 - 11 (and possibly later) and [CrystaX's Android NDK](https://www.crystax.net/en/android/ndk) version 10.
-- For GCC running on MinGW or Android SDK, the error `'to_string' is not a member of 'std'` (or similarly, for `strtod` or `strtof`) may occur. Note this is not an issue with the code, but rather with the compiler itself. On Android, see above to build with a newer environment. For MinGW, please refer to [this site](https://tehsausage.com/mingw-to-string) and [this discussion](https://github.com/nlohmann/json/issues/136) for information on how to fix this bug. For Android NDK using `APP_STL := gnustl_static`, please refer to [this discussion](https://github.com/nlohmann/json/issues/219).
+- For GCC running on MinGW or Android SDK, the error `'to_string' is not a member of 'std'` (or similarly, for `strtod` or `strtof`) may occur. Note this is not an issue with the code, but rather with the compiler itself. On Android, see above to build with a newer environment. For MinGW, please refer to [this site](https://tehsausage.com/mingw-to-string) and [this discussion](https://github.com/nlohmann/json/issues/136) for information on how to fix this bug. For Android NDK using `APP_STL := gnustl_static`, please refer to [this discussion](https://github.com/nlohmann/json/issues/219).
- Unsupported versions of GCC and Clang are rejected by `#error` directives. This can be switched off by defining `JSON_SKIP_UNSUPPORTED_COMPILER_CHECK`. Note that you can expect no support in this case.
@@ -1188,7 +1187,7 @@ using json = nlohmann::json;
to the files you want to process JSON and set the necessary switches to enable C++11 (e.g., `-std=c++11` for GCC and Clang).
-You can further use file [`include/nlohmann/json_fwd.hpp`](https://github.com/nlohmann/json/blob/develop/include/nlohmann/json_fwd.hpp) for forward-declarations. The installation of `json_fwd.hpp` (as part of cmake's install step) can be achieved by setting `-DJSON_MultipleHeaders=ON`.
+You can further use file [`include/nlohmann/json_fwd.hpp`](https://github.com/nlohmann/json/blob/develop/include/nlohmann/json_fwd.hpp) for forward-declarations. The installation of json_fwd.hpp (as part of cmake's install step), can be achieved by setting `-DJSON_MultipleHeaders=ON`.
### CMake
@@ -1250,7 +1249,7 @@ FetchContent_MakeAvailable(json)
target_link_libraries(foo PRIVATE nlohmann_json::nlohmann_json)
```
-**Note**: It is recommended to use the URL approach described above, which is supported as of version 3.10.0. See
+**Note**: It is recommended to use the URL approach described above which is supported as of version 3.10.0. See
for more information.
#### Supporting Both
@@ -1372,13 +1371,13 @@ I deeply appreciate the help of the following people.
9. [Florian Weber](https://github.com/Florianjw) fixed a bug in and improved the performance of the comparison operators.
10. [Eric Cornelius](https://github.com/EricMCornelius) pointed out a bug in the handling with NaN and infinity values. He also improved the performance of the string escaping.
11. [易思龙](https://github.com/likebeta) implemented a conversion from anonymous enums.
-12. [kepkin](https://github.com/kepkin) patiently pushed forward the support for Microsoft Visual Studio.
+12. [kepkin](https://github.com/kepkin) patiently pushed forward the support for Microsoft Visual studio.
13. [gregmarr](https://github.com/gregmarr) simplified the implementation of reverse iterators and helped with numerous hints and improvements. In particular, he pushed forward the implementation of user-defined types.
14. [Caio Luppi](https://github.com/caiovlp) fixed a bug in the Unicode handling.
15. [dariomt](https://github.com/dariomt) fixed some typos in the examples.
16. [Daniel Frey](https://github.com/d-frey) cleaned up some pointers and implemented exception-safe memory allocation.
17. [Colin Hirsch](https://github.com/ColinH) took care of a small namespace issue.
-18. [Huu Nguyen](https://github.com/whoshuu) corrected a variable name in the documentation.
+18. [Huu Nguyen](https://github.com/whoshuu) correct a variable name in the documentation.
19. [Silverweed](https://github.com/silverweed) overloaded `parse()` to accept an rvalue reference.
20. [dariomt](https://github.com/dariomt) fixed a subtlety in MSVC type support and implemented the `get_ref()` function to get a reference to stored values.
21. [ZahlGraf](https://github.com/ZahlGraf) added a workaround that allows compilation using Android NDK.
@@ -1413,7 +1412,7 @@ I deeply appreciate the help of the following people.
50. [Jared Grubb](https://github.com/jaredgrubb) silenced a nasty documentation warning.
51. [Yixin Zhang](https://github.com/qwename) fixed an integer overflow check.
52. [Bosswestfalen](https://github.com/Bosswestfalen) merged two iterator classes into a smaller one.
-53. [Daniel599](https://github.com/Daniel599) helped to get Travis to execute the tests with Clang's sanitizers.
+53. [Daniel599](https://github.com/Daniel599) helped to get Travis execute the tests with Clang's sanitizers.
54. [Jonathan Lee](https://github.com/vjon) fixed an example in the README file.
55. [gnzlbg](https://github.com/gnzlbg) supported the implementation of user-defined types.
56. [Alexej Harm](https://github.com/qis) helped to get the user-defined types working with Visual Studio.
@@ -1434,7 +1433,7 @@ I deeply appreciate the help of the following people.
71. [Vincent Thiery](https://github.com/vthiery) maintains a package for the Conan package manager.
72. [Steffen](https://github.com/koemeet) fixed a potential issue with MSVC and `std::min`.
73. [Mike Tzou](https://github.com/Chocobo1) fixed some typos.
-74. [amrcode](https://github.com/amrcode) noted misleading documentation about comparison of floats.
+74. [amrcode](https://github.com/amrcode) noted a misleading documentation about comparison of floats.
75. [Oleg Endo](https://github.com/olegendo) reduced the memory consumption by replacing `` with ``.
76. [dan-42](https://github.com/dan-42) cleaned up the CMake files to simplify including/reusing of the library.
77. [Nikita Ofitserov](https://github.com/himikof) allowed for moving values from initializer lists.
@@ -1461,13 +1460,13 @@ I deeply appreciate the help of the following people.
98. [Vadim Evard](https://github.com/Pipeliner) fixed a Markdown issue in the README.
99. [zerodefect](https://github.com/zerodefect) fixed a compiler warning.
100. [Kert](https://github.com/kaidokert) allowed to template the string type in the serialization and added the possibility to override the exceptional behavior.
-101. [mark-99](https://github.com/mark-99) helped fix an ICC error.
+101. [mark-99](https://github.com/mark-99) helped fixing an ICC error.
102. [Patrik Huber](https://github.com/patrikhuber) fixed links in the README file.
103. [johnfb](https://github.com/johnfb) found a bug in the implementation of CBOR's indefinite length strings.
104. [Paul Fultz II](https://github.com/pfultz2) added a note on the cget package manager.
105. [Wilson Lin](https://github.com/wla80) made the integration section of the README more concise.
106. [RalfBielig](https://github.com/ralfbielig) detected and fixed a memory leak in the parser callback.
-107. [agrianius](https://github.com/agrianius) allowed dumping JSON to an alternative string type.
+107. [agrianius](https://github.com/agrianius) allowed to dump JSON to an alternative string type.
108. [Kevin Tonon](https://github.com/ktonon) overworked the C++11 compiler checks in CMake.
109. [Axel Huebl](https://github.com/ax3l) simplified a CMake check and added support for the [Spack package manager](https://spack.io).
110. [Carlos O'Ryan](https://github.com/coryan) fixed a typo.
@@ -1516,12 +1515,12 @@ I deeply appreciate the help of the following people.
153. [Ivor Wanders](https://github.com/iwanders) helped to reduce the CMake requirement to version 3.1.
154. [njlr](https://github.com/njlr) updated the Buckaroo instructions.
155. [Lion](https://github.com/lieff) fixed a compilation issue with GCC 7 on CentOS.
-156. [Isaac Nickaein](https://github.com/nickaein) improved the integer serialization performance and implemented the `contains()` function.
+156. [Isaac Nickaein](https://github.com/nickaein) improved the integer serialization performance and implemented the `contains()` function.
157. [past-due](https://github.com/past-due) suppressed an unfixable warning.
158. [Elvis Oric](https://github.com/elvisoric) improved Meson support.
159. [Matěj Plch](https://github.com/Afforix) fixed an example in the README.
160. [Mark Beckwith](https://github.com/wythe) fixed a typo.
-161. [scinart](https://github.com/scinart) fixed a bug in the serializer.
+161. [scinart](https://github.com/scinart) fixed bug in the serializer.
162. [Patrick Boettcher](https://github.com/pboettch) implemented `push_back()` and `pop_back()` for JSON Pointers.
163. [Bruno Oliveira](https://github.com/nicoddemus) added support for Conda.
164. [Michele Caini](https://github.com/skypjack) fixed links in the README.
@@ -1563,7 +1562,7 @@ I deeply appreciate the help of the following people.
200. [Alexander “weej” Jones](https://github.com/alex-weej) fixed an example in the README.
201. [Antoine Cœur](https://github.com/Coeur) fixed some typos in the documentation.
202. [jothepro](https://github.com/jothepro) updated links to the Hunter package.
-203. [Dave Lee](https://github.com/kastiglione) fixed a link in the README.
+203. [Dave Lee](https://github.com/kastiglione) fixed link in the README.
204. [Joël Lamotte](https://github.com/Klaim) added instruction for using Build2's package manager.
205. [Paul Jurczak](https://github.com/pauljurczak) fixed an example in the README.
206. [Sonu Lohani](https://github.com/sonulohani) fixed a warning.
@@ -1606,7 +1605,7 @@ I deeply appreciate the help of the following people.
243. [raduteo](https://github.com/raduteo) fixed a warning.
244. [David Pfahler](https://github.com/theShmoo) added the possibility to compile the library without I/O support.
245. [Morten Fyhn Amundsen](https://github.com/mortenfyhn) fixed a typo.
-246. [jpl-mac](https://github.com/jpl-mac) allowed treating the library as a system header in CMake.
+246. [jpl-mac](https://github.com/jpl-mac) allowed to treat the library as a system header in CMake.
247. [Jason Dsouza](https://github.com/jasmcaus) fixed the indentation of the CMake file.
248. [offa](https://github.com/offa) added a link to Conan Center to the documentation.
249. [TotalCaesar659](https://github.com/TotalCaesar659) updated the links in the documentation to use HTTPS.
@@ -1648,7 +1647,7 @@ I deeply appreciate the help of the following people.
285. [Wolf Vollprecht](https://github.com/wolfv) added the `patch_inplace` function.
286. [Jake Zimmerman](https://github.com/jez) highlighted common usage patterns in the README file.
287. [NN](https://github.com/NN---) added the Visual Studio output directory to `.gitignore`.
-288. [Romain Reignier](https://github.com/romainreignier) improved the performance of the vector output adapter.
+288. [Romain Reignier](https://github.com/romainreignier) improved the performance the vector output adapter.
289. [Mike](https://github.com/Mike-Leo-Smith) fixed the `std::iterator_traits`.
290. [Richard Hozák](https://github.com/zxey) added macro `JSON_NO_ENUM` to disable default enum conversions.
291. [vakokako](https://github.com/vakokako) fixed tests when compiling with C++20.
@@ -1695,9 +1694,9 @@ I deeply appreciate the help of the following people.
332. [taro](https://github.com/tarolling) fixed a typo in the `CODEOWNERS` file.
333. [Ikko Eltociear Ashimine](https://github.com/eltociear) fixed a typo.
334. [Felix Yan](https://github.com/felixonmars) fixed a typo in the README.
-335. [HO-COOH](https://github.com/HO-COOH) fixed a parenthesis in the documentation.
+335. [HO-COOH](https://github.com/HO-COOH) fixed a parentheses in the documentation.
336. [Ivor Wanders](https://github.com/iwanders) fixed the examples to catch exception by `const&`.
-337. [miny1233](https://github.com/miny1233) fixed a parenthesis in the documentation.
+337. [miny1233](https://github.com/miny1233) fixed a parentheses in the documentation.
338. [tomalakgeretkal](https://github.com/tomalakgeretkal) fixed a compilation error.
339. [alferov](https://github.com/ALF-ONE) fixed a compilation error.
340. [Craig Scott](https://github.com/craigscott-crascit) fixed a deprecation warning in CMake.
@@ -1780,7 +1779,7 @@ The library itself consists of a single header file licensed under the MIT licen
The library supports **Unicode input** as follows:
-- Only **UTF-8** encoded input is supported, which is the default encoding for JSON according to [RFC 8259](https://tools.ietf.org/html/rfc8259.html#section-8.1).
+- Only **UTF-8** encoded input is supported which is the default encoding for JSON according to [RFC 8259](https://tools.ietf.org/html/rfc8259.html#section-8.1).
- `std::u16string` and `std::u32string` can be parsed, assuming UTF-16 and UTF-32 encoding, respectively. These encodings are not supported when reading from files or other input containers.
- Other encodings such as Latin-1 or ISO 8859-1 are **not** supported and will yield parse or serialization errors.
- [Unicode noncharacters](https://www.unicode.org/faq/private_use.html#nonchar1) will not be replaced by the library.
@@ -1802,17 +1801,7 @@ This library does not support comments by default. It does so for three reasons:
3. It is dangerous for interoperability if some libraries would add comment support while others don't. Please check [The Harmful Consequences of the Robustness Principle](https://tools.ietf.org/html/draft-iab-protocol-maintenance-01) on this.
-However, you can set set parameter `ignore_comments` to true in the `parse` function to ignore `//` or `/* */` comments. Comments will then be treated as whitespace.
-
-### Trailing commas
-
-The JSON specification does not allow trailing commas in arrays and objects, and hence this library is treating them as parsing errors by default.
-
-Like comments, you can set parameter `ignore_trailing_commas` to true in the `parse` function to ignore trailing commas in arrays and objects. Note that a single comma as the only content of the array or object (`[,]` or `{,}`) is not allowed, and multiple trailing commas (`[1,,]`) are not allowed either.
-
-This library does not add trailing commas when serializing JSON data.
-
-For more information, see [JSON With Commas and Comments (JWCC)](https://nigeltao.github.io/blog/2021/json-with-commas-comments.html).
+However, you can pass set parameter `ignore_comments` to true in the `parse` function to ignore `//` or `/* */` comments. Comments will then be treated as whitespace.
### Order of object keys
diff --git a/nlohmann_json/cmake/ci.cmake b/nlohmann_json/cmake/ci.cmake
index 316d6efe..1247e918 100644
--- a/nlohmann_json/cmake/ci.cmake
+++ b/nlohmann_json/cmake/ci.cmake
@@ -659,17 +659,6 @@ add_custom_target(ci_cuda_example
COMMAND ${CMAKE_COMMAND} --build ${PROJECT_BINARY_DIR}/build_cuda_example
)
-###############################################################################
-# C++ 20 modules
-###############################################################################
-
-add_custom_target(ci_module_cpp20
- COMMAND ${CMAKE_COMMAND}
- -DCMAKE_BUILD_TYPE=Debug -GNinja
- -S${PROJECT_SOURCE_DIR}/tests/module_cpp20 -B${PROJECT_BINARY_DIR}/ci_module_cpp20
- COMMAND ${CMAKE_COMMAND} --build ${PROJECT_BINARY_DIR}/ci_module_cpp20
-)
-
###############################################################################
# Intel C++ Compiler
###############################################################################
diff --git a/nlohmann_json/cmake/detect_libcpp_version.cpp b/nlohmann_json/cmake/detect_libcpp_version.cpp
deleted file mode 100644
index a39322fc..00000000
--- a/nlohmann_json/cmake/detect_libcpp_version.cpp
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Detect used C++ Standard Library
- *
- * This file is compiled and run via try_run in download_test_data.cmake.
- */
-
-#include
-
-// see https://en.cppreference.com/w/cpp/header/ciso646
-#if __cplusplus >= 202002L
- #include
-#else
- #include
-#endif
-
-int main()
-{
-#if defined(_LIBCPP_VERSION)
- std::printf("LLVM C++ Standard Library (libc++), _LIBCPP_VERSION=%d", _LIBCPP_VERSION);
-#elif defined(__GLIBCXX__)
- std::printf("GNU C++ Standard Library (libstdc++), __GLIBCXX__=%d", __GLIBCXX__);
-#elif defined(_MSVC_STL_VERSION)
- std::printf("Microsoft C++ Standard Library (MSVC STL), _MSVC_STL_VERSION=%d", _MSVC_STL_VERSION);
-#elif defined(_LIBCUDACXX_VERSION)
- std::printf("NVIDIA C++ Standard Library (libcudacxx), _LIBCUDACXX_VERSION=%d", _LIBCUDACXX_VERSION);
-#elif defined(EASTL_VERSION)
- std::printf("Electronic Arts Standard Template Library (EASTL), EASTL_VERSION=%d", EASTL_VERSION);
-#else
- std::printf("unknown");
-#endif
-}
diff --git a/nlohmann_json/cmake/download_test_data.cmake b/nlohmann_json/cmake/download_test_data.cmake
index 14376f4c..1bb998da 100644
--- a/nlohmann_json/cmake/download_test_data.cmake
+++ b/nlohmann_json/cmake/download_test_data.cmake
@@ -54,18 +54,3 @@ else()
endif()
string(REGEX REPLACE "[ ]*\n" "; " CXX_VERSION_RESULT "${CXX_VERSION_RESULT}")
message(STATUS "Compiler: ${CXX_VERSION_RESULT}")
-
-# determine used C++ standard library (for debug and support purposes)
-if(NOT DEFINED LIBCPP_VERSION_OUTPUT_CACHED)
- try_run(RUN_RESULT_VAR COMPILE_RESULT_VAR
- "${CMAKE_BINARY_DIR}" SOURCES "${CMAKE_SOURCE_DIR}/cmake/detect_libcpp_version.cpp"
- RUN_OUTPUT_VARIABLE LIBCPP_VERSION_OUTPUT COMPILE_OUTPUT_VARIABLE LIBCPP_VERSION_COMPILE_OUTPUT
- )
- if(NOT LIBCPP_VERSION_OUTPUT)
- set(LIBCPP_VERSION_OUTPUT "Unknown")
- message(AUTHOR_WARNING "Failed to compile cmake/detect_libcpp_version to detect the used C++ standard library. This does not affect the library or the test cases. Please still create an issue at https://github.com/nlohmann/json to investigate this.\n${LIBCPP_VERSION_COMPILE_OUTPUT}")
- endif()
- set(LIBCPP_VERSION_OUTPUT_CACHED "${LIBCPP_VERSION_OUTPUT}" CACHE STRING "Detected C++ standard library version")
-endif()
-
-message(STATUS "C++ standard library: ${LIBCPP_VERSION_OUTPUT_CACHED}")
diff --git a/nlohmann_json/cmake/gcc_flags.cmake b/nlohmann_json/cmake/gcc_flags.cmake
index 34c168ce..848630f3 100644
--- a/nlohmann_json/cmake/gcc_flags.cmake
+++ b/nlohmann_json/cmake/gcc_flags.cmake
@@ -1,13 +1,13 @@
-# Warning flags determined for GCC 15.1.0 with https://github.com/nlohmann/gcc_flags:
+# Warning flags determined for GCC 14.2.0 with https://github.com/nlohmann/gcc_flags:
# Ignored GCC warnings:
-# -Wno-abi-tag We do not care about ABI tags.
-# -Wno-aggregate-return The library uses aggregate returns.
-# -Wno-long-long The library uses the long long type to interface with system functions.
-# -Wno-namespaces The library uses namespaces.
-# -Wno-nrvo Doctest triggers this warning.
-# -Wno-padded We do not care about padding warnings.
-# -Wno-system-headers We do not care about warnings in system headers.
-# -Wno-templates The library uses templates.
+# -Wno-abi-tag We do not care about ABI tags.
+# -Wno-aggregate-return The library uses aggregate returns.
+# -Wno-long-long The library uses the long long type to interface with system functions.
+# -Wno-namespaces The library uses namespaces.
+# -Wno-nrvo Doctest triggers this warning.
+# -Wno-padded We do not care about padding warnings.
+# -Wno-system-headers We do not care about warnings in system headers.
+# -Wno-templates The library uses templates.
set(GCC_CXXFLAGS
-pedantic
@@ -65,7 +65,6 @@ set(GCC_CXXFLAGS
-Wanalyzer-tainted-offset
-Wanalyzer-tainted-size
-Wanalyzer-too-complex
- -Wanalyzer-undefined-behavior-ptrdiff
-Wanalyzer-undefined-behavior-strtok
-Wanalyzer-unsafe-call-within-signal-handler
-Wanalyzer-use-after-free
@@ -124,7 +123,6 @@ set(GCC_CXXFLAGS
-Wcoverage-invalid-line-number
-Wcoverage-mismatch
-Wcoverage-too-many-conditions
- -Wcoverage-too-many-paths
-Wcpp
-Wctad-maybe-unsupported
-Wctor-dtor-privacy
@@ -132,7 +130,6 @@ set(GCC_CXXFLAGS
-Wdangling-pointer=2
-Wdangling-reference
-Wdate-time
- -Wdefaulted-function-deleted
-Wdelete-incomplete
-Wdelete-non-virtual-dtor
-Wdeprecated
@@ -141,8 +138,6 @@ set(GCC_CXXFLAGS
-Wdeprecated-declarations
-Wdeprecated-enum-enum-conversion
-Wdeprecated-enum-float-conversion
- -Wdeprecated-literal-operator
- -Wdeprecated-variadic-comma-omission
-Wdisabled-optimization
-Wdiv-by-zero
-Wdouble-promotion
@@ -162,21 +157,20 @@ set(GCC_CXXFLAGS
-Wfloat-conversion
-Wfloat-equal
-Wformat -Wformat-contains-nul
- -Wformat -Wformat-diag
-Wformat -Wformat-extra-args
-Wformat -Wformat-nonliteral
- -Wformat -Wformat-overflow=2
-Wformat -Wformat-security
- -Wformat -Wformat-signedness
- -Wformat -Wformat-truncation=2
-Wformat -Wformat-y2k
-Wformat -Wformat-zero-length
+ -Wformat-diag
+ -Wformat-overflow=2
+ -Wformat-signedness
+ -Wformat-truncation=2
-Wformat=2
-Wframe-address
-Wfree-nonheap-object
-Wglobal-module
-Whardened
- -Wheader-guard
-Whsa
-Wif-not-aligned
-Wignored-attributes
@@ -203,7 +197,6 @@ set(GCC_CXXFLAGS
-Wno-long-long
-Wlto-type-mismatch
-Wmain
- -Wmaybe-musttail-local-addr
-Wmaybe-uninitialized
-Wmemset-elt-size
-Wmemset-transposed-args
@@ -222,7 +215,6 @@ set(GCC_CXXFLAGS
-Wmultichar
-Wmultiple-inheritance
-Wmultistatement-macros
- -Wmusttail-local-addr
-Wno-namespaces
-Wnarrowing
-Wnoexcept
@@ -253,7 +245,6 @@ set(GCC_CXXFLAGS
-Wpmf-conversions
-Wpointer-arith
-Wpointer-compare
- -Wpragma-once-outside-header
-Wpragmas
-Wprio-ctor-dtor
-Wpsabi
@@ -285,12 +276,10 @@ set(GCC_CXXFLAGS
-Wsizeof-pointer-div
-Wsizeof-pointer-memaccess
-Wstack-protector
- -Wstrict-aliasing
-Wstrict-aliasing=3
-Wstrict-null-sentinel
-Wstrict-overflow
-Wstring-compare
- -Wstringop-overflow
-Wstringop-overflow=4
-Wstringop-overread
-Wstringop-truncation
@@ -315,12 +304,8 @@ set(GCC_CXXFLAGS
-Wsynth
-Wno-system-headers
-Wtautological-compare
- -Wtemplate-body
- -Wtemplate-id-cdtor
- -Wtemplate-names-tu-local
-Wno-templates
-Wterminate
- -Wtrailing-whitespace
-Wtrampolines
-Wtrigraphs
-Wtrivial-auto-var-init
diff --git a/nlohmann_json/cmake/requirements/requirements-cpplint.txt b/nlohmann_json/cmake/requirements/requirements-cpplint.txt
index 6aabac21..abb438cc 100644
--- a/nlohmann_json/cmake/requirements/requirements-cpplint.txt
+++ b/nlohmann_json/cmake/requirements/requirements-cpplint.txt
@@ -1 +1 @@
-cpplint==2.0.2
+cpplint==2.0.1
diff --git a/nlohmann_json/docs/mkdocs/docs/api/adl_serializer/index.md b/nlohmann_json/docs/mkdocs/docs/api/adl_serializer/index.md
index e83b66de..95f35cdd 100644
--- a/nlohmann_json/docs/mkdocs/docs/api/adl_serializer/index.md
+++ b/nlohmann_json/docs/mkdocs/docs/api/adl_serializer/index.md
@@ -8,7 +8,7 @@ struct adl_serializer;
Serializer that uses ADL ([Argument-Dependent Lookup](https://en.cppreference.com/w/cpp/language/adl)) to choose
`to_json`/`from_json` functions from the types' namespaces.
-It is implemented similarly to
+It is implemented similar to
```cpp
template
diff --git a/nlohmann_json/docs/mkdocs/docs/api/basic_json/accept.md b/nlohmann_json/docs/mkdocs/docs/api/basic_json/accept.md
index 5f9bac05..15206984 100644
--- a/nlohmann_json/docs/mkdocs/docs/api/basic_json/accept.md
+++ b/nlohmann_json/docs/mkdocs/docs/api/basic_json/accept.md
@@ -4,14 +4,12 @@
// (1)
template
static bool accept(InputType&& i,
- const bool ignore_comments = false,
- const bool ignore_trailing_commas = false);
+ const bool ignore_comments = false);
// (2)
template
static bool accept(IteratorType first, IteratorType last,
- const bool ignore_comments = false,
- const bool ignore_trailing_commas = false);
+ const bool ignore_comments = false);
```
Checks whether the input is valid JSON.
@@ -52,10 +50,6 @@ Unlike the [`parse()`](parse.md) function, this function neither throws an excep
: whether comments should be ignored and treated like whitespace (`#!cpp true`) or yield a parse error
(`#!cpp false`); (optional, `#!cpp false` by default)
-`ignore_trailing_commas` (in)
-: whether trailing commas in arrays or objects should be ignored and treated like whitespace (`#!cpp true`) or yield a parse error
- (`#!cpp false`); (optional, `#!cpp false` by default)
-
`first` (in)
: iterator to the start of the character range
@@ -108,7 +102,6 @@ A UTF-8 byte order mark is silently ignored.
- Added in version 3.0.0.
- Ignoring comments via `ignore_comments` added in version 3.9.0.
- Changed [runtime assertion](../../features/assertions.md) in case of `FILE*` null pointers to exception in version 3.12.0.
-- Added `ignore_trailing_commas` in version 3.12.1.
!!! warning "Deprecation"
diff --git a/nlohmann_json/docs/mkdocs/docs/api/basic_json/basic_json.md b/nlohmann_json/docs/mkdocs/docs/api/basic_json/basic_json.md
index 83c50007..71def92a 100644
--- a/nlohmann_json/docs/mkdocs/docs/api/basic_json/basic_json.md
+++ b/nlohmann_json/docs/mkdocs/docs/api/basic_json/basic_json.md
@@ -74,7 +74,7 @@ basic_json(basic_json&& other) noexcept;
- **boolean**: `boolean_t` / `bool` can be used.
- **binary**: `binary_t` / `std::vector` may be used; unfortunately because string literals cannot be
distinguished from binary character arrays by the C++ type system, all types compatible with `const char*` will be
- directed to the string constructor instead. This is both for backwards compatibility and due to the fact that a
+ directed to the string constructor instead. This is both for backwards compatibility, and due to the fact that a
binary type is not a standard JSON type.
See the examples below.
diff --git a/nlohmann_json/docs/mkdocs/docs/api/basic_json/empty.md b/nlohmann_json/docs/mkdocs/docs/api/basic_json/empty.md
index 8d566738..26bf6e9a 100644
--- a/nlohmann_json/docs/mkdocs/docs/api/basic_json/empty.md
+++ b/nlohmann_json/docs/mkdocs/docs/api/basic_json/empty.md
@@ -4,7 +4,7 @@
bool empty() const noexcept;
```
-Checks if a JSON value has no elements (i.e., whether its [`size()`](size.md) is `0`).
+Checks if a JSON value has no elements (i.e. whether its [`size()`](size.md) is `0`).
## Return value
diff --git a/nlohmann_json/docs/mkdocs/docs/api/basic_json/insert.md b/nlohmann_json/docs/mkdocs/docs/api/basic_json/insert.md
index 160b0d43..2f809f01 100644
--- a/nlohmann_json/docs/mkdocs/docs/api/basic_json/insert.md
+++ b/nlohmann_json/docs/mkdocs/docs/api/basic_json/insert.md
@@ -29,11 +29,11 @@ void insert(const_iterator first, const_iterator last);
For all cases where an element is added to an **array**, a reallocation can happen, in which case all iterators
(including the [`end()`](end.md) iterator) and all references to the elements are invalidated. Otherwise, only the
[`end()`](end.md) iterator is invalidated. Also, any iterator or reference after the insertion point will point to the
-same index, which is now a different value.
+same index which is now a different value.
For [`ordered_json`](../ordered_json.md), also adding an element to an **object** can yield a reallocation which again
invalidates all iterators and all references. Also, any iterator or reference after the insertion point will point to
-the same index, which is now a different value.
+the same index which is now a different value.
## Parameters
diff --git a/nlohmann_json/docs/mkdocs/docs/api/basic_json/json_base_class_t.md b/nlohmann_json/docs/mkdocs/docs/api/basic_json/json_base_class_t.md
index dfe5f1cb..75752049 100644
--- a/nlohmann_json/docs/mkdocs/docs/api/basic_json/json_base_class_t.md
+++ b/nlohmann_json/docs/mkdocs/docs/api/basic_json/json_base_class_t.md
@@ -16,7 +16,7 @@ Examples of such functionality might be metadata, additional member functions (e
#### Default type
-The default value for `CustomBaseClass` is `void`. In this case, an
+The default value for `CustomBaseClass` is `void`. In this case an
[empty base class](https://en.cppreference.com/w/cpp/language/ebo) is used and no additional functionality is injected.
#### Limitations
diff --git a/nlohmann_json/docs/mkdocs/docs/api/basic_json/parse.md b/nlohmann_json/docs/mkdocs/docs/api/basic_json/parse.md
index 7baa16b8..140a08f3 100644
--- a/nlohmann_json/docs/mkdocs/docs/api/basic_json/parse.md
+++ b/nlohmann_json/docs/mkdocs/docs/api/basic_json/parse.md
@@ -6,16 +6,14 @@ template
static basic_json parse(InputType&& i,
const parser_callback_t cb = nullptr,
const bool allow_exceptions = true,
- const bool ignore_comments = false,
- const bool ignore_trailing_commas = false);
+ const bool ignore_comments = false);
// (2)
template
static basic_json parse(IteratorType first, IteratorType last,
const parser_callback_t cb = nullptr,
const bool allow_exceptions = true,
- const bool ignore_comments = false,
- const bool ignore_trailing_commas = false);
+ const bool ignore_comments = false);
```
1. Deserialize from a compatible input.
@@ -58,10 +56,6 @@ static basic_json parse(IteratorType first, IteratorType last,
: whether comments should be ignored and treated like whitespace (`#!cpp true`) or yield a parse error
(`#!cpp false`); (optional, `#!cpp false` by default)
-`ignore_trailing_commas` (in)
-: whether trailing commas in arrays or objects should be ignored and treated like whitespace (`#!cpp true`) or yield a parse error
- (`#!cpp false`); (optional, `#!cpp false` by default)
-
`first` (in)
: iterator to the start of a character range
@@ -195,34 +189,6 @@ A UTF-8 byte order mark is silently ignored.
--8<-- "examples/parse__allow_exceptions.output"
```
-??? example "Effect of `ignore_comments` parameter"
-
- The example below demonstrates the effect of the `ignore_comments` parameter in the `parse()` function.
-
- ```cpp
- --8<-- "examples/comments.cpp"
- ```
-
- Output:
-
- ```
- --8<-- "examples/comments.output"
- ```
-
-??? example "Effect of `ignore_trailing_commas` parameter"
-
- The example below demonstrates the effect of the `ignore_trailing_commas` parameter in the `parse()` function.
-
- ```cpp
- --8<-- "examples/trailing_commas.cpp"
- ```
-
- Output:
-
- ```
- --8<-- "examples/trailing_commas.output"
- ```
-
## See also
- [accept](accept.md) - check if the input is valid JSON
@@ -234,7 +200,6 @@ A UTF-8 byte order mark is silently ignored.
- Overload for contiguous containers (1) added in version 2.0.3.
- Ignoring comments via `ignore_comments` added in version 3.9.0.
- Changed [runtime assertion](../../features/assertions.md) in case of `FILE*` null pointers to exception in version 3.12.0.
-- Added `ignore_trailing_commas` in version 3.12.1.
!!! warning "Deprecation"
diff --git a/nlohmann_json/docs/mkdocs/docs/api/basic_json/sax_parse.md b/nlohmann_json/docs/mkdocs/docs/api/basic_json/sax_parse.md
index 26b2f236..43793d09 100644
--- a/nlohmann_json/docs/mkdocs/docs/api/basic_json/sax_parse.md
+++ b/nlohmann_json/docs/mkdocs/docs/api/basic_json/sax_parse.md
@@ -7,8 +7,7 @@ static bool sax_parse(InputType&& i,
SAX* sax,
input_format_t format = input_format_t::json,
const bool strict = true,
- const bool ignore_comments = false,
- const bool ignore_trailing_commas = false);
+ const bool ignore_comments = false);
// (2)
template
@@ -16,8 +15,7 @@ static bool sax_parse(IteratorType first, IteratorType last,
SAX* sax,
input_format_t format = input_format_t::json,
const bool strict = true,
- const bool ignore_comments = false,
- const bool ignore_trailing_commas = false);
+ const bool ignore_comments = false);
```
Read from input and generate SAX events
@@ -67,10 +65,6 @@ The SAX event lister must follow the interface of [`json_sax`](../json_sax/index
: whether comments should be ignored and treated like whitespace (`#!cpp true`) or yield a parse error
(`#!cpp false`); (optional, `#!cpp false` by default)
-`ignore_trailing_commas` (in)
-: whether trailing commas in arrays or objects should be ignored and treated like whitespace (`#!cpp true`) or yield a parse error
- (`#!cpp false`); (optional, `#!cpp false` by default)
-
`first` (in)
: iterator to the start of a character range
@@ -113,7 +107,6 @@ A UTF-8 byte order mark is silently ignored.
- Added in version 3.2.0.
- Ignoring comments via `ignore_comments` added in version 3.9.0.
-- Added `ignore_trailing_commas` in version 3.12.1.
!!! warning "Deprecation"
diff --git a/nlohmann_json/docs/mkdocs/docs/api/macros/nlohmann_define_derived_type.md b/nlohmann_json/docs/mkdocs/docs/api/macros/nlohmann_define_derived_type.md
index d33bc1ee..d9c9e042 100644
--- a/nlohmann_json/docs/mkdocs/docs/api/macros/nlohmann_define_derived_type.md
+++ b/nlohmann_json/docs/mkdocs/docs/api/macros/nlohmann_define_derived_type.md
@@ -79,7 +79,7 @@ template
void from_json(const BasicJsonType&, type&);
```
-Macros 3 and 6 add one function to the namespace, which takes care of the serialization only:
+Macros 3 and 6 add one function to the namespace which takes care of the serialization only:
```cpp
template
diff --git a/nlohmann_json/docs/mkdocs/docs/api/macros/nlohmann_define_type_intrusive.md b/nlohmann_json/docs/mkdocs/docs/api/macros/nlohmann_define_type_intrusive.md
index b95d2679..32fb68ee 100644
--- a/nlohmann_json/docs/mkdocs/docs/api/macros/nlohmann_define_type_intrusive.md
+++ b/nlohmann_json/docs/mkdocs/docs/api/macros/nlohmann_define_type_intrusive.md
@@ -46,7 +46,7 @@ template
friend void from_json(const BasicJsonType&, type&); // except (3)
```
-See the examples below for the concrete generated code.
+See examples below for the concrete generated code.
## Notes
diff --git a/nlohmann_json/docs/mkdocs/docs/api/macros/nlohmann_define_type_non_intrusive.md b/nlohmann_json/docs/mkdocs/docs/api/macros/nlohmann_define_type_non_intrusive.md
index c3e2721c..2bbf0a69 100644
--- a/nlohmann_json/docs/mkdocs/docs/api/macros/nlohmann_define_type_non_intrusive.md
+++ b/nlohmann_json/docs/mkdocs/docs/api/macros/nlohmann_define_type_non_intrusive.md
@@ -46,7 +46,7 @@ template
void from_json(const BasicJsonType&, type&); // except (3)
```
-See the examples below for the concrete generated code.
+See examples below for the concrete generated code.
## Notes
diff --git a/nlohmann_json/docs/mkdocs/docs/api/macros/nlohmann_json_serialize_enum.md b/nlohmann_json/docs/mkdocs/docs/api/macros/nlohmann_json_serialize_enum.md
index adaceae8..c54f9195 100644
--- a/nlohmann_json/docs/mkdocs/docs/api/macros/nlohmann_json_serialize_enum.md
+++ b/nlohmann_json/docs/mkdocs/docs/api/macros/nlohmann_json_serialize_enum.md
@@ -4,8 +4,8 @@
#define NLOHMANN_JSON_SERIALIZE_ENUM(type, conversion...)
```
-By default, enum values are serialized to JSON as integers. In some cases, this could result in undesired behavior. If
-an enum is modified or re-ordered after data has been serialized to JSON, the later deserialized JSON data may be
+By default, enum values are serialized to JSON as integers. In some cases this could result in undesired behavior. If an
+enum is modified or re-ordered after data has been serialized to JSON, the later deserialized JSON data may be
undefined or a different enum value than was originally intended.
The `NLOHMANN_JSON_SERIALIZE_ENUM` allows to define a user-defined serialization for every enumerator.
diff --git a/nlohmann_json/docs/mkdocs/docs/api/ordered_json.md b/nlohmann_json/docs/mkdocs/docs/api/ordered_json.md
index b28fe36f..f4062d13 100644
--- a/nlohmann_json/docs/mkdocs/docs/api/ordered_json.md
+++ b/nlohmann_json/docs/mkdocs/docs/api/ordered_json.md
@@ -11,7 +11,7 @@ This type preserves the insertion order of object keys.
The type is based on [`ordered_map`](ordered_map.md) which in turn uses a `std::vector` to store object elements.
Therefore, adding object elements can yield a reallocation in which case all iterators (including the
[`end()`](basic_json/end.md) iterator) and all references to the elements are invalidated. Also, any iterator or
-reference after the insertion point will point to the same index, which is now a different value.
+reference after the insertion point will point to the same index which is now a different value.
## Examples
diff --git a/nlohmann_json/docs/mkdocs/docs/community/quality_assurance.md b/nlohmann_json/docs/mkdocs/docs/community/quality_assurance.md
index 5b09b12f..134926ca 100644
--- a/nlohmann_json/docs/mkdocs/docs/community/quality_assurance.md
+++ b/nlohmann_json/docs/mkdocs/docs/community/quality_assurance.md
@@ -28,7 +28,6 @@ violations will result in a failed build.
| AppleClang 16.0.0.16000026; Xcode 16 | arm64 | macOS 15.2 (Sequoia) | GitHub |
| AppleClang 16.0.0.16000026; Xcode 16.1 | arm64 | macOS 15.2 (Sequoia) | GitHub |
| AppleClang 16.0.0.16000026; Xcode 16.2 | arm64 | macOS 15.2 (Sequoia) | GitHub |
- | AppleClang 17.0.0.17000013; Xcode 16.3 | arm64 | macOS 15.5 (Sequoia) | GitHub |
| Clang 3.5.2 | x86_64 | Ubuntu 22.04.1 LTS | GitHub |
| Clang 3.6.2 | x86_64 | Ubuntu 22.04.1 LTS | GitHub |
| Clang 3.7.1 | x86_64 | Ubuntu 22.04.1 LTS | GitHub |
@@ -58,7 +57,6 @@ violations will result in a failed build.
| Clang 19.1.7 | x86_64 | Ubuntu 22.04.1 LTS | GitHub |
| Clang 20.1.1 | x86_64 | Ubuntu 22.04.1 LTS | GitHub |
| Clang 21.0.0 | x86_64 | Ubuntu 22.04.1 LTS | GitHub |
- | Emscripten 4.0.6 | x86_64 | Ubuntu 22.04.1 LTS | GitHub |
| GNU 4.8.5 | x86_64 | Ubuntu 22.04.1 LTS | GitHub |
| GNU 4.9.3 | x86_64 | Ubuntu 22.04.1 LTS | GitHub |
| GNU 5.5.0 | x86_64 | Ubuntu 22.04.1 LTS | GitHub |
@@ -77,8 +75,6 @@ violations will result in a failed build.
| GNU 13.3.0 | x86_64 | Ubuntu 22.04.1 LTS | GitHub |
| GNU 14.2.0 | x86_64 | Ubuntu 22.04.1 LTS | GitHub |
| GNU 14.2.0 | arm64 | Linux 6.1.100 | Cirrus CI |
- | GNU 15.1.0 | x86_64 | Ubuntu 22.04.1 LTS | GitHub |
- | icpc (ICC) 2021.5.0 20211109 | x86_64 | Ubuntu 20.04.3 LTS | GitHub |
| MSVC 19.0.24241.7 | x86 | Windows 8.1 | AppVeyor |
| MSVC 19.16.27035.0 | x86 | Windows-10 (Build 14393) | AppVeyor |
| MSVC 19.29.30157.0 | x86 | Windows 10 (Build 17763) | GitHub |
diff --git a/nlohmann_json/docs/mkdocs/docs/examples/comments.cpp b/nlohmann_json/docs/mkdocs/docs/examples/comments.cpp
deleted file mode 100644
index fc8a0ac3..00000000
--- a/nlohmann_json/docs/mkdocs/docs/examples/comments.cpp
+++ /dev/null
@@ -1,31 +0,0 @@
-
-#include
-#include
-
-using json = nlohmann::json;
-
-int main()
-{
- std::string s = R"(
- {
- // update in 2006: removed Pluto
- "planets": ["Mercury", "Venus", "Earth", "Mars",
- "Jupiter", "Uranus", "Neptune" /*, "Pluto" */]
- }
- )";
-
- try
- {
- json j = json::parse(s);
- }
- catch (json::exception& e)
- {
- std::cout << e.what() << std::endl;
- }
-
- json j = json::parse(s,
- /* callback */ nullptr,
- /* allow exceptions */ true,
- /* ignore_comments */ true);
- std::cout << j.dump(2) << '\n';
-}
diff --git a/nlohmann_json/docs/mkdocs/docs/examples/comments.output b/nlohmann_json/docs/mkdocs/docs/examples/comments.output
deleted file mode 100644
index 6e0d1c46..00000000
--- a/nlohmann_json/docs/mkdocs/docs/examples/comments.output
+++ /dev/null
@@ -1,12 +0,0 @@
-[json.exception.parse_error.101] parse error at line 3, column 9: syntax error while parsing object key - invalid literal; last read: ' { /'; expected string literal
-{
- "planets": [
- "Mercury",
- "Venus",
- "Earth",
- "Mars",
- "Jupiter",
- "Uranus",
- "Neptune"
- ]
-}
diff --git a/nlohmann_json/docs/mkdocs/docs/examples/trailing_commas.cpp b/nlohmann_json/docs/mkdocs/docs/examples/trailing_commas.cpp
deleted file mode 100644
index 32bf6874..00000000
--- a/nlohmann_json/docs/mkdocs/docs/examples/trailing_commas.cpp
+++ /dev/null
@@ -1,37 +0,0 @@
-#include
-#include
-
-using json = nlohmann::json;
-
-int main()
-{
- std::string s = R"(
- {
- "planets": [
- "Mercury",
- "Venus",
- "Earth",
- "Mars",
- "Jupiter",
- "Uranus",
- "Neptune",
- ]
- }
- )";
-
- try
- {
- json j = json::parse(s);
- }
- catch (json::exception& e)
- {
- std::cout << e.what() << std::endl;
- }
-
- json j = json::parse(s,
- /* callback */ nullptr,
- /* allow exceptions */ true,
- /* ignore_comments */ false,
- /* ignore_trailing_commas */ true);
- std::cout << j.dump(2) << '\n';
-}
diff --git a/nlohmann_json/docs/mkdocs/docs/examples/trailing_commas.output b/nlohmann_json/docs/mkdocs/docs/examples/trailing_commas.output
deleted file mode 100644
index 3b2c49eb..00000000
--- a/nlohmann_json/docs/mkdocs/docs/examples/trailing_commas.output
+++ /dev/null
@@ -1,12 +0,0 @@
-[json.exception.parse_error.101] parse error at line 11, column 9: syntax error while parsing value - unexpected ']'; expected '[', '{', or a literal
-{
- "planets": [
- "Mercury",
- "Venus",
- "Earth",
- "Mars",
- "Jupiter",
- "Uranus",
- "Neptune"
- ]
-}
diff --git a/nlohmann_json/docs/mkdocs/docs/features/binary_formats/cbor.md b/nlohmann_json/docs/mkdocs/docs/features/binary_formats/cbor.md
index a4240ffa..2d0a1dae 100644
--- a/nlohmann_json/docs/mkdocs/docs/features/binary_formats/cbor.md
+++ b/nlohmann_json/docs/mkdocs/docs/features/binary_formats/cbor.md
@@ -1,7 +1,7 @@
# CBOR
-The Concise Binary Object Representation (CBOR) is a data format whose design goals include the possibility of
-extremely small code sizes, fairly small message size, and extensibility without the need for version negotiation.
+The Concise Binary Object Representation (CBOR) is a data format whose design goals include the possibility of extremely
+small code size, fairly small message size, and extensibility without the need for version negotiation.
!!! abstract "References"
diff --git a/nlohmann_json/docs/mkdocs/docs/features/binary_values.md b/nlohmann_json/docs/mkdocs/docs/features/binary_values.md
index 260d67b5..149eaaa5 100644
--- a/nlohmann_json/docs/mkdocs/docs/features/binary_values.md
+++ b/nlohmann_json/docs/mkdocs/docs/features/binary_values.md
@@ -1,7 +1,7 @@
# Binary Values
The library implements several [binary formats](binary_formats/index.md) that encode JSON in an efficient way. Most of
-these formats support binary values; that is, values that have semantics defined outside the library and only define a
+these formats support binary values; that is, values that have semantics define outside the library and only define a
sequence of bytes to be stored.
JSON itself does not have a binary value. As such, binary values are an extension that this library implements to store
@@ -189,7 +189,7 @@ as an array of uint8 values. The library implements this translation.
### BSON
-[BSON](binary_formats/bson.md) supports binary values and subtypes. If a subtype is given, it is used and added as an
+[BSON](binary_formats/bson.md) supports binary values and subtypes. If a subtype is given, it is used and added as
unsigned 8-bit integer. If no subtype is given, the generic binary subtype 0x00 is used.
??? example
@@ -274,7 +274,7 @@ byte array.
[MessagePack](binary_formats/messagepack.md) supports binary values and subtypes. If a subtype is given, the ext family
is used. The library will choose the smallest representation among fixext1, fixext2, fixext4, fixext8, ext8, ext16, and
-ext32. The subtype is then added as a signed 8-bit integer.
+ext32. The subtype is then added as signed 8-bit integer.
If no subtype is given, the bin family (bin8, bin16, bin32) is used.
diff --git a/nlohmann_json/docs/mkdocs/docs/features/comments.md b/nlohmann_json/docs/mkdocs/docs/features/comments.md
index 6876cc50..fca53111 100644
--- a/nlohmann_json/docs/mkdocs/docs/features/comments.md
+++ b/nlohmann_json/docs/mkdocs/docs/features/comments.md
@@ -11,9 +11,7 @@ This library does not support comments *by default*. It does so for three reason
3. It is dangerous for interoperability if some libraries add comment support while others do not. Please check [The Harmful Consequences of the Robustness Principle](https://tools.ietf.org/html/draft-iab-protocol-maintenance-01) on this.
-However, you can set parameter `ignore_comments` to `#!cpp true` in the [`parse`](../api/basic_json/parse.md) function to ignore `//` or `/* */` comments. Comments will then be treated as whitespace.
-
-For more information, see [JSON With Commas and Comments (JWCC)](https://nigeltao.github.io/blog/2021/json-with-commas-comments.html).
+However, you can pass set parameter `ignore_comments` to `#!c true` in the parse function to ignore `//` or `/* */` comments. Comments will then be treated as whitespace.
!!! example
@@ -30,11 +28,56 @@ For more information, see [JSON With Commas and Comments (JWCC)](https://nigelta
When calling `parse` without additional argument, a parse error exception is thrown. If `ignore_comments` is set to `#! true`, the comments are ignored during parsing:
```cpp
- --8<-- "examples/comments.cpp"
+ #include
+ #include "json.hpp"
+
+ using json = nlohmann::json;
+
+ int main()
+ {
+ std::string s = R"(
+ {
+ // update in 2006: removed Pluto
+ "planets": ["Mercury", "Venus", "Earth", "Mars",
+ "Jupiter", "Uranus", "Neptune" /*, "Pluto" */]
+ }
+ )";
+
+ try
+ {
+ json j = json::parse(s);
+ }
+ catch (json::exception &e)
+ {
+ std::cout << e.what() << std::endl;
+ }
+
+ json j = json::parse(s,
+ /* callback */ nullptr,
+ /* allow exceptions */ true,
+ /* ignore_comments */ true);
+ std::cout << j.dump(2) << '\n';
+ }
```
Output:
```
- --8<-- "examples/comments.output"
+ [json.exception.parse_error.101] parse error at line 3, column 9:
+ syntax error while parsing object key - invalid literal;
+ last read: ' { /'; expected string literal
+ ```
+
+ ```json
+ {
+ "planets": [
+ "Mercury",
+ "Venus",
+ "Earth",
+ "Mars",
+ "Jupiter",
+ "Uranus",
+ "Neptune"
+ ]
+ }
```
diff --git a/nlohmann_json/docs/mkdocs/docs/features/enum_conversion.md b/nlohmann_json/docs/mkdocs/docs/features/enum_conversion.md
index 58d353a0..6bb3edbd 100644
--- a/nlohmann_json/docs/mkdocs/docs/features/enum_conversion.md
+++ b/nlohmann_json/docs/mkdocs/docs/features/enum_conversion.md
@@ -1,8 +1,8 @@
# Specializing enum conversion
-By default, enum values are serialized to JSON as integers. In some cases, this could result in undesired behavior. If
-the integer values of any enum values are changed after data using those enum values has been serialized to JSON, then
-deserializing that JSON would result in a different enum value being restored, or the value not being found at all.
+By default, enum values are serialized to JSON as integers. In some cases this could result in undesired behavior. If an
+enum is modified or re-ordered after data has been serialized to JSON, the later deserialized JSON data may be
+undefined or a different enum value than was originally intended.
It is possible to more precisely specify how a given enum is mapped to and from JSON as shown below:
diff --git a/nlohmann_json/docs/mkdocs/docs/features/iterators.md b/nlohmann_json/docs/mkdocs/docs/features/iterators.md
index 6d8afc7f..ca303cb4 100644
--- a/nlohmann_json/docs/mkdocs/docs/features/iterators.md
+++ b/nlohmann_json/docs/mkdocs/docs/features/iterators.md
@@ -37,7 +37,7 @@ When iterating over objects, values are ordered with respect to the `object_comp
The reason for the order is the lexicographic ordering of the object keys "one", "three", "two".
-### Access object keys during iteration
+### Access object key during iteration
The JSON iterators have two member functions, `key()` and `value()` to access the object key and stored value, respectively. When calling `key()` on a non-object iterator, an [invalid_iterator.207](../home/exceptions.md#jsonexceptioninvalid_iterator207) exception is thrown.
diff --git a/nlohmann_json/docs/mkdocs/docs/features/json_pointer.md b/nlohmann_json/docs/mkdocs/docs/features/json_pointer.md
index a16e8df2..df66ebff 100644
--- a/nlohmann_json/docs/mkdocs/docs/features/json_pointer.md
+++ b/nlohmann_json/docs/mkdocs/docs/features/json_pointer.md
@@ -42,7 +42,7 @@ Note `/` does not identify the root (i.e., the whole document), but an object en
JSON Pointers can be created from a string:
```cpp
-json::json_pointer p("/nested/one");
+json::json_pointer p = "/nested/one";
```
Furthermore, a user-defined string literal can be used to achieve the same result:
diff --git a/nlohmann_json/docs/mkdocs/docs/features/namespace.md b/nlohmann_json/docs/mkdocs/docs/features/namespace.md
index ca541809..460cb3be 100644
--- a/nlohmann_json/docs/mkdocs/docs/features/namespace.md
+++ b/nlohmann_json/docs/mkdocs/docs/features/namespace.md
@@ -64,7 +64,7 @@ configurations – to be used in cases where the linker would otherwise output u
To do so, define [`NLOHMANN_JSON_NAMESPACE_NO_VERSION`](../api/macros/nlohmann_json_namespace_no_version.md) to `1`.
-This applies to version 3.11.2 and above only; versions 3.11.0 and 3.11.1 can apply the technique described in the next
+This applies to version 3.11.2 and above only, versions 3.11.0 and 3.11.1 can apply the technique described in the next
section to emulate the effect of the `NLOHMANN_JSON_NAMESPACE_NO_VERSION` macro.
!!! danger "Use at your own risk"
diff --git a/nlohmann_json/docs/mkdocs/docs/features/trailing_commas.md b/nlohmann_json/docs/mkdocs/docs/features/trailing_commas.md
deleted file mode 100644
index 583e7cbf..00000000
--- a/nlohmann_json/docs/mkdocs/docs/features/trailing_commas.md
+++ /dev/null
@@ -1,39 +0,0 @@
-# Trailing Commas
-
-Like [comments](comments.md), this library does not support trailing commas in arrays and objects *by default*.
-
-You can set parameter `ignore_trailing_commas` to `#!cpp true` in the [`parse`](../api/basic_json/parse.md) function to allow trailing commas in arrays and objects. Note that a single comma as the only content of the array or object (`[,]` or `{,}`) is not allowed, and multiple trailing commas (`[1,,]`) are not allowed either.
-
-This library does not add trailing commas when serializing JSON data.
-
-For more information, see [JSON With Commas and Comments (JWCC)](https://nigeltao.github.io/blog/2021/json-with-commas-comments.html).
-
-!!! example
-
- Consider the following JSON with trailing commas.
-
- ```json
- {
- "planets": [
- "Mercury",
- "Venus",
- "Earth",
- "Mars",
- "Jupiter",
- "Uranus",
- "Neptune",
- ]
- }
- ```
-
- When calling `parse` without additional argument, a parse error exception is thrown. If `ignore_trailing_commas` is set to `#! true`, the trailing commas are ignored during parsing:
-
- ```cpp
- --8<-- "examples/trailing_commas.cpp"
- ```
-
- Output:
-
- ```
- --8<-- "examples/trailing_commas.output"
- ```
diff --git a/nlohmann_json/docs/mkdocs/docs/home/customers.md b/nlohmann_json/docs/mkdocs/docs/home/customers.md
index 4bfef0c7..8e111652 100644
--- a/nlohmann_json/docs/mkdocs/docs/home/customers.md
+++ b/nlohmann_json/docs/mkdocs/docs/home/customers.md
@@ -13,7 +13,7 @@ the result of an internet search. If you know further customers of the library,
- [**Alexa Auto SDK**](https://github.com/alexa/alexa-auto-sdk), a software development kit enabling the integration of Alexa into automotive systems
- [**Apollo**](https://github.com/ApolloAuto/apollo), a framework for building autonomous driving systems
-- [**Automotive Grade Linux (AGL)**](https://download.automotivelinux.org/AGL/release/jellyfish/latest/qemux86-64/deploy/licenses/nlohmann-json/), a collaborative open-source platform for automotive software development
+- [**Automotive Grade Linux (AGL)**](https://download.automotivelinux.org/AGL/release/jellyfish/latest/qemux86-64/deploy/licenses/nlohmann-json/): a collaborative open-source platform for automotive software development
- [**Genesis Motor** (infotainment)](http://webmanual.genesis.com/ccIC/AVNT/JW/KOR/English/reference010.html), a luxury automotive brand
- [**Hyundai** (infotainment)](https://www.hyundai.com/wsvc/ww/download.file.do?id=/content/hyundai/ww/data/opensource/data/GN7-2022/licenseCode/info), a global automotive brand
- [**Kia** (infotainment)](http://webmanual.kia.com/PREM_GEN6/AVNT/RJPE/KOR/Korean/reference010.html), a global automotive brand
@@ -23,36 +23,30 @@ the result of an internet search. If you know further customers of the library,
## Gaming and Entertainment
-- [**Assassin's Creed: Mirage**](https://www.mobygames.com/person/1195889/niels-lohmann/credits/), a stealth-action game set in the Middle East, focusing on the journey of a young assassin with classic parkour and stealth mechanics
-- [**Chasm: The Rift**](https://www.mobygames.com/person/1195889/niels-lohmann/credits/), a first-person shooter blending horror and adventure, where players navigate dark realms and battle monsters
-- [**College Football 25**](https://www.mobygames.com/person/1195889/niels-lohmann/credits/), a college football simulation game featuring gameplay that mimics real-life college teams and competitions
-- [**Concepts**](https://concepts.app/en/licenses), a digital sketching app designed for creative professionals, offering flexible drawing tools for illustration, design, and brainstorming
-- [**Depthkit**](https://www.depthkit.tv/third-party-licenses), a tool for creating and capturing volumetric video, enabling immersive 3D experiences and interactive content
-- [**IMG.LY**](https://img.ly/acknowledgements), a platform offering creative tools and SDKs for integrating advanced image and video editing in applications
+- [**Assassin's Creed: Mirage**](https://www.mobygames.com/person/1195889/niels-lohmann/credits/): a stealth-action game set in the Middle East, focusing on the journey of a young assassin with classic parkour and stealth mechanics
+- [**Chasm: The Rift**](https://www.mobygames.com/person/1195889/niels-lohmann/credits/): a first-person shooter blending horror and adventure, where players navigate dark realms and battle monsters
+- [**College Football 25**](https://www.mobygames.com/person/1195889/niels-lohmann/credits/): a college football simulation game featuring gameplay that mimics real-life college teams and competitions
+- [**Concepts**](https://concepts.app/en/licenses): a digital sketching app designed for creative professionals, offering flexible drawing tools for illustration, design, and brainstorming
+- [**Depthkit**](https://www.depthkit.tv/third-party-licenses): a tool for creating and capturing volumetric video, enabling immersive 3D experiences and interactive content
+- [**immersivetech**](https://immersitech.io/open-source-third-party-software/): a technology company focused on immersive experiences, providing tools and solutions for virtual and augmented reality applications
- [**LOOT**](https://loot.readthedocs.io/_/downloads/en/0.13.0/pdf/), a tool for optimizing the load order of game plugins, commonly used in The Elder Scrolls and Fallout series
-- [**Madden NFL 25**](https://www.mobygames.com/person/1195889/niels-lohmann/credits/), a sports simulation game capturing the excitement of American football with realistic gameplay and team management features
+- [**Madden NFL 25**](https://www.mobygames.com/person/1195889/niels-lohmann/credits/): a sports simulation game capturing the excitement of American football with realistic gameplay and team management features
- [**Marne**](https://marne.io/licenses), an unofficial private server platform for hosting custom Battlefield 1 game experiences
- [**Minecraft**](https://www.minecraft.net/zh-hant/attribution), a popular sandbox video game
-- [**NHL 22**](https://www.mobygames.com/person/1195889/niels-lohmann/credits/), a hockey simulation game offering realistic gameplay, team management, and various modes to enhance the hockey experience
-- [**Pixelpart**](https://pixelpart.net/documentation/book/third-party.html), a 2D animation and video compositing software that allows users to create animated graphics and visual effects with a focus on simplicity and ease of use
-- [**Razer Cortex**](https://mysupport.razer.com/app/answers/detail/a_id/14146/~/open-source-software-for-razer-software), a gaming performance optimizer and system booster designed to enhance the gaming experience
-- [**Red Dead Redemption II**](https://www.mobygames.com/person/1195889/niels-lohmann/credits/), an open-world action-adventure game following an outlaw's story in the late 1800s, emphasizing deep storytelling and immersive gameplay
-- [**Snapchat**](https://www.snap.com/terms/license-android), a multimedia messaging and augmented reality app for communication and entertainment
+- [**NHL 22**](https://www.mobygames.com/person/1195889/niels-lohmann/credits/): a hockey simulation game offering realistic gameplay, team management, and various modes to enhance the hockey experience
+- [**Pixelpart**](https://pixelpart.net/documentation/book/third-party.html): a 2D animation and video compositing software that allows users to create animated graphics and visual effects with a focus on simplicity and ease of use
+- [**Red Dead Redemption II**](https://www.mobygames.com/person/1195889/niels-lohmann/credits/): an open-world action-adventure game following an outlaw's story in the late 1800s, emphasizing deep storytelling and immersive gameplay
- [**Tactics Ogre: Reborn**](https://www.square-enix-games.com/en_US/documents/tactics-ogre-reborn-pc-installer-software-and-associated-plug-ins-disclosure), a tactical role-playing game featuring strategic battles and deep storytelling elements
- [**Throne and Liberty**](https://www.amazon.com/gp/help/customer/display.html?nodeId=T7fLNw5oAevCMtJFPj&pop-up=1), an MMORPG that offers an expansive fantasy world with dynamic gameplay and immersive storytelling
- [**Unity Vivox**](https://docs.unity3d.com/Packages/com.unity.services.vivox@15.1/license/Third%20Party%20Notices.html), a communication service that enables voice and text chat functionality in multiplayer games developed with Unity
-- [**Zool: Redimensioned**](https://www.mobygames.com/person/1195889/niels-lohmann/credits/), a modern reimagining of the classic platformer featuring fast-paced gameplay and vibrant environments
-- [**immersivetech**](https://immersitech.io/open-source-third-party-software/), a technology company focused on immersive experiences, providing tools and solutions for virtual and augmented reality applications
+- [**Zool: Redimensioned**](https://www.mobygames.com/person/1195889/niels-lohmann/credits/): a modern reimagining of the classic platformer featuring fast-paced gameplay and vibrant environments
## Consumer Electronics
-- [**Audinate**](https://www.audinate.com/legal/software-licensing/dante-av-h-open-source-licenses/), a provider of networked audio solutions specializing in Dante technology, which facilitates high-quality digital audio transport over IP networks
-- [**Canon CanoScan LIDE**](https://carolburo.com/wp-content/uploads/2024/06/LiDE400_OnlineManual_Win_FR_V02.pdf), a series of flatbed scanners offering high-resolution image scanning for home and office use
-- [**Canon PIXMA Printers**](https://www.mediaexpert.pl/products/files/73/7338196/Instrukcja-obslugi-CANON-Pixma-TS7450i.pdf), a line of all-in-one inkjet printers known for high-quality printing and wireless connectivity
+- [**Audinate**](https://www.audinate.com/legal/software-licensing/dante-av-h-open-source-licenses/): a provider of networked audio solutions specializing in Dante technology, which facilitates high-quality digital audio transport over IP networks
- [**Cisco Webex Desk Camera**](https://www.cisco.com/c/dam/en_us/about/doing_business/open_source/docs/CiscoWebexDeskCamera-23-1622100417.pdf), a video camera designed for professional-quality video conferencing and remote collaboration
-- [**Philips Hue Personal Wireless Lighting**](http://2ak5ape.257.cz/), a smart lighting system for customizable and wireless home illumination
+- [**Philips Hue Personal Wireless Lighting**](http://2ak5ape.257.cz/): a smart lighting system for customizable and wireless home illumination
- [**Ray-Ban Meta Smart glasses**](https://www.meta.com/de/en/legal/smart-glasses/third-party-notices-android/03/), a pair of smart glasses designed for capturing photos and videos with integrated connectivity and social features
-- [**Razer Synapse**](https://mysupport.razer.com/app/answers/detail/a_id/14146/~/open-source-software-for-razer-software), a unified configuration software enabling hardware customization for Razer devices
- [**Siemens SINEMA Remote Connect**](https://cache.industry.siemens.com/dl/files/790/109793790/att_1054961/v2/OSS_SINEMA-RC_86.pdf), a remote connectivity solution for monitoring and managing industrial networks and devices securely
- [**Sony PlayStation 4**](https://doc.dl.playstation.net/doc/ps4-oss/index.html), a gaming console developed by Sony that offers a wide range of games and multimedia entertainment features
- [**Sony Virtual Webcam Driver for Remote Camera**](https://helpguide.sony.net/rc/vwd/v1/zh-cn/print.pdf), a software driver that enables the use of Sony cameras as virtual webcams for video conferencing and streaming
@@ -62,7 +56,7 @@ the result of an internet search. If you know further customers of the library,
- [**Apple iOS and macOS**](https://www.apple.com/macos), a family of operating systems developed by Apple, including iOS for mobile devices and macOS for desktop computers
- [**Google Fuchsia**](https://fuchsia.googlesource.com/third_party/json/), an open-source operating system developed by Google, designed to be secure, updatable, and adaptable across various devices
- [**SerenityOS**](https://github.com/SerenityOS/serenity), an open-source operating system that aims to provide a simple and beautiful user experience with a focus on simplicity and elegance
-- [**Yocto**](http://ftp.emacinc.com/openembedded-sw/kirkstone-icop-5.15-kirkstone-6.0/archive-2024-10/pn8m-090t-ppc/licenses/nlohmann-json/), a Linux-based build system for creating custom operating systems and software distributions, tailored for embedded devices and IoT applications
+- [**Yocto**](http://ftp.emacinc.com/openembedded-sw/kirkstone-icop-5.15-kirkstone-6.0/archive-2024-10/pn8m-090t-ppc/licenses/nlohmann-json/): a Linux-based build system for creating custom operating systems and software distributions, tailored for embedded devices and IoT applications
## Development Tools and IDEs
@@ -72,72 +66,67 @@ the result of an internet search. If you know further customers of the library,
- [**CoderPad**](https://coderpad.io), a collaborative coding platform that enables real-time code interviews and assessments for developers; the library is included in every CoderPad instance and can be accessed with a simple `#include "json.hpp"`
- [**Compiler Explorer**](https://godbolt.org), a web-based tool that allows users to write, compile, and visualize the assembly output of code in various programming languages; the library is readily available and accessible with the directive `#include `.
- [**GitHub CodeQL**](https://github.com/github/codeql), a code analysis tool used for identifying security vulnerabilities and bugs in software through semantic queries
-- [**Hex-Rays**](https://docs.hex-rays.com/user-guide/user-interface/licenses), a reverse engineering toolset for analyzing and decompiling binaries, primarily used for security research and vulnerability analysis
+- [**Hex-Rays**](https://docs.hex-rays.com/user-guide/user-interface/licenses): a reverse engineering toolset for analyzing and decompiling binaries, primarily used for security research and vulnerability analysis
- [**ImHex**](https://github.com/WerWolv/ImHex), a hex editor designed for reverse engineering, providing advanced features for data analysis and manipulation
- [**Intel GPA Framework**](https://intel.github.io/gpasdk-doc/src/licenses.html), a suite of cross-platform tools for capturing, analyzing, and optimizing graphics applications across different APIs
-- [**Intopix**](https://www.intopix.com/software-licensing), a provider of advanced image processing and compression solutions used in software development and AV workflows
-- [**MKVToolNix**](https://mkvtoolnix.download/doc/README.md), a set of tools for creating, editing, and inspecting MKV (Matroska) multimedia container files
- [**Meta Yoga**](https://github.com/facebook/yoga), a layout engine that facilitates flexible and efficient user interface design across multiple platforms
+- [**MKVToolNix**](https://mkvtoolnix.download/doc/README.md), a set of tools for creating, editing, and inspecting MKV (Matroska) multimedia container files
- [**NVIDIA Nsight Compute**](https://docs.nvidia.com/nsight-compute/2022.2/pdf/CopyrightAndLicenses.pdf), a performance analysis tool for CUDA applications that provides detailed insights into GPU performance metrics
- [**Notepad++**](https://github.com/notepad-plus-plus/notepad-plus-plus), a free source code editor that supports various programming languages
- [**OpenRGB**](https://gitlab.com/CalcProgrammer1/OpenRGB), an open source RGB lighting control that doesn't depend on manufacturer software
-- [**OpenTelemetry C++**](https://github.com/open-telemetry/opentelemetry-cpp), a library for collecting and exporting observability data in C++, enabling developers to implement distributed tracing and metrics in their application
+- [**OpenTelemetry C++**](https://github.com/open-telemetry/opentelemetry-cpp): a library for collecting and exporting observability data in C++, enabling developers to implement distributed tracing and metrics in their application
- [**Qt Creator**](https://doc.qt.io/qtcreator/qtcreator-attribution-json-nlohmann.html), an IDE for developing applications using the Qt application framework
-- [**Scanbot SDK**](https://docs.scanbot.io/barcode-scanner-sdk/web/third-party-libraries/), a software development kit (SDK) that provides tools for integrating advanced document scanning and barcode scanning capabilities into applications
+- [**Scanbot SDK**](https://docs.scanbot.io/barcode-scanner-sdk/web/third-party-libraries/): a software development kit (SDK) that provides tools for integrating advanced document scanning and barcode scanning capabilities into applications
## Machine Learning and AI
- [**Apple Core ML Tools**](https://github.com/apple/coremltools), a set of tools for converting and configuring machine learning models for deployment in Apple's Core ML framework
-- [**Avular Mobile Robotics**](https://www.avular.com/licenses/nlohmann-json-3.9.1.txt), a platform for developing and deploying mobile robotics solutions
+- [**Avular Mobile Robotics**](https://www.avular.com/licenses/nlohmann-json-3.9.1.txt): a platform for developing and deploying mobile robotics solutions
- [**Google gemma.cpp**](https://github.com/google/gemma.cpp), a lightweight C++ inference engine designed for running AI models from the Gemma family
- [**llama.cpp**](https://github.com/ggerganov/llama.cpp), a C++ library designed for efficient inference of large language models (LLMs), enabling streamlined integration into applications
- [**MLX**](https://github.com/ml-explore/mlx), an array framework for machine learning on Apple Silicon
- [**Mozilla llamafile**](https://github.com/Mozilla-Ocho/llamafile), a tool designed for distributing and executing large language models (LLMs) efficiently using a single file format
- [**NVIDIA ACE**](https://docs.nvidia.com/ace/latest/index.html), a suite of real-time AI solutions designed for the development of interactive avatars and digital human applications, enabling scalable and sophisticated user interactions
-- [**Peer**](https://support.peer.inc/hc/en-us/articles/17261335054235-Licenses), a platform offering personalized AI assistants for interactive learning and creative collaboration
-- [**stable-diffusion.cpp**](https://github.com/leejet/stable-diffusion.cpp), a C++ implementation of the Stable Diffusion image generation model
-- [**TanvasTouch**](https://tanvas.co/tanvastouch-sdk-third-party-acknowledgments), a software development kit (SDK) that enables developers to create tactile experiences on touchscreens, allowing users to feel textures and physical sensations in a digital environment
+- [**Peer**](https://support.peer.inc/hc/en-us/articles/17261335054235-Licenses): a platform offering personalized AI assistants for interactive learning and creative collaboration
+- [**stable-diffusion.cpp**](https://github.com/leejet/stable-diffusion.cpp): a C++ implementation of the Stable Diffusion image generation model
+- [**TanvasTouch**](https://tanvas.co/tanvastouch-sdk-third-party-acknowledgments): a software development kit (SDK) that enables developers to create tactile experiences on touchscreens, allowing users to feel textures and physical sensations in a digital environment
- [**TensorFlow**](https://github.com/tensorflow/tensorflow), a machine learning framework that facilitates the development and training of models, supporting data serialization and efficient data exchange between components
## Scientific Research and Analysis
- [**BLACK**](https://www.black-sat.org/en/stable/installation/linux.html), a bounded linear temporal logic (LTL) satisfiability checker
- [**CERN Atlas Athena**](https://gitlab.cern.ch/atlas/athena/-/blob/main/Control/PerformanceMonitoring/PerfMonComps/src/PerfMonMTSvc.h), a software framework used in the ATLAS experiment at the Large Hadron Collider (LHC) for performance monitoring
-- [**ICU**](https://github.com/unicode-org/icu), the International Components for Unicode, a mature library for software globalization and multilingual support
-- [**KAMERA**](https://github.com/Kitware/kamera), a platform for synchronized data collection and real-time deep learning to map marine species like polar bears and seals, aiding Arctic ecosystem research
-- [**KiCad**](https://gitlab.com/kicad/code/kicad/-/tree/master/thirdparty/nlohmann_json), a free and open-source software suite for electronic design automation
-- [**Maple**](https://www.maplesoft.com/support/help/Maple/view.aspx?path=copyright), a symbolic and numeric computing environment for advanced mathematical modeling and analysis
-- [**MeVisLab**](https://mevislabdownloads.mevis.de/docs/current/MeVis/ThirdParty/Documentation/Publish/ThirdPartyReference/index.html), a software framework for medical image processing and visualization.
-- [**OpenPMD API**](https://openpmd-api.readthedocs.io/en/0.8.0-alpha/backends/json.html), a versatile programming interface for accessing and managing scientific data, designed to facilitate the efficient storage, retrieval, and sharing of simulation data across various applications and platforms
-- [**ParaView**](https://github.com/Kitware/ParaView), an open-source tool for large-scale data visualization and analysis across various scientific domains
-- [**QGIS**](https://gitlab.b-data.ch/qgis/qgis/-/blob/backport-57658-to-release-3_34/external/nlohmann/json.hpp), a free and open-source geographic information system (GIS) application that allows users to create, edit, visualize, and analyze geospatial data across a variety of formats
-- [**VTK**](https://github.com/Kitware/VTK), a software library for 3D computer graphics, image processing, and visualization
-- [**VolView**](https://github.com/Kitware/VolView), a lightweight application for interactive visualization and analysis of 3D medical imaging data.
+- [**KAMERA**](https://github.com/Kitware/kamera): a platform for synchronized data collection and real-time deep learning to map marine species like polar bears and seals, aiding Arctic ecosystem research
+- [**KiCad**](https://gitlab.com/kicad/code/kicad/-/tree/master/thirdparty/nlohmann_json): a free and open-source software suite for electronic design automation
+- [**MeVisLab**](https://mevislabdownloads.mevis.de/docs/current/MeVis/ThirdParty/Documentation/Publish/ThirdPartyReference/index.html): a software framework for medical image processing and visualization.
+- [**OpenPMD API**](https://openpmd-api.readthedocs.io/en/0.8.0-alpha/backends/json.html): a versatile programming interface for accessing and managing scientific data, designed to facilitate the efficient storage, retrieval, and sharing of simulation data across various applications and platforms
+- [**ParaView**](https://github.com/Kitware/ParaView): an open-source tool for large-scale data visualization and analysis across various scientific domains
+- [**QGIS**](https://gitlab.b-data.ch/qgis/qgis/-/blob/backport-57658-to-release-3_34/external/nlohmann/json.hpp): a free and open-source geographic information system (GIS) application that allows users to create, edit, visualize, and analyze geospatial data across a variety of formats
+- [**VTK**](https://github.com/Kitware/VTK): a software library for 3D computer graphics, image processing, and visualization
+- [**VolView**](https://github.com/Kitware/VolView): a lightweight application for interactive visualization and analysis of 3D medical imaging data.
## Business and Productivity Software
- [**ArcGIS PRO**](https://www.esri.com/content/dam/esrisites/en-us/media/legal/open-source-acknowledgements/arcgis-pro-2-8-attribution-report.html), a desktop geographic information system (GIS) application developed by Esri for mapping and spatial analysis
- [**Autodesk Desktop**](https://damassets.autodesk.net/content/dam/autodesk/www/Company/legal-notices-trademarks/autodesk-desktop-platform-components/internal-autodesk-components-web-page-2023.pdf), a software platform developed by Autodesk for creating and managing desktop applications and services
-- [**Check Point**](https://www.checkpoint.com/about-us/copyright-and-trademarks/), a cybersecurity company specializing in threat prevention and network security solutions, offering a range of products designed to protect enterprises from cyber threats and ensure data integrity
+- [**Check Point**](https://www.checkpoint.com/about-us/copyright-and-trademarks/): a cybersecurity company specializing in threat prevention and network security solutions, offering a range of products designed to protect enterprises from cyber threats and ensure data integrity
- [**Microsoft Office for Mac**](https://officecdnmac.microsoft.com/pr/legal/mac/OfficeforMacAttributions.html), a suite of productivity applications developed by Microsoft for macOS, including tools for word processing, spreadsheets, and presentations
- [**Microsoft Teams**](https://www.microsoft.com/microsoft-teams/), a team collaboration application offering workspace chat and video conferencing, file storage, and integration of proprietary and third-party applications and services
-- [**Nexthink Infinity**](https://docs.nexthink.com/legal/services-terms/experience-open-source-software-licenses/infinity-2022.8-software-licenses), a digital employee experience management platform for monitoring and improving IT performance
-- [**Sophos Connect Client**](https://docs.sophos.com/nsg/licenses/SophosConnect/SophosConnectAttribution.html), a secure VPN client from Sophos that allows remote users to connect to their corporate network, ensuring secure access to resources and data
-- [**Stonebranch**](https://stonebranchdocs.atlassian.net/wiki/spaces/UA77/pages/799545647/Licenses+for+Third-Party+Libraries), a cloud-based cybersecurity solution that integrates backup, disaster recovery, and cybersecurity features to protect data and ensure business continuity for organizations
-- [**Tablecruncher**](https://tablecruncher.com/), a data analysis tool that allows users to import, analyze, and visualize spreadsheet data, offering interactive features for better insights and decision-making
+- [**Nexthink Infinity**](https://docs.nexthink.com/legal/services-terms/experience-open-source-software-licenses/infinity-2022.8-software-licenses): a digital employee experience management platform for monitoring and improving IT performance
+- [**Sophos Connect Client**](https://docs.sophos.com/nsg/licenses/SophosConnect/SophosConnectAttribution.html): a secure VPN client from Sophos that allows remote users to connect to their corporate network, ensuring secure access to resources and data
+- [**Stonebranch**](https://stonebranchdocs.atlassian.net/wiki/spaces/UA77/pages/799545647/Licenses+for+Third-Party+Libraries): a cloud-based cybersecurity solution that integrates backup, disaster recovery, and cybersecurity features to protect data and ensure business continuity for organizations
+- [**Tablecruncher**](https://tablecruncher.com/): a data analysis tool that allows users to import, analyze, and visualize spreadsheet data, offering interactive features for better insights and decision-making
- [**magicplan**](https://help.magicplan.app/acknowledgments), a mobile application for creating floor plans and interior designs using augmented reality
## Databases and Big Data
-- [**ADIOS2**](https://code.ornl.gov/ecpcitest/adios2/-/tree/pr4285_FFSUpstream/thirdparty/nlohmann_json?ref_type=heads), a data management framework designed for high-performance input and output operations
-- [**Cribl Stream**](https://docs.cribl.io/stream/third-party-current-list/), a real-time data processing platform that enables organizations to collect, route, and transform observability data, enhancing visibility and insights into their systems
+- [**ADIOS2**](https://code.ornl.gov/ecpcitest/adios2/-/tree/pr4285_FFSUpstream/thirdparty/nlohmann_json?ref_type=heads): a data management framework designed for high-performance input and output operations
+- [**Cribl Stream**](https://docs.cribl.io/stream/third-party-current-list/): a real-time data processing platform that enables organizations to collect, route, and transform observability data, enhancing visibility and insights into their systems
- [**DB Browser for SQLite**](https://github.com/sqlitebrowser/sqlitebrowser), a visual open-source tool for creating, designing, and editing SQLite database files
- [**MySQL Connector/C++**](https://docs.oracle.com/cd/E17952_01/connector-cpp-9.1-license-com-en/license-opentelemetry-cpp-com.html), a C++ library for connecting and interacting with MySQL databases
- [**MySQL NDB Cluster**](https://downloads.mysql.com/docs/licenses/cluster-9.0-com-en.pdf), a distributed database system that provides high availability and scalability for MySQL databases
-- [**MySQL Shell**](https://downloads.mysql.com/docs/licenses/mysql-shell-8.0-gpl-en.pdf), an advanced client and code editor for interacting with MySQL servers, supporting SQL, Python, and JavaScript
- [**PrestoDB**](https://github.com/prestodb/presto), a distributed SQL query engine designed for large-scale data analytics, originally developed by Facebook
- [**ROOT Data Analysis Framework**](https://root.cern/doc/v614/classnlohmann_1_1basic__json.html), an open-source data analysis framework widely used in high-energy physics and other fields for data processing and visualization
-- [**WiredTiger**](https://github.com/wiredtiger/wiredtiger), a high-performance storage engine for databases, offering support for compression, concurrency, and checkpointing
## Simulation and Modeling
@@ -145,33 +134,30 @@ the result of an internet search. If you know further customers of the library,
- [**azul**](https://pure.tudelft.nl/ws/files/85338589/tgis.12673.pdf), a fast and efficient 3D city model viewer designed for visualizing urban environments and spatial data
- [**Blender**](https://projects.blender.org/blender/blender/search?q=nlohmann), a free and open-source 3D creation suite for modeling, animation, rendering, and more
- [**cpplot**](https://cpplot.readthedocs.io/en/latest/library_api/function_eigen_8h_1ac080eac0541014c5892a55e41bf785e6.html), a library for creating interactive graphs and charts in C++, which can be viewed in web browsers
-- [**Foundry Nuke**](https://learn.foundry.com/nuke/content/misc/studio_third_party_libraries.html), a powerful node-based digital compositing and visual effects application used in film and television post-production
-- [**GAMS**](https://www.gams.com/47/docs/THIRDPARTY.html), a high-performance mathematical modeling system for optimization and decision support
-- [**Kitware SMTK**](https://github.com/Kitware/SMTK), a software toolkit for managing simulation models and workflows in scientific and engineering applications
-- [**M-Star**](https://docs.mstarcfd.com/3_Licensing/thirdparty-licenses.html), a computational fluid dynamics software for simulating and analyzing fluid flow
-- [**MapleSim CAD Toolbox**](https://www.maplesoft.com/support/help/MapleSim/view.aspx?path=CADToolbox/copyright), a software extension for MapleSim that integrates CAD models, allowing users to import, manipulate, and analyze 3D CAD data within the MapleSim environment for enhanced modeling and simulation
- [**NVIDIA Omniverse**](https://docs.omniverse.nvidia.com/composer/latest/common/product-licenses/usd-explorer/usd-explorer-2023.2.0-licenses-manifest.html), a platform for 3D content creation and collaboration that enables real-time simulations and interactive experiences across various industries
- [**Pixar Renderman**](https://rmanwiki-26.pixar.com/space/REN26/19662083/Legal+Notice), a photorealistic 3D rendering software developed by Pixar, widely used in the film industry for creating high-quality visual effects and animations
- [**ROS - Robot Operating System**](http://docs.ros.org/en/noetic/api/behaviortree_cpp/html/json_8hpp_source.html), a set of software libraries and tools that assist in developing robot applications
- [**UBS**](https://www.ubs.com/), a multinational financial services and banking company
+- [**GAMS**](https://www.gams.com/47/docs/THIRDPARTY.html): a high-performance mathematical modeling system for optimization and decision support
+- [**M-Star**](https://docs.mstarcfd.com/3_Licensing/thirdparty-licenses.html): a computational fluid dynamics software for simulating and analyzing fluid flow
+- [**MapleSim CAD Toolbox**](https://www.maplesoft.com/support/help/MapleSim/view.aspx?path=CADToolbox/copyright): a software extension for MapleSim that integrates CAD models, allowing users to import, manipulate, and analyze 3D CAD data within the MapleSim environment for enhanced modeling and simulation
+- [**Kitware SMTK**](https://github.com/Kitware/SMTK): a software toolkit for managing simulation models and workflows in scientific and engineering applications
## Enterprise and Cloud Applications
-- [**Acronis Cyber Protect Cloud**](https://care.acronis.com/s/article/59533-Third-party-software-used-in-Acronis-Cyber-Protect-Cloud?language=en_US), an all-in-one data protection solution that combines backup, disaster recovery, and cybersecurity to safeguard business data from threats like ransomware
-- [**Baereos**](https://gitlab.tiger-computing.co.uk/packages/bareos/-/blob/tiger/bullseye/third-party/CLI11/examples/json.cpp), a backup solution that provides data protection and recovery options for various environments, including physical and virtual systems
+- [**Acronis Cyber Protect Cloud**](https://care.acronis.com/s/article/59533-Third-party-software-used-in-Acronis-Cyber-Protect-Cloud?language=en_US): an all-in-one data protection solution that combines backup, disaster recovery, and cybersecurity to safeguard business data from threats like ransomware
+- [**Baereos**](https://gitlab.tiger-computing.co.uk/packages/bareos/-/blob/tiger/bullseye/third-party/CLI11/examples/json.cpp): a backup solution that provides data protection and recovery options for various environments, including physical and virtual systems
- [**Bitdefender Home Scanner**](https://www.bitdefender.de/site/Main/view/home-scanner-open-source.html), a tool from Bitdefender that scans devices for malware and security threats, providing a safeguard against potential online dangers
-- [**Citrix Provisioning**](https://docs.citrix.com/en-us/provisioning/2203-ltsr/downloads/pvs-third-party-notices-2203.pdf), a solution that streamlines the delivery of virtual desktops and applications by allowing administrators to manage and provision resources efficiently across multiple environments
+- [**Citrix Provisioning**](https://docs.citrix.com/en-us/provisioning/2203-ltsr/downloads/pvs-third-party-notices-2203.pdf): a solution that streamlines the delivery of virtual desktops and applications by allowing administrators to manage and provision resources efficiently across multiple environments
- [**Citrix Virtual Apps and Desktops**](https://docs.citrix.com/en-us/citrix-virtual-apps-desktops/2305/downloads/third-party-notices-apps-and-desktops.pdf), a solution from Citrix that delivers virtual apps and desktops
-- [**Cyberarc**](https://docs.cyberark.com/Downloads/Legal/Privileged%20Session%20Manager%20for%20SSH%20Third-Party%20Notices.pdf), a security solution that specializes in privileged access management, enabling organizations to control and monitor access to critical systems and data, thereby enhancing overall cybersecurity posture
-- [**Egnyte Desktop**](https://helpdesk.egnyte.com/hc/en-us/articles/360007071732-Third-Party-Software-Acknowledgements), a secure cloud storage solution designed for businesses, enabling file sharing, collaboration, and data management across teams while ensuring compliance and data protection
-- [**Elster**](https://www.secunet.com/en/about-us/press/article/elstersecure-bietet-komfortablen-login-ohne-passwort-dank-secunet-protect4use), a digital platform developed by German tax authorities for secure and efficient electronic tax filing and management using secunet protect4use
+- [**Cyberarc**](https://docs.cyberark.com/Downloads/Legal/Privileged%20Session%20Manager%20for%20SSH%20Third-Party%20Notices.pdf): a security solution that specializes in privileged access management, enabling organizations to control and monitor access to critical systems and data, thereby enhancing overall cybersecurity posture
+- [**Elster**](https://www.secunet.com/en/about-us/press/article/elstersecure-bietet-komfortablen-login-ohne-passwort-dank-secunet-protect4use): a digital platform developed by German tax authorities for secure and efficient electronic tax filing and management using secunet protect4use
+- [**Egnyte Desktop**](https://helpdesk.egnyte.com/hc/en-us/articles/360007071732-Third-Party-Software-Acknowledgements): a secure cloud storage solution designed for businesses, enabling file sharing, collaboration, and data management across teams while ensuring compliance and data protection
- [**Ethereum Solidity**](https://github.com/ethereum/solidity), a high-level, object-oriented programming language designed for implementing smart contracts on the Ethereum platform
-- [**Inciga**](https://fossies.org/linux/icinga2/third-party/nlohmann_json/json.hpp), a monitoring tool for IT infrastructure, designed to provide insights into system performance and availability through customizable dashboards and alerts
-- [**Intel Accelerator Management Daemon for VMware ESXi**](https://downloadmirror.intel.com/772507/THIRD-PARTY.txt), a management tool designed for monitoring and controlling Intel hardware accelerators within VMware ESXi environments, optimizing performance and resource allocation
+- [**Inciga**](https://fossies.org/linux/icinga2/third-party/nlohmann_json/json.hpp): a monitoring tool for IT infrastructure, designed to provide insights into system performance and availability through customizable dashboards and alerts
+- [**Intel Accelerator Management Daemon for VMware ESXi**](https://downloadmirror.intel.com/772507/THIRD-PARTY.txt): a management tool designed for monitoring and controlling Intel hardware accelerators within VMware ESXi environments, optimizing performance and resource allocation
- [**Juniper Identity Management Service**](https://www.juniper.net/documentation/us/en/software/jims/jims-guide/jims-guide.pdf)
- [**Microsoft Azure IoT SDK**](https://library.e.abb.com/public/2779c5f85f30484192eb3cb3f666a201/IP%20Gateway%20Open%20License%20Declaration_9AKK108467A4095_Rev_C.pdf), a collection of tools and libraries to help developers connect, build, and deploy Internet of Things (IoT) solutions on the Azure cloud platform
- [**Microsoft WinGet**](https://github.com/microsoft/winget-cli), a command-line utility included in the Windows Package Manager
-- [**plexusAV**](https://www.sisme.com/media/10994/manual_plexusav-p-avn-4-form8244-c.pdf), a high-performance AV-over-IP transceiver device capable of video encoding and decoding using the IPMX standard
-- [**Pointr**](https://docs-dev.pointr.tech/docs/8.x/Developer%20Portal/Open%20Source%20Licenses/), a platform for indoor positioning and navigation solutions, offering tools and SDKs for developers to create location-based applications
-- [**secunet protect4use**](https://www.secunet.com/en/about-us/press/article/elstersecure-bietet-komfortablen-login-ohne-passwort-dank-secunet-protect4use), a secure, passwordless multifactor authentication solution that transforms smartphones into digital keyrings, ensuring high security for online services and digital identities
-- [**Sencore MRD 7000**](https://www.foccusdigital.com/wp-content/uploads/2025/03/MRD-7000-Manual-8175V.pdf), a professional multi-channel receiver and decoder supporting UHD and HD stream decoding
+- [**Pointr**](https://docs-dev.pointr.tech/docs/8.x/Developer%20Portal/Open%20Source%20Licenses/): a platform for indoor positioning and navigation solutions, offering tools and SDKs for developers to create location-based applications
+- [**secunet protect4use**](https://www.secunet.com/en/about-us/press/article/elstersecure-bietet-komfortablen-login-ohne-passwort-dank-secunet-protect4use): a secure, passwordless multifactor authentication solution that transforms smartphones into digital keyrings, ensuring high security for online services and digital identities
diff --git a/nlohmann_json/docs/mkdocs/docs/home/exceptions.md b/nlohmann_json/docs/mkdocs/docs/home/exceptions.md
index cfa4f57a..ea43e597 100644
--- a/nlohmann_json/docs/mkdocs/docs/home/exceptions.md
+++ b/nlohmann_json/docs/mkdocs/docs/home/exceptions.md
@@ -520,7 +520,7 @@ The order of object iterators cannot be compared, because JSON objects are unord
### json.exception.invalid_iterator.214
-Cannot retrieve value from iterator: The iterator either refers to a null value, or it refers to a primitive type (number, boolean, or string), but does not match the iterator returned by `begin()`.
+Cannot get value for iterator: Either the iterator belongs to a null value or it is an iterator to a primitive type (number, boolean, or string), but the iterator is different to `begin()`.
!!! failure "Example message"
diff --git a/nlohmann_json/docs/mkdocs/docs/home/faq.md b/nlohmann_json/docs/mkdocs/docs/home/faq.md
index 74709bac..6a5ca396 100644
--- a/nlohmann_json/docs/mkdocs/docs/home/faq.md
+++ b/nlohmann_json/docs/mkdocs/docs/home/faq.md
@@ -67,7 +67,7 @@ The library supports **Unicode input** as follows:
- The strings stored in the library are UTF-8 encoded. When using the default string type (`std::string`), note that its length/size functions return the number of stored bytes rather than the number of characters or glyphs.
- When you store strings with different encodings in the library, calling [`dump()`](https://nlohmann.github.io/json/classnlohmann_1_1basic__json_a50ec80b02d0f3f51130d4abb5d1cfdc5.html#a50ec80b02d0f3f51130d4abb5d1cfdc5) may throw an exception unless `json::error_handler_t::replace` or `json::error_handler_t::ignore` are used as error handlers.
-In most cases, the parser is right to complain, because the input is not UTF-8 encoded. This is especially true for Microsoft Windows, where Latin-1 or ISO 8859-1 is often the standard encoding.
+In most cases, the parser is right to complain, because the input is not UTF-8 encoded. This is especially true for Microsoft Windows where Latin-1 or ISO 8859-1 is often the standard encoding.
### Wide string handling
diff --git a/nlohmann_json/docs/mkdocs/docs/home/releases.md b/nlohmann_json/docs/mkdocs/docs/home/releases.md
index c7b343ca..af4f3e61 100644
--- a/nlohmann_json/docs/mkdocs/docs/home/releases.md
+++ b/nlohmann_json/docs/mkdocs/docs/home/releases.md
@@ -1071,7 +1071,7 @@ This release combines a lot of small fixes and improvements. The release is back
- Improved the performance of the serialization by avoiding the re-creation of a locale object.
- Fixed two MSVC warnings. Compiling the test suite with `/Wall` now only warns about non-inlined functions (C4710) and the deprecation of the constructor from input-stream (C4996).
- Some project internals:
- -
The project has qualified for the [Core Infrastructure Initiative Best Practices Badge](https://bestpractices.coreinfrastructure.org/projects/289). While most requirements where already satisfied, some led to more explicit documentation of quality-ensuring procedures. For instance, static analysis is now executed with every commit on the build server. Furthermore, the [contribution guidelines document](https://github.com/nlohmann/json/blob/develop/.github/CONTRIBUTING.md) how to communicate security issues privately.
+ -
The project has qualified for the [Core Infrastructure Initiative Best Practices Badge](https://bestpractices.coreinfrastructure.org/projects/289). While most requirements where already satisfied, some led to a more explicit documentation of quality-ensuring procedures. For instance, static analysis is now executed with every commit on the build server. Furthermore, the [contribution guidelines document](https://github.com/nlohmann/json/blob/develop/.github/CONTRIBUTING.md) how to communicate security issues privately.
- The test suite has been overworked and split into several files to allow for faster compilation and analysis. The execute the test suite, simply execute `make check`.
- The continuous integration with [Travis](https://travis-ci.org/nlohmann/json) was extended with Clang versions 3.6.0 to 3.8.1 and now includes 18 different compiler/OS combinations.
- An 11-day run of [American fuzzy lop](http://lcamtuf.coredump.cx/afl/) checked 962 million inputs on the parser and found no issue.
diff --git a/nlohmann_json/docs/mkdocs/docs/images/customers.png b/nlohmann_json/docs/mkdocs/docs/images/customers.png
index 0334c4f3..acba0349 100644
Binary files a/nlohmann_json/docs/mkdocs/docs/images/customers.png and b/nlohmann_json/docs/mkdocs/docs/images/customers.png differ
diff --git a/nlohmann_json/docs/mkdocs/docs/integration/bazel/BUILD b/nlohmann_json/docs/mkdocs/docs/integration/bazel/BUILD
index 675a95ee..ec223f14 100644
--- a/nlohmann_json/docs/mkdocs/docs/integration/bazel/BUILD
+++ b/nlohmann_json/docs/mkdocs/docs/integration/bazel/BUILD
@@ -1,5 +1,5 @@
cc_binary(
name = "main",
srcs = ["example.cpp"],
- deps = ["//nlohmann_json/single_include/nlohmann:nlohmann_json"],
+ deps = ["@nlohmann_json//:json"],
)
diff --git a/nlohmann_json/docs/mkdocs/mkdocs.yml b/nlohmann_json/docs/mkdocs/mkdocs.yml
index ad936bef..7a89219f 100644
--- a/nlohmann_json/docs/mkdocs/mkdocs.yml
+++ b/nlohmann_json/docs/mkdocs/mkdocs.yml
@@ -16,14 +16,14 @@ theme:
name: material
language: en
palette:
- - media: "(prefers-color-scheme: light)"
+ - media: '(prefers-color-scheme: light)'
scheme: default
primary: indigo
accent: indigo
toggle:
icon: material/brightness-7
name: Switch to dark mode
- - media: "(prefers-color-scheme: dark)"
+ - media: '(prefers-color-scheme: dark)'
scheme: slate
primary: indigo
accent: indigo
@@ -67,7 +67,6 @@ nav:
- features/binary_formats/ubjson.md
- features/binary_values.md
- features/comments.md
- - features/trailing_commas.md
- Element Access:
- features/element_access/index.md
- features/element_access/unchecked_access.md
@@ -77,7 +76,7 @@ nav:
- features/json_pointer.md
- features/json_patch.md
- features/merge_patch.md
- - "nlohmann Namespace": features/namespace.md
+ - 'nlohmann Namespace': features/namespace.md
- features/object_order.md
- Parsing:
- features/parsing/index.md
@@ -99,197 +98,197 @@ nav:
- integration/pkg-config.md
- API Documentation:
- basic_json:
- - "Overview": api/basic_json/index.md
- - "(Constructor)": api/basic_json/basic_json.md
- - "(Destructor)": api/basic_json/~basic_json.md
- - "accept": api/basic_json/accept.md
- - "array": api/basic_json/array.md
- - "array_t": api/basic_json/array_t.md
- - "at": api/basic_json/at.md
- - "back": api/basic_json/back.md
- - "begin": api/basic_json/begin.md
- - "binary": api/basic_json/binary.md
- - "binary_t": api/basic_json/binary_t.md
- - "boolean_t": api/basic_json/boolean_t.md
- - "cbegin": api/basic_json/cbegin.md
- - "cbor_tag_handler_t": api/basic_json/cbor_tag_handler_t.md
- - "cend": api/basic_json/cend.md
- - "clear": api/basic_json/clear.md
- - "contains": api/basic_json/contains.md
- - "count": api/basic_json/count.md
- - "crbegin": api/basic_json/crbegin.md
- - "crend": api/basic_json/crend.md
- - "default_object_comparator_t": api/basic_json/default_object_comparator_t.md
- - "diff": api/basic_json/diff.md
- - "dump": api/basic_json/dump.md
- - "emplace": api/basic_json/emplace.md
- - "emplace_back": api/basic_json/emplace_back.md
- - "empty": api/basic_json/empty.md
- - "end": api/basic_json/end.md
- - "end_pos": api/basic_json/end_pos.md
- - "erase": api/basic_json/erase.md
- - "error_handler_t": api/basic_json/error_handler_t.md
- - "exception": api/basic_json/exception.md
- - "find": api/basic_json/find.md
- - "flatten": api/basic_json/flatten.md
- - "from_bjdata": api/basic_json/from_bjdata.md
- - "from_bson": api/basic_json/from_bson.md
- - "from_cbor": api/basic_json/from_cbor.md
- - "from_msgpack": api/basic_json/from_msgpack.md
- - "from_ubjson": api/basic_json/from_ubjson.md
- - "front": api/basic_json/front.md
- - "get": api/basic_json/get.md
- - "get_allocator": api/basic_json/get_allocator.md
- - "get_binary": api/basic_json/get_binary.md
- - "get_ptr": api/basic_json/get_ptr.md
- - "get_ref": api/basic_json/get_ref.md
- - "get_to": api/basic_json/get_to.md
- - "std::hash<basic_json>": api/basic_json/std_hash.md
- - "input_format_t": api/basic_json/input_format_t.md
- - "insert": api/basic_json/insert.md
- - "invalid_iterator": api/basic_json/invalid_iterator.md
- - "is_array": api/basic_json/is_array.md
- - "is_binary": api/basic_json/is_binary.md
- - "is_boolean": api/basic_json/is_boolean.md
- - "is_discarded": api/basic_json/is_discarded.md
- - "is_null": api/basic_json/is_null.md
- - "is_number": api/basic_json/is_number.md
- - "is_number_float": api/basic_json/is_number_float.md
- - "is_number_integer": api/basic_json/is_number_integer.md
- - "is_number_unsigned": api/basic_json/is_number_unsigned.md
- - "is_object": api/basic_json/is_object.md
- - "is_primitive": api/basic_json/is_primitive.md
- - "is_string": api/basic_json/is_string.md
- - "is_structured": api/basic_json/is_structured.md
- - "items": api/basic_json/items.md
- - "json_base_class_t": api/basic_json/json_base_class_t.md
- - "json_serializer": api/basic_json/json_serializer.md
- - "max_size": api/basic_json/max_size.md
- - "meta": api/basic_json/meta.md
- - "merge_patch": api/basic_json/merge_patch.md
- - "number_float_t": api/basic_json/number_float_t.md
- - "number_integer_t": api/basic_json/number_integer_t.md
- - "number_unsigned_t": api/basic_json/number_unsigned_t.md
- - "object": api/basic_json/object.md
- - "object_comparator_t": api/basic_json/object_comparator_t.md
- - "object_t": api/basic_json/object_t.md
- - "operator ValueType": api/basic_json/operator_ValueType.md
- - "operator value_t": api/basic_json/operator_value_t.md
- - "operator[]": api/basic_json/operator[].md
- - "operator=": api/basic_json/operator=.md
- - "operator+=": api/basic_json/operator+=.md
- - "operator==": api/basic_json/operator_eq.md
- - "operator!=": api/basic_json/operator_ne.md
- - "operator<": api/basic_json/operator_lt.md
- - "operator>": api/basic_json/operator_gt.md
- - "operator<=": api/basic_json/operator_le.md
- - "operator>=": api/basic_json/operator_ge.md
- - "operator<=>": api/basic_json/operator_spaceship.md
- - "out_of_range": api/basic_json/out_of_range.md
- - "other_error": api/basic_json/other_error.md
- - "parse": api/basic_json/parse.md
- - "parse_error": api/basic_json/parse_error.md
- - "parse_event_t": api/basic_json/parse_event_t.md
- - "parser_callback_t": api/basic_json/parser_callback_t.md
- - "patch": api/basic_json/patch.md
- - "patch_inplace": api/basic_json/patch_inplace.md
- - "push_back": api/basic_json/push_back.md
- - "rbegin": api/basic_json/rbegin.md
- - "rend": api/basic_json/rend.md
- - "sax_parse": api/basic_json/sax_parse.md
- - "size": api/basic_json/size.md
- - "start_pos": api/basic_json/start_pos.md
- - "string_t": api/basic_json/string_t.md
- - "swap": api/basic_json/swap.md
- - "std::swap<basic_json>": api/basic_json/std_swap.md
- - "to_bjdata": api/basic_json/to_bjdata.md
- - "to_bson": api/basic_json/to_bson.md
- - "to_cbor": api/basic_json/to_cbor.md
- - "to_msgpack": api/basic_json/to_msgpack.md
- - "to_string": api/basic_json/to_string.md
- - "to_ubjson": api/basic_json/to_ubjson.md
- - "type": api/basic_json/type.md
- - "type_error": api/basic_json/type_error.md
- - "type_name": api/basic_json/type_name.md
- - "unflatten": api/basic_json/unflatten.md
- - "update": api/basic_json/update.md
- - "value": api/basic_json/value.md
- - "value_t": api/basic_json/value_t.md
+ - 'Overview': api/basic_json/index.md
+ - '(Constructor)': api/basic_json/basic_json.md
+ - '(Destructor)': api/basic_json/~basic_json.md
+ - 'accept': api/basic_json/accept.md
+ - 'array': api/basic_json/array.md
+ - 'array_t': api/basic_json/array_t.md
+ - 'at': api/basic_json/at.md
+ - 'back': api/basic_json/back.md
+ - 'begin': api/basic_json/begin.md
+ - 'binary': api/basic_json/binary.md
+ - 'binary_t': api/basic_json/binary_t.md
+ - 'boolean_t': api/basic_json/boolean_t.md
+ - 'cbegin': api/basic_json/cbegin.md
+ - 'cbor_tag_handler_t': api/basic_json/cbor_tag_handler_t.md
+ - 'cend': api/basic_json/cend.md
+ - 'clear': api/basic_json/clear.md
+ - 'contains': api/basic_json/contains.md
+ - 'count': api/basic_json/count.md
+ - 'crbegin': api/basic_json/crbegin.md
+ - 'crend': api/basic_json/crend.md
+ - 'default_object_comparator_t': api/basic_json/default_object_comparator_t.md
+ - 'diff': api/basic_json/diff.md
+ - 'dump': api/basic_json/dump.md
+ - 'emplace': api/basic_json/emplace.md
+ - 'emplace_back': api/basic_json/emplace_back.md
+ - 'empty': api/basic_json/empty.md
+ - 'end': api/basic_json/end.md
+ - 'end_pos': api/basic_json/end_pos.md
+ - 'erase': api/basic_json/erase.md
+ - 'error_handler_t': api/basic_json/error_handler_t.md
+ - 'exception': api/basic_json/exception.md
+ - 'find': api/basic_json/find.md
+ - 'flatten': api/basic_json/flatten.md
+ - 'from_bjdata': api/basic_json/from_bjdata.md
+ - 'from_bson': api/basic_json/from_bson.md
+ - 'from_cbor': api/basic_json/from_cbor.md
+ - 'from_msgpack': api/basic_json/from_msgpack.md
+ - 'from_ubjson': api/basic_json/from_ubjson.md
+ - 'front': api/basic_json/front.md
+ - 'get': api/basic_json/get.md
+ - 'get_allocator': api/basic_json/get_allocator.md
+ - 'get_binary': api/basic_json/get_binary.md
+ - 'get_ptr': api/basic_json/get_ptr.md
+ - 'get_ref': api/basic_json/get_ref.md
+ - 'get_to': api/basic_json/get_to.md
+ - 'std::hash<basic_json>': api/basic_json/std_hash.md
+ - 'input_format_t': api/basic_json/input_format_t.md
+ - 'insert': api/basic_json/insert.md
+ - 'invalid_iterator': api/basic_json/invalid_iterator.md
+ - 'is_array': api/basic_json/is_array.md
+ - 'is_binary': api/basic_json/is_binary.md
+ - 'is_boolean': api/basic_json/is_boolean.md
+ - 'is_discarded': api/basic_json/is_discarded.md
+ - 'is_null': api/basic_json/is_null.md
+ - 'is_number': api/basic_json/is_number.md
+ - 'is_number_float': api/basic_json/is_number_float.md
+ - 'is_number_integer': api/basic_json/is_number_integer.md
+ - 'is_number_unsigned': api/basic_json/is_number_unsigned.md
+ - 'is_object': api/basic_json/is_object.md
+ - 'is_primitive': api/basic_json/is_primitive.md
+ - 'is_string': api/basic_json/is_string.md
+ - 'is_structured': api/basic_json/is_structured.md
+ - 'items': api/basic_json/items.md
+ - 'json_base_class_t': api/basic_json/json_base_class_t.md
+ - 'json_serializer': api/basic_json/json_serializer.md
+ - 'max_size': api/basic_json/max_size.md
+ - 'meta': api/basic_json/meta.md
+ - 'merge_patch': api/basic_json/merge_patch.md
+ - 'number_float_t': api/basic_json/number_float_t.md
+ - 'number_integer_t': api/basic_json/number_integer_t.md
+ - 'number_unsigned_t': api/basic_json/number_unsigned_t.md
+ - 'object': api/basic_json/object.md
+ - 'object_comparator_t': api/basic_json/object_comparator_t.md
+ - 'object_t': api/basic_json/object_t.md
+ - 'operator ValueType': api/basic_json/operator_ValueType.md
+ - 'operator value_t': api/basic_json/operator_value_t.md
+ - 'operator[]': api/basic_json/operator[].md
+ - 'operator=': api/basic_json/operator=.md
+ - 'operator+=': api/basic_json/operator+=.md
+ - 'operator==': api/basic_json/operator_eq.md
+ - 'operator!=': api/basic_json/operator_ne.md
+ - 'operator<': api/basic_json/operator_lt.md
+ - 'operator>': api/basic_json/operator_gt.md
+ - 'operator<=': api/basic_json/operator_le.md
+ - 'operator>=': api/basic_json/operator_ge.md
+ - 'operator<=>': api/basic_json/operator_spaceship.md
+ - 'out_of_range': api/basic_json/out_of_range.md
+ - 'other_error': api/basic_json/other_error.md
+ - 'parse': api/basic_json/parse.md
+ - 'parse_error': api/basic_json/parse_error.md
+ - 'parse_event_t': api/basic_json/parse_event_t.md
+ - 'parser_callback_t': api/basic_json/parser_callback_t.md
+ - 'patch': api/basic_json/patch.md
+ - 'patch_inplace': api/basic_json/patch_inplace.md
+ - 'push_back': api/basic_json/push_back.md
+ - 'rbegin': api/basic_json/rbegin.md
+ - 'rend': api/basic_json/rend.md
+ - 'sax_parse': api/basic_json/sax_parse.md
+ - 'size': api/basic_json/size.md
+ - 'start_pos': api/basic_json/start_pos.md
+ - 'string_t': api/basic_json/string_t.md
+ - 'swap': api/basic_json/swap.md
+ - 'std::swap<basic_json>': api/basic_json/std_swap.md
+ - 'to_bjdata': api/basic_json/to_bjdata.md
+ - 'to_bson': api/basic_json/to_bson.md
+ - 'to_cbor': api/basic_json/to_cbor.md
+ - 'to_msgpack': api/basic_json/to_msgpack.md
+ - 'to_string': api/basic_json/to_string.md
+ - 'to_ubjson': api/basic_json/to_ubjson.md
+ - 'type': api/basic_json/type.md
+ - 'type_error': api/basic_json/type_error.md
+ - 'type_name': api/basic_json/type_name.md
+ - 'unflatten': api/basic_json/unflatten.md
+ - 'update': api/basic_json/update.md
+ - 'value': api/basic_json/value.md
+ - 'value_t': api/basic_json/value_t.md
- byte_container_with_subtype:
- - "Overview": api/byte_container_with_subtype/index.md
- - "(constructor)": api/byte_container_with_subtype/byte_container_with_subtype.md
- - "clear_subtype": api/byte_container_with_subtype/clear_subtype.md
- - "has_subtype": api/byte_container_with_subtype/has_subtype.md
- - "set_subtype": api/byte_container_with_subtype/set_subtype.md
- - "subtype": api/byte_container_with_subtype/subtype.md
+ - 'Overview': api/byte_container_with_subtype/index.md
+ - '(constructor)': api/byte_container_with_subtype/byte_container_with_subtype.md
+ - 'clear_subtype': api/byte_container_with_subtype/clear_subtype.md
+ - 'has_subtype': api/byte_container_with_subtype/has_subtype.md
+ - 'set_subtype': api/byte_container_with_subtype/set_subtype.md
+ - 'subtype': api/byte_container_with_subtype/subtype.md
- adl_serializer:
- - "Overview": api/adl_serializer/index.md
- - "from_json": api/adl_serializer/from_json.md
- - "to_json": api/adl_serializer/to_json.md
- - "json": api/json.md
+ - 'Overview': api/adl_serializer/index.md
+ - 'from_json': api/adl_serializer/from_json.md
+ - 'to_json': api/adl_serializer/to_json.md
+ - 'json': api/json.md
- json_pointer:
- - "Overview": api/json_pointer/index.md
- - "(Constructor)": api/json_pointer/json_pointer.md
- - "back": api/json_pointer/back.md
- - "empty": api/json_pointer/empty.md
- - "operator string_t": api/json_pointer/operator_string_t.md
- - "operator==": api/json_pointer/operator_eq.md
- - "operator!=": api/json_pointer/operator_ne.md
- - "operator/": api/json_pointer/operator_slash.md
- - "operator/=": api/json_pointer/operator_slasheq.md
- - "parent_pointer": api/json_pointer/parent_pointer.md
- - "pop_back": api/json_pointer/pop_back.md
- - "push_back": api/json_pointer/push_back.md
- - "string_t": api/json_pointer/string_t.md
- - "to_string": api/json_pointer/to_string.md
+ - 'Overview': api/json_pointer/index.md
+ - '(Constructor)': api/json_pointer/json_pointer.md
+ - 'back': api/json_pointer/back.md
+ - 'empty': api/json_pointer/empty.md
+ - 'operator string_t': api/json_pointer/operator_string_t.md
+ - 'operator==': api/json_pointer/operator_eq.md
+ - 'operator!=': api/json_pointer/operator_ne.md
+ - 'operator/': api/json_pointer/operator_slash.md
+ - 'operator/=': api/json_pointer/operator_slasheq.md
+ - 'parent_pointer': api/json_pointer/parent_pointer.md
+ - 'pop_back': api/json_pointer/pop_back.md
+ - 'push_back': api/json_pointer/push_back.md
+ - 'string_t': api/json_pointer/string_t.md
+ - 'to_string': api/json_pointer/to_string.md
- json_sax:
- - "Overview": api/json_sax/index.md
- - "binary": api/json_sax/binary.md
- - "boolean": api/json_sax/boolean.md
- - "end_array": api/json_sax/end_array.md
- - "end_object": api/json_sax/end_object.md
- - "key": api/json_sax/key.md
- - "null": api/json_sax/null.md
- - "number_float": api/json_sax/number_float.md
- - "number_integer": api/json_sax/number_integer.md
- - "number_unsigned": api/json_sax/number_unsigned.md
- - "parse_error": api/json_sax/parse_error.md
- - "start_array": api/json_sax/start_array.md
- - "start_object": api/json_sax/start_object.md
- - "string": api/json_sax/string.md
- - "operator<<(basic_json), operator<<(json_pointer)": api/operator_ltlt.md
- - "operator>>(basic_json)": api/operator_gtgt.md
+ - 'Overview': api/json_sax/index.md
+ - 'binary': api/json_sax/binary.md
+ - 'boolean': api/json_sax/boolean.md
+ - 'end_array': api/json_sax/end_array.md
+ - 'end_object': api/json_sax/end_object.md
+ - 'key': api/json_sax/key.md
+ - 'null': api/json_sax/null.md
+ - 'number_float': api/json_sax/number_float.md
+ - 'number_integer': api/json_sax/number_integer.md
+ - 'number_unsigned': api/json_sax/number_unsigned.md
+ - 'parse_error': api/json_sax/parse_error.md
+ - 'start_array': api/json_sax/start_array.md
+ - 'start_object': api/json_sax/start_object.md
+ - 'string': api/json_sax/string.md
+ - 'operator<<(basic_json), operator<<(json_pointer)': api/operator_ltlt.md
+ - 'operator>>(basic_json)': api/operator_gtgt.md
- 'operator""_json': api/operator_literal_json.md
- 'operator""_json_pointer': api/operator_literal_json_pointer.md
- - "ordered_json": api/ordered_json.md
- - "ordered_map": api/ordered_map.md
+ - 'ordered_json': api/ordered_json.md
+ - 'ordered_map': api/ordered_map.md
- macros:
- - "Overview": api/macros/index.md
- - "JSON_ASSERT": api/macros/json_assert.md
- - "JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER": api/macros/json_throw_user.md
- - "JSON_DIAGNOSTICS": api/macros/json_diagnostics.md
- - "JSON_DIAGNOSTIC_POSITIONS": api/macros/json_diagnostic_positions.md
- - "JSON_DISABLE_ENUM_SERIALIZATION": api/macros/json_disable_enum_serialization.md
- - "JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20": api/macros/json_has_cpp_11.md
- - "JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM": api/macros/json_has_filesystem.md
- - "JSON_HAS_RANGES": api/macros/json_has_ranges.md
- - "JSON_HAS_STATIC_RTTI": api/macros/json_has_static_rtti.md
- - "JSON_HAS_THREE_WAY_COMPARISON": api/macros/json_has_three_way_comparison.md
- - "JSON_NOEXCEPTION": api/macros/json_noexception.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
- - "JSON_USE_GLOBAL_UDLS": api/macros/json_use_global_udls.md
- - "JSON_USE_IMPLICIT_CONVERSIONS": api/macros/json_use_implicit_conversions.md
- - "JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON": api/macros/json_use_legacy_discarded_value_comparison.md
- - "NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE": api/macros/nlohmann_define_derived_type.md
- - "NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE": api/macros/nlohmann_define_type_intrusive.md
- - "NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE": api/macros/nlohmann_define_type_non_intrusive.md
- - "NLOHMANN_JSON_NAMESPACE": api/macros/nlohmann_json_namespace.md
- - "NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END": api/macros/nlohmann_json_namespace_begin.md
- - "NLOHMANN_JSON_NAMESPACE_NO_VERSION": api/macros/nlohmann_json_namespace_no_version.md
- - "NLOHMANN_JSON_SERIALIZE_ENUM": api/macros/nlohmann_json_serialize_enum.md
- - "NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH": api/macros/nlohmann_json_version_major.md
+ - 'Overview': api/macros/index.md
+ - 'JSON_ASSERT': api/macros/json_assert.md
+ - 'JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER': api/macros/json_throw_user.md
+ - 'JSON_DIAGNOSTICS': api/macros/json_diagnostics.md
+ - 'JSON_DIAGNOSTIC_POSITIONS': api/macros/json_diagnostic_positions.md
+ - 'JSON_DISABLE_ENUM_SERIALIZATION': api/macros/json_disable_enum_serialization.md
+ - 'JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20': api/macros/json_has_cpp_11.md
+ - 'JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM': api/macros/json_has_filesystem.md
+ - 'JSON_HAS_RANGES': api/macros/json_has_ranges.md
+ - 'JSON_HAS_STATIC_RTTI': api/macros/json_has_static_rtti.md
+ - 'JSON_HAS_THREE_WAY_COMPARISON': api/macros/json_has_three_way_comparison.md
+ - 'JSON_NOEXCEPTION': api/macros/json_noexception.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
+ - 'JSON_USE_GLOBAL_UDLS': api/macros/json_use_global_udls.md
+ - 'JSON_USE_IMPLICIT_CONVERSIONS': api/macros/json_use_implicit_conversions.md
+ - 'JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON': api/macros/json_use_legacy_discarded_value_comparison.md
+ - 'NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE': api/macros/nlohmann_define_derived_type.md
+ - 'NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE': api/macros/nlohmann_define_type_intrusive.md
+ - 'NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE': api/macros/nlohmann_define_type_non_intrusive.md
+ - 'NLOHMANN_JSON_NAMESPACE': api/macros/nlohmann_json_namespace.md
+ - 'NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END': api/macros/nlohmann_json_namespace_begin.md
+ - 'NLOHMANN_JSON_NAMESPACE_NO_VERSION': api/macros/nlohmann_json_namespace_no_version.md
+ - 'NLOHMANN_JSON_SERIALIZE_ENUM': api/macros/nlohmann_json_serialize_enum.md
+ - 'NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH': api/macros/nlohmann_json_version_major.md
- Community:
- community/index.md
- "Code of Conduct": community/code_of_conduct.md
@@ -347,7 +346,7 @@ markdown_extensions:
- pymdownx.snippets:
base_path: docs
check_paths: true
- restrict_base_path: false # needed to allow including files from the .github folder
+ restrict_base_path: false # needed to allow including files from the .github folder
auto_append:
- ../includes/glossary.md
@@ -360,12 +359,12 @@ plugins:
- git-revision-date-localized
- redirects:
redirect_maps:
- "api/basic_json/operator_gtgt.md": api/operator_gtgt.md
- "api/basic_json/operator_ltlt.md": api/operator_ltlt.md
- "api/basic_json/operator_literal_json.md": api/operator_literal_json.md
- "api/basic_json/operator_literal_json_pointer.md": api/operator_literal_json_pointer.md
- "api/json_pointer/operator_string.md": api/json_pointer/operator_string_t.md
- "home/code_of_conduct.md": community/code_of_conduct.md
+ 'api/basic_json/operator_gtgt.md': api/operator_gtgt.md
+ 'api/basic_json/operator_ltlt.md': api/operator_ltlt.md
+ 'api/basic_json/operator_literal_json.md': api/operator_literal_json.md
+ 'api/basic_json/operator_literal_json_pointer.md': api/operator_literal_json_pointer.md
+ 'api/json_pointer/operator_string.md': api/json_pointer/operator_string_t.md
+ 'home/code_of_conduct.md': community/code_of_conduct.md
- htmlproofer: # see https://github.com/manuzhang/mkdocs-htmlproofer-plugin
enabled: !ENV [ENABLED_HTMLPROOFER, False]
ignore_urls:
diff --git a/nlohmann_json/docs/mkdocs/requirements.txt b/nlohmann_json/docs/mkdocs/requirements.txt
index 8d03eb59..4e23e1ca 100644
--- a/nlohmann_json/docs/mkdocs/requirements.txt
+++ b/nlohmann_json/docs/mkdocs/requirements.txt
@@ -1,8 +1,8 @@
wheel==0.45.1
mkdocs==1.6.1 # documentation framework
-mkdocs-git-revision-date-localized-plugin==1.4.7 # plugin "git-revision-date-localized"
-mkdocs-material==9.6.14 # theme for mkdocs
+mkdocs-git-revision-date-localized-plugin==1.4.5 # plugin "git-revision-date-localized"
+mkdocs-material==9.6.11 # theme for mkdocs
mkdocs-material-extensions==1.3.1 # extensions
mkdocs-minify-plugin==0.8.0 # plugin "minify"
mkdocs-redirects==1.2.2 # plugin "redirects"
diff --git a/nlohmann_json/docs/mkdocs/scripts/check_structure.py b/nlohmann_json/docs/mkdocs/scripts/check_structure.py
old mode 100644
new mode 100755
diff --git a/nlohmann_json/include/nlohmann/detail/conversions/from_json.hpp b/nlohmann_json/include/nlohmann/detail/conversions/from_json.hpp
index ebd4d393..d647d742 100644
--- a/nlohmann_json/include/nlohmann/detail/conversions/from_json.hpp
+++ b/nlohmann_json/include/nlohmann/detail/conversions/from_json.hpp
@@ -13,6 +13,9 @@
#include // forward_list
#include // inserter, front_inserter, end
#include