1Type 5 – Maps
2=============================
3
4CBOR maps are the plain old associate hash maps known from JSON and many other formats and languages, with one exception: any CBOR data item can be a key, not just strings. This is somewhat unusual and you, as an application developer, should keep that in mind.
5
6Maps can be either definite or indefinite, in much the same way as :doc:`type_4`.
7
8==================================  =====================================================================================
9Corresponding :type:`cbor_type`     ``CBOR_TYPE_MAP``
10Number of allocations (definite)    Two plus any manipulations with the data
11Number of allocations (indefinite)  Two plus logarithmically many
12                                    reallocations relative to additions
13Storage requirements (definite)     ``sizeof(cbor_pair) * size + sizeof(cbor_item_t)``
14Storage requirements (indefinite)   ``<= sizeof(cbor_item_t) + sizeof(cbor_pair) * size * BUFFER_GROWTH``
15==================================  =====================================================================================
16
17Streaming maps
18~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
19
20Please refer to :doc:`/streaming`.
21
22Getting metadata
23~~~~~~~~~~~~~~~~~
24.. doxygenfunction:: cbor_map_size
25.. doxygenfunction:: cbor_map_allocated
26.. doxygenfunction:: cbor_map_is_definite
27.. doxygenfunction:: cbor_map_is_indefinite
28
29Reading data
30~~~~~~~~~~~~~
31
32.. doxygenfunction:: cbor_map_handle
33
34Creating new items
35~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
36
37.. doxygenfunction:: cbor_new_definite_map
38.. doxygenfunction:: cbor_new_indefinite_map
39
40
41Modifying items
42~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
43
44.. doxygenfunction:: cbor_map_add
45