# dmd.root.utf

Functions related to UTF encoding.

#### Authors

Walter Bright

#### License

Boost License 1.0

Source: utf.d

Documentation: https://dlang.org/phobos/dmd_root_utf.html

Coverage: https://codecov.io/gh/dlang/dmd/src/master/src/dmd/root/utf.d

- `utf_isValidDchar`

  #### Declaration

  `pure nothrow @nogc @safe bool `utf_isValidDchar`(dchar `c`);`

  The Unicode code space is the range of code points [0x000000,0x10FFFF] except the UTF-16 surrogate pairs in the range [0xD800,0xDFFF]

- `isUniAlpha`

  #### Declaration

  `pure nothrow @nogc @safe bool `isUniAlpha`(dchar `c`);`

  Return !=0 if unicode alpha. Use table from C99 Appendix D.

- `utf_codeLengthChar`

  #### Declaration

  `pure nothrow @nogc @safe int `utf_codeLengthChar`(dchar `c`);`

  Returns the code length of `c` in code units.

- `utf_codeLength`

  #### Declaration

  `pure nothrow @nogc @safe int `utf_codeLength`(int `sz`, dchar `c`);`

  Returns the code length of `c` in code units for the encoding. `sz` is the encoding: 1 = utf8, 2 = utf16, 4 = utf32.

- `isBidiControl`

  #### Declaration

  `pure nothrow @nogc @safe bool `isBidiControl`(dchar `c`);`

  Checks whether an Unicode code point is a bidirectional control character.

- `utf_decodeChar`

  #### Declaration

  `pure nothrow @nogc @safe string `utf_decodeChar`(const(char)[] `s`, ref size_t `ridx`, out dchar `rresult`);`

  Decode a UTF-8 sequence as a single UTF-32 code point.

  #### Parameters

  `const(char)[] `s`` | UTF-8 sequence
  `size_t `ridx`` | starting index in `s`[], updated to reflect number of code units decoded
  `dchar `rresult`` | set to character decoded

  #### Return Value

  `null` on success, otherwise error message string

- `utf_decodeWchar`

  #### Declaration

  `pure nothrow @nogc @safe string `utf_decodeWchar`(const(wchar)[] `s`, ref size_t `ridx`, out dchar `rresult`);`

  Decode a UTF-16 sequence as a single UTF-32 code point.

  #### Parameters

  `const(wchar)[] `s`` | UTF-16 sequence
  `size_t `ridx`` | starting index in `s`[], updated to reflect number of code units decoded
  `dchar `rresult`` | set to character decoded

  #### Return Value

  `null` on success, otherwise error message string