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

FreeBSD Manual Pages

  
 
  

home | help
BSON_STEAL(3)			    libbson			 BSON_STEAL(3)

SYNOPSIS
	  bool
	  bson_steal (bson_t *dst, bson_t *src);

PARAMETERS
        dst: An uninitialized bson_t.

        src: A	bson_t.

DESCRIPTION
       Efficiently transfer the	contents of src	to dst and destroy src.

       Before  calling	this function, src must	be initialized and dst must be
       uninitialized. After this function returns  successfully,  src  is  de-
       stroyed,	and dst	is initialized and must	be freed with bson_destroy().

       For  example, if	you have a higher-level	structure that wraps a bson_t,
       use bson_steal to transfer BSON data into it:

	  typedef struct {
	     bson_t bson;
	  } bson_wrapper_t;

	  bson_wrapper_t *
	  wrap_bson (bson_t *b)
	  {
	     bson_wrapper_t *wrapper = bson_malloc (sizeof (bson_wrapper_t));

	     if	(bson_steal (&wrapper->bson, b)) {
		return wrapper;
	     }

	     bson_free (wrapper);
	     return NULL;
	  }

	  void
	  bson_wrapper_destroy (bson_wrapper_t *wrapper)
	  {
	     bson_destroy (&wrapper->bson);
	     bson_free (wrapper);
	  }

	  int
	  main (int argc, char *argv[])
	  {
	     bson_t bson = BSON_INITIALIZER;
	     bson_wrapper_t *wrapper;

	     BSON_APPEND_UTF8 (&bson, "key", "value");

	     /*	now "bson" is destroyed	*/
	     wrapper = wrap_bson (&bson);

	     /*	clean up */
	     bson_wrapper_destroy (wrapper);
	  }

RETURNS
       Returns true if src was successfully moved to dst, false	if src is  in-
       valid, or was statically	initialized, or	another	error occurred.

       SEE ALSO:
	  bson_destroy_with_steal(), a lower-level function that returns the raw contents of a bson_t.

AUTHOR
       MongoDB,	Inc

COPYRIGHT
       2009-present, MongoDB, Inc.

1.30.2				 Apr 12, 2025			 BSON_STEAL(3)

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

home | help