📄 check.c
字号:
typedef long INT32;
#define R2D_PTREE_TYPE 3
#define R2D_PTREE_BRANCHING 0
#define R2D_PTREE_PREFIX 1
#define R2D_PTREE_UNICODE_BLOCK 0
#define R2D_PTREE_GLYPH_INDEX 1
#define R2D_PTREE_CONVERSION 2
#define R2D_PTREE_LEFT 2
#define R2D_PTREE_RIGHT 3
#define R2D_PTREE_CONVERSION 2
#define R2D_PTREE_T_LEAF 0
#define R2D_PTREE_SHIFT 4
INT32 tree[]={
0,1,4,160,
0,2,8,76,
0,4,12,32,
0,8,16,20,
0x00000000,0,0,0,
8,16,24,28,
0x00000308,528,-11888,0,
0x00000038,144,-752,0,
4,8,36,48,
4,256,40,44,
0x00000004,64,0,0,
0x00000304,464,-11888,0,
12,16,52,64,
12,32,56,60,
0x0000030C,592,-11888,0,
0x0000016C,304,-5520,0,
28,32,68,72,
0x0000025C,400,-9264,0,
0x0000003C,208,-752,0,
2,4,80,116,
2,8,84,88,
0x00000002,32,0,0,
10,16,92,104,
10,32,96,100,
0x0000030A,560,-11888,0,
0x0000016A,272,-5520,0,
26,32,108,112,
0x0000025A,368,-9264,0,
0x0000003A,176,-752,0,
6,8,120,132,
6,256,124,128,
0x00000006,96,0,0,
0x00000306,496,-11888,0,
14,16,136,148,
14,32,140,144,
0x0000030E,624,-11888,0,
0x0000016E,336,-5520,0,
30,32,152,156,
0x0000025E,432,-9264,0,
0x0000003E,240,-752,0,
1,2,164,232,
1,4,168,188,
1,8,172,176,
0x00000001,16,0,0,
9,16,180,184,
0x00000309,544,-11888,0,
0x00000039,160,-752,0,
5,8,192,204,
5,256,196,200,
0x00000005,80,0,0,
0x00000305,480,-11888,0,
13,16,208,220,
13,32,212,216,
0x0000030D,608,-11888,0,
0x0000016D,320,-5520,0,
29,32,224,228,
0x0000025D,416,-9264,0,
0x0000003D,224,-752,0,
3,4,236,272,
3,8,240,244,
0x00000003,48,0,0,
11,16,248,260,
11,32,252,256,
0x0000030B,576,-11888,0,
0x0000016B,288,-5520,0,
27,32,264,268,
0x0000025B,384,-9264,0,
0x0000003B,192,-752,0,
7,8,276,296,
7,16,280,292,
7,256,284,288,
0x00000007,112,0,0,
0x00000307,512,-11888,0,
0x00000037,128,-752,0,
15,16,300,312,
15,32,304,308,
0x0000030F,640,-11888,0,
0x0000016F,352,-5520,0,
31,32,316,320,
0x0000025F,448,-9264,0,
0x0000003F,256,-752,0,
};
INT32 old_ptree_find(INT32 unicode,INT32 i)
{
if (tree[i+R2D_PTREE_TYPE]==R2D_PTREE_T_LEAF)
{
if (tree[i+R2D_PTREE_UNICODE_BLOCK]==(unicode>>R2D_PTREE_SHIFT))
{
printf("i=%d,%d\n",i,unicode+(tree[i+R2D_PTREE_CONVERSION]));
return(unicode + (tree[i+R2D_PTREE_CONVERSION]));
}
else
return(0);
}
else
{
if ((unicode >> R2D_PTREE_SHIFT) & tree[i+R2D_PTREE_PREFIX])
return(old_ptree_find(unicode,tree[i+R2D_PTREE_RIGHT]));
else
return(old_ptree_find(unicode,tree[i+R2D_PTREE_LEFT]));
}
}
// Iterative version
INT32 ptree_find(INT32 unicode)
{
INT32 state=0;
INT32 current_block;
current_block=unicode>>R2D_PTREE_SHIFT;
while (tree[state+R2D_PTREE_TYPE]!=R2D_PTREE_T_LEAF)
{
if (current_block & tree[state+R2D_PTREE_PREFIX])
state=tree[state+R2D_PTREE_RIGHT];
else
state=tree[state+R2D_PTREE_LEFT];
}
if (tree[state+R2D_PTREE_UNICODE_BLOCK]==current_block)
{
printf("i=%d,%d\n",state,unicode+(tree[state+R2D_PTREE_CONVERSION]));
return(unicode + (tree[state+R2D_PTREE_CONVERSION]));
}
else
return(0);
}
int main(int argc,char **argv)
{
INT32 result;
result=ptree_find(0x25d9);
printf("%0x\n\n",result);
return(0);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -