/**
@mainpage Overview
@anchor json
@brief coreJSON Library

<p>
A parser that supports key lookups while also strictly enforcing the ECMA-404 JSON standard.
The library is written in C and designed to be compliant with ISO C90 and MISRA C. It has proven safe memory use
and no heap allocation, making it suitable for IoT microcontrollers, but also fully portable to other platforms.
</p>

@section json_memory_requirements Memory Requirements
@brief Memory requirements of the JSON library.

<table>
    <tr>
        <td colspan="4"><center><b>Code size of coreJSON library files (sizes generated with [GCC for ARM Cortex-M toolchain](https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm/downloads/9-2020-q2-update))</b></center></td>
    </tr>
    <tr>
        <td><b>File</b></td>
        <td><b>No Optimization (asserts enabled)</b></td>
        <td><b>With -O1 Optimization (asserts disabled)</b></td>
        <td><b>With -Os Optimization (asserts disabled)</b></td>
    </tr>
    <tr>
        <td>core_json.c</td>
        <td>9.5K</td>
        <td>4.7K</td>
        <td>3.8K</td>
    </tr>
</table>

@section json_design Design
@brief JSON Library Design

<h3>Memory Usage</h3>
<p>
All functions in the JSON library operate only on the buffers provided and use only
local variables on the stack. In order to support static-only usage, we made a
trade-off to re-parse as necessary so that we would not need to keep state.
</p>

<h3>Parsing Strictness</h3>
<p>
Input validation is necessary for strong security posture. As such, the parser
strictly enforces the ECMA-404 JSON standard. Additionally, JSON documents are
checked for illegal UTF-8 sequences, and strings have unicode hex escapes validated.
</p>

<h3>Compliance & Coverage</h3>
<p>
The JSON library is designed to be compliant with ISO C90 and MISRA C:2012.
All functions are written to have minimal complexity. Unit tests and CBMC proofs
are written to cover every path of execution and achieve 100% branch coverage.
</p>
*/

/**
@page json_functions Functions
@brief Primary functions of the JSON library:<br><br>
@subpage json_validate_function <br>
@subpage json_search_function <br>
@subpage json_searcht_function <br>
@subpage json_searchconst_function <br>
@subpage json_iterate_function <br>

@page json_validate_function JSON_Validate
@snippet core_json.h declare_json_validate
@copydoc JSON_Validate

@page json_search_function JSON_Search
@snippet core_json.h declare_json_search
@copydoc JSON_Search

@page json_searcht_function JSON_SearchT
@snippet core_json.h declare_json_searcht
@copydoc JSON_SearchT

@page json_searchconst_function JSON_SearchConst
@snippet core_json.h declare_json_searchconst
@copydoc JSON_SearchConst

@page json_iterate_function JSON_Iterate
@snippet core_json.h declare_json_iterate
@copydoc JSON_Iterate
*/

<!-- We do not use doxygen ALIASes here because there have been issues in the past versions with "^^" newlines within the alias definition. -->
/**
@defgroup json_enum_types Enumerated Types
@brief Enumerated types of the JSON library

@defgroup json_struct_types Struct Types
@brief Struct types of the JSON library
*/
