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