⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unicode.inc

📁 著名的游戏开发库Allegro4.2.0 for DELPHI
💻 INC
字号:
{*         ______   ___    ___
 *        /\  _  \ /\_ \  /\_ \
 *        \ \ \L\ \\//\ \ \//\ \      __     __   _ __   ___
 *         \ \  __ \ \ \ \  \ \ \   /'__`\ /'_ `\/\`'__\/ __`\
 *          \ \ \/\ \ \_\ \_ \_\ \_/\  __//\ \L\ \ \ \//\ \L\ \
 *           \ \_\ \_\/\____\/\____\ \____\ \____ \ \_\\ \____/
 *            \/_/\/_/\/____/\/____/\/____/\/___L\ \/_/ \/___/
 *                                           /\____/
 *                                           \_/__/
 *
 *      Unicode support routines.
 *
 *      By Shawn Hargreaves.
 *
 *      See readme.txt for copyright information.
 *}
{$IFDEF ALLEGRO_INTERFACE}
const
  U_ASCII                    = (ord ('A') shl 24) + (ord ('S') shl 16) + (ord ('C') shl 8) + ord ('8');
  U_ASCII_CP                 = (ord ('A') shl 24) + (ord ('S') shl 16) + (ord ('C') shl 8) + ord ('P');
  U_UNICODE                  = (ord ('U') shl 24) + (ord ('N') shl 16) + (ord ('I') shl 8) + ord ('C');
  U_UTF8                     = (ord ('U') shl 24) + (ord ('T') shl 16) + (ord ('F') shl 8) + ord ('8');
  U_CURRENT                  = (ord ('c') shl 24) + (ord ('u') shl 16) + (ord ('r') shl 8) + ord ('.');
  U_GB2312                   = (ord ('G') shl 24) + (ord ('B') shl 16) + (ord ('2') shl 8) + ord ('3');

  _EMPTY_STRING              = #0#0#0;

type
  ru_getc   = function(const s: PChar): sint32; cdecl;
  ru_getx   = function(s: PPChar): sint32; cdecl;
  ru_getxc  = function (const s: PPChar): sint32; cdecl;
  ru_setc   = function(s: PChar; c: sint32): sint32; cdecl;
  ru_width  = function(const s: PChar): sint32; cdecl;
  ru_cwidth = function(c: sint32): sint32; cdecl;
  ru_isok   = function(c: sint32): sint32; cdecl;
  // _ustrdup
  malloc_func_ptr = function (size: Integer): pointer; cdecl;

var
  set_uformat      : procedure(types: sint32); cdecl;
  get_uformat      : function: sint32; cdecl;
  register_uformat : procedure(types: sint32; u_getc: ru_getc; u_getx: ru_getx; u_setc: ru_setc; u_width: ru_width; u_cwidth: ru_cwidth; u_isok: ru_isok; u_width_max: sint32); cdecl;
  set_ucodepage    : procedure(const table, extras: p_uint16s); cdecl;

  need_uconvert    : function(const s: PChar; types, newtype: sint32): sint32; cdecl;
  uconvert_size    : function(const s: PChar; types, newtype: sint32): sint32; cdecl;
  do_uconvert      : procedure(const s: PChar; types: sint32; buf: PChar; newtype, size: sint32); cdecl;
  uconvert         : function(const s: PChar; types: sint32; buf: PChar; newtype, size: sint32): PChar; cdecl;
  uwidth_max       : function(types: sint32): sint32; cdecl;

  empty_string     : PChar;

  ugetc            : ^ru_getc;
  ugetx            : ^ru_getx;
  ugetxc           : ^ru_getxc;
  usetc            : ^ru_setc;
  uwidth           : ^ru_width;
  ucwidth          : ^ru_cwidth;
  uisok            : ^ru_isok;
  uoffset          : function(const s: PChar; idx: sint32): sint32; cdecl;
  ugetat           : function(const s: PChar; idx: sint32): sint32; cdecl;
  usetat           : function(s: PChar; idx, c: sint32): sint32; cdecl;
  uinsert          : function(s: PChar; idx, c: sint32): sint32; cdecl;
  uremove          : function(s: PChar; idx: sint32): sint32; cdecl;
  utolower         : function: sint32; cdecl;
  utoupper         : function: sint32; cdecl;
  uisspace         : function: sint32; cdecl;
  uisdigit         : function: sint32; cdecl;
  ustrsize         : function(const s: PChar): sint32; cdecl;
  ustrsizez        : function(const s: PChar): sint32; cdecl;
  _ustrdup         : function(const src: PChar; malloc_func: malloc_func_ptr): PChar; cdecl;
  ustrdup          : function(const src: PChar; malloc_func: malloc_func_ptr): PChar; cdecl;
  ustrzcpy         : function(dest: PChar; size: sint32; const src: PChar): PChar; cdecl;
  ustrzcat         : function(dest: PChar; size: sint32; const src: PChar): PChar; cdecl;
  ustrlen          : function(const s: PChar): sint32; cdecl;
  ustrcmp          : function(const s1, s2: PChar): sint32; cdecl;
  ustrzncpy        : function(dest: PChar; size: sint32; const src: PChar; n: sint32): PChar; cdecl;
  ustrzncat        : function(dest: PChar; size: sint32; const src: PChar; n: sint32): PChar; cdecl;
  ustrncmp         : function(const s1, s2: PChar; n: sint32): sint32; cdecl;
  ustricmp         : function(const s1, s2: PChar): sint32; cdecl;
  ustrnicmp        : function(const s1, s2: PChar; n: sint32): sint32; cdecl;
  ustrlwr          : function(s: PChar): PChar; cdecl;
  ustrupr          : function(s: PChar): PChar; cdecl;
  ustrchr          : function(const s: PChar; c: sint32): PChar; cdecl;
  ustrrchr         : function(const s: PChar; c: sint32): PChar; cdecl;
  ustrstr          : function(const s1, s2: PChar): PChar; cdecl;
  ustrpbrk         : function(const s, sets: PChar): PChar; cdecl;
  ustrtok          : function(s: PChar; const sets: PChar): PChar; cdecl;
  ustrtok_r        : function(s: PChar; const sets: PChar; last: p_PChar):PChar; cdecl;
  uatof            : function(const s: PChar): double; cdecl;
  ustrtol          : function(const s: PChar; endp: p_pchar; base: sint32): sint32; cdecl;
  ustrtod          : function(const s: PChar; endp: p_pchar): double; cdecl;
  ustrerror        : function(err: sint32): PChar; cdecl;
  uszprintf        : function(buf: PChar; size: sint32; const format: PChar; arglist: va_list): sint32; cdecl;
  uvszprintf       : function(buf: PChar; size: sint32; const format: PChar; arglist: va_list): sint32; cdecl;
  usprintf         : function(buf: PChar; const format: PChar; arglist: va_list): sint32; cdecl;

function ustrcpy(dest: PChar; const src: PChar): PChar;
function ustrcat(dest: PChar; const src: PChar): PChar;
function ustrncpy(dest: PChar; const src: PChar; n: sint32): PChar;
function ustrncat(dest: PChar; const src: PChar; n: sint32): PChar;
function uvsprintf(buf: PChar; const format: PChar; arglist: va_list): sint32;
function uconvert_ascii(const s: PChar; buf: PChar): PChar;
function uconvert_toascii(const s: PChar; buf: PChar): PChar;
{$ENDIF ALLEGRO_INTERFACE}

{$IFDEF ALLEGRO_IMPLEMENTATION}
function ustrcpy(dest: PChar; const src: PChar): PChar;
begin
  Result := ustrzcpy(dest, INT_MAX, src);
end;
function ustrcat(dest: PChar; const src: PChar): PChar;
begin
  Result := ustrzcat(dest, INT_MAX, src);
end;
function ustrncpy(dest: PChar; const src: PChar; n: sint32): PChar;
begin
  Result := ustrzncpy(dest, INT_MAX, src, n);
end;
function ustrncat(dest: PChar; const src: PChar; n: sint32): PChar;
begin
  Result := ustrzncat(dest, INT_MAX, src, n);
end;
function uvsprintf(buf: PChar; const format: PChar; arglist: va_list): sint32;
begin
  Result := uvszprintf(buf, INT_MAX, format, arglist);
end;
function uconvert_ascii(const s: PChar; buf: PChar): PChar;
begin
  Result := uconvert(s, U_ASCII, buf, U_CURRENT, SizeOf(buf));
end;
function uconvert_toascii(const s: PChar; buf: PChar): PChar;
begin
  Result := uconvert(s, U_CURRENT, buf, U_ASCII, SizeOf(buf));
end;
{$ENDIF ALLEGRO_IMPLEMENTATION}

{$IFDEF ALLEGRO_LOADVARIABLE}
  set_uformat                := LoadDLL('set_uformat');
  get_uformat                := LoadDLL('get_uformat');
  register_uformat           := LoadDLL('register_uformat');
  set_ucodepage              := LoadDLL('set_ucodepage');
  need_uconvert              := LoadDLL('need_uconvert');
  uconvert_size              := LoadDLL('uconvert_size');
  do_uconvert                := LoadDLL('do_uconvert');
  uconvert                   := LoadDLL('uconvert');
  uwidth_max                 := LoadDLL('uwidth_max');
  empty_string               := LoadDLL('empty_string');
  ugetc                      := LoadDLL('ugetc');
  ugetx                      := LoadDLL('ugetx');
  ugetxc                     := LoadDLL('ugetxc');
  usetc                      := LoadDLL('usetc');
  uwidth                     := LoadDLL('uwidth');
  ucwidth                    := LoadDLL('ucwidth');
  uisok                      := LoadDLL('uisok');
  uoffset                    := LoadDLL('uoffset');
  ugetat                     := LoadDLL('ugetat');
  usetat                     := LoadDLL('usetat');
  uinsert                    := LoadDLL('uinsert');
  uremove                    := LoadDLL('uremove');
  utolower                   := LoadDLL('utolower');
  utoupper                   := LoadDLL('utoupper');
  uisspace                   := LoadDLL('uisspace');
  uisdigit                   := LoadDLL('uisdigit');
  ustrsize                   := LoadDLL('ustrsize');
  ustrsizez                  := LoadDLL('ustrsizez');
  _ustrdup                   := LoadDLL('_ustrdup');
  ustrdup                    := LoadDLL('_ustrdup');
  ustrzcpy                   := LoadDLL('ustrzcpy');
  ustrzcat                   := LoadDLL('ustrzcat');
  ustrlen                    := LoadDLL('ustrlen');
  ustrcmp                    := LoadDLL('ustrcmp');
  ustrzncpy                  := LoadDLL('ustrzncpy');
  ustrzncat                  := LoadDLL('ustrzncat');
  ustrncmp                   := LoadDLL('ustrncmp');
  ustricmp                   := LoadDLL('ustricmp');
  ustrnicmp                  := LoadDLL('ustrnicmp');
  ustrlwr                    := LoadDLL('ustrlwr');
  ustrupr                    := LoadDLL('ustrupr');
  ustrchr                    := LoadDLL('ustrchr');
  ustrrchr                   := LoadDLL('ustrrchr');
  ustrstr                    := LoadDLL('ustrstr');
  ustrpbrk                   := LoadDLL('ustrpbrk');
  ustrtok                    := LoadDLL('ustrtok');
  ustrtok_r                  := LoadDLL('ustrtok_r');
  uatof                      := LoadDLL('uatof');
  ustrtol                    := LoadDLL('ustrtol');
  ustrtod                    := LoadDLL('ustrtod');
  ustrerror                  := LoadDLL('ustrerror');
  uszprintf                  := LoadDLL('uszprintf');
  uvszprintf                 := LoadDLL('uvszprintf');
  usprintf                   := LoadDLL('usprintf');
{$ENDIF ALLEGRO_LOADVARIABLE}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -