sdlUtf8strlen function

int sdlUtf8strlen(
  1. String? str
)

Count the number of codepoints in a UTF-8 string.

Counts the codepoints, not bytes, in str, excluding the null terminator.

If you need to count the bytes in a string instead, consider using SDL_strlen().

Since this handles Unicode, it expects the strings to be well-formed UTF-8 and not a null-terminated string of arbitrary bytes. Bytes that are not valid UTF-8 are treated as Unicode character U+FFFD (REPLACEMENT CHARACTER), so a malformed or incomplete UTF-8 sequence might increase the count by several replacement characters.

\param str The null-terminated UTF-8 string to read. Must not be NULL. \returns The length (in codepoints, excluding the null terminator) of src.

\threadsafety It is safe to call this function from any thread.

\since This function is available since SDL 3.1.3.

\sa SDL_utf8strnlen \sa SDL_strlen

extern SDL_DECLSPEC size_t SDLCALL SDL_utf8strlen(const char *str)

Implementation

int sdlUtf8strlen(String? str) {
  final sdlUtf8strlenLookupFunction = libSdl3.lookupFunction<
      Uint32 Function(Pointer<Utf8> str),
      int Function(Pointer<Utf8> str)>('SDL_utf8strlen');
  final strPointer = str != null ? str.toNativeUtf8() : nullptr;
  final result = sdlUtf8strlenLookupFunction(strPointer);
  calloc.free(strPointer);
  return result;
}