1/****************************************************************************
2**
3** Copyright (C) 2016 Intel Corporation
4**
5** Permission is hereby granted, free of charge, to any person obtaining a copy
6** of this software and associated documentation files (the "Software"), to deal
7** in the Software without restriction, including without limitation the rights
8** to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9** copies of the Software, and to permit persons to whom the Software is
10** furnished to do so, subject to the following conditions:
11**
12** The above copyright notice and this permission notice shall be included in
13** all copies or substantial portions of the Software.
14**
15** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17** FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18** AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19** LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20** OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21** THE SOFTWARE.
22**
23****************************************************************************/
24
25/**
26 * \mainpage
27 * The TinyCBOR $(VERSION) library is a small CBOR encoder and decoder library,
28 * optimized for very fast operation with very small footprint. The main encoder
29 * and decoder functions do not allocate memory.
30 *
31 * TinyCBOR is divided into the following groups of functions and structures:
32 *  - \ref CborGlobals
33 *  - \ref CborEncoding
34 *  - \ref CborParsing
35 *  - \ref CborPretty
36 *  - \ref CborToJson
37 */
38
39/**
40 * \file <cbor.h>
41 * The <cbor.h> is the main header in TinyCBOR and defines the constants used by most functions
42 * as well as the structures for encoding (CborEncoder) and decoding (CborValue).
43 *
44 * \sa <cborjson.h>
45 */
46
47/**
48 * \file <cborjson.h>
49 * The <cborjson.h> file contains the routines that are used to convert a CBOR
50 * data stream into JSON.
51 *
52 * \sa <cbor.h>
53 */
54
55/**
56 * \defgroup CborGlobals Global constants
57 * \brief Constants used by all TinyCBOR function groups.
58 */
59
60/**
61 * \addtogroup CborGlobals
62 * @{
63 */
64
65/**
66 * \var size_t CborIndefiniteLength
67 *
68 * This variable is a constant used to indicate that the length of the map or
69 * array is not yet determined. It is used in functions
70 * cbor_encoder_create_map() and cbor_encoder_create_array()
71 */
72
73/**
74 * \enum CborType
75 * The CborType enum contains the types known to TinyCBOR.
76 *
77 * \value CborIntegerType           Type is an integer value, positive, negative or zero
78 * \value CborByteStringType        Type is a string of arbitrary raw bytes
79 * \value CborTextStringType        Type is a text string encoded in UTF-8
80 * \value CborArrayType             Type is a CBOR array
81 * \value CborMapType               Type is a CBOR map (an associative container with key and value pairs)
82 * \value CborTagType               Type is a CBOR tag (a 64-bit integer describing the item that follows, see CborKnownTags)
83 * \value CborSimpleType            Type is one of CBOR Simple Types
84 * \value CborBooleanType           Type is a boolean (true or false)
85 * \value CborNullType              Type encodes a null
86 * \value CborUndefinedType         Type encodes an undefined value
87 * \value CborHalfFloatType         Type is an IEEE 754 half precision (16-bit) floating point type
88 * \value CborFloatType             Type is an IEEE 754 single precision (32-bit) floating point type
89 * \value CborDoubleType            Type is an IEEE 754 double precision (64-bit) floating point type
90 * \value CborInvalidType           Type is not valid (this value is used to indicate error conditions)
91 */
92
93/**
94 * \enum CborKnownTags
95 * The CborKnownTags enum contains known tags specified in RFC 7049, for use by the application.
96 * TinyCBOR does not usually interpret the meaning of these tags and does not add them to the
97 * output stream, unless specifically instructed to do so in functions for that effect.
98 *
99 * \value CborDateTimeStringTag     Text string contains a date-time encoded in RFC 3339 format, "YYYY-MM-DD hh:mm:ss+zzzz"
100 * \value CborUnixTime_tTag         Number is a Unix time_t quantity, the number of seconds since 1970-01-01 midnight UTC
101 * \value CborPositiveBignumTag     Item is a CBOR byte string encoding a positive integer of arbitrary precision
102 * \value CborNegativeBignumTag     Item is a CBOR byte string encoding a negative integer of arbitrary precision
103 * \value CborDecimalTag            Item is a CBOR array of two integers encoding a fixed-point decimal
104 * \value CborBigfloatTag           Item is a bigfloat
105 * \value CborExpectedBase64urlTag  Item is a CBOR byte string that is expected to be encoded as Base64Url
106 * \value CborExpectedBase64Tag     Item is a CBOR byte string that is expected to be encoded as Base64
107 * \value CborExpectedBase16Tag     Item is a CBOR byte string that is expected to be encoded as Base16 (also known as "hexdump")
108 * \value CborUriTag                Item is a CBOR text string containing an URI (RFC 3986) or IRI (RFC 3987)
109 * \value CborBase64urlTag          Item is a CBOR text string that was encoded as Base64Url
110 * \value CborBase64Tag             Item is a CBOR text string that was encoded as Base64
111 * \value CborRegularExpressionTag  Item is a CBOR text string containing a regular expression
112 * \value CborMimeMessageTag        Item is a CBOR text string containing a MIME message (RFC 2045, 2046, 2047, 2822)
113 * \value CborSignatureTag          Item contains CBOR-encoded data.
114 *                                  This tag is also used as "file magic," marking a file as containing CBOR
115 */
116
117/**
118 * \typedef CborTag
119 * This typedef is an unsigned 64-bit integer. Known CBOR tags can be used from the CborKnownTags enum
120 * but the user application may use other tag values than the ones specified in RFC 7049.
121 */
122
123/** @} */
124