# std/widestrs

Theme:

- Manual
- Standard library
- Index
- Compiler docs
- Fusion docs
- devel, stable

Search:
Source Edit

Nim support for C/C++'s wide strings.

# Types

    Utf16Char = distinct int16

  Source Edit

    WideCString = ptr UncheckedArray[Utf16Char]

  Source Edit

    WideCStringObj = object

  Source Edit

# Procs

    proc `$`(s: WideCString): string {....raises: [], tags: [], forbids: [].}

  Source Edit

    proc `$`(s: WideCStringObj): string {....raises: [], tags: [], forbids: [].}

  Source Edit

    proc `$`(s: WideCStringObj; estimate: int; replacement: int = 0x0000FFFD): string {.
        ...raises: [], tags: [], forbids: [].}

  Source Edit

    proc `$`(w: WideCString; estimate: int; replacement: int = 0x0000FFFD): string {.
        ...raises: [], tags: [], forbids: [].}

  Source Edit

    proc len(w: WideCString): int {....raises: [], tags: [], forbids: [].}

  returns the length of a widestring. This traverses the whole string to find the binary zero end marker! Source Edit

    proc len(w: WideCStringObj): int {.inline, ...raises: [], tags: [], forbids: [].}

  Source Edit

    proc newWideCString(s: cstring): WideCStringObj {....raises: [], tags: [],
        forbids: [].}

  Source Edit

    proc newWideCString(s: string): WideCStringObj {....raises: [], tags: [],
        forbids: [].}

  Source Edit

    proc newWideCString(size: int): WideCStringObj {....raises: [], tags: [],
        forbids: [].}

  Source Edit

    proc newWideCString(source: cstring; L: int): WideCStringObj {....raises: [],
        tags: [], forbids: [].}

  Warning:: `source` needs to be preallocated with the length `L` Source Edit

# Converters

    converter toWideCString(x: WideCStringObj): WideCString {.inline, ...raises: [],
        tags: [], forbids: [].}

  Source Edit

# Templates

    template `[]`(a: WideCStringObj; idx: int): Utf16Char

  Source Edit

    template `[]=`(a: WideCStringObj; idx: int; val: Utf16Char)

  Source Edit