- libbson 1.13.1 »
- API Reference »
- bson_iter_t

# bson_iter_init_from_data_at_offset()

## Synopsis

    bool
    bson_iter_init_from_data_at_offset (bson_iter_t *iter,
                                        const uint8_t *data,
                                        size_t length,
                                        uint32_t offset,
                                        uint32_t keylen);

## Parameters

- `iter`: A bson_iter_t.
- `data`: A buffer to initialize with. This is not validated.
- `length`: The length of `data` in bytes. This is not validated.
- `offset`: The offset of the field to start iterating. This is not validated. This should be an offset previously obtained from bson_iter_offset().
- `keylen`: The string length of the key of the field to start iterating. This is not validated. This should be a length previously obtained from bson_iter_key_len().

## Description

Creates a bson_iter_t and starts iteration on a field at the offset.

bson_iter_init_from_data_at_offset() is useful for situations where the progress of a bson_iter_t must be saved and restored without relying on the bson_iter_t data layout. Saving the progress could be accomplished by:

- Saving the current field’s key length with bson_iter_key_len()
- Saving the current offset with bson_iter_offset()
- Saving the data pointer of the iterated bson_t with bson_get_data()
- Saving the data length of the iterated bson_t with the `len` struct field

Then later, these saved values can be passed to bson_iter_init_from_data_at_offset() to reconstruct the bson_iter_t in constant time.

## See Also

- bson_iter_key_len()
- bson_iter_offset()
- bson_get_data()

## Returns

Returns true if the iter was successfully initialized.

Created using Sphinx 1.8.3, based on Sphinx Readable Theme.