From a916f81d8a27233bcd783c7d6b7d72a6b6b80797 Mon Sep 17 00:00:00 2001 From: Nishi Date: Fri, 19 Jun 2026 23:45:47 +0900 Subject: [PATCH] Add multi-context --- CMakeLists.txt | 3 +- include/sj3core/sj_global.h | 2 +- include/sj3core/sj_kanakan.h | 42 ++++++------ include/sj3core/sj_typedef.h | 24 +++++-- lib/sj3core/adddic.c | 2 +- lib/sj3core/cl2knj.c | 6 +- lib/sj3core/cvtdict.c | 2 +- lib/sj3core/cvtkanji.c | 2 +- lib/sj3core/deldic.c | 2 +- lib/sj3core/mkbunset.c | 2 +- lib/sj3core/mkjiritu.c | 2 +- lib/sj3core/mkkouho.c | 4 +- lib/sj3core/peepdic.c | 70 ++++++++++---------- lib/sj3core/ph2knj.c | 18 +++--- lib/sj3core/ph_khtbl.c | 22 +++---- lib/sj3core/priority.c | 4 +- lib/sj3core/sdepend.c | 32 ++++----- lib/sj3core/selclrec.c | 8 +-- lib/sj3core/setconj.c | 2 +- lib/sj3core/setjrec.c | 36 +++++------ lib/sj3core/setkouho.c | 22 +++---- lib/sj3core/setubi.c | 4 +- lib/sj3core/srchdict.c | 12 ++-- lib/sj3core/srchhead.c | 2 +- lib/sj3core/srchidx.c | 4 +- lib/sj3core/srchnum.c | 122 +++++++++++++++++------------------ lib/sj3core/study.c | 10 +-- lib/sj3core/terminat.c | 2 +- lib/sj3core/wakachi.c | 20 +++--- src/sj3test/main.c | 27 ++++---- 30 files changed, 264 insertions(+), 246 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 436ca77..6d7cb7b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -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) diff --git a/include/sj3core/sj_global.h b/include/sj3core/sj_global.h index c6e9ad7..34f4eac 100644 --- a/include/sj3core/sj_global.h +++ b/include/sj3core/sj_global.h @@ -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 diff --git a/include/sj3core/sj_kanakan.h b/include/sj3core/sj_kanakan.h index 34ad4ff..9d1c6ae 100644 --- a/include/sj3core/sj_kanakan.h +++ b/include/sj3core/sj_kanakan.h @@ -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*); diff --git a/include/sj3core/sj_typedef.h b/include/sj3core/sj_typedef.h index 68d80f7..903b3f8 100644 --- a/include/sj3core/sj_typedef.h +++ b/include/sj3core/sj_typedef.h @@ -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; diff --git a/lib/sj3core/adddic.c b/lib/sj3core/adddic.c index 4720df5..f119581 100644 --- a/lib/sj3core/adddic.c +++ b/lib/sj3core/adddic.c @@ -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++; diff --git a/lib/sj3core/cl2knj.c b/lib/sj3core/cl2knj.c index 44767c0..90ce5e1 100644 --- a/lib/sj3core/cl2knj.c +++ b/lib/sj3core/cl2knj.c @@ -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); diff --git a/lib/sj3core/cvtdict.c b/lib/sj3core/cvtdict.c index c52fb4f..156c8d2 100644 --- a/lib/sj3core/cvtdict.c +++ b/lib/sj3core/cvtdict.c @@ -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; diff --git a/lib/sj3core/cvtkanji.c b/lib/sj3core/cvtkanji.c index b8995ca..38f0bd4 100644 --- a/lib/sj3core/cvtkanji.c +++ b/lib/sj3core/cvtkanji.c @@ -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))) diff --git a/lib/sj3core/deldic.c b/lib/sj3core/deldic.c index 1cf0b9c..c465c29 100644 --- a/lib/sj3core/deldic.c +++ b/lib/sj3core/deldic.c @@ -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) { diff --git a/lib/sj3core/mkbunset.c b/lib/sj3core/mkbunset.c index da08e22..c919145 100644 --- a/lib/sj3core/mkbunset.c +++ b/lib/sj3core/mkbunset.c @@ -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; diff --git a/lib/sj3core/mkjiritu.c b/lib/sj3core/mkjiritu.c index 751e703..aa02322 100644 --- a/lib/sj3core/mkjiritu.c +++ b/lib/sj3core/mkjiritu.c @@ -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); } } diff --git a/lib/sj3core/mkkouho.c b/lib/sj3core/mkkouho.c index a6cb4aa..a4ead4c 100644 --- a/lib/sj3core/mkkouho.c +++ b/lib/sj3core/mkkouho.c @@ -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); diff --git a/lib/sj3core/peepdic.c b/lib/sj3core/peepdic.c index 3337dbe..3ac9ccc 100644 --- a/lib/sj3core/peepdic.c +++ b/lib/sj3core/peepdic.c @@ -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; diff --git a/lib/sj3core/ph2knj.c b/lib/sj3core/ph2knj.c index bbfe068..3f220bd 100644 --- a/lib/sj3core/ph2knj.c +++ b/lib/sj3core/ph2knj.c @@ -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; diff --git a/lib/sj3core/ph_khtbl.c b/lib/sj3core/ph_khtbl.c index 2f7347f..414d298 100644 --- a/lib/sj3core/ph_khtbl.c +++ b/lib/sj3core/ph_khtbl.c @@ -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; } diff --git a/lib/sj3core/priority.c b/lib/sj3core/priority.c index 0d87823..2cbc470 100644 --- a/lib/sj3core/priority.c +++ b/lib/sj3core/priority.c @@ -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; diff --git a/lib/sj3core/sdepend.c b/lib/sj3core/sdepend.c index c16ac05..19cca71 100644 --- a/lib/sj3core/sdepend.c +++ b/lib/sj3core/sdepend.c @@ -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; diff --git a/lib/sj3core/selclrec.c b/lib/sj3core/selclrec.c index a49865d..9c773a3 100644 --- a/lib/sj3core/selclrec.c +++ b/lib/sj3core/selclrec.c @@ -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; diff --git a/lib/sj3core/setconj.c b/lib/sj3core/setconj.c index 0752613..ac5071b 100644 --- a/lib/sj3core/setconj.c +++ b/lib/sj3core/setconj.c @@ -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; diff --git a/lib/sj3core/setjrec.c b/lib/sj3core/setjrec.c index 82aab33..03e5025 100644 --- a/lib/sj3core/setjrec.c +++ b/lib/sj3core/setjrec.c @@ -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; diff --git a/lib/sj3core/setkouho.c b/lib/sj3core/setkouho.c index cda2489..0cb942c 100644 --- a/lib/sj3core/setkouho.c +++ b/lib/sj3core/setkouho.c @@ -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) { diff --git a/lib/sj3core/setubi.c b/lib/sj3core/setubi.c index 47a4d7d..c86a52f 100644 --- a/lib/sj3core/setubi.c +++ b/lib/sj3core/setubi.c @@ -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; diff --git a/lib/sj3core/srchdict.c b/lib/sj3core/srchdict.c index 1e4cd50..dff3f91 100644 --- a/lib/sj3core/srchdict.c +++ b/lib/sj3core/srchdict.c @@ -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; diff --git a/lib/sj3core/srchhead.c b/lib/sj3core/srchhead.c index cf73ef6..a6f12a9 100644 --- a/lib/sj3core/srchhead.c +++ b/lib/sj3core/srchhead.c @@ -38,7 +38,7 @@ #include "sj_kanakan.h" -int srchhead() { +int srchhead(SJ3_CONTEXT2) { if(*cnvstart == _O) { headcode = SETTOU_O; headlen = 1; diff --git a/lib/sj3core/srchidx.c b/lib/sj3core/srchidx.c index 5818201..05c716e 100644 --- a/lib/sj3core/srchidx.c +++ b/lib/sj3core/srchidx.c @@ -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)); diff --git a/lib/sj3core/srchnum.c b/lib/sj3core/srchnum.c index 6cf2146..d655618 100644 --- a/lib/sj3core/srchnum.c +++ b/lib/sj3core/srchnum.c @@ -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; } diff --git a/lib/sj3core/study.c b/lib/sj3core/study.c index 6ae5bcc..ab0ebc4 100644 --- a/lib/sj3core/study.c +++ b/lib/sj3core/study.c @@ -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; diff --git a/lib/sj3core/terminat.c b/lib/sj3core/terminat.c index 20d9df8..30f349f 100644 --- a/lib/sj3core/terminat.c +++ b/lib/sj3core/terminat.c @@ -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)) diff --git a/lib/sj3core/wakachi.c b/lib/sj3core/wakachi.c index 7d8c4d6..14d9c11 100644 --- a/lib/sj3core/wakachi.c +++ b/lib/sj3core/wakachi.c @@ -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; diff --git a/src/sj3test/main.c b/src/sj3test/main.c index 9d15e80..21b8bb4 100644 --- a/src/sj3test/main.c +++ b/src/sj3test/main.c @@ -1,26 +1,27 @@ #include 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));