/* * Copyright (c) 1991-1994 Sony Corporation * * Permission is hereby granted, free of charge, to any person obtaining * a copy of this software and associated documentation files (the * "Software"), to deal in the Software without restriction, including * without limitation the rights to use, copy, modify, merge, publish, * distribute, sublicense, and/or sell copies of the Software, and to * permit persons to whom the Software is furnished to do so, subject to * the following conditions: * * The above copyright notice and this permission notice shall be * included in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM, * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR * THE USE OR OTHER DEALINGS IN THE SOFTWARE. * * Except as contained in this notice, the name of Sony Corporation * shall not be used in advertising or otherwise to promote the sale, use * or other dealings in this Software without prior written authorization * from Sony Corporation. * */ /* * $SonyRCSfile: wakachi.c,v $ * $SonyRevision: 1.1 $ * $SonyDate: 1994/06/03 08:02:43 $ */ #include "sj_kcnv.h" #include "sj_right.h" #include "sj_hinsi.h" #include "sj_kanakan.h" void wakachi() { JREC* jrec; CLREC* clrec; CREC crec[4]; int count; u_char* next; TypeCnct right; int i; int maxlen; free_jall(maxjptr); maxjptr = NULL; maxlen = (cnvlen > MAXCLINPUTLEN) ? MAXCLINPUTLEN : cnvlen; next = cnvstart; if(Chrtbl[*next] & (TAI_KGU | FZK_KGU)) { while(*next && (Chrtbl[*next] & (TAI_KGU | FZK_KGU))) next++; if((i = next - cnvstart) > maxlen) { next = cnvstart + maxlen; i = maxlen; } if(!(jrec = argjrec(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); } else { if(!(jrec = argjrec(0, (JREC*)NULL))) return; jrec->class = C_WAKACHI; jrec->hinsi = MEISI_6; while((int)jrec->jlen < maxlen) { count = setconj((TypeGram)MEISI_6, jrec, crec); for(i = count; i-- > 0;) { right = crec[i].right; gobilen = crec[i].len; next = cnvstart + jrec->jlen + gobilen; if(gobilen) { if(terminate(right, next)) { fzk_ka_flg = 0; setclrec(jrec, next, right); } } else if((Chrtbl[*next] & NUMBER) && (jrec->jlen)) { fzk_ka_flg = 0; setclrec(jrec, next, right); return; } srchfzk(jrec, next, right, 0); } if(maxclptr) break; (jrec->jlen)++; } } if((maxclptr) && (Chrtbl[*(cnvstart + jrec->jlen)] & FZKTOP)) return; if(jrec->jlen) { if(clrec = argclrec((int)jrec->jlen)) { clrec->jnode = jrec; clrec->right = R_MEISI; clrec->kubun = K_TAIGEN; (jrec->count)++; } } }