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