libcbor 0.12.0
libcbor is a C library for parsing and generating CBOR, the general-purpose schema-less binary data format.
Loading...
Searching...
No Matches
common.c File Reference
#include "cbor/common.h"
#include "arrays.h"
#include "bytestrings.h"
#include "data.h"
#include "floats_ctrls.h"
#include "ints.h"
#include "maps.h"
#include "strings.h"
#include "tags.h"

Go to the source code of this file.

Functions

bool cbor_isa_uint (const cbor_item_t *item)
 Does the item have the appropriate major type?
 
bool cbor_isa_negint (const cbor_item_t *item)
 Does the item have the appropriate major type?
 
bool cbor_isa_bytestring (const cbor_item_t *item)
 Does the item have the appropriate major type?
 
bool cbor_isa_string (const cbor_item_t *item)
 Does the item have the appropriate major type?
 
bool cbor_isa_array (const cbor_item_t *item)
 Does the item have the appropriate major type?
 
bool cbor_isa_map (const cbor_item_t *item)
 Does the item have the appropriate major type?
 
bool cbor_isa_tag (const cbor_item_t *item)
 Does the item have the appropriate major type?
 
bool cbor_isa_float_ctrl (const cbor_item_t *item)
 Does the item have the appropriate major type?
 
cbor_type cbor_typeof (const cbor_item_t *item)
 Get the type of the item.
 
bool cbor_is_int (const cbor_item_t *item)
 Is the item an integer, either positive or negative?
 
bool cbor_is_bool (const cbor_item_t *item)
 Is the item an a boolean?
 
bool cbor_is_null (const cbor_item_t *item)
 Does this item represent null
 
bool cbor_is_undef (const cbor_item_t *item)
 Does this item represent undefined
 
bool cbor_is_float (const cbor_item_t *item)
 Is the item an a floating point number?
 
cbor_item_tcbor_incref (cbor_item_t *item)
 Increases the item's reference count by one.
 
void cbor_decref (cbor_item_t **item_ref)
 Decreases the item's reference count by one, deallocating the item if needed.
 
void cbor_intermediate_decref (cbor_item_t *item)
 Decreases the item's reference count by one, deallocating the item if needed.
 
size_t cbor_refcount (const cbor_item_t *item)
 Get the item's reference count.
 
cbor_item_tcbor_move (cbor_item_t *item)
 Provides CPP-like move construct.
 

Function Documentation

◆ cbor_decref()

void cbor_decref ( cbor_item_t ** item)

Decreases the item's reference count by one, deallocating the item if needed.

In case the item is deallocated, the reference count of all items this item references will also be cbor_decref 'ed recursively.

Parameters
itemReference to an item. Will be set to NULL if deallocated

Definition at line 83 of file common.c.

◆ cbor_incref()

cbor_item_t * cbor_incref ( cbor_item_t * item)

Increases the item's reference count by one.

Constant complexity; items referring to this one or items being referred to are not updated.

This function can be used to extend reference counting to client code.

Parameters
itemReference to an item
Returns
The input item

Definition at line 78 of file common.c.

◆ cbor_intermediate_decref()

void cbor_intermediate_decref ( cbor_item_t * item)

Decreases the item's reference count by one, deallocating the item if needed.

Convenience wrapper for cbor_decref when its set-to-null behavior is not needed

Parameters
itemReference to an item

Definition at line 154 of file common.c.

◆ cbor_is_bool()

bool cbor_is_bool ( const cbor_item_t * item)

Is the item an a boolean?

Parameters
itemthe item
Returns
Is the item a boolean?

Definition at line 60 of file common.c.

◆ cbor_is_float()

bool cbor_is_float ( const cbor_item_t * item)

Is the item an a floating point number?

Parameters
itemthe item
Returns
Is the item a floating point number?

Definition at line 74 of file common.c.

◆ cbor_is_int()

bool cbor_is_int ( const cbor_item_t * item)

Is the item an integer, either positive or negative?

Parameters
itemthe item
Returns
Is the item an integer, either positive or negative?

Definition at line 56 of file common.c.

◆ cbor_is_null()

bool cbor_is_null ( const cbor_item_t * item)

Does this item represent null

embed:rst:leading-asterisk 
* .. warning:: This is in no way related to the value of the pointer. Passing a
*  null pointer will most likely result in a crash.
* 
Parameters
itemthe item
Returns
Is the item (CBOR logical) null?

Definition at line 66 of file common.c.

◆ cbor_is_undef()

bool cbor_is_undef ( const cbor_item_t * item)

Does this item represent undefined

embed:rst:leading-asterisk 
* .. warning:: Care must be taken to distinguish nulls and undefined values in
*  C.
* 
Parameters
itemthe item
Returns
Is the item (CBOR logical) undefined?

Definition at line 70 of file common.c.

◆ cbor_isa_array()

bool cbor_isa_array ( const cbor_item_t * item)

Does the item have the appropriate major type?

Parameters
itemthe item
Returns
Is the item an CBOR_TYPE_ARRAY?

Definition at line 38 of file common.c.

◆ cbor_isa_bytestring()

bool cbor_isa_bytestring ( const cbor_item_t * item)

Does the item have the appropriate major type?

Parameters
itemthe item
Returns
Is the item a CBOR_TYPE_BYTESTRING?

Definition at line 30 of file common.c.

◆ cbor_isa_float_ctrl()

bool cbor_isa_float_ctrl ( const cbor_item_t * item)

Does the item have the appropriate major type?

Parameters
itemthe item
Returns
Is the item a CBOR_TYPE_FLOAT_CTRL?

Definition at line 50 of file common.c.

◆ cbor_isa_map()

bool cbor_isa_map ( const cbor_item_t * item)

Does the item have the appropriate major type?

Parameters
itemthe item
Returns
Is the item a CBOR_TYPE_MAP?

Definition at line 42 of file common.c.

◆ cbor_isa_negint()

bool cbor_isa_negint ( const cbor_item_t * item)

Does the item have the appropriate major type?

Parameters
itemthe item
Returns
Is the item a CBOR_TYPE_NEGINT?

Definition at line 26 of file common.c.

◆ cbor_isa_string()

bool cbor_isa_string ( const cbor_item_t * item)

Does the item have the appropriate major type?

Parameters
itemthe item
Returns
Is the item a CBOR_TYPE_STRING?

Definition at line 34 of file common.c.

◆ cbor_isa_tag()

bool cbor_isa_tag ( const cbor_item_t * item)

Does the item have the appropriate major type?

Parameters
itemthe item
Returns
Is the item a CBOR_TYPE_TAG?

Definition at line 46 of file common.c.

◆ cbor_isa_uint()

bool cbor_isa_uint ( const cbor_item_t * item)

Does the item have the appropriate major type?

Parameters
itemthe item
Returns
Is the item an CBOR_TYPE_UINT?

Definition at line 22 of file common.c.

◆ cbor_move()

cbor_item_t * cbor_move ( cbor_item_t * item)

Provides CPP-like move construct.

Decreases the reference count by one, but does not deallocate the item even if its refcount reaches zero. This is useful for passing intermediate values to functions that increase reference count. Should only be used with functions that incref their arguments.

embed:rst:leading-asterisk 
* .. warning:: If the item is moved without correctly increasing the reference
*  count afterwards, the memory will be leaked.
* 
Parameters
itemReference to an item
Returns
the item with reference count decreased by one

Definition at line 158 of file common.c.

◆ cbor_refcount()

size_t cbor_refcount ( const cbor_item_t * item)

Get the item's reference count.

embed:rst:leading-asterisk 
* .. warning:: This does *not* account for transitive references.
* 
Todo
Add some inline examples for reference counting
Parameters
itemthe item
Returns
the reference count

Definition at line 156 of file common.c.

◆ cbor_typeof()

cbor_type cbor_typeof ( const cbor_item_t * item)

Get the type of the item.

Parameters
item
Returns
The type

Definition at line 54 of file common.c.