gunicode.inc 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241
  1. {*
  2. * gunicode.inc
  3. *
  4. * depends on gerror.inc, gtypes.inc
  5. *}
  6. type
  7. Pgunichar = ^gunichar;
  8. gunichar = guint32;
  9. Pgunichar2 = ^gunichar2;
  10. gunichar2 = guint16;
  11. { These are the possible character classifications.
  12. See http://www.unicode.org/Public/UNIDATA/UnicodeData.html
  13. }
  14. PGUnicodeType = ^TGUnicodeType;
  15. TGUnicodeType = (G_UNICODE_CONTROL,
  16. G_UNICODE_FORMAT,
  17. G_UNICODE_UNASSIGNED,
  18. G_UNICODE_PRIVATE_USE,
  19. G_UNICODE_SURROGATE,
  20. G_UNICODE_LOWERCASE_LETTER,
  21. G_UNICODE_MODIFIER_LETTER,
  22. G_UNICODE_OTHER_LETTER,
  23. G_UNICODE_TITLECASE_LETTER,
  24. G_UNICODE_UPPERCASE_LETTER,
  25. G_UNICODE_COMBINING_MARK,
  26. G_UNICODE_ENCLOSING_MARK,
  27. G_UNICODE_NON_SPACING_MARK,
  28. G_UNICODE_DECIMAL_NUMBER,
  29. G_UNICODE_LETTER_NUMBER,
  30. G_UNICODE_OTHER_NUMBER,
  31. G_UNICODE_CONNECT_PUNCTUATION,
  32. G_UNICODE_DASH_PUNCTUATION,
  33. G_UNICODE_CLOSE_PUNCTUATION,
  34. G_UNICODE_FINAL_PUNCTUATION,
  35. G_UNICODE_INITIAL_PUNCTUATION,
  36. G_UNICODE_OTHER_PUNCTUATION,
  37. G_UNICODE_OPEN_PUNCTUATION,
  38. G_UNICODE_CURRENCY_SYMBOL,
  39. G_UNICODE_MODIFIER_SYMBOL,
  40. G_UNICODE_MATH_SYMBOL,
  41. G_UNICODE_OTHER_SYMBOL,
  42. G_UNICODE_LINE_SEPARATOR,
  43. G_UNICODE_PARAGRAPH_SEPARATOR,
  44. G_UNICODE_SPACE_SEPARATOR);
  45. { These are the possible line break classifications.
  46. See http://www.unicode.org/unicode/reports/tr14/
  47. }
  48. PGUnicodeBreakType = ^TGUnicodeBreakType;
  49. TGUnicodeBreakType = (G_UNICODE_BREAK_MANDATORY,
  50. G_UNICODE_BREAK_CARRIAGE_RETURN,
  51. G_UNICODE_BREAK_LINE_FEED,
  52. G_UNICODE_BREAK_COMBINING_MARK,
  53. G_UNICODE_BREAK_SURROGATE,
  54. G_UNICODE_BREAK_ZERO_WIDTH_SPACE,
  55. G_UNICODE_BREAK_INSEPARABLE,
  56. G_UNICODE_BREAK_NON_BREAKING_GLUE,
  57. G_UNICODE_BREAK_CONTINGENT,
  58. G_UNICODE_BREAK_SPACE,
  59. G_UNICODE_BREAK_AFTER,
  60. G_UNICODE_BREAK_BEFORE,
  61. G_UNICODE_BREAK_BEFORE_AND_AFTER,
  62. G_UNICODE_BREAK_HYPHEN,
  63. G_UNICODE_BREAK_NON_STARTER,
  64. G_UNICODE_BREAK_OPEN_PUNCTUATION,
  65. G_UNICODE_BREAK_CLOSE_PUNCTUATION,
  66. G_UNICODE_BREAK_QUOTATION,
  67. G_UNICODE_BREAK_EXCLAMATION,
  68. G_UNICODE_BREAK_IDEOGRAPHIC,
  69. G_UNICODE_BREAK_NUMERIC,
  70. G_UNICODE_BREAK_INFIX_SEPARATOR,
  71. G_UNICODE_BREAK_SYMBOL,
  72. G_UNICODE_BREAK_ALPHABETIC,
  73. G_UNICODE_BREAK_PREFIX,
  74. G_UNICODE_BREAK_POSTFIX,
  75. G_UNICODE_BREAK_COMPLEX_CONTEXT,
  76. G_UNICODE_BREAK_AMBIGUOUS,
  77. G_UNICODE_BREAK_UNKNOWN);
  78. { Returns TRUE if current locale uses UTF-8 charset. If CHARSET is
  79. not null, sets CHARSET to the name of the current locale's
  80. charset. This value is statically allocated, and should be copied
  81. in case the locale's charset will be changed later using setlocale()
  82. or in some other way.
  83. }
  84. function g_get_charset(charset:PPchar):gboolean;cdecl;external gliblib name 'g_get_charset';
  85. { These are all analogs of the <ctype.h> functions.
  86. }
  87. function g_unichar_isalnum(c:gunichar):gboolean;cdecl;external gliblib name 'g_unichar_isalnum';
  88. function g_unichar_isalpha(c:gunichar):gboolean;cdecl;external gliblib name 'g_unichar_isalpha';
  89. function g_unichar_iscntrl(c:gunichar):gboolean;cdecl;external gliblib name 'g_unichar_iscntrl';
  90. function g_unichar_isdigit(c:gunichar):gboolean;cdecl;external gliblib name 'g_unichar_isdigit';
  91. function g_unichar_isgraph(c:gunichar):gboolean;cdecl;external gliblib name 'g_unichar_isgraph';
  92. function g_unichar_islower(c:gunichar):gboolean;cdecl;external gliblib name 'g_unichar_islower';
  93. function g_unichar_isprint(c:gunichar):gboolean;cdecl;external gliblib name 'g_unichar_isprint';
  94. function g_unichar_ispunct(c:gunichar):gboolean;cdecl;external gliblib name 'g_unichar_ispunct';
  95. function g_unichar_isspace(c:gunichar):gboolean;cdecl;external gliblib name 'g_unichar_isspace';
  96. function g_unichar_isupper(c:gunichar):gboolean;cdecl;external gliblib name 'g_unichar_isupper';
  97. function g_unichar_isxdigit(c:gunichar):gboolean;cdecl;external gliblib name 'g_unichar_isxdigit';
  98. function g_unichar_istitle(c:gunichar):gboolean;cdecl;external gliblib name 'g_unichar_istitle';
  99. function g_unichar_isdefined(c:gunichar):gboolean;cdecl;external gliblib name 'g_unichar_isdefined';
  100. function g_unichar_iswide(c:gunichar):gboolean;cdecl;external gliblib name 'g_unichar_iswide';
  101. { More <ctype.h> functions. These convert between the three cases.
  102. See the Unicode book to understand title case. }
  103. function g_unichar_toupper(c:gunichar):gunichar;cdecl;external gliblib name 'g_unichar_toupper';
  104. function g_unichar_tolower(c:gunichar):gunichar;cdecl;external gliblib name 'g_unichar_tolower';
  105. function g_unichar_totitle(c:gunichar):gunichar;cdecl;external gliblib name 'g_unichar_totitle';
  106. { If C is a digit (according to `g_unichar_isdigit'), then return its
  107. numeric value. Otherwise return -1. }
  108. function g_unichar_digit_value(c:gunichar):gint;cdecl;external gliblib name 'g_unichar_digit_value';
  109. function g_unichar_xdigit_value(c:gunichar):gint;cdecl;external gliblib name 'g_unichar_xdigit_value';
  110. { Return the Unicode character type of a given character. }
  111. function g_unichar_type(c:gunichar):TGUnicodeType;cdecl;external gliblib name 'g_unichar_type';
  112. { Return the line break property for a given character }
  113. function g_unichar_break_type(c:gunichar):TGUnicodeBreakType;cdecl;external gliblib name 'g_unichar_break_type';
  114. { Compute canonical ordering of a string in-place. This rearranges
  115. decomposed characters in the string according to their combining
  116. classes. See the Unicode manual for more information. }
  117. procedure g_unicode_canonical_ordering(_string:Pgunichar; len:gsize);cdecl;external gliblib name 'g_unicode_canonical_ordering';
  118. { Compute canonical decomposition of a character. Returns g_malloc()d
  119. string of Unicode characters. RESULT_LEN is set to the resulting
  120. length of the string. }
  121. function g_unicode_canonical_decomposition(ch:gunichar; result_len:Pgsize):Pgunichar;cdecl;external gliblib name 'g_unicode_canonical_decomposition';
  122. {$IFNDEF KYLIX}
  123. { Array of skip-bytes-per-initial character.
  124. }
  125. var
  126. g_utf8_skip : pgchar; external gliblib name 'g_utf8_skip';
  127. {$ENDIF}
  128. function g_utf8_next_char (p: pguchar):pguchar;
  129. function g_utf8_get_char(p:Pgchar):gunichar;cdecl;external gliblib name 'g_utf8_get_char';
  130. function g_utf8_get_char_validated(p:Pgchar; max_len:gssize):gunichar;cdecl;external gliblib name 'g_utf8_get_char_validated';
  131. function g_utf8_offset_to_pointer(str:Pgchar; offset:glong):Pgchar;cdecl;external gliblib name 'g_utf8_offset_to_pointer';
  132. function g_utf8_pointer_to_offset(str:Pgchar; pos:Pgchar):glong;cdecl;external gliblib name 'g_utf8_pointer_to_offset';
  133. function g_utf8_prev_char(p:Pgchar):Pgchar;cdecl;external gliblib name 'g_utf8_prev_char';
  134. function g_utf8_find_next_char(p:Pgchar; _end:Pgchar):Pgchar;cdecl;external gliblib name 'g_utf8_find_next_char';
  135. function g_utf8_find_prev_char(str:Pgchar; p:Pgchar):Pgchar;cdecl;external gliblib name 'g_utf8_find_prev_char';
  136. function g_utf8_strlen(p:Pgchar; max:gssize):glong;cdecl;external gliblib name 'g_utf8_strlen';
  137. { Copies n characters from src to dest }
  138. function g_utf8_strncpy(dest:Pgchar; src:Pgchar; n:gsize):Pgchar;cdecl;external gliblib name 'g_utf8_strncpy';
  139. { Find the UTF-8 character corresponding to ch, in string p. These
  140. functions are equivalants to strchr and strrchr }
  141. function g_utf8_strchr(p:Pgchar; len:gssize; c:gunichar):Pgchar;cdecl;external gliblib name 'g_utf8_strchr';
  142. function g_utf8_strrchr(p:Pgchar; len:gssize; c:gunichar):Pgchar;cdecl;external gliblib name 'g_utf8_strrchr';
  143. function g_utf8_to_utf16(str:Pgchar; len:glong; items_read:Pglong; items_written:Pglong; error:PPGError):Pgunichar2;cdecl;external gliblib name 'g_utf8_to_utf16';
  144. function g_utf8_to_ucs4(str:Pgchar; len:glong; items_read:Pglong; items_written:Pglong; error:PPGError):Pgunichar;cdecl;external gliblib name 'g_utf8_to_ucs4';
  145. function g_utf8_to_ucs4_fast(str:Pgchar; len:glong; items_written:Pglong):Pgunichar;cdecl;external gliblib name 'g_utf8_to_ucs4_fast';
  146. function g_utf16_to_ucs4(str:Pgunichar2; len:glong; items_read:Pglong; items_written:Pglong; error:PPGError):Pgunichar;cdecl;external gliblib name 'g_utf16_to_ucs4';
  147. function g_utf16_to_utf8(str:Pgunichar2; len:glong; items_read:Pglong; items_written:Pglong; error:PPGError):Pgchar;cdecl;external gliblib name 'g_utf16_to_utf8';
  148. function g_ucs4_to_utf16(str:Pgunichar; len:glong; items_read:Pglong; items_written:Pglong; error:PPGError):Pgunichar2;cdecl;external gliblib name 'g_ucs4_to_utf16';
  149. function g_ucs4_to_utf8(str:Pgunichar; len:glong; items_read:Pglong; items_written:Pglong; error:PPGError):Pgchar;cdecl;external gliblib name 'g_ucs4_to_utf8';
  150. { Convert a single character into UTF-8. outbuf must have at
  151. least 6 bytes of space. Returns the number of bytes in the
  152. result.
  153. }
  154. function g_unichar_to_utf8(c:gunichar; outbuf:Pgchar):gint;cdecl;external gliblib name 'g_unichar_to_utf8';
  155. { Validate a UTF8 string, return TRUE if valid, put pointer to
  156. first invalid char in end
  157. }
  158. function g_utf8_validate(str:Pgchar; max_len:gssize; _end:PPgchar):gboolean;cdecl;external gliblib name 'g_utf8_validate';
  159. { Validate a Unicode character }
  160. function g_unichar_validate(ch:gunichar):gboolean;cdecl;external gliblib name 'g_unichar_validate';
  161. function g_utf8_strup(str:Pgchar; len:gssize):Pgchar;cdecl;external gliblib name 'g_utf8_strup';
  162. function g_utf8_strdown(str:Pgchar; len:gssize):Pgchar;cdecl;external gliblib name 'g_utf8_strdown';
  163. function g_utf8_casefold(str:Pgchar; len:gssize):Pgchar;cdecl;external gliblib name 'g_utf8_casefold';
  164. type
  165. PGNormalizeMode = ^TGNormalizeMode;
  166. TGNormalizeMode = gint;
  167. const G_NORMALIZE_DEFAULT = 0;
  168. G_NORMALIZE_NFD = G_NORMALIZE_DEFAULT;
  169. G_NORMALIZE_DEFAULT_COMPOSE = 1;
  170. G_NORMALIZE_NFC = G_NORMALIZE_DEFAULT_COMPOSE;
  171. G_NORMALIZE_ALL = 2;
  172. G_NORMALIZE_NFKD = G_NORMALIZE_ALL;
  173. G_NORMALIZE_ALL_COMPOSE = 3;
  174. G_NORMALIZE_NFKC = G_NORMALIZE_ALL_COMPOSE;
  175. function g_utf8_normalize(str:Pgchar; len:gssize; mode:TGNormalizeMode):Pgchar;cdecl;external gliblib name 'g_utf8_normalize';
  176. function g_utf8_collate(str1:Pgchar; str2:Pgchar):gint;cdecl;external gliblib name 'g_utf8_collate';
  177. function g_utf8_collate_key(str:Pgchar; len:gssize):Pgchar;cdecl;external gliblib name 'g_utf8_collate_key';