Fix multi-context
This commit is contained in:
parent
a916f81d8a
commit
788eed763a
15 changed files with 163 additions and 125 deletions
|
|
@ -151,6 +151,10 @@ int hzstrlen(u_char*, int);
|
|||
void seg_count(SJ3_CONTEXT DICT*);
|
||||
void mkidxtbl(SJ3_CONTEXT DICT*);
|
||||
void initwork(SJ3_CONTEXT2);
|
||||
#ifndef SJ3_GLOBAL
|
||||
Sj3Context* alloccontext(const char*);
|
||||
void free_context(Sj3Context*);
|
||||
#endif
|
||||
|
||||
/* istrcmp.c */
|
||||
int istrcmp(u_char*, u_char*, int, int);
|
||||
|
|
@ -178,12 +182,12 @@ JREC* argjrec(SJ3_CONTEXT int, JREC*);
|
|||
|
||||
/* mkkouho.c */
|
||||
void mkkouho(SJ3_CONTEXT2);
|
||||
u_char* makekan_none(u_char*, u_char*, int);
|
||||
u_char* makekan_1byte(u_char*, u_char*, int);
|
||||
u_char* makekan_none(SJ3_CONTEXT u_char*, u_char*, int);
|
||||
u_char* makekan_1byte(SJ3_CONTEXT u_char*, u_char*, int);
|
||||
u_char* makekan_knj(SJ3_CONTEXT u_char*, u_char*, int);
|
||||
u_char* makekan_ofs(SJ3_CONTEXT u_char*, u_char*, int);
|
||||
u_char* makekan_norm(u_char*, u_char*, int);
|
||||
u_char* makekan_ascii(u_char*, u_char*, int);
|
||||
u_char* makekan_norm(SJ3_CONTEXT u_char*, u_char*, int);
|
||||
u_char* makekan_ascii(SJ3_CONTEXT u_char*, u_char*, int);
|
||||
int sel_sjmode(JREC*);
|
||||
|
||||
/* mknumber.c */
|
||||
|
|
@ -260,12 +264,12 @@ extern u_short* selsjadrs[];
|
|||
int setconj(SJ3_CONTEXT TypeGram, JREC*, CREC*);
|
||||
|
||||
/* setjrec.c */
|
||||
int setj_atrb(u_char*);
|
||||
int setj_atrb(SJ3_CONTEXT u_char*);
|
||||
int setj_ofs(SJ3_CONTEXT u_char*);
|
||||
int setj_knj(SJ3_CONTEXT u_char*);
|
||||
int setj_norm1(u_char*);
|
||||
int setj_norm2(u_char*);
|
||||
int setj_norm3(u_char*); /* unused??? */
|
||||
int setj_norm1(SJ3_CONTEXT u_char*);
|
||||
int setj_norm2(SJ3_CONTEXT u_char*);
|
||||
int setj_norm3(SJ3_CONTEXT u_char*); /* unused??? */
|
||||
void setjrec(SJ3_CONTEXT u_char*, int);
|
||||
void setnumrec(SJ3_CONTEXT u_char*, JREC*, TypeGram);
|
||||
void setcrec(SJ3_CONTEXT u_char*);
|
||||
|
|
@ -273,13 +277,13 @@ void setcrec(SJ3_CONTEXT u_char*);
|
|||
/* setkouho.c */
|
||||
void setkouho(SJ3_CONTEXT CLREC*, TypeDicOfs, int);
|
||||
void ph_setkouho(SJ3_CONTEXT CLREC*, TypeDicOfs, STDYIN*);
|
||||
int hiraknj_atrb(u_char*, int*);
|
||||
int hiraknj_atrb(SJ3_CONTEXT u_char*, int*);
|
||||
int hiraknj_ofs(SJ3_CONTEXT u_char*, int*);
|
||||
int hiraknj_knj(SJ3_CONTEXT u_char*, int*);
|
||||
int hiraknj_hask(u_char*, int*);
|
||||
int hiraknj_kask(u_char*, int*);
|
||||
int hiraknj_norm(u_char*, int*);
|
||||
int hiraknj_hira(u_char*, int*);
|
||||
int hiraknj_hask(SJ3_CONTEXT u_char*, int*);
|
||||
int hiraknj_kask(SJ3_CONTEXT u_char*, int*);
|
||||
int hiraknj_norm(SJ3_CONTEXT u_char*, int*);
|
||||
int hiraknj_hira(SJ3_CONTEXT u_char*, int*);
|
||||
|
||||
/* setubi.c */
|
||||
u_char* getstb(TypeGram);
|
||||
|
|
|
|||
|
|
@ -202,6 +202,8 @@
|
|||
#define seg_count Jseg_count
|
||||
#define mkidxtbl Jmkidxtbl
|
||||
#define initwork Jinitwork
|
||||
#define alloccontext Jalloccontext
|
||||
#define free_context Jfree_context
|
||||
|
||||
#define free_jlst Jfree_jlst
|
||||
#define free_clst Jfree_clst
|
||||
|
|
|
|||
|
|
@ -98,7 +98,7 @@ u_int adddic(SJ3_CONTEXT u_char* yomi, u_char* kanji, TypeGram hinsi) {
|
|||
segnum = srchidx(SJ3_CONTEXT_PASS(TypeDicSeg) DICSEGBASE, cnvlen);
|
||||
|
||||
for(;;) {
|
||||
(*curdict->getdic)(curdict, segnum);
|
||||
(*curdict->getdic)(SJ3_CONTEXT_PASS curdict, segnum);
|
||||
i = srchkana(SJ3_CONTEXT_PASS & p1, &saml);
|
||||
dstofs = douofs = p1 - dicbuf;
|
||||
hnsofs = knjofs = 0;
|
||||
|
|
@ -153,7 +153,7 @@ u_int adddic(SJ3_CONTEXT u_char* yomi, u_char* kanji, TypeGram hinsi) {
|
|||
if((unsigned int)freidx < getplen(p1) + nlen + 1)
|
||||
return AD_OVFLWINDEX;
|
||||
|
||||
if((*curdict->putdic)(curdict, curdict->segunit))
|
||||
if((*curdict->putdic)(SJ3_CONTEXT_PASS curdict, curdict->segunit))
|
||||
return AD_OVFLWUSRDIC;
|
||||
|
||||
sprt_seg(SJ3_CONTEXT_PASS segnum, pos);
|
||||
|
|
@ -166,15 +166,15 @@ u_int adddic(SJ3_CONTEXT u_char* yomi, u_char* kanji, TypeGram hinsi) {
|
|||
if((unsigned int)freidx < cnvlen + 1)
|
||||
return AD_OVFLWINDEX;
|
||||
|
||||
if((*curdict->putdic)(curdict, curdict->segunit))
|
||||
if((*curdict->putdic)(SJ3_CONTEXT_PASS curdict, curdict->segunit))
|
||||
return AD_OVFLWUSRDIC;
|
||||
curdict->segunit++;
|
||||
|
||||
(*curdict->getdic)(curdict, curdict->segunit - 1);
|
||||
(*curdict->getdic)(SJ3_CONTEXT_PASS curdict, curdict->segunit - 1);
|
||||
memset(dicbuf, DICSEGTERM, (int)curdict->seglen);
|
||||
dicbuf[0] = 0;
|
||||
(*curdict->putdic)(curdict, curdict->segunit - 1);
|
||||
(*curdict->rszdic)(curdict, curdict->segunit);
|
||||
(*curdict->putdic)(SJ3_CONTEXT_PASS curdict, curdict->segunit - 1);
|
||||
(*curdict->rszdic)(SJ3_CONTEXT_PASS curdict, curdict->segunit);
|
||||
mkidxtbl(SJ3_CONTEXT_PASS curdict);
|
||||
|
||||
segnum++;
|
||||
|
|
@ -183,7 +183,7 @@ u_int adddic(SJ3_CONTEXT u_char* yomi, u_char* kanji, TypeGram hinsi) {
|
|||
if((unsigned int)freidx < getplen(p1) + nlen + 1)
|
||||
return AD_OVFLWINDEX;
|
||||
|
||||
if((*curdict->putdic)(curdict, curdict->segunit))
|
||||
if((*curdict->putdic)(SJ3_CONTEXT_PASS curdict, curdict->segunit))
|
||||
return AD_OVFLWUSRDIC;
|
||||
|
||||
sprt_seg(SJ3_CONTEXT_PASS segnum, douofs);
|
||||
|
|
@ -258,7 +258,7 @@ u_int adddic(SJ3_CONTEXT u_char* yomi, u_char* kanji, TypeGram hinsi) {
|
|||
if(!knjofs)
|
||||
*dstptr++ = HINSIBLKTERM;
|
||||
|
||||
(*curdict->putdic)(curdict, segnum);
|
||||
(*curdict->putdic)(SJ3_CONTEXT_PASS curdict, segnum);
|
||||
|
||||
if(StudyExist()) {
|
||||
size -= nxtask;
|
||||
|
|
@ -418,13 +418,13 @@ sprt_seg(SJ3_CONTEXT TypeDicSeg seg, TypeDicOfs ofs) {
|
|||
STDYIN* stdy;
|
||||
|
||||
for(s = curdict->segunit - 1; s >= seg; s--) {
|
||||
(*curdict->getdic)(curdict, s);
|
||||
(*curdict->putdic)(curdict, s + 1);
|
||||
(*curdict->getdic)(SJ3_CONTEXT_PASS curdict, s);
|
||||
(*curdict->putdic)(SJ3_CONTEXT_PASS curdict, s + 1);
|
||||
}
|
||||
curdict->segunit++;
|
||||
(*curdict->rszdic)(curdict, curdict->segunit);
|
||||
(*curdict->rszdic)(SJ3_CONTEXT_PASS curdict, curdict->segunit);
|
||||
|
||||
(*curdict->getdic)(curdict, seg + 1);
|
||||
(*curdict->getdic)(SJ3_CONTEXT_PASS curdict, seg + 1);
|
||||
|
||||
pos = dicbuf + ofs;
|
||||
|
||||
|
|
@ -455,7 +455,7 @@ sprt_seg(SJ3_CONTEXT TypeDicSeg seg, TypeDicOfs ofs) {
|
|||
p += i;
|
||||
memset(p, DICSEGTERM, (dicbuf + curdict->seglen - p));
|
||||
|
||||
(*curdict->putdic)(curdict, seg + 1);
|
||||
(*curdict->putdic)(SJ3_CONTEXT_PASS curdict, seg + 1);
|
||||
|
||||
if(StudyExist()) {
|
||||
dicid = curdict->dicid;
|
||||
|
|
@ -473,9 +473,9 @@ sprt_seg(SJ3_CONTEXT TypeDicSeg seg, TypeDicOfs ofs) {
|
|||
}
|
||||
}
|
||||
|
||||
(*curdict->getdic)(curdict, seg);
|
||||
(*curdict->getdic)(SJ3_CONTEXT_PASS curdict, seg);
|
||||
memset(dicbuf + ofs, DICSEGTERM, (int)(curdict->seglen - ofs));
|
||||
(*curdict->putdic)(curdict, seg);
|
||||
(*curdict->putdic)(SJ3_CONTEXT_PASS curdict, seg);
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
@ -493,7 +493,7 @@ apnd_uidx(SJ3_CONTEXT TypeDicSeg seg, u_char* yomi, int len) {
|
|||
*p++ = *yomi++;
|
||||
*p = 0;
|
||||
|
||||
(*curdict->putidx)(curdict, 0);
|
||||
(*curdict->putidx)(SJ3_CONTEXT_PASS curdict, 0);
|
||||
|
||||
mkidxtbl(SJ3_CONTEXT_PASS curdict);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -347,7 +347,7 @@ void chg_uidx(SJ3_CONTEXT TypeDicSeg seg, u_char* yomi, int len) {
|
|||
}
|
||||
while(len--) *p++ = *yomi++;
|
||||
|
||||
(*curdict->putidx)(curdict, 0);
|
||||
(*curdict->putidx)(SJ3_CONTEXT_PASS curdict, 0);
|
||||
|
||||
mkidxtbl(SJ3_CONTEXT_PASS curdict);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -82,7 +82,7 @@ void cvtdict(SJ3_CONTEXT KHREC* krec, CLREC* clrec, int flg) {
|
|||
|
||||
if(flg) {
|
||||
|
||||
(*Cvtnum_func[krec->mode - 1])(ystart + sttlen, yptr, jrec);
|
||||
(*Cvtnum_func[krec->mode - 1])(SJ3_CONTEXT_PASS ystart + sttlen, yptr, jrec);
|
||||
|
||||
yptr += (i = jrec->numlen) * 2;
|
||||
jlen -= i;
|
||||
|
|
@ -108,7 +108,7 @@ void cvtdict(SJ3_CONTEXT KHREC* krec, CLREC* clrec, int flg) {
|
|||
|
||||
if(ofs) {
|
||||
if(seldict(SJ3_CONTEXT_PASS jrec->dicid)) {
|
||||
(*curdict->getdic)(curdict, jrec->jseg);
|
||||
(*curdict->getdic)(SJ3_CONTEXT_PASS curdict, jrec->jseg);
|
||||
get_askknj(SJ3_CONTEXT_PASS2);
|
||||
kanjitmp +=
|
||||
getkanji(SJ3_CONTEXT_PASS yptr, jlen, dicbuf + ofs, kanjitmp);
|
||||
|
|
|
|||
|
|
@ -69,7 +69,7 @@ u_int deldic(SJ3_CONTEXT u_char* yomi, u_char* kanji, TypeGram hinsi) {
|
|||
cnvlen = sstrlen(yptr);
|
||||
|
||||
useg = srchidx(SJ3_CONTEXT_PASS(TypeDicSeg) DICSEGBASE, cnvlen);
|
||||
(*curdict->getdic)(curdict, useg);
|
||||
(*curdict->getdic)(SJ3_CONTEXT_PASS curdict, useg);
|
||||
|
||||
if(!(dblknum = srchkana(SJ3_CONTEXT_PASS & p1, &samlen))) return AD_NOMIDASI;
|
||||
|
||||
|
|
@ -108,7 +108,7 @@ u_int deldic(SJ3_CONTEXT u_char* yomi, u_char* kanji, TypeGram hinsi) {
|
|||
set_size(p1, (int)(getsize(p1) - size),
|
||||
(int)getplen(p1), (int)getnlen(p1));
|
||||
|
||||
(*curdict->putdic)(curdict, useg);
|
||||
(*curdict->putdic)(SJ3_CONTEXT_PASS curdict, useg);
|
||||
|
||||
del_stdy(SJ3_CONTEXT_PASS useg, ofs, size);
|
||||
|
||||
|
|
@ -154,7 +154,7 @@ del_douon(SJ3_CONTEXT TypeDicSeg seg, u_char* ptr, TypeDicOfs ofs) {
|
|||
}
|
||||
}
|
||||
|
||||
(*curdict->putdic)(curdict, seg);
|
||||
(*curdict->putdic)(SJ3_CONTEXT_PASS curdict, seg);
|
||||
|
||||
del_stdy(SJ3_CONTEXT_PASS seg, ofs, size);
|
||||
|
||||
|
|
@ -171,17 +171,17 @@ del_segment(SJ3_CONTEXT TypeDicSeg seg) {
|
|||
|
||||
if(curdict->segunit > 1) {
|
||||
for(sg = seg + 1; sg < curdict->segunit; sg++) {
|
||||
(*curdict->getdic)(curdict, sg);
|
||||
(*curdict->putdic)(curdict, sg - 1);
|
||||
(*curdict->getdic)(SJ3_CONTEXT_PASS curdict, sg);
|
||||
(*curdict->putdic)(SJ3_CONTEXT_PASS curdict, sg - 1);
|
||||
}
|
||||
curdict->segunit--;
|
||||
} else {
|
||||
memset(dicbuf, DICSEGTERM, (int)curdict->seglen);
|
||||
dicbuf[0] = 0;
|
||||
(*curdict->putdic)(curdict, DICSEGBASE);
|
||||
(*curdict->putdic)(SJ3_CONTEXT_PASS curdict, DICSEGBASE);
|
||||
}
|
||||
|
||||
(*curdict->rszdic)(curdict, curdict->segunit);
|
||||
(*curdict->rszdic)(SJ3_CONTEXT_PASS curdict, curdict->segunit);
|
||||
|
||||
del_uidx(SJ3_CONTEXT_PASS seg);
|
||||
|
||||
|
|
@ -227,7 +227,7 @@ del_uidx(SJ3_CONTEXT TypeDicSeg seg) {
|
|||
len = q - p;
|
||||
memset(idxbuf + curdict->idxlen - len, 0, len);
|
||||
|
||||
(*curdict->putidx)(curdict, 0);
|
||||
(*curdict->putidx)(SJ3_CONTEXT_PASS curdict, 0);
|
||||
|
||||
mkidxtbl(SJ3_CONTEXT_PASS curdict);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -82,8 +82,8 @@ int seldict(SJ3_CONTEXT TypeDicID id) {
|
|||
|
||||
u_char*
|
||||
get_idxptr(SJ3_CONTEXT TypeDicSeg seg) {
|
||||
(*curdict->getofs)(curdict);
|
||||
(*curdict->getidx)(curdict);
|
||||
(*curdict->getofs)(SJ3_CONTEXT_PASS curdict);
|
||||
(*curdict->getidx)(SJ3_CONTEXT_PASS curdict);
|
||||
|
||||
return idxbuf + idxofs[seg];
|
||||
}
|
||||
|
|
|
|||
|
|
@ -43,7 +43,7 @@ void seg_count(SJ3_CONTEXT DICT* dict) {
|
|||
TypeDicSeg segcnt = 0;
|
||||
|
||||
if(dict->getidx) {
|
||||
(*dict->getidx)(dict);
|
||||
(*dict->getidx)(SJ3_CONTEXT_PASS dict);
|
||||
|
||||
p = idxbuf;
|
||||
q = p + dict->idxlen;
|
||||
|
|
@ -64,8 +64,8 @@ void mkidxtbl(SJ3_CONTEXT DICT* dict) {
|
|||
|
||||
seg = 0;
|
||||
|
||||
(*dict->getidx)(dict);
|
||||
(*dict->getofs)(dict);
|
||||
(*dict->getidx)(SJ3_CONTEXT_PASS dict);
|
||||
(*dict->getofs)(SJ3_CONTEXT_PASS dict);
|
||||
|
||||
idxofs[0] = 0;
|
||||
for(p = idxbuf; p < idxbuf + dict->idxlen && seg < dict->segunit;) {
|
||||
|
|
@ -78,3 +78,49 @@ void initwork(SJ3_CONTEXT2) {
|
|||
jrt1st = jrt2nd = maxjptr = (JREC*)0;
|
||||
clt1st = clt2nd = maxclptr = (CLREC*)0;
|
||||
}
|
||||
|
||||
#ifndef SJ3_GLOBAL
|
||||
Sj3Context* alloccontext(const char* dic) {
|
||||
Sj3Context* ctx = calloc(1, sizeof(*ctx));
|
||||
DictFile* dict;
|
||||
DICTL* node;
|
||||
|
||||
ctx->work = calloc(1, sizeof(*ctx->work));
|
||||
ctx->stdy = calloc(1, sizeof(*ctx->stdy));
|
||||
|
||||
node = calloc(1, sizeof(*node));
|
||||
ctx->work->Jdictlist = node;
|
||||
|
||||
initwork(ctx);
|
||||
|
||||
dict = opendict(ctx, (char*)dic, "");
|
||||
|
||||
node->dict = &dict->dict;
|
||||
node->next = NULL;
|
||||
|
||||
seldict(ctx, dict->dict.dicid);
|
||||
|
||||
return ctx;
|
||||
}
|
||||
|
||||
void free_context(Sj3Context* ctx) {
|
||||
DICTL* node;
|
||||
|
||||
node = ctx->work->Jdictlist;
|
||||
while(node != NULL) {
|
||||
DICTL* next = node->next;
|
||||
|
||||
closedict(ctx, (DictFile*)node->dict);
|
||||
free(node);
|
||||
|
||||
node = next;
|
||||
}
|
||||
|
||||
freework(ctx);
|
||||
|
||||
free(ctx->stdy);
|
||||
free(ctx->work);
|
||||
|
||||
free(ctx);
|
||||
}
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -99,7 +99,7 @@ cl_kanji(SJ3_CONTEXT JREC* jrec, CLREC* clrec) {
|
|||
int kcount = khcount;
|
||||
|
||||
if(seldict(SJ3_CONTEXT_PASS jrec->dicid)) {
|
||||
(*curdict->getdic)(curdict, jrec->jseg);
|
||||
(*curdict->getdic)(SJ3_CONTEXT_PASS curdict, jrec->jseg);
|
||||
ptr = dicbuf + jrec->jofsst + 1;
|
||||
|
||||
get_askknj(SJ3_CONTEXT_PASS2);
|
||||
|
|
@ -116,12 +116,12 @@ cl_kanji(SJ3_CONTEXT JREC* jrec, CLREC* clrec) {
|
|||
}
|
||||
|
||||
u_char*
|
||||
makekan_none(u_char* s, u_char* d, int flg) {
|
||||
makekan_none(SJ3_CONTEXT u_char* s, u_char* d, int flg) {
|
||||
return d;
|
||||
}
|
||||
|
||||
u_char*
|
||||
makekan_1byte(u_char* s, u_char* d, int flg) {
|
||||
makekan_1byte(SJ3_CONTEXT u_char* s, u_char* d, int flg) {
|
||||
if((*s & KANJIMODEMASK) == ZENHIRAASSYUKU)
|
||||
*d++ = 0x10 | (*s & KNJASSYUKUMASK);
|
||||
else
|
||||
|
|
@ -142,7 +142,7 @@ u_char* makekan_ofs(SJ3_CONTEXT u_char* s, u_char* d, int flg) {
|
|||
}
|
||||
|
||||
u_char*
|
||||
makekan_norm(u_char* s, u_char* d, int flg) {
|
||||
makekan_norm(SJ3_CONTEXT u_char* s, u_char* d, int flg) {
|
||||
u_char c;
|
||||
|
||||
if(*s != 0) {
|
||||
|
|
@ -159,7 +159,7 @@ makekan_norm(u_char* s, u_char* d, int flg) {
|
|||
}
|
||||
|
||||
u_char*
|
||||
makekan_ascii(u_char* s, u_char* d, int flg) {
|
||||
makekan_ascii(SJ3_CONTEXT u_char* s, u_char* d, int flg) {
|
||||
u_char c;
|
||||
|
||||
c = s[1];
|
||||
|
|
@ -181,11 +181,11 @@ makekan(SJ3_CONTEXT u_char* s, u_char* d, int flg) {
|
|||
if(s[csize] == KANJISTREND) {
|
||||
switch(*s & KANJIMODEMASK) {
|
||||
case ZENHIRAASSYUKU:
|
||||
d = makekan_1byte(s, d, flg);
|
||||
d = makekan_1byte(SJ3_CONTEXT_PASS s, d, flg);
|
||||
break;
|
||||
|
||||
case ZENKATAASSYUKU:
|
||||
d = makekan_1byte(s, d, flg);
|
||||
d = makekan_1byte(SJ3_CONTEXT_PASS s, d, flg);
|
||||
break;
|
||||
|
||||
case OFFSETASSYUKU:
|
||||
|
|
@ -193,11 +193,11 @@ makekan(SJ3_CONTEXT u_char* s, u_char* d, int flg) {
|
|||
break;
|
||||
|
||||
case AIATTRIBUTE:
|
||||
d = makekan_none(s, d, flg);
|
||||
d = makekan_none(SJ3_CONTEXT_PASS s, d, flg);
|
||||
break;
|
||||
|
||||
case LEADINGHANKAKU:
|
||||
d = makekan_ascii(s, d, flg);
|
||||
d = makekan_ascii(SJ3_CONTEXT_PASS s, d, flg);
|
||||
break;
|
||||
|
||||
case KANJIASSYUKU:
|
||||
|
|
@ -205,17 +205,17 @@ makekan(SJ3_CONTEXT u_char* s, u_char* d, int flg) {
|
|||
break;
|
||||
|
||||
default:
|
||||
d = makekan_norm(s, d, flg);
|
||||
d = makekan_norm(SJ3_CONTEXT_PASS s, d, flg);
|
||||
}
|
||||
break;
|
||||
} else
|
||||
switch(*s & KANJIMODEMASK) {
|
||||
case ZENHIRAASSYUKU:
|
||||
d = makekan_1byte(s, d, FALSE);
|
||||
d = makekan_1byte(SJ3_CONTEXT_PASS s, d, FALSE);
|
||||
break;
|
||||
|
||||
case ZENKATAASSYUKU:
|
||||
d = makekan_1byte(s, d, FALSE);
|
||||
d = makekan_1byte(SJ3_CONTEXT_PASS s, d, FALSE);
|
||||
break;
|
||||
|
||||
case OFFSETASSYUKU:
|
||||
|
|
@ -223,11 +223,11 @@ makekan(SJ3_CONTEXT u_char* s, u_char* d, int flg) {
|
|||
break;
|
||||
|
||||
case AIATTRIBUTE:
|
||||
d = makekan_none(s, d, FALSE);
|
||||
d = makekan_none(SJ3_CONTEXT_PASS s, d, FALSE);
|
||||
break;
|
||||
|
||||
case LEADINGHANKAKU:
|
||||
d = makekan_ascii(s, d, FALSE);
|
||||
d = makekan_ascii(SJ3_CONTEXT_PASS s, d, FALSE);
|
||||
break;
|
||||
|
||||
case KANJIASSYUKU:
|
||||
|
|
@ -235,7 +235,7 @@ makekan(SJ3_CONTEXT u_char* s, u_char* d, int flg) {
|
|||
break;
|
||||
|
||||
default:
|
||||
d = makekan_norm(s, d, FALSE);
|
||||
d = makekan_norm(SJ3_CONTEXT_PASS s, d, FALSE);
|
||||
}
|
||||
s += codesize(*s);
|
||||
}
|
||||
|
|
@ -404,7 +404,7 @@ cl_numcmn(SJ3_CONTEXT JREC* jrec, CLREC* clrec) {
|
|||
i = sel_sjmode(jrec);
|
||||
|
||||
if(seldict(SJ3_CONTEXT_PASS jrec->dicid)) {
|
||||
(*curdict->getdic)(curdict, jrec->jseg);
|
||||
(*curdict->getdic)(SJ3_CONTEXT_PASS curdict, jrec->jseg);
|
||||
|
||||
p = dicbuf + jrec->jofsst + 1;
|
||||
|
||||
|
|
|
|||
|
|
@ -50,7 +50,7 @@ int getusr(SJ3_CONTEXT u_char* buf) {
|
|||
|
||||
peepyomi[0] = peepknj[0] = peepgrm = 0;
|
||||
|
||||
(*curdict->getdic)(curdict, peepidx = DICSEGBASE);
|
||||
(*curdict->getdic)(SJ3_CONTEXT_PASS curdict, peepidx = DICSEGBASE);
|
||||
get_askknj(SJ3_CONTEXT_PASS2);
|
||||
|
||||
peepdptr = segtop();
|
||||
|
|
@ -74,7 +74,7 @@ int getusr(SJ3_CONTEXT u_char* buf) {
|
|||
}
|
||||
|
||||
int nextusr(SJ3_CONTEXT u_char* buf) {
|
||||
(*curdict->getdic)(curdict, peepidx);
|
||||
(*curdict->getdic)(SJ3_CONTEXT_PASS curdict, peepidx);
|
||||
get_askknj(SJ3_CONTEXT_PASS2);
|
||||
|
||||
if(next_kanji(SJ3_CONTEXT_PASS2)) {
|
||||
|
|
@ -89,7 +89,7 @@ int nextusr(SJ3_CONTEXT u_char* buf) {
|
|||
}
|
||||
|
||||
int prevusr(SJ3_CONTEXT u_char* buf) {
|
||||
(*curdict->getdic)(curdict, peepidx);
|
||||
(*curdict->getdic)(SJ3_CONTEXT_PASS curdict, peepidx);
|
||||
get_askknj(SJ3_CONTEXT_PASS2);
|
||||
|
||||
if(prev_kanji(SJ3_CONTEXT_PASS2)) {
|
||||
|
|
@ -185,7 +185,7 @@ prev_douon(SJ3_CONTEXT2) {
|
|||
if(peepdptr <= segtop()) {
|
||||
if(peepidx <= DICSEGBASE) return 0;
|
||||
|
||||
(*curdict->getdic)(curdict, --peepidx);
|
||||
(*curdict->getdic)(SJ3_CONTEXT_PASS curdict, --peepidx);
|
||||
get_askknj(SJ3_CONTEXT_PASS2);
|
||||
|
||||
set_idxyomi(SJ3_CONTEXT_PASS2);
|
||||
|
|
@ -272,7 +272,7 @@ next_douon(SJ3_CONTEXT2) {
|
|||
|
||||
if(segend(p1)) {
|
||||
if(peepidx + 1 < curdict->segunit) {
|
||||
(*curdict->getdic)(curdict, ++peepidx);
|
||||
(*curdict->getdic)(SJ3_CONTEXT_PASS curdict, ++peepidx);
|
||||
get_askknj(SJ3_CONTEXT_PASS2);
|
||||
peepdptr = segtop();
|
||||
|
||||
|
|
|
|||
|
|
@ -50,7 +50,7 @@ ph_setsty(SJ3_CONTEXT CLREC* clrec) {
|
|||
return;
|
||||
}
|
||||
|
||||
(*curdict->getdic)(curdict, jrec->jseg);
|
||||
(*curdict->getdic)(SJ3_CONTEXT_PASS curdict, jrec->jseg);
|
||||
ptr = dicbuf + jrec->jofsst + 1;
|
||||
|
||||
for(; *ptr != HINSIBLKTERM; ptr = skipkstr(ptr)) {
|
||||
|
|
|
|||
|
|
@ -39,7 +39,7 @@
|
|||
|
||||
#include "sj_kanakan.h"
|
||||
|
||||
int setj_atrb(u_char* p) {
|
||||
int setj_atrb(SJ3_CONTEXT u_char* p) {
|
||||
return 2;
|
||||
}
|
||||
|
||||
|
|
@ -52,11 +52,11 @@ int setj_ofs(SJ3_CONTEXT u_char* p) {
|
|||
if(p[codesize(*p)] == KANJISTREND) contf = FALSE;
|
||||
switch(*p & KANJIMODEMASK) {
|
||||
case ZENHIRAASSYUKU:
|
||||
p += setj_norm1(p);
|
||||
p += setj_norm1(SJ3_CONTEXT_PASS p);
|
||||
break;
|
||||
|
||||
case ZENKATAASSYUKU:
|
||||
p += setj_norm1(p);
|
||||
p += setj_norm1(SJ3_CONTEXT_PASS p);
|
||||
break;
|
||||
|
||||
case OFFSETASSYUKU:
|
||||
|
|
@ -64,11 +64,11 @@ int setj_ofs(SJ3_CONTEXT u_char* p) {
|
|||
break;
|
||||
|
||||
case AIATTRIBUTE:
|
||||
p += setj_atrb(p);
|
||||
p += setj_atrb(SJ3_CONTEXT_PASS p);
|
||||
break;
|
||||
|
||||
case LEADINGHANKAKU:
|
||||
p += setj_norm2(p);
|
||||
p += setj_norm2(SJ3_CONTEXT_PASS p);
|
||||
break;
|
||||
|
||||
case KANJIASSYUKU:
|
||||
|
|
@ -80,7 +80,7 @@ int setj_ofs(SJ3_CONTEXT u_char* p) {
|
|||
break;
|
||||
|
||||
default:
|
||||
p += setj_norm2(p);
|
||||
p += setj_norm2(SJ3_CONTEXT_PASS p);
|
||||
}
|
||||
} while(contf);
|
||||
|
||||
|
|
@ -96,11 +96,11 @@ int setj_knj(SJ3_CONTEXT u_char* p) {
|
|||
if(p[codesize(*p)] == KANJISTREND) contf = FALSE;
|
||||
switch(*p & KANJIMODEMASK) {
|
||||
case ZENHIRAASSYUKU:
|
||||
p += setj_norm1(p);
|
||||
p += setj_norm1(SJ3_CONTEXT_PASS p);
|
||||
break;
|
||||
|
||||
case ZENKATAASSYUKU:
|
||||
p += setj_norm1(p);
|
||||
p += setj_norm1(SJ3_CONTEXT_PASS p);
|
||||
break;
|
||||
|
||||
case OFFSETASSYUKU:
|
||||
|
|
@ -108,11 +108,11 @@ int setj_knj(SJ3_CONTEXT u_char* p) {
|
|||
break;
|
||||
|
||||
case AIATTRIBUTE:
|
||||
p += setj_atrb(p);
|
||||
p += setj_atrb(SJ3_CONTEXT_PASS p);
|
||||
break;
|
||||
|
||||
case LEADINGHANKAKU:
|
||||
p += setj_norm2(p);
|
||||
p += setj_norm2(SJ3_CONTEXT_PASS p);
|
||||
break;
|
||||
|
||||
case KANJIASSYUKU:
|
||||
|
|
@ -124,22 +124,22 @@ int setj_knj(SJ3_CONTEXT u_char* p) {
|
|||
break;
|
||||
|
||||
default:
|
||||
p += setj_norm2(p);
|
||||
p += setj_norm2(SJ3_CONTEXT_PASS p);
|
||||
}
|
||||
} while(contf);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
int setj_norm1(u_char* p) {
|
||||
int setj_norm1(SJ3_CONTEXT u_char* p) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
int setj_norm2(u_char* p) {
|
||||
int setj_norm2(SJ3_CONTEXT u_char* p) {
|
||||
return 2;
|
||||
}
|
||||
|
||||
int setj_norm3(u_char* p) {
|
||||
int setj_norm3(SJ3_CONTEXT u_char* p) {
|
||||
return 3;
|
||||
}
|
||||
|
||||
|
|
@ -187,11 +187,11 @@ void setjrec(SJ3_CONTEXT u_char* tagp, int mode) {
|
|||
for(tmp = ptr + 1; *tmp != HINSIBLKTERM;) {
|
||||
switch(*tmp & KANJIMODEMASK) {
|
||||
case ZENHIRAASSYUKU:
|
||||
tmp += setj_norm1(tmp);
|
||||
tmp += setj_norm1(SJ3_CONTEXT_PASS tmp);
|
||||
break;
|
||||
|
||||
case ZENKATAASSYUKU:
|
||||
tmp += setj_norm1(tmp);
|
||||
tmp += setj_norm1(SJ3_CONTEXT_PASS tmp);
|
||||
break;
|
||||
|
||||
case OFFSETASSYUKU:
|
||||
|
|
@ -199,11 +199,11 @@ void setjrec(SJ3_CONTEXT u_char* tagp, int mode) {
|
|||
break;
|
||||
|
||||
case AIATTRIBUTE:
|
||||
tmp += setj_atrb(tmp);
|
||||
tmp += setj_atrb(SJ3_CONTEXT_PASS tmp);
|
||||
break;
|
||||
|
||||
case LEADINGHANKAKU:
|
||||
tmp += setj_norm2(tmp);
|
||||
tmp += setj_norm2(SJ3_CONTEXT_PASS tmp);
|
||||
break;
|
||||
|
||||
case KANJIASSYUKU:
|
||||
|
|
@ -215,7 +215,7 @@ void setjrec(SJ3_CONTEXT u_char* tagp, int mode) {
|
|||
break;
|
||||
|
||||
default:
|
||||
tmp += setj_norm2(tmp);
|
||||
tmp += setj_norm2(SJ3_CONTEXT_PASS tmp);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -255,11 +255,11 @@ void setnumrec(SJ3_CONTEXT u_char* tagp, JREC* rec, TypeGram gram) {
|
|||
for(tmp = ptr + 1; *tmp != HINSIBLKTERM;) {
|
||||
switch(*tmp & KANJIMODEMASK) {
|
||||
case ZENHIRAASSYUKU:
|
||||
tmp += setj_norm1(tmp);
|
||||
tmp += setj_norm1(SJ3_CONTEXT_PASS tmp);
|
||||
break;
|
||||
|
||||
case ZENKATAASSYUKU:
|
||||
tmp += setj_norm1(tmp);
|
||||
tmp += setj_norm1(SJ3_CONTEXT_PASS tmp);
|
||||
break;
|
||||
|
||||
case OFFSETASSYUKU:
|
||||
|
|
@ -267,11 +267,11 @@ void setnumrec(SJ3_CONTEXT u_char* tagp, JREC* rec, TypeGram gram) {
|
|||
break;
|
||||
|
||||
case AIATTRIBUTE:
|
||||
tmp += setj_atrb(tmp);
|
||||
tmp += setj_atrb(SJ3_CONTEXT_PASS tmp);
|
||||
break;
|
||||
|
||||
case LEADINGHANKAKU:
|
||||
tmp += setj_norm2(tmp);
|
||||
tmp += setj_norm2(SJ3_CONTEXT_PASS tmp);
|
||||
break;
|
||||
|
||||
case KANJIASSYUKU:
|
||||
|
|
@ -283,7 +283,7 @@ void setnumrec(SJ3_CONTEXT u_char* tagp, JREC* rec, TypeGram gram) {
|
|||
break;
|
||||
|
||||
default:
|
||||
tmp += setj_norm2(tmp);
|
||||
tmp += setj_norm2(SJ3_CONTEXT_PASS tmp);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -163,11 +163,11 @@ hiraknj(SJ3_CONTEXT u_char* p) {
|
|||
if(p[codesize(*p)] == KANJISTREND) flg = FALSE;
|
||||
switch(*p & KANJIMODEMASK) {
|
||||
case ZENHIRAASSYUKU:
|
||||
result = hiraknj_hask(p, &i);
|
||||
result = hiraknj_hask(SJ3_CONTEXT_PASS p, &i);
|
||||
break;
|
||||
|
||||
case ZENKATAASSYUKU:
|
||||
result = hiraknj_kask(p, &i);
|
||||
result = hiraknj_kask(SJ3_CONTEXT_PASS p, &i);
|
||||
break;
|
||||
|
||||
case OFFSETASSYUKU:
|
||||
|
|
@ -175,11 +175,11 @@ hiraknj(SJ3_CONTEXT u_char* p) {
|
|||
break;
|
||||
|
||||
case AIATTRIBUTE:
|
||||
result = hiraknj_atrb(p, &i);
|
||||
result = hiraknj_atrb(SJ3_CONTEXT_PASS p, &i);
|
||||
break;
|
||||
|
||||
case LEADINGHANKAKU:
|
||||
result = hiraknj_norm(p, &i);
|
||||
result = hiraknj_norm(SJ3_CONTEXT_PASS p, &i);
|
||||
break;
|
||||
|
||||
case KANJIASSYUKU:
|
||||
|
|
@ -187,7 +187,7 @@ hiraknj(SJ3_CONTEXT u_char* p) {
|
|||
break;
|
||||
|
||||
default:
|
||||
result = hiraknj_hira(p, &i);
|
||||
result = hiraknj_hira(SJ3_CONTEXT_PASS p, &i);
|
||||
}
|
||||
|
||||
if(result) return result;
|
||||
|
|
@ -198,7 +198,7 @@ hiraknj(SJ3_CONTEXT u_char* p) {
|
|||
return 0;
|
||||
}
|
||||
|
||||
int hiraknj_atrb(u_char* p, int* len) {
|
||||
int hiraknj_atrb(SJ3_CONTEXT u_char* p, int* len) {
|
||||
*len = 2;
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -213,22 +213,22 @@ int hiraknj_knj(SJ3_CONTEXT u_char* p, int* len) {
|
|||
return hiraknj(SJ3_CONTEXT_PASS askknj[*p & KNJASSYUKUMASK]);
|
||||
}
|
||||
|
||||
int hiraknj_hask(u_char* p, int* len) {
|
||||
int hiraknj_hask(SJ3_CONTEXT u_char* p, int* len) {
|
||||
*len = 1;
|
||||
return 2;
|
||||
}
|
||||
|
||||
int hiraknj_kask(u_char* p, int* len) {
|
||||
int hiraknj_kask(SJ3_CONTEXT u_char* p, int* len) {
|
||||
*len = 1;
|
||||
return 3;
|
||||
}
|
||||
|
||||
int hiraknj_norm(u_char* p, int* len) {
|
||||
int hiraknj_norm(SJ3_CONTEXT u_char* p, int* len) {
|
||||
*len = codesize(*p);
|
||||
return 1;
|
||||
}
|
||||
|
||||
int hiraknj_hira(u_char* p, int* len) {
|
||||
int hiraknj_hira(SJ3_CONTEXT u_char* p, int* len) {
|
||||
u_char ch;
|
||||
|
||||
*len = codesize(*p);
|
||||
|
|
|
|||
|
|
@ -90,7 +90,7 @@ srchdict(SJ3_CONTEXT u_char* tagp) {
|
|||
|
||||
segno = srchidx(SJ3_CONTEXT_PASS prevseg, (int)dicinl);
|
||||
|
||||
(*curdict->getdic)(curdict, segno);
|
||||
(*curdict->getdic)(SJ3_CONTEXT_PASS curdict, segno);
|
||||
|
||||
if(prevseg != segno) {
|
||||
|
||||
|
|
@ -109,7 +109,7 @@ srchdict(SJ3_CONTEXT u_char* tagp) {
|
|||
|
||||
if(segno >= curdict->segunit) return NULL;
|
||||
|
||||
(*curdict->getdic)(curdict, segno);
|
||||
(*curdict->getdic)(SJ3_CONTEXT_PASS curdict, segno);
|
||||
|
||||
tagp = dicbuf;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,27 +1,11 @@
|
|||
#include <sj_kanakan.h>
|
||||
|
||||
int main(int argc, char** argv) {
|
||||
DictFile* dict;
|
||||
DICTL* node;
|
||||
char out[64 * 1024];
|
||||
int i = 0;
|
||||
char c[64 * 1024];
|
||||
char b;
|
||||
Sj3Context ctx;
|
||||
|
||||
ctx.work = calloc(1, sizeof(Global));
|
||||
|
||||
node = calloc(1, sizeof(DICTL));
|
||||
ctx.work->Jdictlist = node;
|
||||
|
||||
initwork(&ctx);
|
||||
|
||||
dict = opendict(&ctx, "dic.bin", "");
|
||||
|
||||
node->dict = &dict->dict;
|
||||
node->next = NULL;
|
||||
|
||||
seldict(&ctx, dict->dict.dicid);
|
||||
char out[64 * 1024];
|
||||
int i = 0;
|
||||
char c[64 * 1024];
|
||||
char b;
|
||||
Sj3Context* ctx = alloccontext("dic.bin");
|
||||
|
||||
c[0] = 0;
|
||||
|
||||
|
|
@ -37,7 +21,7 @@ int main(int argc, char** argv) {
|
|||
}
|
||||
|
||||
i = 0;
|
||||
while((strlen(c) - i) > 0 && (i += cl2knj(&ctx, (u_char*)c + i, strlen(c) - i, (u_char*)out))) {
|
||||
while((strlen(c) - i) > 0 && (i += cl2knj(ctx, (u_char*)c + i, strlen(c) - i, (u_char*)out))) {
|
||||
STDYOUT* s = (STDYOUT*)out;
|
||||
|
||||
printf("> %s\n", out + sizeof(STDYOUT));
|
||||
|
|
@ -46,5 +30,7 @@ int main(int argc, char** argv) {
|
|||
c[0] = 0;
|
||||
}
|
||||
|
||||
free_context(ctx);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue