Lines Matching refs:item

22 bool cbor_isa_uint(const cbor_item_t *item) {
23 return item->type == CBOR_TYPE_UINT;
26 bool cbor_isa_negint(const cbor_item_t *item) {
27 return item->type == CBOR_TYPE_NEGINT;
30 bool cbor_isa_bytestring(const cbor_item_t *item) {
31 return item->type == CBOR_TYPE_BYTESTRING;
34 bool cbor_isa_string(const cbor_item_t *item) {
35 return item->type == CBOR_TYPE_STRING;
38 bool cbor_isa_array(const cbor_item_t *item) {
39 return item->type == CBOR_TYPE_ARRAY;
42 bool cbor_isa_map(const cbor_item_t *item) {
43 return item->type == CBOR_TYPE_MAP;
46 bool cbor_isa_tag(const cbor_item_t *item) {
47 return item->type == CBOR_TYPE_TAG;
50 bool cbor_isa_float_ctrl(const cbor_item_t *item) {
51 return item->type == CBOR_TYPE_FLOAT_CTRL;
54 cbor_type cbor_typeof(const cbor_item_t *item) { return item->type; }
56 bool cbor_is_int(const cbor_item_t *item) {
57 return cbor_isa_uint(item) || cbor_isa_negint(item);
60 bool cbor_is_bool(const cbor_item_t *item) {
61 return cbor_isa_float_ctrl(item) &&
62 (cbor_ctrl_value(item) == CBOR_CTRL_FALSE ||
63 cbor_ctrl_value(item) == CBOR_CTRL_TRUE);
66 bool cbor_is_null(const cbor_item_t *item) {
67 return cbor_isa_float_ctrl(item) && cbor_ctrl_value(item) == CBOR_CTRL_NULL;
70 bool cbor_is_undef(const cbor_item_t *item) {
71 return cbor_isa_float_ctrl(item) && cbor_ctrl_value(item) == CBOR_CTRL_UNDEF;
74 bool cbor_is_float(const cbor_item_t *item) {
75 return cbor_isa_float_ctrl(item) && !cbor_float_ctrl_is_ctrl(item);
78 cbor_item_t *cbor_incref(cbor_item_t *item) {
79 item->refcount++;
80 return item;
84 cbor_item_t *item = *item_ref;
85 CBOR_ASSERT(item->refcount > 0);
86 if (--item->refcount == 0) {
87 switch (item->type) {
91 /* Combined allocation, freeing the item suffices */
94 if (cbor_bytestring_is_definite(item)) {
95 _cbor_free(item->data);
98 cbor_item_t **handle = cbor_bytestring_chunks_handle(item);
99 for (size_t i = 0; i < cbor_bytestring_chunk_count(item); i++)
102 ((struct cbor_indefinite_string_data *)item->data)->chunks);
103 _cbor_free(item->data);
108 if (cbor_string_is_definite(item)) {
109 _cbor_free(item->data);
112 cbor_item_t **handle = cbor_string_chunks_handle(item);
113 for (size_t i = 0; i < cbor_string_chunk_count(item); i++)
116 ((struct cbor_indefinite_string_data *)item->data)->chunks);
117 _cbor_free(item->data);
123 cbor_item_t **handle = cbor_array_handle(item);
124 size_t size = cbor_array_size(item);
127 _cbor_free(item->data);
131 struct cbor_pair *handle = cbor_map_handle(item);
132 for (size_t i = 0; i < item->metadata.map_metadata.end_ptr;
137 _cbor_free(item->data);
141 if (item->metadata.tag_metadata.tagged_item != NULL)
142 cbor_decref(&item->metadata.tag_metadata.tagged_item);
143 _cbor_free(item->data);
151 _cbor_free(item);
156 void cbor_intermediate_decref(cbor_item_t *item) { cbor_decref(&item); }
158 size_t cbor_refcount(const cbor_item_t *item) { return item->refcount; }
160 cbor_item_t *cbor_move(cbor_item_t *item) {
161 item->refcount--;
162 return item;