Advance past valid UTF‐8 code points in a bounded string.

Synopsis

Declared in <bdlde_utf8util.h>

static
IntPtr
advanceIfValid(
    int* status,
    char const** result,
    char const* string,
    size_type length,
    IntPtr numCodePoints);

Description

Advance past 0 or more consecutive valid Unicode code points at the beginning of the specified string having the specified length (in bytes), until either the specified numCodePoints or length bytes have been traversed, or invalid UTF‐8 is encountered (whichever occurs first), and return the number of Unicode code points traversed. Set the specified *status to 0 if no invalid UTF‐8 is encountered, and to a value from the ErrorStatus enum otherwise. Set the specified *result to the address of the byte immediately following the last valid code point traversed, or to string if length or numCodePoints is 0. string need not be null‐terminated and can contain embedded null bytes, and string may be null if 0 == length (see {Empty Input Strings}). The behavior is undefined unless 0 <= numCodePoints. Note that the value returned will be in the range [0 .. numCodePoints]. Also note that string may contain less than length Unicode code points.

Return Value

number of Unicode code points traversed

Parameters

Name

Description

status

receives 0 on success, or an ErrorStatus value

result

receives address after the last valid code point

string

UTF‐8 byte sequence (need not be null‐terminated)

length

length of string in bytes

numCodePoints

maximum number of code points to advance

Created with MrDocs