 3.3 gp\

#include"jslib.h" Œ`Ă\͈̂ȉ̒ʂB

/* O[xN^(iԍ)̒` */
#define	WNN_BUN_SENTOU		/* 啶߂̐擪ɂȂ */
#define	WNN_ALL_HINSI		/* ׂĂ̕i */
/* I[xN^̒` */
#define	WNN_VECT_KANREN		/* Aߕϊ̏I[xN^[ */
#define	WNN_VECT_KANTAN		/* Pߕϊ̏I[xN^[ */
#define WNN_VECT_KANZEN		/* SȍI[xN^[ */
#define WNN_VECT_BUNSETSU	/* AߕΐAe߂̏I[xN^[*/
#define WNN_VECT_NO		/* I[xN^1  */
/* ߂̑O[̐ڑ */
#define	WNN_CONNECT		/* w肳ꂽ(iAt)ɐڑłB*/
#define	WNN_SENTOU		/* 啶߂̐擪 */
#define	WNN_NOT_CONNECT		/* 擪ɂȂȂAOɐڑłȂ */
#define	WNN_GIJI		/* ^߂B*/

/* ^߂̒OɑI */
#define WNN_HIRAGANA		/* Ђ炪 *//* ǂ݂̂܂ */
#define WNN_KATAKANA		/* J^Ji */
/*  */
#define	WNN_NUM_HAN		/* p *//* ǂ݂̂܂ */
#define	WNN_NUM_ZEN		/* Sp *//* PQR */
#define	WNN_NUM_KAN		/*  *//* O */
#define	WNN_NUM_KANSUUJI 	/*  *//* S\O */
#define	WNN_NUM_KANOLD		/*  *//* SEQ */
#define	WNN_NUM_HANCAN		/* p *//* 1,234 */
#define	WNN_NUM_ZENCAN		/* Sp *//* PCQRS */
/* p */
#define	WNN_ALP_HAN		/* p *//* ǂ݂̂܂ */
#define	WNN_ALP_ZEN		/* Sp */
/* L */
#define	WNN_KIG_HAN		/* p *//* ǂ݂̂܂ */
#define	WNN_KIG_JIS		/* Sp(JIS) */
#define	WNN_KIG_ASC		/* Sp(ASC) */

#define WNN_FT_DICT_FILE
#define WNN_FT_HINDO_FILE
#define WNN_FT_FUZOKUGO_FILE

#define WNN_STATIC_DICT 	/* Œ` */
#define WNN_UD_DICT 		/* o^\` */

#define	WNN_DIC_RDONLY
#define	WNN_DIC_RW


/* header file for dic_syurui */
#define WNN_FILE_NOT_EXIST
#define WNN_NOT_A_JISHO
#define WNN_HINDO_FILE
#define WNN_FUZOKUGO_FILE

/* set_hindo operation */
#define WNN_HINDO_NOP
#define WNN_IMA_ON
#define WNN_IMA_OFF
#define WNN_HINDO_INC
#define WNN_HINDO_DECL
#define WNN_ENTRY_NO_USE

/*	Wnn constant
*/
#define WNN_HOSTLEN
#define WNN_ENVNAME_LEN

/*	js_who	*/
#define WNN_MAX_ENV_OF_A_CLIENT

struct wnn_jwho {
	int sd;   /* jserver ̃\PbgfBXNv^*/
	char user_name[64];   /* [U */
	char host_name[64];   /* zXg */
	int  env[WNN_MAX_ENV_OF_A_CLIENT];  /* ̃NCAggpĂ
				ԍ̗B󂢂ĂƂɂ́A-1  */
};
typedef struct wnn_jwho WNN_JWHO;

/*	js_env_list	*/
#define WNN_MAX_JISHO_OF_AN_ENV 15
#define WNN_MAX_FILE_OF_AN_ENV 30

 struct wnn_env_info {
        int	env_id;				/* ԍ */
	char	env_name[WNN_ENVNAME_LEN]; 	/*  */
	int	ref_count;			/* QƐ */
	/* struct wnn_param; */
	int	fzk_fid;			/* t̃t@Cԍ */
	int jishomax;				/* gpĂ鎫̌ */
	int	jisho[WNN_MAX_JISHO_OF_AN_ENV];	/* gpĂ鎫̎ԍB
					   ŏjishomaxӖ */
	int	file[WNN_MAX_FILE_OF_AN_ENV];   /* ̊ɂȂĂ
				 t@Cԍ(󂢂ĂƂɂ́A-1 ) */
};
typedef struct wnn_env_info WNN_ENV_INFO;

#define WNN_COMMENT_LEN 512     /* ̃Rg̒ */
#define WNN_F_NAMELEN 100
#define WNN_PASSWD_LEN 16  	/* pX[h̒ */


struct wnn_dic_info {
	int dic_no;		/* ԍ */
	int body;		/* {̂̃t@Cԍ */
	int hindo;		/* px̃t@Cԍ */
	int rw;			/* o^\ǂ
				   (WNN_DIC_RW, WNN_DIC_RDONLY) */
	int hindo_rw;		/* pxXV\ǂ
				   (WNN_DIC_RW, WNN_DIC_RDONLY) */
	int enablef;		/* gpǂ
				   (1 = gp, 0 = gpf) */
	int nice;		/* ̕ϊ̗Dx */
	wchar comment[WNN_COMMENT_LEN];	/* ̃Rg */
	char fname[WNN_F_NAMELEN]; /* ̃t@C */
	char hfname[WNN_F_NAMELEN]; /* px̃t@C */
	char passwd[WNN_PASSWD_LEN]; /* ̃pX[h */
	char hpasswd[WNN_PASSWD_LEN]; /* px̃pX[h */
	int type;		/* ̎(WNN_UD_DICT,WNN_STATIC_DICT) */
	int gosuu;		/* ̌ꐔ */
};

typedef struct wnn_dic_info WNN_DIC_INFO;

struct wnn_file_stat {
    int type;			/* t@C̎
		WNN_STATIC_DICT		Œ`
		WNN_UD_DICT		o^\`
		WNN_HINDO_FILE		pxt@C
		WNN_FUZOKUGO_FILE	tt@C
		WNN_NOT_A_JISHO		̑   */
    wchar comment[WNN_COMMENT_LEN]; /* t@C̃Rg */
};

typedef struct wnn_file_stat WNN_FILE_STAT;

extern	int	wnn_errorno;		/* WnñG[͂̕ϐɕ񍐂 */

#define FILE_ALREADY_READ -2

/* ̍\̂́ACuŗp */
struct wnn_jserver_id {
	int	sd;
	char	js_name[40];
	int	js_dead;
	jmp_buf js_dead_env;	/* T[o񂾎ɔłenv */
	int	js_dead_env_flg; /* jd_server_dead_envLۂ  */
};

typedef struct wnn_jserver_id WNN_JSERVER_ID;

/* ̍\̂́ACuŗp */
struct wnn_env {
	int		env_id;
	WNN_JSERVER_ID	*js_id;
};

typedef struct wnn_env WNN_ENV;

struct wnn_param {
	int	n;	/* m()߉͂̂m */
	int	nsho;	/* 啶ߒ̏߂̍ő吔 */
	int 	p1;	/* ̕px̃p[^ */
	int 	p2;	/* ߒ̃p[^ */
	int 	p3;	/* ꒷̃p[^ */
	int 	p4;	/* grbg̃p[^ */
	int 	p5;	/* ̃p[^ */
	int	p6;	/* ߂̕]l̃p[^ */
	int	p7;	/* 啶ߒ̃p[^ */
	int	p8;	/* ߐ̃p[^ */
	int	p9;	/* ^i ̕px̃p[^ */
	int	p10;	/* ^i Ji̕px̃p[^ */
	int	p11;	/* ^i p̕px̃p[^ */
	int	p12;	/* ^i L̕px̃p[^ */
	int	p13;	/* ^i ʂ̕px̃p[^ */
	int	p14;	/* ^i t̕px̃p[^ */
	int	p15;	/* ^i Jʂ̕px̃p[^ */
};


struct wnn_file_info_struct {
	int	fid;		/* t@Cԍ */
	char	name[WNN_F_NAMELEN]; /* t@C */
	int	localf;		/* T[oETCg̃t@Cǂ
				   1: T[oETCg
				   0: NCAgETCg   */
	int	type;		/* t@C̎ */
	int	ref_count;	/* ()QƐ */
};

typedef struct wnn_file_info_struct WNN_FILE_INFO_STRUCT;

#define WNN_VECT_L	((256+8*4-1)/(8*4) + 5)	/***** !!!!! ****/

struct	wnn_sho_bunsetsu {
	int	end;		/* ╶߂ end char index */
	int	start;		/* ╶߂ top char index */
	int	jiriend;	/* ╶߂̎ end char index */
	int	dic_no;		/* ̎̃Ggԍ */
	int	entry;		/* ╶߂̎ꎫ entry */

	int	hinsi;		/* i */
	int     status;		/* 啶߂̐擪 */
	int 	hindo;		/* ⎩̕px */ 
	int 	ima;		/* ⎩̍grbg */ 
	int	kangovect;	/* ڑxNge[uւ̃|C^ */
	int 	hyoka;		/* ߕ]l */
	wchar	*kanji;		/* ꕶ */
	wchar	*yomi;		/* ̓ǂݕ */
	wchar	*fuzoku;	/* tꕶ */
/*
 *pxɂẮApxt@Cw肳Ă鎞́A
 *hindo = pxt@C()pxl + ()pxl
 *ima = pxt@C̍grbg
 *
 *pxt@Cw肳ĂȂɂ́A
 *hindo = ()pxlAima = ̍grbg
 *łBŁApxlƂ́AvZ@7rbgɈkꂽlłB
 *zpxlł͂ȂpxlԂ̂́Aϊʂ̃fobÔ߂łB
 */
};

struct	wnn_dai_bunsetsu {
	int	end;		/* ╶߂ end char index */
	int	start;		/* ╶߂ top char index */
	struct	wnn_sho_bunsetsu	*sbn;	/* ߉͌ʂւ̃|C^ */
	int 	hyoka;		/* 啶ߕ]l */
	int	sbncnt;		/* ߐ (̏ꍇ́A␔)
				   DSD_SBŃA*sbn  sbncnt  */
};

struct	wnn_jdata {
	int	dic_no;		/* ԍ */
	int	serial;		/* ̃Ggԍ */
	int	hinshi;		/* iԍ(iԍƕȋΉ́Amanual/etc
				   ̉Q) */
	int	hindo;		/* px */
	int	ima;		/* grbg */
	int	int_hindo;	/* px */
	int	int_ima;	/* Agrbg */
	wchar   *yomi;		/* ǂ݂̕ */
	wchar	*kanji;		/*  */
	wchar	*com;		/* Gg̃Rg */
/*
 *pxɂẮApxt@Cw肳Ă鎞́A
 *hindo = pxt@C(z)pxlAima = pxt@C̍grbg
 *int_hindo = (z)pxlAint_ima = ̍grbg
 *
 *pxt@Cw肳ĂȂɂ́A
 *hindo = (z)pxlAima = ̍grbg
 *int_hindo = -1Aint_ima = -1
 *
 *Aǂ̏ꍇłAGggp~̏Ԃ̎ɂ́A
 *hindo = -1, ima = 0 邢́A
 *int_hindo = -1, int_ima = 0 ƂȂB
 *ŁA(z)pxlƂ́AvZ@7rbgɈkꂽpxlA
 *ۂ̒lz肵lłB
 */
};

struct	wnn_ret_buf {
	int	size;		/* buf  alloc Ă傫 */
	char	*buf;		/* malloc ȂǂłƂꂽ̈ */
};


#define	WNN_F_UNIQ_LEN	(sizeof(struct wnn_file_uniq))

/* ̍\̂́ACuŗp */
struct wnn_file_head {
  struct wnn_file_uniq{
    int time;
    int dev;
    int inode;
    char createhost[WNN_HOSTLEN];
  } file_uniq;
  struct wnn_file_uniq file_uniq_org;
  int not_used1;
  int not_used2;
  int file_type;
  char file_passwd[WNN_PASSWD_LEN];
};

struct wnn_fukugou{
    unsigned char *name;	/* i̖O */
/* fukugou hinsi is held as a string */
    unsigned short *component;	/* i̍\vfƂȂi̔ԍ̔z
				   (Ō 0xffff ŏI)
				 */
};

struct wnn_hinsi_node{
    unsigned char *name;	/* im[h̖O */
    int kosuu;			/* qǂ̐ */
    unsigned char *son;		/* ŏ̎qǂւ̃|C^ */
};


#define	WNN_FILE_HEADER_LEN	(WNN_PASSWD_LEN + 8 + WNN_FILE_STRING_LEN + \
				 sizeof(struct wnn_file_uniq) * 2 + 4)
				/*
				  8 is for future use 
				  4 is for file_type.
				 */

