Add multi-context

This commit is contained in:
Nishi 2026-06-19 23:45:47 +09:00
commit a916f81d8a
30 changed files with 264 additions and 246 deletions

View file

@ -20,5 +20,6 @@ file(GLOB_RECURSE SJ3TEST_SRCS src/sj3test/**.c)
add_executable(sj3test ${SJ3TEST_SRCS})
target_link_libraries(sj3test PRIVATE sj3core)
target_compile_definitions(sj3core PRIVATE UTF8)
#target_compile_definitions(sj3core PUBLIC SJ3_GLOBAL)
target_compile_definitions(sj3mkdic PRIVATE UTF8 ENGLISH)

View file

@ -36,7 +36,7 @@
#ifndef SJ_GLOBAL_H
#define SJ_GLOBAL_H
#if 0
#ifdef SJ3_GLOBAL
extern Global* work_base;
extern STDY* stdy_base;
#endif

View file

@ -234,19 +234,19 @@ extern u_char kigou[];
/* sdepend.c */
DictFile* opendict(SJ3_CONTEXT char*, char*);
int closedict(SJ3_CONTEXT DictFile*);
void lock_dict(SJ3_CONTEXT DictFile*, int);
void unlock_dict(SJ3_CONTEXT DictFile*, int);
int is_dict_locked(SJ3_CONTEXT DictFile*);
StdyFile* openstdy(SJ3_CONTEXT char*, char*);
int closestdy(SJ3_CONTEXT StdyFile*);
void lock_dict(DictFile*, int);
void unlock_dict(DictFile*, int);
int is_dict_locked(DictFile*);
StdyFile* openstdy(char*, char*);
int closestdy(StdyFile*);
int putstydic(SJ3_CONTEXT2);
int putcldic(SJ3_CONTEXT2);
int makedict(SJ3_CONTEXT char*, int, int, int);
int makestdy(SJ3_CONTEXT char*, int, int, int);
int makedict(char*, int, int, int);
int makestdy(char*, int, int, int);
void sj_closeall(SJ3_CONTEXT2);
int set_dictpass(SJ3_CONTEXT DictFile*, char*);
int set_dictpass(DictFile*, char*);
int set_stdypass(SJ3_CONTEXT char*);
int set_dictcmnt(SJ3_CONTEXT DictFile*, char*);
int set_dictcmnt(DictFile*, char*);
int set_stdycmnt(SJ3_CONTEXT char*);
int get_stdysize(SJ3_CONTEXT int*, int*, int*);
@ -260,12 +260,12 @@ extern u_short* selsjadrs[];
int setconj(SJ3_CONTEXT TypeGram, JREC*, CREC*);
/* setjrec.c */
int setj_atrb(SJ3_CONTEXT u_char*);
int setj_atrb(u_char*);
int setj_ofs(SJ3_CONTEXT u_char*);
int setj_knj(SJ3_CONTEXT u_char*);
int setj_norm1(SJ3_CONTEXT u_char*);
int setj_norm2(SJ3_CONTEXT u_char*);
int setj_norm3(SJ3_CONTEXT u_char*); /* unused??? */
int setj_norm1(u_char*);
int setj_norm2(u_char*);
int setj_norm3(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,16 +273,16 @@ 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(SJ3_CONTEXT u_char*, int*);
int hiraknj_atrb(u_char*, int*);
int hiraknj_ofs(SJ3_CONTEXT u_char*, int*);
int hiraknj_knj(SJ3_CONTEXT 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*);
int hiraknj_hask(u_char*, int*);
int hiraknj_kask(u_char*, int*);
int hiraknj_norm(u_char*, int*);
int hiraknj_hira(u_char*, int*);
/* setubi.c */
u_char* getstb(SJ3_CONTEXT TypeGram);
u_char* getstb(TypeGram);
void setubi(SJ3_CONTEXT JREC*, u_char*);
/* sj2code.c */
@ -290,10 +290,10 @@ int sj2cd_chr(u_char*, u_char*);
int sj2cd_str(u_char*, u_char*, int);
/* skiphblk.c */
u_char* skiphblk(SJ3_CONTEXT u_char*);
u_char* skiphblk(u_char*);
/* skipkstr.c */
u_char* skipkstr(SJ3_CONTEXT u_char*);
u_char* skipkstr(u_char*);
/* srchdict.c */
int yomicmp(SJ3_CONTEXT u_char*, u_char*, u_char*);

View file

@ -46,11 +46,27 @@ typedef unsigned char u_char;
typedef unsigned short u_short;
typedef unsigned int u_int;
typedef void (*VFunc)(void*, void*, void*);
typedef u_char* (*UCPFunc)(u_char*, u_char*, int);
typedef int (*IFunc)(void*, int);
typedef void (*VFunc)(
#ifndef SJ3_GLOBAL
void*,
#endif
void*, void*, void*);
typedef u_char* (*UCPFunc)(
#ifndef SJ3_GLOBAL
void*,
#endif
u_char*, u_char*, int);
typedef int (*IFunc)(
#ifndef SJ3_GLOBAL
void*,
#endif
void*, int);
typedef int (*IFuncDict)(void*);
typedef int (*IFuncDict)(
#ifndef SJ3_GLOBAL
void*,
#endif
void*);
typedef u_char TypeGroup;
typedef u_char TypeGram;

View file

@ -335,7 +335,7 @@ checksub(SJ3_CONTEXT u_char* kanji, TypeGram grm) {
return -1;
}
dounum++;
ptr = skipkstr(SJ3_CONTEXT_PASS ptr);
ptr = skipkstr(ptr);
}
ptr++;

View file

@ -37,7 +37,7 @@
#include "sj_kanakan.h"
static CLREC *nextrecblk(), *prevrecblk();
static CLREC *nextrecblk(SJ3_CONTEXT2), *prevrecblk(SJ3_CONTEXT2);
static void initkbuf(SJ3_CONTEXT u_char*);
@ -102,7 +102,7 @@ int nextcl(SJ3_CONTEXT u_char* kouho, int mode) {
if(!mode && (selectid < khcount))
selectid++;
else if((mode < 2) && (clptr = nextrecblk())) {
else if((mode < 2) && (clptr = nextrecblk(SJ3_CONTEXT_PASS2))) {
selectid = 1;
clt1st = clptr;
mkkouho(SJ3_CONTEXT_PASS2);
@ -142,7 +142,7 @@ int prevcl(SJ3_CONTEXT u_char* kouho, int mode) {
if(!mode && (selectid > 1))
selectid--;
else if((mode < 2) && (clptr = prevrecblk())) {
else if((mode < 2) && (clptr = prevrecblk(SJ3_CONTEXT_PASS2))) {
clt1st = clptr;
mkkouho(SJ3_CONTEXT_PASS2);
getrank(SJ3_CONTEXT_PASS2);

View file

@ -96,7 +96,7 @@ void cvtdict(SJ3_CONTEXT KHREC* krec, CLREC* clrec, int flg) {
stblen = 0;
}
else if((i = jrec->stbofs) && (fptr = getstb(SJ3_CONTEXT_PASS jrec->hinsi))) {
else if((i = jrec->stbofs) && (fptr = getstb(jrec->hinsi))) {
fptr += i - 1;
stblen = StbYomiLen(fptr);
jlen -= stblen;

View file

@ -162,7 +162,7 @@ void setstyrec(SJ3_CONTEXT KHREC* krec) {
stdy.sttfg = krec->sttfg;
stdy.ka_fg = krec->ka_fg;
if(jrec->stbofs && (fptr = getstb(SJ3_CONTEXT_PASS jrec->hinsi)))
if(jrec->stbofs && (fptr = getstb(jrec->hinsi)))
stdy.len -= StbYomiLen(fptr + jrec->stbofs - 1);
if((fptr = Settou_ptr(jrec->sttofs)))

View file

@ -80,7 +80,7 @@ u_int deldic(SJ3_CONTEXT u_char* yomi, u_char* kanji, TypeGram hinsi) {
if(*p3 == HINSIBLKTERM) return AD_NOKANJI;
ofs = p3 - dicbuf;
edp = skipkstr(SJ3_CONTEXT_PASS p3);
edp = skipkstr(p3);
if(kblknum == 1) {
if(hblknum == 1) {

View file

@ -56,7 +56,7 @@ void mkbunsetu(SJ3_CONTEXT2) {
while(jrec) {
if(jrec->stbofs && (cnj = getstb(SJ3_CONTEXT_PASS jrec->hinsi)))
if(jrec->stbofs && (cnj = getstb(jrec->hinsi)))
hinsi = StbHinsi(cnj + jrec->stbofs - 1);
else
hinsi = jrec->hinsi;

View file

@ -79,7 +79,7 @@ void mkjiritu(SJ3_CONTEXT int mode) {
}
for(jrec = maxjptr; jrec; jrec = jrec->jsort) {
if((stb = getstb(SJ3_CONTEXT_PASS jrec->hinsi)))
if((stb = getstb(jrec->hinsi)))
setubi(SJ3_CONTEXT_PASS jrec, stb);
}
}

View file

@ -108,7 +108,7 @@ cl_kanji(SJ3_CONTEXT JREC* jrec, CLREC* clrec) {
if(diffknj(SJ3_CONTEXT_PASS jrec, ptr, kcount)) {
setkouho(SJ3_CONTEXT_PASS clrec, (TypeDicOfs)(ptr - dicbuf), 0);
}
ptr = skipkstr(SJ3_CONTEXT_PASS ptr);
ptr = skipkstr(ptr);
}
} else {
setkouho(SJ3_CONTEXT_PASS clrec, (TypeDicOfs)1, 0);
@ -410,7 +410,7 @@ cl_numcmn(SJ3_CONTEXT JREC* jrec, CLREC* clrec) {
while(*p != HINSIBLKTERM) {
setkouho(SJ3_CONTEXT_PASS clrec, (TypeDicOfs)(p - dicbuf), i);
p = skipkstr(SJ3_CONTEXT_PASS p);
p = skipkstr(p);
}
} else {
setkouho(SJ3_CONTEXT_PASS clrec, (TypeDicOfs)1, i);

View file

@ -38,10 +38,10 @@
#include "sj_kanakan.h"
static int prev_kanji(), prev_hinsi(), prev_douon();
static int next_kanji(), next_hinsi(), next_douon();
static void set_kanji(), set_buf(u_char*), add_yomi();
static void set_idxyomi();
static int prev_kanji(SJ3_CONTEXT2), prev_hinsi(SJ3_CONTEXT2), prev_douon(SJ3_CONTEXT2);
static int next_kanji(SJ3_CONTEXT2), next_hinsi(SJ3_CONTEXT2), next_douon(SJ3_CONTEXT2);
static void set_kanji(SJ3_CONTEXT2), set_buf(SJ3_CONTEXT u_char*), add_yomi(SJ3_CONTEXT2);
static void set_idxyomi(SJ3_CONTEXT2);
static void cd2sjh_chr(u_char ch, u_char* dst);
@ -57,7 +57,7 @@ int getusr(SJ3_CONTEXT u_char* buf) {
if(segend(peepdptr)) return 0;
add_yomi();
add_yomi(SJ3_CONTEXT_PASS2);
nlen = getnlen(peepdptr);
peephptr = peepdptr + DOUONBLKSIZENUMBER + nlen;
@ -66,9 +66,9 @@ int getusr(SJ3_CONTEXT u_char* buf) {
peepkptr = peephptr + 1;
set_kanji();
set_kanji(SJ3_CONTEXT_PASS2);
set_buf(buf);
set_buf(SJ3_CONTEXT_PASS buf);
return -1;
}
@ -77,10 +77,10 @@ int nextusr(SJ3_CONTEXT u_char* buf) {
(*curdict->getdic)(curdict, peepidx);
get_askknj(SJ3_CONTEXT_PASS2);
if(next_kanji()) {
set_kanji();
if(next_kanji(SJ3_CONTEXT_PASS2)) {
set_kanji(SJ3_CONTEXT_PASS2);
set_buf(buf);
set_buf(SJ3_CONTEXT_PASS buf);
return -1;
}
@ -92,10 +92,10 @@ int prevusr(SJ3_CONTEXT u_char* buf) {
(*curdict->getdic)(curdict, peepidx);
get_askknj(SJ3_CONTEXT_PASS2);
if(prev_kanji()) {
set_kanji();
if(prev_kanji(SJ3_CONTEXT_PASS2)) {
set_kanji(SJ3_CONTEXT_PASS2);
set_buf(buf);
set_buf(SJ3_CONTEXT_PASS buf);
return -1;
}
@ -113,7 +113,7 @@ set_kanji(SJ3_CONTEXT2) {
}
static void
set_buf(u_char* buf) {
set_buf(SJ3_CONTEXT u_char* buf) {
u_char* p;
int i, csize;
@ -131,12 +131,12 @@ set_buf(u_char* buf) {
}
static int
prev_kanji() {
prev_kanji(SJ3_CONTEXT2) {
u_char* p1;
u_char* p2;
p1 = peephptr + 1;
if(peepkptr <= p1) return prev_hinsi();
if(peepkptr <= p1) return prev_hinsi(SJ3_CONTEXT_PASS2);
p2 = peepkptr;
while(p1 < p2) {
@ -148,7 +148,7 @@ prev_kanji() {
}
static int
prev_hinsi() {
prev_hinsi(SJ3_CONTEXT2) {
u_char* p1;
u_char* p2;
int nlen;
@ -156,7 +156,7 @@ prev_hinsi() {
nlen = getnlen(peepdptr);
p1 = peepdptr + DOUONBLKSIZENUMBER + nlen;
if(peephptr <= p1) return prev_douon();
if(peephptr <= p1) return prev_douon(SJ3_CONTEXT_PASS2);
p2 = peephptr;
while(p1 < p2) {
@ -177,7 +177,7 @@ prev_hinsi() {
}
static int
prev_douon() {
prev_douon(SJ3_CONTEXT2) {
u_char* p1;
u_char* p2;
int nlen;
@ -186,27 +186,27 @@ prev_douon() {
if(peepidx <= DICSEGBASE) return 0;
(*curdict->getdic)(curdict, --peepidx);
get_askknj();
get_askknj(SJ3_CONTEXT_PASS2);
set_idxyomi();
set_idxyomi(SJ3_CONTEXT_PASS2);
p1 = segtop();
do {
peepdptr = p1;
add_yomi();
add_yomi(SJ3_CONTEXT_PASS2);
p1 = getntag(p1);
} while(!segend(p1));
} else {
set_idxyomi();
set_idxyomi(SJ3_CONTEXT_PASS2);
p1 = segtop();
p2 = peepdptr;
do {
peepdptr = p1;
add_yomi();
add_yomi(SJ3_CONTEXT_PASS2);
p1 = getntag(p1);
} while(p1 < p2);
@ -234,12 +234,12 @@ prev_douon() {
}
static int
next_kanji() {
next_kanji(SJ3_CONTEXT2) {
u_char* p1;
p1 = skipkstr(peepkptr);
if(*p1 == HINSIBLKTERM) return next_hinsi();
if(*p1 == HINSIBLKTERM) return next_hinsi(SJ3_CONTEXT_PASS2);
peepkptr = p1;
@ -247,12 +247,12 @@ next_kanji() {
}
static int
next_hinsi() {
next_hinsi(SJ3_CONTEXT2) {
u_char* p1;
p1 = skiphblk(peephptr);
if(p1 >= getntag(peepdptr)) return next_douon();
if(p1 >= getntag(peepdptr)) return next_douon(SJ3_CONTEXT_PASS2);
peephptr = p1;
@ -264,7 +264,7 @@ next_hinsi() {
}
static int
next_douon() {
next_douon(SJ3_CONTEXT2) {
u_char* p1;
int nlen;
@ -273,17 +273,17 @@ next_douon() {
if(segend(p1)) {
if(peepidx + 1 < curdict->segunit) {
(*curdict->getdic)(curdict, ++peepidx);
get_askknj();
get_askknj(SJ3_CONTEXT_PASS2);
peepdptr = segtop();
set_idxyomi();
set_idxyomi(SJ3_CONTEXT_PASS2);
} else
return 0;
} else {
peepdptr = p1;
}
add_yomi();
add_yomi(SJ3_CONTEXT_PASS2);
nlen = getnlen(peepdptr);
peephptr = peepdptr + DOUONBLKSIZENUMBER + nlen;
@ -296,10 +296,10 @@ next_douon() {
}
static void
set_idxyomi() {
set_idxyomi(SJ3_CONTEXT2) {
u_char *p1, *p2;
if((p2 = get_idxptr(peepidx))) {
if((p2 = get_idxptr(SJ3_CONTEXT_PASS peepidx))) {
p1 = peepyomi;
while(*p2) {
cd2sjh_chr(*p2++, p1);
@ -310,7 +310,7 @@ set_idxyomi() {
}
static void
add_yomi() {
add_yomi(SJ3_CONTEXT2) {
int nlen;
u_char *p1, *p2;

View file

@ -38,7 +38,7 @@
#include "sj_kanakan.h"
int ph2knj(u_char* zyomi, u_char* kanji, int knjlen) {
int ph2knj(SJ3_CONTEXT u_char* zyomi, u_char* kanji, int knjlen) {
u_char* ptr;
u_char* dst;
int i;
@ -52,7 +52,7 @@ int ph2knj(u_char* zyomi, u_char* kanji, int knjlen) {
}
*dst = 0;
freework();
freework(SJ3_CONTEXT_PASS2);
prevclgrm = 0;
prevclrow = 0;
@ -68,30 +68,30 @@ int ph2knj(u_char* zyomi, u_char* kanji, int knjlen) {
while(cnvlen && kanjilen) {
if(!clt1st) {
mkjiritu(DO_CLSTUDY | DO_IKKATU);
mkjiritu(SJ3_CONTEXT_PASS DO_CLSTUDY | DO_IKKATU);
mkbunsetu();
mkbunsetu(SJ3_CONTEXT_PASS2);
if(!maxclptr) wakachi();
if(!maxclptr) wakachi(SJ3_CONTEXT_PASS2);
jrt1st = maxjptr;
clt1st = maxclptr;
}
mk2claus();
mk2claus(SJ3_CONTEXT_PASS2);
selclrec();
selclrec(SJ3_CONTEXT_PASS2);
prevclgrm = selcl->jnode->hinsi;
prevclrow = selcl->right;
clt1st = free_clst(clt1st, (int)selcl->cllen);
clt1st = free_clst(SJ3_CONTEXT_PASS clt1st, (int)selcl->cllen);
jrt1st = free_jlst(jrt1st);
cnvstart += selcl->cllen;
cnvlen -= selcl->cllen;
cvtphknj();
cvtphknj(SJ3_CONTEXT_PASS2);
clt1st = clt2nd;
jrt1st = jrt2nd;

View file

@ -38,15 +38,15 @@
#include "sj_kanakan.h"
static void
ph_setsty(CLREC* clrec) {
ph_setsty(SJ3_CONTEXT CLREC* clrec) {
JREC* jrec;
TypeDicOfs offset;
u_char* ptr;
STDYIN* sptr;
if(!seldict((jrec = clrec->jnode)->dicid)) {
if(!seldict(SJ3_CONTEXT_PASS(jrec = clrec->jnode)->dicid)) {
if(!khcount)
ph_setkouho(clrec, (TypeDicOfs)1, (STDYIN*)NULL);
ph_setkouho(SJ3_CONTEXT_PASS clrec, (TypeDicOfs)1, (STDYIN*)NULL);
return;
}
@ -57,35 +57,35 @@ ph_setsty(CLREC* clrec) {
offset = ptr - dicbuf;
sptr = srchstdy(jrec->jseg, offset, jrec->dicid);
sptr = srchstdy(SJ3_CONTEXT_PASS jrec->jseg, offset, jrec->dicid);
if(!khcount) {
ph_setkouho(clrec, offset, sptr);
ph_setkouho(SJ3_CONTEXT_PASS clrec, offset, sptr);
continue;
}
if(!sptr) continue;
if(sptr->styno < kouhotbl[0].styno) {
ph_setkouho(clrec, offset, sptr);
ph_setkouho(SJ3_CONTEXT_PASS clrec, offset, sptr);
}
else if(sptr->styno == kouhotbl->styno) {
if(!(kouhotbl[0].ka_fg &&
sptr->ka_kj == kouhotbl[0].ka_kj)) {
ph_setkouho(clrec, offset, sptr);
ph_setkouho(SJ3_CONTEXT_PASS clrec, offset, sptr);
}
}
}
}
int ph_khtbl(CLREC* clrec) {
int ph_khtbl(SJ3_CONTEXT CLREC* clrec) {
JREC* jrec;
int flg = FALSE;
switch((jrec = clrec->jnode)->class) {
case C_DICT:
ph_setsty(clrec);
ph_setsty(SJ3_CONTEXT_PASS clrec);
break;
case C_N_ARABIA:
@ -99,14 +99,14 @@ int ph_khtbl(CLREC* clrec) {
case C_N_KAZULCMA:
case C_N_SUUJILONG:
if(jrec->jofsst) {
ph_setsty(clrec);
ph_setsty(SJ3_CONTEXT_PASS clrec);
break;
} else
flg = TRUE;
case C_BUNSETU:
case C_MINASI:
case C_WAKACHI:
if(!khcount) ph_setkouho(clrec, (TypeDicOfs)0, (STDYIN*)0);
if(!khcount) ph_setkouho(SJ3_CONTEXT_PASS clrec, (TypeDicOfs)0, (STDYIN*)0);
break;
}

View file

@ -94,7 +94,7 @@ sttcnt(TypeGram hinsi1, TypeGram hinsi2) {
return 4;
}
int priority(CLREC* clrec) {
int priority(SJ3_CONTEXT CLREC* clrec) {
int prty;
CLREC* cl2rec;
int keeplen;
@ -234,7 +234,7 @@ finish:
return (prty + prev);
}
void pritiny() {
void pritiny(SJ3_CONTEXT2) {
CLREC* clrec;
int keeplen;
int i, prty = 0;

View file

@ -160,29 +160,29 @@ search_same_dict(ino_t ino) {
}
static int
getofs(DictFile* dp) {
getofs(SJ3_CONTEXT DictFile* dp) {
idxofs = dp->ofsptr;
return 0;
}
static int
getidx(DictFile* dp) {
getidx(SJ3_CONTEXT DictFile* dp) {
idxbuf = dp->buffer + dp->idxstrt;
return 0;
}
/* XXX: not IFunc */
static int
getdic(DictFile* dp, TypeDicSeg seg) {
getdic(SJ3_CONTEXT DictFile* dp, TypeDicSeg seg) {
if(seg >= dp->dict.segunit) return -1;
dicbuf = dp->buffer + dp->segstrt + dp->dict.seglen * seg;
return 0;
}
static int
putidx(DictFile* dp) {
putidx(SJ3_CONTEXT DictFile* dp) {
return putfile(dp->fd, dp->idxstrt, dp->dict.idxlen, idxbuf);
}
/* XXX: not IFunc */
static int
putdic(DictFile* dp, TypeDicSeg seg) {
putdic(SJ3_CONTEXT DictFile* dp, TypeDicSeg seg) {
u_char* p;
long i, j;
@ -210,7 +210,7 @@ putdic(DictFile* dp, TypeDicSeg seg) {
}
/* XXX: not IFunc */
static int
rszdic(DictFile* dp, TypeDicSeg seg) {
rszdic(SJ3_CONTEXT DictFile* dp, TypeDicSeg seg) {
long i;
u_char* p;
@ -235,7 +235,7 @@ rszdic(DictFile* dp, TypeDicSeg seg) {
}
DictFile*
opendict(char* name, char* passwd) {
opendict(SJ3_CONTEXT char* name, char* passwd) {
FILE* fp;
struct stat sbuf;
DictFile* dfp;
@ -315,7 +315,7 @@ opendict(char* name, char* passwd) {
serv_errno = SJ3_NotEnoughMemory;
goto error3;
}
mkidxtbl(&(dfp->dict));
mkidxtbl(SJ3_CONTEXT_PASS & (dfp->dict));
dfp->link = dictlink;
dictlink = dfp;
@ -332,7 +332,7 @@ error1:
return NULL;
}
int closedict(DictFile* dfp) {
int closedict(SJ3_CONTEXT DictFile* dfp) {
DictFile* df;
if(--dfp->refcnt > 0) return 0;
@ -538,7 +538,7 @@ int closestdy(StdyFile* sfp) {
return 0;
}
int putstydic() {
int putstydic(SJ3_CONTEXT2) {
int fd;
u_char* hd;
StdyFile* sf;
@ -558,7 +558,7 @@ int putstydic() {
return putfile(fd, get4byte(hd + STDYNORMPOS), len, (u_char*)sf->stdy.stdydic);
}
int putcldic() {
int putcldic(SJ3_CONTEXT2) {
int fd;
u_char* hd;
StdyFile* sf;
@ -712,8 +712,8 @@ error:
return ret;
}
void sj_closeall() {
while(dictlink) closedict(dictlink);
void sj_closeall(SJ3_CONTEXT2) {
while(dictlink) closedict(SJ3_CONTEXT_PASS dictlink);
while(stdylink) closestdy(stdylink);
}
@ -722,7 +722,7 @@ int set_dictpass(DictFile* dp, char* pass) {
return putfile(dp->fd, 0, HEADERLENGTH + COMMENTLENGTH, dp->buffer);
}
int set_stdypass(char* pass) {
int set_stdypass(SJ3_CONTEXT char* pass) {
StdyFile* sp;
sp = (StdyFile*)stdy_base;
@ -740,7 +740,7 @@ int set_dictcmnt(DictFile* dp, char* cmnt) {
return putfile(dp->fd, 0, HEADERLENGTH + COMMENTLENGTH, dp->buffer);
}
int set_stdycmnt(char* cmnt) {
int set_stdycmnt(SJ3_CONTEXT char* cmnt) {
StdyFile* sp;
sp = (StdyFile*)stdy_base;
@ -748,7 +748,7 @@ int set_stdycmnt(char* cmnt) {
return putfile(sp->fd, 0, HEADERLENGTH + COMMENTLENGTH, sp->header);
}
int get_stdysize(int* stynum, int* clstep, int* cllen) {
int get_stdysize(SJ3_CONTEXT int* stynum, int* clstep, int* cllen) {
*stynum = STUDYMAX;
*clstep = CLSTUDYSTEP;
*cllen = CLSTUDYLEN;

View file

@ -36,7 +36,7 @@
#include "sj_kcnv.h"
#include "sj_kanakan.h"
void selclrec() {
void selclrec(SJ3_CONTEXT2) {
int len;
CLREC* rec;
@ -85,10 +85,10 @@ void selclrec() {
ch = *(cnvstart + len);
*(cnvstart + len) = 0;
mkjiritu(DO_IKKATU);
mkjiritu(SJ3_CONTEXT_PASS DO_IKKATU);
mkbunsetu();
if(!maxclptr) wakachi();
mkbunsetu(SJ3_CONTEXT_PASS2);
if(!maxclptr) wakachi(SJ3_CONTEXT_PASS2);
jrt1st = maxjptr;
selcl = clt1st = maxclptr;

View file

@ -107,7 +107,7 @@ cnvrow(JREC* rec, TypeCnct row) {
return row;
}
int setconj(TypeGram hinsi, JREC* jrec, CREC* crec) {
int setconj(SJ3_CONTEXT TypeGram hinsi, JREC* jrec, CREC* crec) {
u_char* yptr;
int cmp;
TypeCnct right;

View file

@ -43,7 +43,7 @@ int setj_atrb(u_char* p) {
return 2;
}
int setj_ofs(u_char* p) {
int setj_ofs(SJ3_CONTEXT u_char* p) {
int contf = TRUE;
p = dicbuf + ((*p & KANJICODEMASK) << 8) + *(p + 1);
@ -60,7 +60,7 @@ int setj_ofs(u_char* p) {
break;
case OFFSETASSYUKU:
p += setj_ofs(p);
p += setj_ofs(SJ3_CONTEXT_PASS p);
break;
case AIATTRIBUTE:
@ -72,7 +72,7 @@ int setj_ofs(u_char* p) {
break;
case KANJIASSYUKU:
p += setj_knj(p);
p += setj_knj(SJ3_CONTEXT_PASS p);
break;
case KANJISTREND:
@ -87,7 +87,7 @@ int setj_ofs(u_char* p) {
return 2;
}
int setj_knj(u_char* p) {
int setj_knj(SJ3_CONTEXT u_char* p) {
int contf = TRUE;
p = askknj[*p & KNJASSYUKUMASK];
@ -104,7 +104,7 @@ int setj_knj(u_char* p) {
break;
case OFFSETASSYUKU:
p += setj_ofs(p);
p += setj_ofs(SJ3_CONTEXT_PASS p);
break;
case AIATTRIBUTE:
@ -116,7 +116,7 @@ int setj_knj(u_char* p) {
break;
case KANJIASSYUKU:
p += setj_knj(p);
p += setj_knj(SJ3_CONTEXT_PASS p);
break;
case KANJISTREND:
@ -144,7 +144,7 @@ int setj_norm3(u_char* p) {
}
static u_char
chkhead(TypeGram gram) {
chkhead(SJ3_CONTEXT TypeGram gram) {
if(!headcode) return TRUE;
if(headcode == SETTOU_DAI) {
@ -162,7 +162,7 @@ chkhead(TypeGram gram) {
return FALSE;
}
void setjrec(u_char* tagp, int mode) {
void setjrec(SJ3_CONTEXT u_char* tagp, int mode) {
TypeGram gram;
u_char* ptr;
u_char* endp;
@ -195,7 +195,7 @@ void setjrec(u_char* tagp, int mode) {
break;
case OFFSETASSYUKU:
tmp += setj_ofs(tmp);
tmp += setj_ofs(SJ3_CONTEXT_PASS tmp);
break;
case AIATTRIBUTE:
@ -207,7 +207,7 @@ void setjrec(u_char* tagp, int mode) {
break;
case KANJIASSYUKU:
tmp += setj_knj(tmp);
tmp += setj_knj(SJ3_CONTEXT_PASS tmp);
break;
case KANJISTREND:
@ -221,9 +221,9 @@ void setjrec(u_char* tagp, int mode) {
if((gram = *ptr) == IKKATU && !(mode & DO_IKKATU)) continue;
if(!chkhead(gram)) continue;
if(!chkhead(SJ3_CONTEXT_PASS gram)) continue;
if(!(rec = argjrec(len, (JREC*)NULL))) continue;
if(!(rec = argjrec(SJ3_CONTEXT_PASS len, (JREC*)NULL))) continue;
rec->jseg = prevseg;
rec->jofsst = ptr - dicbuf;
@ -235,7 +235,7 @@ void setjrec(u_char* tagp, int mode) {
}
}
void setnumrec(u_char* tagp, JREC* rec, TypeGram gram) {
void setnumrec(SJ3_CONTEXT u_char* tagp, JREC* rec, TypeGram gram) {
u_char* ptr;
u_char* endp;
u_char* tmp;
@ -263,7 +263,7 @@ void setnumrec(u_char* tagp, JREC* rec, TypeGram gram) {
break;
case OFFSETASSYUKU:
tmp += setj_ofs(tmp);
tmp += setj_ofs(SJ3_CONTEXT_PASS tmp);
break;
case AIATTRIBUTE:
@ -275,7 +275,7 @@ void setnumrec(u_char* tagp, JREC* rec, TypeGram gram) {
break;
case KANJIASSYUKU:
tmp += setj_knj(tmp);
tmp += setj_knj(SJ3_CONTEXT_PASS tmp);
break;
case KANJISTREND:
@ -289,7 +289,7 @@ void setnumrec(u_char* tagp, JREC* rec, TypeGram gram) {
if(gram != *ptr) continue;
if(!(jrec = argjrec((int)(rec->jlen + len), rec))) continue;
if(!(jrec = argjrec(SJ3_CONTEXT_PASS(int)(rec->jlen + len), rec))) continue;
jrec->jseg = prevseg;
jrec->jofsst = ptr - dicbuf;
@ -298,10 +298,10 @@ void setnumrec(u_char* tagp, JREC* rec, TypeGram gram) {
}
}
void setcrec(u_char* tagp) {
void setcrec(SJ3_CONTEXT u_char* tagp) {
JREC* rec;
if(!(rec = argjrec((int)ClYomiLen(tagp), (JREC*)NULL))) return;
if(!(rec = argjrec(SJ3_CONTEXT_PASS(int) ClYomiLen(tagp), (JREC*)NULL))) return;
rec->jofsst = tagp - CLSTUDYDICT;
rec->class = C_BUNSETU;

View file

@ -39,9 +39,9 @@
#include "sj_kanakan.h"
static int hiraknj(u_char*);
static int hiraknj(SJ3_CONTEXT u_char*);
void setkouho(CLREC* clrec, TypeDicOfs offs, int mode) {
void setkouho(SJ3_CONTEXT CLREC* clrec, TypeDicOfs offs, int mode) {
JREC* jrec;
KHREC* kptr;
u_char* fptr;
@ -85,7 +85,7 @@ void setkouho(CLREC* clrec, TypeDicOfs offs, int mode) {
kptr->sttfg = 1;
kptr->sttkj = 0;
i = hiraknj(dicbuf + offs);
i = hiraknj(SJ3_CONTEXT_PASS dicbuf + offs);
if(offs > 1 && (i == 2 || i == 3)) return;
if(khcount >= MAXKOUHONUMBER) return;
@ -118,7 +118,7 @@ void setkouho(CLREC* clrec, TypeDicOfs offs, int mode) {
}
}
void ph_setkouho(CLREC* clrec, TypeDicOfs offs, STDYIN* sptr) {
void ph_setkouho(SJ3_CONTEXT CLREC* clrec, TypeDicOfs offs, STDYIN* sptr) {
JREC* jrec;
u_char* p;
@ -154,7 +154,7 @@ void ph_setkouho(CLREC* clrec, TypeDicOfs offs, STDYIN* sptr) {
}
static int
hiraknj(u_char* p) {
hiraknj(SJ3_CONTEXT u_char* p) {
char flg = TRUE;
int i;
int result;
@ -171,7 +171,7 @@ hiraknj(u_char* p) {
break;
case OFFSETASSYUKU:
result = hiraknj_ofs(p, &i);
result = hiraknj_ofs(SJ3_CONTEXT_PASS p, &i);
break;
case AIATTRIBUTE:
@ -183,7 +183,7 @@ hiraknj(u_char* p) {
break;
case KANJIASSYUKU:
result = hiraknj_knj(p, &i);
result = hiraknj_knj(SJ3_CONTEXT_PASS p, &i);
break;
default:
@ -203,14 +203,14 @@ int hiraknj_atrb(u_char* p, int* len) {
return 0;
}
int hiraknj_ofs(u_char* p, int* len) {
int hiraknj_ofs(SJ3_CONTEXT u_char* p, int* len) {
*len = 2;
return hiraknj(dicbuf + ((*p & KANJICODEMASK) << 8) + *(p + 1));
return hiraknj(SJ3_CONTEXT_PASS dicbuf + ((*p & KANJICODEMASK) << 8) + *(p + 1));
}
int hiraknj_knj(u_char* p, int* len) {
int hiraknj_knj(SJ3_CONTEXT u_char* p, int* len) {
*len = 1;
return hiraknj(askknj[*p & KNJASSYUKUMASK]);
return hiraknj(SJ3_CONTEXT_PASS askknj[*p & KNJASSYUKUMASK]);
}
int hiraknj_hask(u_char* p, int* len) {

View file

@ -45,7 +45,7 @@ getstb(TypeGram hinsi) {
return Stbadr(hinsi);
}
void setubi(JREC* rec, u_char* stbtbl) {
void setubi(SJ3_CONTEXT JREC* rec, u_char* stbtbl) {
u_char* stb;
u_char* yptr;
u_char* sptr;
@ -68,7 +68,7 @@ void setubi(JREC* rec, u_char* stbtbl) {
if((cmp != MATCH) || isdpnd(*(yptr + slen))) continue;
if(!(new = argjrec((int)(rec->jlen + slen), rec))) continue;
if(!(new = argjrec(SJ3_CONTEXT_PASS(int)(rec->jlen + slen), rec))) continue;
new->stbofs = (u_char)(stb - stbtbl);
new->flags |= StbBakeru(stb) ? JFLAG_KA : 0;

View file

@ -37,7 +37,7 @@
#include "sj_kanakan.h"
int yomicmp(u_char* ptr1, u_char* ptr2, u_char* saml) {
int yomicmp(SJ3_CONTEXT u_char* ptr1, u_char* ptr2, u_char* saml) {
int i, j;
int same;
@ -47,7 +47,7 @@ int yomicmp(u_char* ptr1, u_char* ptr2, u_char* saml) {
j = getnlen(ptr2);
if(j == 0) {
ptr2 = get_idxptr(prevseg);
ptr2 = get_idxptr(SJ3_CONTEXT_PASS prevseg);
for(i = same; i; i--)
if(*ptr1++ != *ptr2++) return OVER;
@ -79,7 +79,7 @@ int yomicmp(u_char* ptr1, u_char* ptr2, u_char* saml) {
}
u_char*
srchdict(u_char* tagp) {
srchdict(SJ3_CONTEXT u_char* tagp) {
TypeDicSeg segno;
int cmp;
int maxlen;
@ -88,7 +88,7 @@ srchdict(u_char* tagp) {
while((int)dicinl <= maxlen) {
segno = srchidx(prevseg, (int)dicinl);
segno = srchidx(SJ3_CONTEXT_PASS prevseg, (int)dicinl);
(*curdict->getdic)(curdict, segno);
@ -116,13 +116,13 @@ srchdict(u_char* tagp) {
}
if(tagp == dicbuf) {
get_askknj();
get_askknj(SJ3_CONTEXT_PASS2);
tagp += *tagp + 1;
}
while(!segend(tagp)) {
cmp = yomicmp(cnvstart, tagp, &dicsaml);
cmp = yomicmp(SJ3_CONTEXT_PASS cnvstart, tagp, &dicsaml);
if((int)dicsaml > maxlen) return NULL;

View file

@ -38,7 +38,7 @@
#include "sj_kanakan.h"
int srchhead() {
int srchhead(SJ3_CONTEXT2) {
if(*cnvstart == _O) {
headcode = SETTOU_O;
headlen = 1;

View file

@ -38,7 +38,7 @@
#include "sj_kanakan.h"
TypeDicSeg
srchidx(TypeDicSeg low, int len) {
srchidx(SJ3_CONTEXT TypeDicSeg low, int len) {
TypeDicSeg high;
TypeDicSeg mid;
int cmp;
@ -52,7 +52,7 @@ srchidx(TypeDicSeg low, int len) {
mid = (low + high) >> 1;
target = get_idxptr(mid);
target = get_idxptr(SJ3_CONTEXT_PASS mid);
cmp = istrcmp(cnvstart, target, len, sstrlen(target));

View file

@ -41,10 +41,10 @@
#include "sj_kanakan.h"
static void srch_kurai1(u_char*, u_char*), srch_kurai2(u_char*, u_char*);
static void srch_kurai1(SJ3_CONTEXT u_char*, u_char*), srch_kurai2(SJ3_CONTEXT u_char*, u_char*);
static void
srch_josuu_sub(JREC* jrec, TypeGram gram) {
srch_josuu_sub(SJ3_CONTEXT JREC* jrec, TypeGram gram) {
u_char* tagp;
DICTL* dp;
@ -53,12 +53,12 @@ srch_josuu_sub(JREC* jrec, TypeGram gram) {
dicinl = 1;
dicsaml = 0;
prevseg = -1;
while((tagp = srchdict(tagp))) setnumrec(tagp, jrec, gram);
while((tagp = srchdict(SJ3_CONTEXT_PASS tagp))) setnumrec(SJ3_CONTEXT_PASS tagp, jrec, gram);
}
}
static void
srch_josuu(JREC* jrec) {
srch_josuu(SJ3_CONTEXT JREC* jrec) {
u_char* kp;
int klen;
int len;
@ -71,16 +71,16 @@ srch_josuu(JREC* jrec) {
cnvstart += (len = jrec->numlen);
cnvlen -= len;
srch_josuu_sub(jrec, JOSUUSI);
srch_josuu_sub(SJ3_CONTEXT_PASS jrec, JOSUUSI);
if(!headcode) srch_josuu_sub(jrec, JOSUUSI2);
if(!headcode) srch_josuu_sub(SJ3_CONTEXT_PASS jrec, JOSUUSI2);
cnvstart = kp;
cnvlen = klen;
}
static void
setnrec_sub(u_char* p, u_short flag, int stb) {
setnrec_sub(SJ3_CONTEXT u_char* p, u_short flag, int stb) {
JREC* rec;
int len1;
int len2;
@ -101,7 +101,7 @@ setnrec_sub(u_char* p, u_short flag, int stb) {
return;
}
if((rec = argjrec(len1, (JREC*)NULL))) {
if((rec = argjrec(SJ3_CONTEXT_PASS len1, (JREC*)NULL))) {
rec->class = suuji_class;
rec->hinsi = SUUSI;
rec->sttofs = headcode;
@ -109,16 +109,16 @@ setnrec_sub(u_char* p, u_short flag, int stb) {
rec->flags = flag;
rec->numlen = (u_char)len2;
if(!stb) srch_josuu(rec);
if(!stb) srch_josuu(SJ3_CONTEXT_PASS rec);
}
}
static void
setnrec(u_char* p, u_short flag) {
setnrec_sub(p, flag, 0);
setnrec(SJ3_CONTEXT u_char* p, u_short flag) {
setnrec_sub(SJ3_CONTEXT_PASS p, flag, 0);
if(!headcode && (*p == Y_S_KIGOU2)) {
setnrec_sub(p + 1, flag, -1);
setnrec_sub(SJ3_CONTEXT_PASS p + 1, flag, -1);
}
}
@ -174,7 +174,7 @@ string_cmp(u_char* s, int l, u_char* d) {
}
static int
check_num(u_char* ptr) {
check_num(SJ3_CONTEXT u_char* ptr) {
int i;
int j;
int k;
@ -256,13 +256,13 @@ check_num(u_char* ptr) {
if(cnt > 1) flag |= JFLAG_NSN;
setnrec(ptr, flag);
setnrec(SJ3_CONTEXT_PASS ptr, flag);
return TRUE;
}
static void
srch_number1(u_char* ptr) {
srch_number1(SJ3_CONTEXT u_char* ptr) {
u_char ch;
u_char mode;
u_char* p;
@ -291,19 +291,19 @@ srch_number1(u_char* ptr) {
case C_N_ARABIA:
if(!(mode & SJTBLNARABIAF)) break;
check_num(tptr);
srch_number1(tptr);
srch_kurai2(tptr, (u_char*)NULL);
check_num(SJ3_CONTEXT_PASS tptr);
srch_number1(SJ3_CONTEXT_PASS tptr);
srch_kurai2(SJ3_CONTEXT_PASS tptr, (u_char*)NULL);
break;
case C_N_SUUJI:
if(mode & (SJTBLNARABIAF | SJTBLNYOMIF)) break;
check_num(tptr);
srch_number1(tptr);
srch_kurai1(tptr, (u_char*)NULL);
srch_kurai2(tptr, (u_char*)NULL);
check_num(SJ3_CONTEXT_PASS tptr);
srch_number1(SJ3_CONTEXT_PASS tptr);
srch_kurai1(SJ3_CONTEXT_PASS tptr, (u_char*)NULL);
srch_kurai2(SJ3_CONTEXT_PASS tptr, (u_char*)NULL);
break;
@ -315,9 +315,9 @@ srch_number1(u_char* ptr) {
suuji_class = C_N_NANSUU;
}
check_num(tptr);
srch_kurai1(tptr, SjTblCnctP(p));
srch_kurai2(tptr, SjTblCnctP(p));
check_num(SJ3_CONTEXT_PASS tptr);
srch_kurai1(SJ3_CONTEXT_PASS tptr, SjTblCnctP(p));
srch_kurai2(SJ3_CONTEXT_PASS tptr, SjTblCnctP(p));
if(mode & SJTBLNNANSUUF) suuji_class = cls;
break;
@ -325,9 +325,9 @@ srch_number1(u_char* ptr) {
default:
if(mode & SJTBLNARABIAF) {
suuji_class = C_N_ARABIA;
check_num(tptr);
srch_number1(tptr);
srch_kurai2(tptr, (u_char*)NULL);
check_num(SJ3_CONTEXT_PASS tptr);
srch_number1(SJ3_CONTEXT_PASS tptr);
srch_kurai2(SJ3_CONTEXT_PASS tptr, (u_char*)NULL);
suuji_class = C_N_KAZU;
} else if(mode & SJTBLNYOMIF) {
@ -335,21 +335,21 @@ srch_number1(u_char* ptr) {
suuji_class = C_N_NANSUU;
else
suuji_class = C_N_KAZU;
check_num(tptr);
check_num(SJ3_CONTEXT_PASS tptr);
} else if(mode & SJTBLNNARABIF) {
suuji_class = C_N_SUUJI;
check_num(tptr);
srch_number1(tptr);
check_num(SJ3_CONTEXT_PASS tptr);
srch_number1(SJ3_CONTEXT_PASS tptr);
break;
} else {
suuji_class = C_N_SUUJI;
srch_number1(tptr);
srch_number1(SJ3_CONTEXT_PASS tptr);
suuji_class = C_N_KAZU;
check_num(tptr);
check_num(SJ3_CONTEXT_PASS tptr);
}
srch_kurai1(tptr, SjTblCnctP(p));
srch_kurai2(tptr, SjTblCnctP(p));
srch_kurai1(SJ3_CONTEXT_PASS tptr, SjTblCnctP(p));
srch_kurai2(SJ3_CONTEXT_PASS tptr, SjTblCnctP(p));
break;
}
@ -358,7 +358,7 @@ srch_number1(u_char* ptr) {
}
static void
srch_kurai1(u_char* ptr, u_char* cnct) {
srch_kurai1(SJ3_CONTEXT u_char* ptr, u_char* cnct) {
u_char ch;
u_char* p;
int l;
@ -386,7 +386,7 @@ srch_kurai1(u_char* ptr, u_char* cnct) {
cls = suuji_class;
suuji_class = (suuji_class == C_N_ARABIA) ? C_N_ARAKURA : C_N_KANKURA;
suuji_ubuf[suuji_keta - 1] |= (keta << 4);
check_num(tptr);
check_num(SJ3_CONTEXT_PASS tptr);
suuji_class = cls;
suuji_ubuf[suuji_keta - 1] &= 0xcf;
continue;
@ -401,11 +401,11 @@ srch_kurai1(u_char* ptr, u_char* cnct) {
suuji_ubuf[suuji_keta++] = (_NUM1 | (keta << 4));
}
check_num(tptr);
check_num(SJ3_CONTEXT_PASS tptr);
srch_number1(tptr);
srch_kurai1(tptr, (u_char*)NULL);
srch_kurai2(tptr, Kr1TblCnctP(p));
srch_number1(SJ3_CONTEXT_PASS tptr);
srch_kurai1(SJ3_CONTEXT_PASS tptr, (u_char*)NULL);
srch_kurai2(SJ3_CONTEXT_PASS tptr, Kr1TblCnctP(p));
if(cnct)
suuji_ubuf[suuji_keta - 1] &= 0xcf;
@ -415,7 +415,7 @@ srch_kurai1(u_char* ptr, u_char* cnct) {
}
static void
srch_kurai2(u_char* ptr, u_char* cnct) {
srch_kurai2(SJ3_CONTEXT u_char* ptr, u_char* cnct) {
u_char ch;
u_char* p;
int l;
@ -445,7 +445,7 @@ srch_kurai2(u_char* ptr, u_char* cnct) {
suuji_ubuf[suuji_keta - 1] |= (keta << 6);
cls = suuji_class;
suuji_class = (suuji_class == C_N_ARABIA) ? C_N_ARAKURA : C_N_KANKURA;
check_num(tptr);
check_num(SJ3_CONTEXT_PASS tptr);
suuji_class = cls;
suuji_ubuf[suuji_keta - 1] &= 0x3f;
continue;
@ -459,10 +459,10 @@ srch_kurai2(u_char* ptr, u_char* cnct) {
suuji_ubuf[suuji_keta++] = (_NUM1 | (keta << 6));
}
check_num(tptr);
check_num(SJ3_CONTEXT_PASS tptr);
srch_number1(tptr);
srch_kurai1(tptr, (u_char*)NULL);
srch_number1(SJ3_CONTEXT_PASS tptr);
srch_kurai1(SJ3_CONTEXT_PASS tptr, (u_char*)NULL);
if(cnct)
suuji_ubuf[suuji_keta - 1] &= 0x3f;
@ -472,7 +472,7 @@ srch_kurai2(u_char* ptr, u_char* cnct) {
}
static void
srch_number2(u_char* p) {
srch_number2(SJ3_CONTEXT u_char* p) {
u_char ch;
int i;
@ -507,68 +507,68 @@ srch_number2(u_char* p) {
suuji_keta++;
if(!suuji_comma && suuji_keta > NUMKETALENGTH) {
setnrec(p, 0);
setnrec(SJ3_CONTEXT_PASS p, 0);
} else if(suuji_comma == 3) {
if(suuji_keta <= NUMKETALENGTH) {
suuji_class = C_N_ARACMA;
check_num(p);
check_num(SJ3_CONTEXT_PASS p);
} else {
suuji_class = C_N_KAZULCMA;
setnrec(p, 0);
setnrec(SJ3_CONTEXT_PASS p, 0);
}
}
}
}
static void
srchnum_sub(u_char* p) {
srchnum_sub(SJ3_CONTEXT u_char* p) {
suuji_yptr = p;
suuji_comma = suuji_keta = 0;
suuji_class = 0;
srch_number1(p);
srch_number1(SJ3_CONTEXT_PASS p);
suuji_keta = 0;
suuji_class = C_N_KAZU;
srch_kurai1(p, (u_char*)NULL);
srch_kurai1(SJ3_CONTEXT_PASS p, (u_char*)NULL);
if(suuji_exit) return;
srch_number2(p);
srch_number2(SJ3_CONTEXT_PASS p);
}
void srchnum() {
void srchnum(SJ3_CONTEXT2) {
suuji_len = suuji_exit = 0;
srchnum_sub(cnvstart);
srchnum_sub(SJ3_CONTEXT_PASS cnvstart);
if(!headcode && (*cnvstart == Y_S_KIGOU1)) {
headcode = SETTOU_KIGOU;
headlen = 1;
srchnum_sub(cnvstart + 1);
srchnum_sub(SJ3_CONTEXT_PASS cnvstart + 1);
headcode = headlen = 0;
}
}
void setwdnum(u_char* p, int len, u_short* wd) {
void setwdnum(SJ3_CONTEXT u_char* p, int len, u_short* wd) {
suuji_len = (u_char)len;
suuji_wkeep = wd;
suuji_ukeep = NULL;
headcode = headlen = 0;
suuji_exit = 0;
srchnum_sub(p);
srchnum_sub(SJ3_CONTEXT_PASS p);
}
int setucnum(u_char* p, int len, u_char* ud) {
int setucnum(SJ3_CONTEXT u_char* p, int len, u_char* ud) {
suuji_len = (u_char)len;
suuji_wkeep = NULL;
suuji_ukeep = ud;
headcode = headlen = 0;
suuji_exit = 0;
srchnum_sub(p);
srchnum_sub(SJ3_CONTEXT_PASS p);
return (int)suuji_exit;
}

View file

@ -37,7 +37,7 @@
#include "sj_kanakan.h"
int study(STDYOUT* stdy) {
int study(SJ3_CONTEXT STDYOUT* stdy) {
STDYOUT outp;
STDYIN* p1;
STDYIN* p2;
@ -54,7 +54,7 @@ int study(STDYOUT* stdy) {
if(outp.stdy1.offset == 0) return STUDYNOTSTUDY;
p1 = srchstdy(outp.stdy1.seg, outp.stdy1.offset, outp.stdy1.dicid);
p1 = srchstdy(SJ3_CONTEXT_PASS outp.stdy1.seg, outp.stdy1.offset, outp.stdy1.dicid);
if(p1) {
nm = p1->styno;
@ -69,7 +69,7 @@ int study(STDYOUT* stdy) {
p1->nmflg = outp.stdy1.nmflg;
putstydic();
putstydic(SJ3_CONTEXT_PASS2);
return STUDYNORMEND;
}
@ -127,13 +127,13 @@ int study(STDYOUT* stdy) {
p1->nmflg = outp.stdy1.nmflg;
STUDYCOUNT += 1;
putstydic();
putstydic(SJ3_CONTEXT_PASS2);
return ret;
}
STDYIN*
srchstdy(TypeDicSeg seg, TypeDicOfs ofs, TypeDicID dicid) {
srchstdy(SJ3_CONTEXT TypeDicSeg seg, TypeDicOfs ofs, TypeDicID dicid) {
int high;
int mid;
int low;

View file

@ -38,7 +38,7 @@
#include "sj_kanakan.h"
int terminate(TypeCnct right, u_char* yomi) {
int terminate(SJ3_CONTEXT TypeCnct right, u_char* yomi) {
u_char ch;
if((yomi > cnvstart) && (Chrtbl[*(yomi - 1)] & NUMBER))

View file

@ -39,7 +39,7 @@
#include "sj_kanakan.h"
void wakachi() {
void wakachi(SJ3_CONTEXT2) {
JREC* jrec;
CLREC* clrec;
@ -66,24 +66,24 @@ void wakachi() {
i = maxlen;
}
if(!(jrec = argjrec(i, (JREC*)NULL))) return;
if(!(jrec = argjrec(SJ3_CONTEXT_PASS i, (JREC*)NULL))) return;
jrec->class = C_WAKACHI;
jrec->hinsi = D_MEISI_1;
if(Chrtbl[*(next - 1)] & TAI_KGU)
srchfzk(jrec, next, R_DAIMEISI, 0);
srchfzk(SJ3_CONTEXT_PASS jrec, next, R_DAIMEISI, 0);
}
else {
if(!(jrec = argjrec(0, (JREC*)NULL))) return;
if(!(jrec = argjrec(SJ3_CONTEXT_PASS 0, (JREC*)NULL))) return;
jrec->class = C_WAKACHI;
jrec->hinsi = MEISI_6;
while((int)jrec->jlen < maxlen) {
count = setconj((TypeGram)MEISI_6, jrec, crec);
count = setconj(SJ3_CONTEXT_PASS(TypeGram) MEISI_6, jrec, crec);
for(i = count; i-- > 0;) {
@ -92,17 +92,17 @@ void wakachi() {
next = cnvstart + jrec->jlen + gobilen;
if(gobilen) {
if(terminate(right, next)) {
if(terminate(SJ3_CONTEXT_PASS right, next)) {
fzk_ka_flg = 0;
setclrec(jrec, next, right);
setclrec(SJ3_CONTEXT_PASS jrec, next, right);
}
} else if((Chrtbl[*next] & NUMBER) && (jrec->jlen)) {
fzk_ka_flg = 0;
setclrec(jrec, next, right);
setclrec(SJ3_CONTEXT_PASS jrec, next, right);
return;
}
srchfzk(jrec, next, right, 0);
srchfzk(SJ3_CONTEXT_PASS jrec, next, right, 0);
}
if(maxclptr) break;
@ -115,7 +115,7 @@ void wakachi() {
return;
if(jrec->jlen) {
if((clrec = argclrec((int)jrec->jlen))) {
if((clrec = argclrec(SJ3_CONTEXT_PASS(int) jrec->jlen))) {
clrec->jnode = jrec;
clrec->right = R_MEISI;
clrec->kubun = K_TAIGEN;

View file

@ -1,26 +1,27 @@
#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;
DictFile* dict;
DICTL* node;
char out[64 * 1024];
int i = 0;
char c[64 * 1024];
char b;
Sj3Context ctx;
work_base = calloc(1, sizeof(Global));
node = calloc(1, sizeof(DICTL));
ctx.work = calloc(1, sizeof(Global));
dictlist = node;
node = calloc(1, sizeof(DICTL));
ctx.work->Jdictlist = node;
initwork();
initwork(&ctx);
dict = opendict("dic.bin", "");
dict = opendict(&ctx, "dic.bin", "");
node->dict = &dict->dict;
node->next = NULL;
seldict(dict->dict.dicid);
seldict(&ctx, dict->dict.dicid);
c[0] = 0;
@ -36,7 +37,7 @@ int main(int argc, char** argv) {
}
i = 0;
while((strlen(c) - i) > 0 && (i += cl2knj((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));