libcbor 0.12.0
libcbor is a C library for parsing and generating CBOR, the general-purpose schema-less binary data format.
|
#include <assert.h>
#include <stdbool.h>
#include <stddef.h>
#include <stdint.h>
#include <stdlib.h>
#include "cbor/cbor_export.h"
#include "cbor/configuration.h"
#include "data.h"
Go to the source code of this file.
Macros | |
#define | CBOR_RESTRICT_POINTER CBOR_RESTRICT_SPECIFIER |
#define | CBOR_VERSION |
#define | CBOR_HEX_VERSION ((CBOR_MAJOR_VERSION << 16) | (CBOR_MINOR_VERSION << 8) | CBOR_PATCH_VERSION) |
#define | debug_print(fmt, ...) |
#define | CBOR_ASSERT(e) |
#define | _CBOR_TEST_DISABLE_ASSERT(block) |
#define | _CBOR_TO_STR_(x) |
#define | _CBOR_TO_STR(x) |
#define | _CBOR_UNUSED |
#define | _CBOR_NODISCARD |
#define | _CBOR_UNREACHABLE |
#define | _CBOR_NOTNULL(cbor_item) |
#define | _CBOR_DEPENDENT_NOTNULL(cbor_item, pointer) |
Typedefs | |
typedef void *(* | _cbor_malloc_t) (size_t) |
typedef void *(* | _cbor_realloc_t) (void *, size_t) |
typedef void(* | _cbor_free_t) (void *) |
Functions | |
void | cbor_set_allocs (_cbor_malloc_t custom_malloc, _cbor_realloc_t custom_realloc, _cbor_free_t custom_free) |
Sets the memory management routines to use. | |
cbor_type | cbor_typeof (const cbor_item_t *item) |
Get the type of the item. | |
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? | |
bool | cbor_is_int (const cbor_item_t *item) |
Is the item an integer, either positive or negative? | |
bool | cbor_is_float (const cbor_item_t *item) |
Is the item an a floating point number? | |
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 | |
cbor_item_t * | cbor_incref (cbor_item_t *item) |
Increases the item's reference count by one. | |
void | cbor_decref (cbor_item_t **item) |
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_t * | cbor_move (cbor_item_t *item) |
Provides CPP-like move construct. | |
Variables | |
_cbor_malloc_t | _cbor_malloc |
_cbor_realloc_t | _cbor_realloc |
_cbor_free_t | _cbor_free |
#define _CBOR_DEPENDENT_NOTNULL | ( | cbor_item, | |
pointer ) |
#define _CBOR_NOTNULL | ( | cbor_item | ) |
#define _CBOR_TEST_DISABLE_ASSERT | ( | block | ) |
#define _CBOR_TO_STR | ( | x | ) |
#define CBOR_HEX_VERSION ((CBOR_MAJOR_VERSION << 16) | (CBOR_MINOR_VERSION << 8) | CBOR_PATCH_VERSION) |
#define CBOR_VERSION |
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.
item | Reference to an item. Will be set to NULL if deallocated |
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.
item | Reference to an item |
item
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
item | Reference to an item |
bool cbor_is_bool | ( | const cbor_item_t * | item | ) |
bool cbor_is_float | ( | const cbor_item_t * | item | ) |
bool cbor_is_int | ( | const cbor_item_t * | item | ) |
bool cbor_is_null | ( | const cbor_item_t * | item | ) |
bool cbor_is_undef | ( | const cbor_item_t * | item | ) |
bool cbor_isa_array | ( | const cbor_item_t * | item | ) |
Does the item have the appropriate major type?
item | the item |
bool cbor_isa_bytestring | ( | const cbor_item_t * | item | ) |
Does the item have the appropriate major type?
item | the item |
bool cbor_isa_float_ctrl | ( | const cbor_item_t * | item | ) |
Does the item have the appropriate major type?
item | the item |
bool cbor_isa_map | ( | const cbor_item_t * | item | ) |
Does the item have the appropriate major type?
item | the item |
bool cbor_isa_negint | ( | const cbor_item_t * | item | ) |
Does the item have the appropriate major type?
item | the item |
bool cbor_isa_string | ( | const cbor_item_t * | item | ) |
Does the item have the appropriate major type?
item | the item |
bool cbor_isa_tag | ( | const cbor_item_t * | item | ) |
Does the item have the appropriate major type?
item | the item |
bool cbor_isa_uint | ( | const cbor_item_t * | item | ) |
Does the item have the appropriate major type?
item | the item |
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. *
item | Reference to an item |
size_t cbor_refcount | ( | const cbor_item_t * | item | ) |
void cbor_set_allocs | ( | _cbor_malloc_t | custom_malloc, |
_cbor_realloc_t | custom_realloc, | ||
_cbor_free_t | custom_free ) |
Sets the memory management routines to use.
By default, libcbor will use the standard library malloc
, realloc
, and free
.
embed:rst:leading-asterisk * .. warning:: This function modifies the global state and should therefore be * used accordingly. Changing the memory handlers while allocated items exist * will result in a ``free``/``malloc`` mismatch. This function is not thread * safe with respect to both itself and all the other *libcbor* functions that * work with the heap. * * .. note:: `realloc` implementation must correctly support `NULL` reallocation * (see e.g. http://en.cppreference.com/w/c/memory/realloc) *
custom_malloc | malloc implementation |
custom_realloc | realloc implementation |
custom_free | free implementation |
Definition at line 14 of file allocators.c.
cbor_type cbor_typeof | ( | const cbor_item_t * | item | ) |
|
extern |
Definition at line 12 of file allocators.c.
|
extern |
Definition at line 10 of file allocators.c.
|
extern |
Definition at line 11 of file allocators.c.