.\" This manpage is Copyright (C) 2015 MongoDB, Inc.
.\" 
.\" Permission is granted to copy, distribute and/or modify this document
.\" under the terms of the GNU Free Documentation License, Version 1.3
.\" or any later version published by the Free Software Foundation;
.\" with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
.\" A copy of the license is included in the section entitled "GNU
.\" Free Documentation License".
.\" 
.TH "BSON_ITER_UTF8" "3" "2015-02-10" "libbson"
.SH NAME
bson_iter_utf8()
.SH "SYNOPSIS"

.nf
.nf
#define BSON_ITER_HOLDS_UTF8(iter) \
   (bson_iter_type ((iter)) == BSON_TYPE_UTF8)

const char *
bson_iter_utf8 (const bson_iter_t *iter,
                uint32_t          *length);
.fi
.fi

.SH "PARAMETERS"

.TP
.B iter
A
.BR bson_iter_t
\&.
.LP
.TP
.B length
An optional location for the length of the resulting UTF-8 encoded string.
.LP

.SH "DESCRIPTION"

The
.BR bson_iter_utf8(3)
function shall retrieve the contents of a BSON_TYPE_UTF8 element currently observed by
.B iter
\&.

It is invalid to call this function while observing an element other than BSON_TYPE_UTF8.

.SH "RETURNS"

A UTF-8 encoded string that has not been modified or freed.

It is suggested that the caller validate the content is valid UTF-8 before using this in other places. That can be done by calling
.BR bson_utf8_validate(3)
or validating the underlying
.BR bson_t
before iterating it.

Note that not all drivers use multi-byte representation for
.B \0
in UTF-8 encodings (commonly referred to as modified-UTF8). You probably want to take a look at the length field when marshaling to other runtimes.


.BR
.SH COLOPHON
This page is part of libbson.
Please report any bugs at
\%https://jira.mongodb.org/browse/CDRIVER.