 3.3 Ѥ빽¤

#include"jslib.h" Ƥ빽¤Τϰʲ̤ꡣ

/* ü٥(ʻֹ) */
#define	WNN_BUN_SENTOU		/* ʸƬˤʤ */
#define	WNN_ALL_HINSI		/* ٤Ƥʻ */
/* ü٥ */
#define	WNN_VECT_KANREN		/* ϢʸѴνü٥ */
#define	WNN_VECT_KANTAN		/* ñʸѴνü٥ */
#define WNN_VECT_KANZEN		/* Фνü٥ */
#define WNN_VECT_BUNSETSU	/* ϢʸѴΡʸνü٥*/
#define WNN_VECT_NO		/* ü٥1 ̵ */
/* ʸü³ */
#define	WNN_CONNECT		/* ꤵ줿(ʻ졢°)³Ǥ*/
#define	WNN_SENTOU		/* ʸƬ */
#define	WNN_NOT_CONNECT		/* Ƭˤʤʤ³Ǥʤ */
#define	WNN_GIJI		/* ʸä*/

/* ʸľ򤷤 */
#define WNN_HIRAGANA		/* Ҥ餬 *//* ɤߤΤޤ */
#define WNN_KATAKANA		/*  */
/*  */
#define	WNN_NUM_HAN		/* Ⱦѿ *//* ɤߤΤޤ */
#define	WNN_NUM_ZEN		/* ѿ *//*  */
#define	WNN_NUM_KAN		/*  *//*  */
#define	WNN_NUM_KANSUUJI 	/*  *//* ɴ󽽻 */
#define	WNN_NUM_KANOLD		/*  *//* ɴ */
#define	WNN_NUM_HANCAN		/* Ⱦѿ *//* 1,234 */
#define	WNN_NUM_ZENCAN		/* ѿ *//*  */
/* ѿ */
#define	WNN_ALP_HAN		/* Ⱦ *//* ɤߤΤޤ */
#define	WNN_ALP_ZEN		/*  */
/*  */
#define	WNN_KIG_HAN		/* Ⱦ *//* ɤߤΤޤ */
#define	WNN_KIG_JIS		/* (JIS) */
#define	WNN_KIG_ASC		/* (ASC) */

#define WNN_FT_DICT_FILE
#define WNN_FT_HINDO_FILE
#define WNN_FT_FUZOKUGO_FILE

#define WNN_STATIC_DICT 	/*  */
#define WNN_UD_DICT 		/* Ͽǽ */

#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 Υåȥǥץ*/
	char user_name[64];   /* 桼̾ */
	char host_name[64];   /* ۥ̾ */
	int  env[WNN_MAX_ENV_OF_A_CLIENT];  /* Υ饤ȤѤƤ
				Ķֹ󡣶ƤȤˤϡ-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;			/* ȿ */
	/* struct wnn_param; */
	int	fzk_fid;			/* °Υեֹ */
	int jishomax;				/* ѤƤ뼭θĿ */
	int	jisho[WNN_MAX_JISHO_OF_AN_ENV];	/* ѤƤ뼭μֹ档
					   ǽjishomaxḤ̂ */
	int	file[WNN_MAX_FILE_OF_AN_ENV];   /* δĶˤĤʤäƤ
				 եֹ(ƤȤˤϡ-1 ) */
};
typedef struct wnn_env_info WNN_ENV_INFO;

#define WNN_COMMENT_LEN 512     /* ΥȤĹ */
#define WNN_F_NAMELEN 100
#define WNN_PASSWD_LEN 16  	/* ѥɤĹ */


struct wnn_dic_info {
	int dic_no;		/* ֹ */
	int body;		/* ΤΥեֹ */
	int hindo;		/* ٤Υեֹ */
	int rw;			/* Ͽǽɤ
				   (WNN_DIC_RW, WNN_DIC_RDONLY) */
	int hindo_rw;		/* ٤ǽɤ
				   (WNN_DIC_RW, WNN_DIC_RDONLY) */
	int enablef;		/* 񤬻椫ɤ
				   (1 = , 0 = ) */
	int nice;		/* Ѵͥ */
	wchar comment[WNN_COMMENT_LEN];	/* Υ */
	char fname[WNN_F_NAMELEN]; /* Υե̾ */
	char hfname[WNN_F_NAMELEN]; /* ٤Υե̾ */
	char passwd[WNN_PASSWD_LEN]; /* Υѥ */
	char hpasswd[WNN_PASSWD_LEN]; /* ٤Υѥ */
	int type;		/* μ(WNN_UD_DICT,WNN_STATIC_DICT) */
	int gosuu;		/* θ */
};

typedef struct wnn_dic_info WNN_DIC_INFO;

struct wnn_file_stat {
    int type;			/* եμ
		WNN_STATIC_DICT		
		WNN_UD_DICT		Ͽǽ
		WNN_HINDO_FILE		٥ե
		WNN_FUZOKUGO_FILE	°ե
		WNN_NOT_A_JISHO		¾   */
    wchar comment[WNN_COMMENT_LEN]; /* եΥ */
};

typedef struct wnn_file_stat WNN_FILE_STAT;

extern	int	wnn_errorno;		/* WnnΥ顼Ϥѿ𤵤 */

#define FILE_ALREADY_READ -2

/* ι¤Τϡ饤֥Ѥ */
struct wnn_jserver_id {
	int	sd;
	char	js_name[40];
	int	js_dead;
	jmp_buf js_dead_env;	/* ФǤenv */
	int	js_dead_env_flg; /* jd_server_dead_envͭݤ  */
};

typedef struct wnn_jserver_id WNN_JSERVER_ID;

/* ι¤Τϡ饤֥Ѥ */
struct wnn_env {
	int		env_id;
	WNN_JSERVER_ID	*js_id;
};

typedef struct wnn_env WNN_ENV;

struct wnn_param {
	int	n;	/* ()ʸϤΣ */
	int	nsho;	/* ʸξʸκ */
	int 	p1;	/* Ω٤Υѥ᡼ */
	int 	p2;	/* ʸĹΥѥ᡼ */
	int 	p3;	/* ΩĹΥѥ᡼ */
	int 	p4;	/* ȤäӥåȤΥѥ᡼ */
	int 	p5;	/* Υѥ᡼ */
	int	p6;	/* ʸɾͤΥѥ᡼ */
	int	p7;	/* ʸĹΥѥ᡼ */
	int	p8;	/* ʸΥѥ᡼ */
	int	p9;	/* ʻ ٤Υѥ᡼ */
	int	p10;	/* ʻ ʤ٤Υѥ᡼ */
	int	p11;	/* ʻ ѿ٤Υѥ᡼ */
	int	p12;	/* ʻ ٤Υѥ᡼ */
	int	p13;	/* ʻ ĳ̤٤Υѥ᡼ */
	int	p14;	/* ʻ °٤Υѥ᡼ */
	int	p15;	/* ʻ ̤٤Υѥ᡼ */
};


struct wnn_file_info_struct {
	int	fid;		/* եֹ */
	char	name[WNN_F_NAMELEN]; /* ե̾ */
	int	localf;		/* СȤΥե뤫ɤ
				   1: С
				   0: 饤ȡ   */
	int	type;		/* եμ */
	int	ref_count;	/* (Ķ)ȿ */
};

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;		/* ΩμΥȥֹ */
	int	entry;		/* ʸμΩ켭 entry */

	int	hinsi;		/* Ωʻ */
	int     status;		/* ʸƬ */
	int 	hindo;		/* 伫Ω */ 
	int 	ima;		/* 伫ΩκȤäӥå */ 
	int	kangovect;	/* ³٥ȥơ֥ؤΥݥ */
	int 	hyoka;		/* ʸɾ */
	wchar	*kanji;		/* Ωʸ */
	wchar	*yomi;		/* Ωɤʸ */
	wchar	*fuzoku;	/* °ʸ */
/*
 *٤ˤĤƤϡ٥ե뤬ꤵƤϡ
 *hindo = ٥ե() + ()
 *ima = ٥եκȤäӥå
 *
 *٥ե뤬ꤵƤʤˤϡ
 *hindo = ()͡ima = κȤäӥå
 *Ǥ롣ǡͤȤϡ׻7ӥåȤ˰̤줿ͤǤ롣
 *ͤǤϤʤ֤ͤΤϡѴ̤ΥǥХåΤǤ롣
 */
};

struct	wnn_dai_bunsetsu {
	int	end;		/* ʸ end char index */
	int	start;		/* ʸ top char index */
	struct	wnn_sho_bunsetsu	*sbn;	/* ʸϷ̤ؤΥݥ */
	int 	hyoka;		/* ʸɾ */
	int	sbncnt;		/* ʸ (ξϡ)
				   DSD_SBNϡ*sbn  sbncnt  */
};

struct	wnn_jdata {
	int	dic_no;		/* ֹ */
	int	serial;		/* Υȥֹ */
	int	hinshi;		/* ʻֹ(ʻֹʻ̾бϡmanual/etc
				   β򻲾) */
	int	hindo;		/*  */
	int	ima;		/* Ȥäӥå */
	int	int_hindo;	/*  */
	int	int_ima;	/* ⡢Ȥäӥå */
	wchar   *yomi;		/* ɤߤʸ */
	wchar	*kanji;		/* ʸ */
	wchar	*com;		/* ȥΥʸ */
/*
 *٤ˤĤƤϡ٥ե뤬ꤵƤϡ
 *hindo = ٥ե()͡ima = ٥եκȤäӥå
 *int_hindo = ()͡int_ima = κȤäӥå
 *
 *٥ե뤬ꤵƤʤˤϡ
 *hindo = ()͡ima = κȤäӥå
 *int_hindo = -1int_ima = -1
 *
 *ɤξǤ⡢ȥ꤬ߤξ֤λˤϡ
 *hindo = -1, ima = 0 뤤ϡ
 *int_hindo = -1, int_ima = 0 Ȥʤ롣
 *ǡ()ͤȤϡ׻7ӥåȤ˰̤줿ͤ顢
 *ºݤͤꤷͤǤ롣
 */
};

struct	wnn_ret_buf {
	int	size;		/* buf  alloc Ƥ礭 */
	char	*buf;		/* malloc ʤɤǤȤ줿ΰ */
};


#define	WNN_F_UNIQ_LEN	(sizeof(struct wnn_file_uniq))

/* ι¤Τϡ饤֥Ѥ */
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;	/* ʣʻ̾ */
/* fukugou hinsi is held as a string */
    unsigned short *component;	/* ʣʻιǤȤʤʻֹ
				   (Ǹ 0xffff ǽ)
				 */
};

struct wnn_hinsi_node{
    unsigned char *name;	/* ʻΡɤ̾ */
    int kosuu;			/* Ҥɤο */
    unsigned char *son;		/* ǽλҤɤؤΥݥ */
};


#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.
				 */

