[/
    Copyright (c) 2019 Vinnie Falco (vinnie.falco@gmail.com)

    Distributed under the Boost Software License, Version 1.0. (See accompanying
    file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    Official repository: https://github.com/boostorg/json
]

[library Boost.JSON
    [id json]
    [quickbook 1.6]
    [copyright 2019 - 2020 Vinnie Falco]
    [copyright 2020 Krystian Stasiowski]
    [copyright 2022 Dmitry Arkhipov]
    [purpose JSON Library]
    [license
        Distributed under the Boost Software License, Version 1.0.
        (See accompanying file LICENSE_1_0.txt or copy at
        [@http://www.boost.org/LICENSE_1_0.txt])
    ]
    [authors [Falco, Vinnie], [Stasiowski, Krystian], [Arkhipov, Dmitry]]
    [category template]
    [category generic]
]

[template mdash[] '''&mdash; ''']
[template indexterm1[term1] '''<indexterm><primary>'''[term1]'''</primary></indexterm>''']
[template indexterm2[term1 term2] '''<indexterm><primary>'''[term1]'''</primary><secondary>'''[term2]'''</secondary></indexterm>''']

[template include_file[path][^<'''<ulink url="https://github.com/boostorg/json/blob/master/include/'''[path]'''">'''[path]'''</ulink>'''>]]
[template issue[n] '''<ulink url="https://github.com/boostorg/json/issues/'''[n]'''">#'''[n]'''</ulink>''']

[/ Named Requirements ]

[def __Handler__                ['Handler]]

[def __Allocator__              [@https://en.cppreference.com/w/cpp/named_req/Allocator ['Allocator]]]
[def __CopyAssignable__         [@https://en.cppreference.com/w/cpp/named_req/CopyAssignable ['CopyAssignable]]]
[def __CopyConstructible__      [@https://en.cppreference.com/w/cpp/named_req/CopyConstructible ['CopyConstructible]]]
[def __Copyable__               [@https://en.cppreference.com/w/cpp/concepts/copyable ['Copyable]]]
[def __DefaultConstructible__   [@https://en.cppreference.com/w/cpp/named_req/DefaultConstructible ['DefaultConstructible]]]
[def __Hash__                   [@https://en.cppreference.com/w/cpp/named_req/Hash ['Hash]]]
[def __InputIterator__          [@https://en.cppreference.com/w/cpp/named_req/InputIterator ['InputIterator]]]
[def __MoveAssignable__         [@https://en.cppreference.com/w/cpp/named_req/MoveAssignable ['MoveAssignable]]]
[def __MoveConstructible__      [@https://en.cppreference.com/w/cpp/named_req/MoveConstructible ['MoveConstructible]]]
[def __Regular__                [@https://en.cppreference.com/w/cpp/concepts/regular ['Regular]]]
[def __Swappable__              [@https://en.cppreference.com/w/cpp/named_req/Swappable ['Swappable]]]

[def __array__                  [link json.ref.boost__json__array `array`]]
[def __basic_parser__           [link json.ref.boost__json__basic_parser `basic_parser`]]
[def __get__                    [link json.ref.boost__json__get `get`]]
[def __get_null_resource__      [link json.ref.boost__json__get_null_resource `get_null_resource`]]
[def __has_value_from__         [link json.ref.boost__json__has_value_from `has_value_from`]]
[def __has_value_to__           [link json.ref.boost__json__has_value_to `has_value_to`]]
[def __is_deallocate_trivial__  [link json.ref.boost__json__is_deallocate_trivial `is_deallocate_trivial`]]
[def __is_described_class__     [link json.ref.boost__json__is_described_class `is_described_class`]]
[def __is_described_enum__      [link json.ref.boost__json__is_described_enum `is_described_enum`]]
[def __is_map_like__            [link json.ref.boost__json__is_map_like `is_map_like`]]
[def __is_null_like__           [link json.ref.boost__json__is_null_like `is_null_like`]]
[def __is_optional_like__       [link json.ref.boost__json__is_optional_like `is_optional_like`]]
[def __is_path_like__           [link json.ref.boost__json__is_path_like `is_path_like`]]
[def __is_sequence_like__       [link json.ref.boost__json__is_sequence_like `is_sequence_like`]]
[def __is_string_like__         [link json.ref.boost__json__is_string_like `is_string_like`]]
[def __is_tuple_like__          [link json.ref.boost__json__is_tuple_like `is_tuple_like`]]
[def __is_variant_like__        [link json.ref.boost__json__is_variant_like `is_variant_like`]]
[def __key_value_pair__         [link json.ref.boost__json__key_value_pair `key_value_pair`]]
[def __kind__                   [link json.ref.boost__json__kind `kind`]]
[def __make_shared_resource__   [link json.ref.boost__json__make_shared_resource `make_shared_resource`]]
[def __monotonic_resource__     [link json.ref.boost__json__monotonic_resource `monotonic_resource`]]
[def __object__                 [link json.ref.boost__json__object `object`]]
[def __parse__                  [link json.ref.boost__json__parse `parse`]]
[def __parse_into__             [link json.ref.boost__json__parse_into `parse_into`]]
[def __parser__                 [link json.ref.boost__json__parser `parser`]]
[def __parser_for__             [link json.ref.boost__json__parser_for `parser_for`]]
[def __parse_options__          [link json.ref.boost__json__parse_options `parse_options`]]
[def __serialize__              [link json.ref.boost__json__serialize `serialize`]]
[def __serializer__             [link json.ref.boost__json__serializer `serializer`]]
[def __static_resource__        [link json.ref.boost__json__static_resource `static_resource`]]
[def __storage_ptr__            [link json.ref.boost__json__storage_ptr `storage_ptr`]]
[def __stream_parser__          [link json.ref.boost__json__stream_parser `stream_parser`]]
[def __string__                 [link json.ref.boost__json__string `string`]]
[def __string_view__            [link json.ref.boost__json__string_view `string_view`]]
[def __try_value_to__           [link json.ref.boost__json__try_value_to `try_value_to`]]
[def __value__                  [link json.ref.boost__json__value `value`]]
[def __value_to_number__        [link json.ref.boost__json__value.to_number `value::to_number`]]
[def __value_from__             [link json.ref.boost__json__value_from `value_from`]]
[def __value_ref__              [link json.ref.boost__json__value_ref `value_ref`]]
[def __value_stack__            [link json.ref.boost__json__value_stack `value_stack`]]
[def __value_to__               [link json.ref.boost__json__value_to `value_to`]]

[def __default_memory_resource__ [link json.allocators.storage_ptr.default_memory_resource default memory resource]]

[def __error_category__         [@https://boost.org/doc/libs/release/libs/system/doc/html/system.html#ref_error_category `error_category`]]
[def __error_code__             [@https://boost.org/doc/libs/release/libs/system/doc/html/system.html#ref_error_code `error_code`]]
[def __error_condition__        [@https://boost.org/doc/libs/release/libs/system/doc/html/system.html#ref_error_condition `error_condition`]]
[def __memory_resource__        [@https://boost.org/doc/libs/release/doc/html/doxygen/boost_container_header_reference/classboost_1_1container_1_1pmr_1_1memory__resource.html `memory_resource`]]
[def __polymorphic_allocator__  [@https://boost.org/doc/libs/release/doc/html/doxygen/boost_container_header_reference/classboost_1_1container_1_1pmr_1_1polymorphic__allocator.html `polymorphic_allocator`]]
[def __result__                 [@https://boost.org/doc/libs/release/libs/system/doc/html/system.html#ref_resultt_e `result`]]
[def __system_error__           [@https://boost.org/doc/libs/release/libs/system/doc/html/system.html#ref_system_error `system_error`]]

[def __std_array__              [@https://en.cppreference.com/w/cpp/container/array `std::array`]]
[def __initializer_list__       [@https://en.cppreference.com/w/cpp/utility/initializer_list `std::initializer_list`]]
[def __std_complex__            [@https://en.cppreference.com/w/cpp/numeric/complex `std::complex`]]
[def __std_hash__               [@https://en.cppreference.com/w/cpp/utility/hash `std::hash`]]
[def __std_memory_resource__    [@https://en.cppreference.com/w/cpp/memory/memory_resource `std::pmr::memory_resource`]]
[def __std_monostate__          [@https://en.cppreference.com/w/cpp/utility/variant/monostate `std::monostate`]]
[def __std_ostream__            [@https://en.cppreference.com/w/cpp/io/basic_ostream `std::ostream`]]
[def __std_polymorphic_allocator__ [@https://en.cppreference.com/w/cpp/memory/polymorphic_allocator `std::pmr::polymorphic_allocator`]]
[def __std_string__             [@https://en.cppreference.com/w/cpp/string/basic_string `std::string`]]
[def __std_unordered_map__      [@https://en.cppreference.com/w/cpp/container/unordered_map `std::unordered_map`]]
[def __std_uses_allocator__     [@https://en.cppreference.com/w/cpp/memory/uses_allocator `std::uses_allocator`]]
[def __std_vector__             [@https://en.cppreference.com/w/cpp/container/vector `std::vector`]]

[/ Dingbats ]

[def __good__ [role green \u2714]]
[def __bad__  [role red   \u2718]]

[/-----------------------------------------------------------------------------]

[import ../../example/pretty.cpp]
[import ../../example/validate.cpp]
[import ../../example/use_allocator.cpp]
[import ../../example/cbor.cpp]
[import ../../include/boost/json/impl/serialize.ipp]
[import ../../test/doc_background.cpp]
[import ../../test/doc_parsing.cpp]
[import ../../test/doc_quick_look.cpp]
[import ../../test/doc_serializing.cpp]
[import ../../test/doc_storage_ptr.cpp]
[import ../../test/doc_uses_allocator.cpp]
[import ../../test/doc_using_numbers.cpp]
[import ../../test/snippets.cpp]
[import ../../test/doc_types.hpp]
[import ../../test/doc_forward_conversion.cpp]

[include overview.qbk]
[include quick_look.qbk]
[include dom/overview.qbk]
[include conversion/overview.qbk]
[include allocators/overview.qbk]
[include io/overview.qbk]
[include examples.qbk]
[include faq.qbk]
[include benchmarks.qbk]
[include comparison.qbk]

[section:ref Reference]
[xinclude quickref.xml]

[block'''<reference id="json_hidden"><title>This Page Intentionally Left Blank</title>''']
[include reference.qbk]
[block'''</reference>''']

[endsect]

[include release_notes.qbk]

[xinclude index.xml]
