several optimization

This commit is contained in:
Nishi 2026-09-23 13:24:26 +09:00
commit c52b21c9ee
12 changed files with 214 additions and 111 deletions

View file

@ -23,8 +23,14 @@ int sj4_to_sjis(u_char* out, const u_char* in, int len);
int sj4_to_utf8(u_char* out, const u_char* in, int len);
int sj4_to_utf16(u_char* out, const u_char* in, int len);
int sj4_eucjp_read(const unsigned char* in, int* output);
int sj4_sjis_read(const unsigned char* in, int* output);
int sj4_utf8_read(const unsigned char* in, int* output);
int sj4_utf16_read(const unsigned char* in, int* output);
int sj4_charset_to(int type, void* output, const void* input, int len);
int sj4_charset_from(int type, void* output, const void* input, int len);
int sj4_charset_read(int type, int* output, const void* input);
#ifdef __cplusplus
}

View file

@ -80,6 +80,7 @@ typedef struct global {
DICT* Jcurdict;
DICTL* Jdictlist;
u_char* Jdicbuf;
u_char* Jaskbase;
u_char* Jidxbuf;
TypeIdxOfs* Jidxofs;
u_char* Jaskknj[MAXKNJASKNUMBER];

View file

@ -65,7 +65,27 @@ CLREC* alloc_clrec(SJ4_CONTEXT2);
void free_clrec(SJ4_CONTEXT CLREC*);
/* charsize.c */
static __inline int codesize_inline(u_char code) {
switch(code & KANJIMODEMASK) {
case ZENHIRAASSYUKU:
case ZENKATAASSYUKU:
case KANJIASSYUKU:
case KANJISTREND:
return 1;
case LEADINGHANKAKU:
case OFFSETASSYUKU:
case AIATTRIBUTE:
case KANAKANCOST:
return 2;
default:
return 2;
}
}
#ifdef NO_CODESIZE_INLINE
int codesize(u_char);
#else
#define codesize codesize_inline
#endif
/* chrtbl.c */
extern u_char chrtbl[256];
@ -139,7 +159,22 @@ int getkanji(SJ4_CONTEXT u_char*, int, u_char*, u_char*);
void getrank(SJ4_CONTEXT2);
/* hzstrlen.c */
static __inline int euc_codesize_inline(u_char c) {
if((c & KANJIMODEMASK) == 0x90) {
return 1;
} else if(isknj1(c)) {
return 2;
} else if(c == SS3) {
return 3;
} else {
return 1;
}
}
#ifdef NO_EUC_CODESIZE_INLINE
int euc_codesize(u_char c);
#else
#define euc_codesize euc_codesize_inline
#endif
int hzstrlen(u_char*, int);
/* init.c */

View file

@ -169,6 +169,7 @@
#define curdict (work_base->Jcurdict)
#define dictlist (work_base->Jdictlist)
#define dicbuf (work_base->Jdicbuf)
#define askbase (work_base->Jaskbase)
#define idxbuf (work_base->Jidxbuf)
#define idxofs (work_base->Jidxofs)
#define askknj (work_base->Jaskknj)