📄 unicode.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 + -