Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
BSON_T(3)			    libbson			     BSON_T(3)

BSON Document Abstraction

SYNOPSIS
	  #include <bson/bson.h>

	  /**
	   * bson_empty:
	   * @b: a bson_t.
	   *
	   * Checks to see if @b is an empty BSON document. An empty BSON document is
	   * a 5 byte document which contains the length (4 bytes) and a single	NUL
	   * byte indicating end of fields.
	   */
	  #define bson_empty(b)	/* ... */

	  /**
	   * bson_empty0:
	   *
	   * Like bson_empty() but treats NULL the same	as an empty bson_t document.
	   */
	  #define bson_empty0(b) /* ...	*/

	  /**
	   * bson_clear:
	   *
	   * Easily free a bson	document and set it to NULL. Use like:
	   *
	   * bson_t *doc = bson_new();
	   * bson_clear	(&doc);
	   * BSON_ASSERT (doc == NULL);
	   */
	  #define bson_clear(bptr) /* ... */

	  /**
	   * BSON_MAX_SIZE:
	   *
	   * The maximum size in bytes of a BSON document.
	   */
	  #define BSON_MAX_SIZE	/* ... */

	  #define BSON_APPEND_ARRAY(b, key, val) \
	     bson_append_array (b, key,	(int) strlen (key), val)

	  #define BSON_APPEND_ARRAY_BEGIN(b, key, child) \
	     bson_append_array_begin (b, key, (int) strlen (key), child)

	  #define BSON_APPEND_BINARY(b,	key, subtype, val, len)	\
	     bson_append_binary	(b, key, (int) strlen (key), subtype, val, len)

	  #define BSON_APPEND_BOOL(b, key, val)	\
	     bson_append_bool (b, key, (int) strlen (key), val)

	  #define BSON_APPEND_CODE(b, key, val)	\
	     bson_append_code (b, key, (int) strlen (key), val)

	  #define BSON_APPEND_CODE_WITH_SCOPE(b, key, val, scope) \
	     bson_append_code_with_scope (b, key, (int)	strlen (key), val, scope)

	  #define BSON_APPEND_DBPOINTER(b, key,	coll, oid) \
	     bson_append_dbpointer (b, key, (int) strlen (key),	coll, oid)

	  #define BSON_APPEND_DOCUMENT_BEGIN(b,	key, child) \
	     bson_append_document_begin	(b, key, (int) strlen (key), child)

	  #define BSON_APPEND_DOUBLE(b,	key, val) \
	     bson_append_double	(b, key, (int) strlen (key), val)

	  #define BSON_APPEND_DOCUMENT(b, key, val) \
	     bson_append_document (b, key, (int) strlen	(key), val)

	  #define BSON_APPEND_INT32(b, key, val) \
	     bson_append_int32 (b, key,	(int) strlen (key), val)

	  #define BSON_APPEND_INT64(b, key, val) \
	     bson_append_int64 (b, key,	(int) strlen (key), val)

	  #define BSON_APPEND_MINKEY(b,	key) \
	     bson_append_minkey	(b, key, (int) strlen (key))

	  #define BSON_APPEND_DECIMAL128(b, key, val) \
	     bson_append_decimal128 (b,	key, (int) strlen (key), val)

	  #define BSON_APPEND_MAXKEY(b,	key) \
	     bson_append_maxkey	(b, key, (int) strlen (key))

	  #define BSON_APPEND_NULL(b, key) bson_append_null (b,	key, (int) strlen (key))

	  #define BSON_APPEND_OID(b, key, val) \
	     bson_append_oid (b, key, (int) strlen (key), val)

	  #define BSON_APPEND_REGEX(b, key, val, opt) \
	     bson_append_regex (b, key,	(int) strlen (key), val, opt)

	  #define BSON_APPEND_UTF8(b, key, val)	\
	     bson_append_utf8 (b, key, (int) strlen (key), val,	(int) strlen (val))

	  #define BSON_APPEND_SYMBOL(b,	key, val) \
	     bson_append_symbol	(b, key, (int) strlen (key), val, (int)	strlen (val))

	  #define BSON_APPEND_TIME_T(b,	key, val) \
	     bson_append_time_t	(b, key, (int) strlen (key), val)

	  #define BSON_APPEND_TIMEVAL(b, key, val) \
	     bson_append_timeval (b, key, (int)	strlen (key), val)

	  #define BSON_APPEND_DATE_TIME(b, key,	val) \
	     bson_append_date_time (b, key, (int) strlen (key),	val)

	  #define BSON_APPEND_TIMESTAMP(b, key,	val, inc) \
	     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_ALIGNED_BEGIN (128)
	  typedef struct {
	     uint32_t flags;	   /* Internal flags for the bson_t. */
	     uint32_t len;	   /* Length of	BSON data. */
	     uint8_t padding[120]; /* Padding for stack	allocation. */
	  } bson_t BSON_ALIGNED_END (128);

DESCRIPTION
       The bson_t structure represents a BSON document.	This structure manages
       the  underlying	BSON encoded buffer. For mutable documents, it can ap-
       pend new	data to	the document.

PERFORMANCE NOTES
       The bson_t structure attempts to	use an inline  allocation  within  the
       structure  to speed up performance of small documents. When this	inter-
       nal buffer has been exhausted, a	heap allocated buffer will be  dynami-
       cally  allocated.  Therefore, it	is essential to	call bson_destroy() on
       allocated documents.

DUPLICATE KEYS
       The BSON	specification allows BSON documents to	have  duplicate	 keys.
       Documents  are  stored  as an ordered list of key-value pairs. A	bson_t
       may contain duplicate keys. Applications	should refrain from generating
       such documents, because MongoDB server behavior	is  undefined  when  a
       BSON document contains duplicate	keys.

EXAMPLE
	  static void
	  create_on_heap (void)
	  {
	     bson_t *b = bson_new ();

	     BSON_APPEND_INT32 (b, "foo", 123);
	     BSON_APPEND_UTF8 (b, "bar", "foo");
	     BSON_APPEND_DOUBLE	(b, "baz", 1.23f);

	     bson_destroy (b);
	  }

AUTHOR
       MongoDB,	Inc

COPYRIGHT
       2009-present, MongoDB, Inc.

1.30.2				 Apr 12, 2025			     BSON_T(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=bson_t&sektion=3&manpath=FreeBSD+Ports+14.3.quarterly>

home | help