This documenta- tion describes the current state of development.
Note that interfaces and functionality may still change.

Prokee Modules:
  A
  B
  C
  D
  E
  F
  G
  I
  L
  M
  N
  O
  P
  R
  S
  T
  U
  W

     open all    |    close all

GUI Elements:
  B
  C
  I
  M
  P
  R
  S
  T

     open all    |    close all

GUI Interactions:
  B
  F
  H
  S

     open all    |    close all

GUI Layouts:
  L

     open all    |    close all

Games/Demos:
  M

     open all    |    close all

Third Party Libraries:
  P
  F
  Z

     open all    |    close all

Information about this Website / Informationen zu dieser Webseite:
In case of any questions, or comments, please feel free to contact me via email at apoll500@gmail.com.

Module utf16 [Version: v01]

This documentation describes the Prokee module interface.


Static Methods:
decode_BE
int utf16::decode_BE(int *utf32out,const char16_t *utf16in)
decode_LE
int utf16::decode_LE(int *utf32out,const char16_t *utf16in)
encode_BE
int utf16::encode_BE(char16_t *utf16out,int utf32in)
encode_LE
int utf16::encode_LE(char16_t *utf16out,int utf32in)
convert_utf16_to_utf32
int utf16::convert_utf16_to_utf32(int **utf32string,int *utf32string_length,const char16_t *utf16string)
convert_utf16_to_utf32_BE
int utf16::convert_utf16_to_utf32_BE(int **utf32string,int *utf32string_length,const char16_t *utf16string)
convert_utf16_to_utf32_LE
int utf16::convert_utf16_to_utf32_LE(int **utf32string,int *utf32string_length,const char16_t *utf16string)
convert_utf32_to_utf16_BE
int utf16::convert_utf32_to_utf16_BE(char16_t **utf16string,int *utf16string_length,const int *utf32string)
convert_utf32_to_utf16_LE
int utf16::convert_utf32_to_utf16_LE(char16_t **utf16string,int *utf16string_length,const int *utf32string)
getBOM_BE
int utf16::getBOM_BE(char16_t *utf16out)
getBOM_LE
int utf16::getBOM_LE(char16_t *utf16out)
testBOM
int utf16::testBOM(const char16_t *utf16string)

Motivation

Das Modul bietet statische Methoden um Unicode Zeichen und Strings zwischen UTF-16 und UTF-32 zu konvertieren.

Annahmen

Der Datentyp int muss mindestens 4 Bytes groß sein um Unicode Codepoints (UTF-32 Zeichen) speichern zu können.


Static Methods

   decode_BE


Berechnet die Zeichennummer (den Unicode Codepoint) eines utf16-codierten Zeichens in Big-Endian Byte Reihenfolge.

Signature:
int utf16::decode_BE(int *utf32out,const char16_t *utf16in)

Parameters:
Type Name Direction Description
int *utf32out[OUT]Speicherbereich in welchen die Zeichen-Nummer (der Unicode Codepoint) des Zeichens geschrieben wird.
const char16_t *utf16in[IN]Ein Zeichen in UTF-16 Codierung. (2 oder 4 Bytes)

Return value:
Gibt die Anzahl 2-Byte Zeichen zurück, die das Zeichen in utf16-Codierung benötigt. Falls ein Fehler aufgetreten ist, wird 0 zurückgegeben.

Code: toggle

Code: toggle

   decode_LE


Berechnet die Zeichennummer (den Unicode Codepoint) eines utf16-codierten Zeichens in Little-Endian Byte Reihenfolge.

Signature:
int utf16::decode_LE(int *utf32out,const char16_t *utf16in)

Parameters:
Type Name Direction Description
int *utf32out[OUT]Speicherbereich in welchen die Zeichen-Nummer (der Unicode Codepoint) des Zeichens geschrieben wird.
const char16_t *utf16in[IN]Ein Zeichen in UTF-16 Codierung. (2 oder 4 Bytes)

Return value:
Gibt die Anzahl 2-Byte Zeichen zurück, die das Zeichen in utf16-Codierung benötigt. Falls ein Fehler aufgetreten ist, wird 0 zurückgegeben.

Code: toggle

Code: toggle

   encode_BE


Berechnet die utf16-Codierung (in Big-Endian Byte Reihenfolge) zu einer Zeichennummer (zu einem Unicode Codepoint) eines Zeichens.

Signature:
int utf16::encode_BE(char16_t *utf16out,int utf32in)

Parameters:
Type Name Direction Description
char16_t *utf16out[OUT]Speicherbereich in welchen das Zeichen in UTF-16 Codierung geschrieben wird. Der Speicherbereich muss groß genug sein, um bis zu 4 Bytes aufzunehmen.
int utf32in[IN]Die Zeichennummer (der Unicode Codepoint) eines Zeichens.

Return value:
Gibt die Anzahl 2-Byte Zeichen zurück, die das Zeichen in utf16-Codierung benötigt. Falls ein Fehler aufgetreten ist, wird 0 zurückgegeben.

Code: toggle

   encode_LE


Berechnet die utf16-Codierung (in Little-Endian Byte Reihenfolge) zu einer Zeichennummer (zu einem Unicode Codepoint) eines Zeichens.

Signature:
int utf16::encode_LE(char16_t *utf16out,int utf32in)

Parameters:
Type Name Direction Description
char16_t *utf16out[OUT]Speicherbereich in welchen das Zeichen in UTF-16 Codierung geschrieben wird. Der Speicherbereich muss groß genug sein, um bis zu 4 Bytes aufzunehmen.
int utf32in[IN]Die Zeichennummer (der Unicode Codepoint) eines Zeichens.

Return value:
Gibt die Anzahl 2-Byte Zeichen zurück, die das Zeichen in utf16-Codierung benötigt. Falls ein Fehler aufgetreten ist, wird 0 zurückgegeben.

Code: toggle

   convert_utf16_to_utf32


Konvertiert einen String von UTF-16 zu UTF-32. Die Byte-Reihenfolge des UTF-16 Strings wird anhand eines BOM Zeichens (Byte-Order-Mark) ermittelt, sofern vorhanden. Ist kein BOM Zeichen vorhanden, so wird Big-Endian angenommen. (Die UTF-32 Werte werden in der Byte-Reigenfolge des Systems ausgegeben.)

Signature:
int utf16::convert_utf16_to_utf32(int **utf32string,int *utf32string_length,const char16_t *utf16string)

Parameters:
Type Name Direction Description
int **utf32string[OUT]Speicherbereich in den die Ausgabe geschrieben wird. Falls NULL angegeben wurde, oder falls utf32string = 0 ist, wird der Speicherbereich neu alloziert. Die anfängliche Länge des Speicherbereichs wird durch *utf32string_length festgelegt. Falls *utf32string_length = 0 (oder utf32string_length = NULL) ist, so wird die anfängliche Länge (in sizeof(int)) auf die Anzahl Bytes in utf8string gesetzt. Ist der Speicherbereich für die Ausgabe zu klein, so wird die Länge so lange verdoppelt (und der Speicher neu alloziert) bis der Speicherbereich lang genug ist. Die Länge des resultierenden Speicherbereichs kann daher deutlich länger sein, als die Länge des Ausgabe-Strings. Bei wiederholtem Aufruf, sollte ein bereits allozierter Speicherbereich wiederverwendet werden, um die Anzahl der benötigten Speicher-Allozierungen gering zu halten. Wird der Speicherbereich neu alloziert (oder re-alloziert) und ist utf32string nicht NULL, so wird die neue Adresse des Speicherbereichs nach *utf32string zurück geschrieben.
int *utf32string_length[IN/OUT]Länge des Speicherbereichs utf32string in den die Ausgabe geschrieben wird. Bei Angabe von NULL oder falls *utf32string_length = 0 ist, so wird falls utf32string = NULL oder *utf32string = 0 ist, ein neuer Speicherbereich alloziert bzw. falls *utf32string != 0 ist, der bestehende Speicherbereich re-alloziert. Ist der Speicherbereich zu klein für die Ausgabe, so wird ebenso ein längerer Speicherbereich alloziert. Sofern utf32string_length nicht NULL ist, wird die neue Länge des Speicherbereichs nach *utf32string_length geschrieben.
const char16_t *utf16string[IN]Ein null-terminierter und UTF-16 codierter String.

Return value:
Gibt die Anzahl Zeichen zurück, die nach utf32string geschrieben wurden.

Code: toggle

   convert_utf16_to_utf32_BE


Konvertiert einen String von UTF-16 zu UTF-32. Der UTF-16 String muss in Big-Endian Byte-Reihenfolge angegeben sein. (Die UTF-32 Werte werden in der Byte-Reigenfolge des Systems ausgegeben.)

Signature:
int utf16::convert_utf16_to_utf32_BE(int **utf32string,int *utf32string_length,const char16_t *utf16string)

Parameters:
Type Name Direction Description
int **utf32string[OUT]Speicherbereich in den die Ausgabe geschrieben wird. Falls NULL angegeben wurde, oder falls utf32string = 0 ist, wird der Speicherbereich neu alloziert. Die anfängliche Länge des Speicherbereichs wird durch *utf32string_length festgelegt. Falls *utf32string_length = 0 (oder utf32string_length = NULL) ist, so wird die anfängliche Länge (in sizeof(int)) auf die Anzahl Bytes in utf8string gesetzt. Ist der Speicherbereich für die Ausgabe zu klein, so wird die Länge so lange verdoppelt (und der Speicher neu alloziert) bis der Speicherbereich lang genug ist. Die Länge des resultierenden Speicherbereichs kann daher deutlich länger sein, als die Länge des Ausgabe-Strings. Bei wiederholtem Aufruf, sollte ein bereits allozierter Speicherbereich wiederverwendet werden, um die Anzahl der benötigten Speicher-Allozierungen gering zu halten. Wird der Speicherbereich neu alloziert (oder re-alloziert) und ist utf32string nicht NULL, so wird die neue Adresse des Speicherbereichs nach *utf32string zurück geschrieben.
int *utf32string_length[IN/OUT]Länge des Speicherbereichs utf32string in den die Ausgabe geschrieben wird. Bei Angabe von NULL oder falls *utf32string_length = 0 ist, so wird falls utf32string = NULL oder *utf32string = 0 ist, ein neuer Speicherbereich alloziert bzw. falls *utf32string != 0 ist, der bestehende Speicherbereich re-alloziert. Ist der Speicherbereich zu klein für die Ausgabe, so wird ebenso ein längerer Speicherbereich alloziert. Sofern utf32string_length nicht NULL ist, wird die neue Länge des Speicherbereichs nach *utf32string_length geschrieben.
const char16_t *utf16string[IN]Ein null-terminierter und UTF-16 codierter String.

Return value:
Gibt die Anzahl Zeichen zurück, die nach utf32string geschrieben wurden.

Code: toggle

   convert_utf16_to_utf32_LE


Konvertiert einen String von UTF-16 zu UTF-32. Der UTF-16 String muss in Little-Endian Byte-Reihenfolge angegeben sein. (Die UTF-32 Werte werden in der Byte-Reigenfolge des Systems ausgegeben.)

Signature:
int utf16::convert_utf16_to_utf32_LE(int **utf32string,int *utf32string_length,const char16_t *utf16string)

Parameters:
Type Name Direction Description
int **utf32string[OUT]Speicherbereich in den die Ausgabe geschrieben wird. Falls NULL angegeben wurde, oder falls utf32string = 0 ist, wird der Speicherbereich neu alloziert. Die anfängliche Länge des Speicherbereichs wird durch *utf32string_length festgelegt. Falls *utf32string_length = 0 (oder utf32string_length = NULL) ist, so wird die anfängliche Länge (in sizeof(int)) auf die Anzahl Bytes in utf8string gesetzt. Ist der Speicherbereich für die Ausgabe zu klein, so wird die Länge so lange verdoppelt (und der Speicher neu alloziert) bis der Speicherbereich lang genug ist. Die Länge des resultierenden Speicherbereichs kann daher deutlich länger sein, als die Länge des Ausgabe-Strings. Bei wiederholtem Aufruf, sollte ein bereits allozierter Speicherbereich wiederverwendet werden, um die Anzahl der benötigten Speicher-Allozierungen gering zu halten. Wird der Speicherbereich neu alloziert (oder re-alloziert) und ist utf32string nicht NULL, so wird die neue Adresse des Speicherbereichs nach *utf32string zurück geschrieben.
int *utf32string_length[IN/OUT]Länge des Speicherbereichs utf32string in den die Ausgabe geschrieben wird. Bei Angabe von NULL oder falls *utf32string_length = 0 ist, so wird falls utf32string = NULL oder *utf32string = 0 ist, ein neuer Speicherbereich alloziert bzw. falls *utf32string != 0 ist, der bestehende Speicherbereich re-alloziert. Ist der Speicherbereich zu klein für die Ausgabe, so wird ebenso ein längerer Speicherbereich alloziert. Sofern utf32string_length nicht NULL ist, wird die neue Länge des Speicherbereichs nach *utf32string_length geschrieben.
const char16_t *utf16string[IN]Ein null-terminierter und UTF-16 codierter String.

Return value:
Gibt die Anzahl Zeichen zurück, die nach utf32string geschrieben wurden.

Code: toggle

   convert_utf32_to_utf16_BE


Konvertiert einen String von UTF-32 zu UTF-16 in Big-Endian Byte Reihenfolge. Der UTF-32 muss in der Byte-Reihenfolge des System vorliegen.

Signature:
int utf16::convert_utf32_to_utf16_BE(char16_t **utf16string,int *utf16string_length,const int *utf32string)

Parameters:
Type Name Direction Description
char16_t **utf16string[OUT]Speicherbereich in den die Ausgabe geschrieben wird. Falls NULL angegeben wurde, oder falls utf16string = 0 ist, wird der Speicherbereich neu alloziert. Die anfängliche Länge des Speicherbereichs wird durch *utf8string_length festgelegt. Falls *utf16string_length = 0 (oder utf16string_length = NULL) ist, so wird die anfängliche Länge (in Bytes) auf die vierfache Anzahl Zeichen in utf32string gesetzt. Ist der Speicherbereich für die Ausgabe zu klein, so wird die Länge so lange verdoppelt (und der Speicher neu alloziert) bis der Speicherbereich lang genug ist. Die Länge des resultierenden Speicherbereichs kann daher deutlich länger sein, als die Länge des Ausgabe-Strings. Bei wiederholtem Aufruf, sollte ein bereits allozierter Speicherbereich wiederverwendet werden, um die Anzahl der benötigten Speicher-Allozierungen gering zu halten. Wird der Speicherbereich neu alloziert (oder re-alloziert) und ist utf8string nicht NULL, so wird die neue Adresse des Speicherbereichs nach *utf16string zurück geschrieben.
int *utf16string_length[IN/OUT]Länge des Speicherbereichs utf16string in den die Ausgabe geschrieben wird. Bei Angabe von NULL oder falls *utf16string_length = 0 ist, so wird falls utf32string = NULL oder *utf32string = 0 ist, ein neuer Speicherbereich alloziert bzw. falls *utf32string != 0 ist, der bestehende Speicherbereich re-alloziert. Ist der Speicherbereich zu klein für die Ausgabe, so wird ebenso ein längerer Speicherbereich alloziert. Sofern utf8string_length nicht NULL ist, wird die neue Länge des Speicherbereichs nach *utf8string_length geschrieben.
const int *utf32string[IN]Ein null-terminierter und UTF-32 codierter String.

Return value:
Gibt die Anzahl 2-Byte Zeichen zurück, die nach utf16string geschrieben wurden.

Code: toggle

   convert_utf32_to_utf16_LE


Konvertiert einen String von UTF-32 zu UTF-16 in Little-Endian Byte Reihenfolge. Der UTF-32 muss in der Byte-Reihenfolge des System vorliegen.

Signature:
int utf16::convert_utf32_to_utf16_LE(char16_t **utf16string,int *utf16string_length,const int *utf32string)

Parameters:
Type Name Direction Description
char16_t **utf16string[OUT]Speicherbereich in den die Ausgabe geschrieben wird. Falls NULL angegeben wurde, oder falls utf16string = 0 ist, wird der Speicherbereich neu alloziert. Die anfängliche Länge des Speicherbereichs wird durch *utf8string_length festgelegt. Falls *utf16string_length = 0 (oder utf16string_length = NULL) ist, so wird die anfängliche Länge (in Bytes) auf die vierfache Anzahl Zeichen in utf32string gesetzt. Ist der Speicherbereich für die Ausgabe zu klein, so wird die Länge so lange verdoppelt (und der Speicher neu alloziert) bis der Speicherbereich lang genug ist. Die Länge des resultierenden Speicherbereichs kann daher deutlich länger sein, als die Länge des Ausgabe-Strings. Bei wiederholtem Aufruf, sollte ein bereits allozierter Speicherbereich wiederverwendet werden, um die Anzahl der benötigten Speicher-Allozierungen gering zu halten. Wird der Speicherbereich neu alloziert (oder re-alloziert) und ist utf8string nicht NULL, so wird die neue Adresse des Speicherbereichs nach *utf16string zurück geschrieben.
int *utf16string_length[IN/OUT]Länge des Speicherbereichs utf16string in den die Ausgabe geschrieben wird. Bei Angabe von NULL oder falls *utf16string_length = 0 ist, so wird falls utf32string = NULL oder *utf32string = 0 ist, ein neuer Speicherbereich alloziert bzw. falls *utf32string != 0 ist, der bestehende Speicherbereich re-alloziert. Ist der Speicherbereich zu klein für die Ausgabe, so wird ebenso ein längerer Speicherbereich alloziert. Sofern utf8string_length nicht NULL ist, wird die neue Länge des Speicherbereichs nach *utf8string_length geschrieben.
const int *utf32string[IN]Ein null-terminierter und UTF-32 codierter String.

Return value:
Gibt die Anzahl 2-Byte Zeichen zurück, die nach utf16string geschrieben wurden.

Code: toggle

   getBOM_BE


Schreibt das BOM-Zeichen (Byte-Order-Mark) für die utf16-Codierung mit Big-Endian Byte Reihenfolge in den angegebenen Speicherbereich.

Signature:
int utf16::getBOM_BE(char16_t *utf16out)

Parameters:
Type Name Direction Description
char16_t *utf16out[OUT]Speicherbereich in welchen das BOM-Zeichen in UTF-16 Codierung geschrieben wird. Der Speicherbereich muss groß genug sein, um 2 Bytes aufzunehmen.

Return value:
Gibt die Anzahl 2-Byte Zeichen zurück, die das BOM-Zeichen für die utf16-Codierung benötigt. (Das ist immer 1.)

Code: toggle

   getBOM_LE


Schreibt das BOM-Zeichen (Byte-Order-Mark) für die utf16-Codierung mit Little-Endian Byte Reihenfolge in den angegebenen Speicherbereich.

Signature:
int utf16::getBOM_LE(char16_t *utf16out)

Parameters:
Type Name Direction Description
char16_t *utf16out[OUT]Speicherbereich in welchen das BOM-Zeichen in UTF-16 Codierung geschrieben wird. Der Speicherbereich muss groß genug sein, um 2 Bytes aufzunehmen.

Return value:
Gibt die Anzahl 2-Byte Zeichen zurück, die das BOM-Zeichen für die utf16-Codierung benötigt. (Das ist immer 1.)

Code: toggle

   testBOM


Testet, ob der gegebene String ein BOM-Zeichen (Byte-Order-Mark) für die UTF-16 Codierung enthält.

Signature:
int utf16::testBOM(const char16_t *utf16string)

Parameters:
Type Name Direction Description
const char16_t *utf16string[IN]Ein null-terminierter und UTF-16 codierter String.

Return value:
UTF16_NO_BOM / 0 falls kein BOM vorhanden ist.
UTF16_LE_BOM / 1 falls ein BOM für UTF-16 mit Little-Endian Byte Reihenfolge vorhanden ist.
UTF16_BE_BOM / 2 falls ein BOM für UTF-16 mit Big-Endian Byte Reihenfolge vorhanden ist.


Code: toggle


Copyright © 2017 - 2019 by Andreas Pollhammer