1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
|
#include "gcin.h"
#include "pho.h"
void utf8_putchar_fp(FILE *fp, char *s);
void utf8_dbg(char *s);
void prph2_fp(FILE *fp, phokey_t kk)
{
u_int k[4];
phokey_t okk = kk;
k[3]=(kk&7);
kk>>=3;
k[2]=(kk&15) * PHO_CHAR_LEN;
kk>>=4;
k[1]=(kk&3) * PHO_CHAR_LEN;
kk>>=2;
k[0]=(kk&31) * PHO_CHAR_LEN;
if (k[0]==BACK_QUOTE_NO*PHO_CHAR_LEN) {
utf8_putchar(&pho_chars[0][k[0]]);
char c = okk & 0x7f;
if (c > ' ')
fprintf(fp, "%c", c);
} else {
int i;
for(i=0; i < 3; i++) {
if (!k[i])
continue;
utf8_putchar_fp(fp, &pho_chars[i][k[i]]);
}
if (k[3])
fprintf(fp, "%d", k[3]);
}
}
void prph2(phokey_t kk)
{
u_int k[4];
phokey_t okk = kk;
k[3]=(kk&7);
kk>>=3;
k[2]=(kk&15) * PHO_CHAR_LEN;
kk>>=4;
k[1]=(kk&3) * PHO_CHAR_LEN;
kk>>=2;
k[0]=(kk&31) * PHO_CHAR_LEN;
if (k[0]==BACK_QUOTE_NO*PHO_CHAR_LEN) {
utf8_dbg(&pho_chars[0][k[0]]);
char c = okk & 0x7f;
if (c > ' ')
utf8_dbg(&c);
} else {
int i;
for(i=0; i < 3; i++) {
if (!k[i])
continue;
utf8_dbg(&pho_chars[i][k[i]]);
}
if (k[3])
dbg("%d", k[3]);
}
}
extern FILE *dbgfp;
void prph(phokey_t kk)
{
#if UNIX
prph2(kk);
#else
#if DEBUG
#if USE_FP
prph2(dbgfp, kk);
#else
prph2(kk);
#endif
#else
prph2(kk);
#endif
#endif
}
void prphs(phokey_t *ks, int ksN)
{
int i;
for(i=0;i<ksN;i++) {
prph(ks[i]); dbg(" ");
}
}
|