BSON-XS
view release on metacpan or search on metacpan
bson/bson.h view on Meta::CPAN
bson_append_timestamp (b, key, (int) strlen (key), val, inc)
#define BSON_APPEND_UNDEFINED(b,key) \
bson_append_undefined (b, key, (int) strlen (key))
#define BSON_APPEND_VALUE(b,key,val) \
bson_append_value (b, key, (int) strlen (key), (val))
/**
* bson_new:
*
* Allocates a new bson_t structure. Call the various bson_append_*()
* functions to add fields to the bson. You can iterate the bson_t at any
* time using a bson_iter_t and bson_iter_init().
*
* Returns: A newly allocated bson_t that should be freed with bson_destroy().
*/
bson_t *
bson_new (void);
bson_t *
bson_new_from_json (const uint8_t *data,
ssize_t len,
bson_error_t *error);
bool
bson_init_from_json (bson_t *bson,
const char *data,
ssize_t len,
bson_error_t *error);
/**
* bson_init_static:
* @b: A pointer to a bson_t.
* @data: The data buffer to use.
* @length: The length of @data.
*
* Initializes a bson_t using @data and @length. This is ideal if you would
* like to use a stack allocation for your bson and do not need to grow the
* buffer. @data must be valid for the life of @b.
*
* Returns: true if initialized successfully; otherwise false.
*/
bool
bson_init_static (bson_t *b,
const uint8_t *data,
size_t length);
/**
* bson_init:
* @b: A pointer to a bson_t.
*
* Initializes a bson_t for use. This function is useful to those that want a
* stack allocated bson_t. The usefulness of a stack allocated bson_t is
* marginal as the target buffer for content will still require heap
* allocations. It can help reduce heap fragmentation on allocators that do
* not employ SLAB/magazine semantics.
*
* You must call bson_destroy() with @b to release resources when you are done
* using @b.
*/
void
bson_init (bson_t *b);
/**
* bson_reinit:
* @b: (inout): A bson_t.
*
* This is equivalent to calling bson_destroy() and bson_init() on a #bson_t.
* However, it will try to persist the existing malloc'd buffer if one exists.
* This is useful in cases where you want to reduce malloc overhead while
* building many documents.
*/
void
bson_reinit (bson_t *b);
/**
* bson_new_from_data:
* @data: A buffer containing a serialized bson document.
* @length: The length of the document in bytes.
*
* Creates a new bson_t structure using the data provided. @data should contain
* at least @length bytes that can be copied into the new bson_t structure.
*
* Returns: A newly allocated bson_t that should be freed with bson_destroy().
* If the first four bytes (little-endian) of data do not match @length,
* then NULL will be returned.
*/
bson_t *
bson_new_from_data (const uint8_t *data,
size_t length);
/**
* bson_new_from_buffer:
* @buf: A pointer to a buffer containing a serialized bson document. Or null
* @buf_len: The length of the buffer in bytes.
* @realloc_fun: a realloc like function
* @realloc_fun_ctx: a context for the realloc function
*
* Creates a new bson_t structure using the data provided. @buf should contain
* a bson document, or null pointer should be passed for new allocations.
*
* Returns: A newly allocated bson_t that should be freed with bson_destroy().
* The underlying buffer will be used and not be freed in destroy.
*/
bson_t *
bson_new_from_buffer (uint8_t **buf,
size_t *buf_len,
bson_realloc_func realloc_func,
void *realloc_func_ctx);
/**
bson/bson.h view on Meta::CPAN
* Appends a new field of type BSON_TYPE_DBPOINTER. This datum type is
* deprecated in the BSON spec and should not be used in new code.
*
* Returns: true if successful; false if append would overflow max size.
*/
bool
bson_append_dbpointer (bson_t *bson,
const char *key,
int key_length,
const char *collection,
const bson_oid_t *oid);
/**
* bson_append_double:
* @bson: A bson_t.
* @key: The key for the field.
*
* Appends a new field to @bson of the type BSON_TYPE_DOUBLE.
*
* Returns: true if successful; false if append would overflow max size.
*/
bool
bson_append_double (bson_t *bson,
const char *key,
int key_length,
double value);
/**
* bson_append_document:
* @bson: A bson_t.
* @key: The key for the field.
* @value: A bson_t containing the subdocument.
*
* Appends a new field to @bson of the type BSON_TYPE_DOCUMENT.
* The documents contents will be copied into @bson.
*
* Returns: true if successful; false if append would overflow max size.
*/
bool
bson_append_document (bson_t *bson,
const char *key,
int key_length,
const bson_t *value);
/**
* bson_append_document_begin:
* @bson: A bson_t.
* @key: The key for the field.
* @key_length: The length of @key in bytes not including NUL or -1
* if @key_length is NUL terminated.
* @child: A location to an uninitialized bson_t.
*
* Appends a new field named @key to @bson. The field is, however,
* incomplete. @child will be initialized so that you may add fields to the
* child document. Child will use a memory buffer owned by @bson and
* therefore grow the parent buffer as additional space is used. This allows
* a single malloc'd buffer to be used when building documents which can help
* reduce memory fragmentation.
*
* Returns: true if successful; false if append would overflow max size.
*/
bool
bson_append_document_begin (bson_t *bson,
const char *key,
int key_length,
bson_t *child);
/**
* bson_append_document_end:
* @bson: A bson_t.
* @child: A bson_t supplied to bson_append_document_begin().
*
* Finishes the appending of a document to a @bson. @child is considered
* disposed after this call and should not be used any further.
*
* Returns: true if successful; false if append would overflow max size.
*/
bool
bson_append_document_end (bson_t *bson,
bson_t *child);
/**
* bson_append_array_begin:
* @bson: A bson_t.
* @key: The key for the field.
* @key_length: The length of @key in bytes not including NUL or -1
* if @key_length is NUL terminated.
* @child: A location to an uninitialized bson_t.
*
* Appends a new field named @key to @bson. The field is, however,
* incomplete. @child will be initialized so that you may add fields to the
* child array. Child will use a memory buffer owned by @bson and
* therefore grow the parent buffer as additional space is used. This allows
* a single malloc'd buffer to be used when building arrays which can help
* reduce memory fragmentation.
*
* The type of @child will be BSON_TYPE_ARRAY and therefore the keys inside
* of it MUST be "0", "1", etc.
*
* Returns: true if successful; false if append would overflow max size.
*/
bool
bson_append_array_begin (bson_t *bson,
const char *key,
int key_length,
bson_t *child);
/**
* bson_append_array_end:
* @bson: A bson_t.
* @child: A bson_t supplied to bson_append_array_begin().
*
* Finishes the appending of a array to a @bson. @child is considered
* disposed after this call and should not be used any further.
*
* Returns: true if successful; false if append would overflow max size.
*/
bool
bson_append_array_end (bson_t *bson,
bson_t *child);
/**
* bson_append_int32:
* @bson: A bson_t.
* @key: The key for the field.
* @value: The int32_t 32-bit integer value.
*
* Appends a new field of type BSON_TYPE_INT32 to @bson.
*
* Returns: true if successful; false if append would overflow max size.
*/
bool
bson_append_int32 (bson_t *bson,
const char *key,
int key_length,
int32_t value);
/**
* bson_append_int64:
* @bson: A bson_t.
* @key: The key for the field.
* @value: The int64_t 64-bit integer value.
*
* Appends a new field of type BSON_TYPE_INT64 to @bson.
*
* Returns: true if successful; false if append would overflow max size.
*/
bool
bson_append_int64 (bson_t *bson,
const char *key,
int key_length,
int64_t value);
( run in 1.032 second using v1.01-cache-2.11-cpan-b16cb0d3907 )