2 =============================
4 CBOR 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.
6 Maps can be either definite or indefinite, in much the same way as :doc:`type_4`.
8 ================================== =====================================================================================
9 Corresponding :type:`cbor_type` ``CBOR_TYPE_MAP``
10 Number of allocations (definite) Two plus any manipulations with the data
11 Number of allocations (indefinite) Two plus logarithmically many
12 reallocations relative to additions
13 Storage requirements (definite) ``sizeof(cbor_pair) * size + sizeof(cbor_item_t)``
14 Storage requirements (indefinite) ``<= sizeof(cbor_item_t) + sizeof(cbor_pair) * size * BUFFER_GROWTH``
15 ================================== =====================================================================================
18 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
20 Please refer to :doc:`/streaming`.
24 .. doxygenfunction:: cbor_map_size
25 .. doxygenfunction:: cbor_map_allocated
26 .. doxygenfunction:: cbor_map_is_definite
27 .. doxygenfunction:: cbor_map_is_indefinite
32 .. doxygenfunction:: cbor_map_handle
35 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
37 .. doxygenfunction:: cbor_new_definite_map
38 .. doxygenfunction:: cbor_new_indefinite_map
42 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
44 .. doxygenfunction:: cbor_map_add