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