bson_steal - bson_steal()

NAME  SYNOPSIS  PARAMETERS  DESCRIPTION  RETURNS  AUTHOR  COPYRIGHT 

NAME

bson_steal − bson_steal()

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 destroyed, 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 invalid, 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

2017-present, MongoDB, Inc


Updated 2024-01-29 - jenkler.se | uex.se