aboutsummaryrefslogblamecommitdiff
path: root/japanese/FreeWnn-lib/files/patch-Wnn-conv-cvt_key.c
blob: f7f94e3bd27fca1784ede45f046ab74e81c32398 (plain) (tree)

































































































































































































































































































































                                                                                                                 
Index: Wnn/conv/cvt_key.c
===================================================================
RCS file: /home/cvs/private/hrs/freewnn/Wnn/conv/cvt_key.c,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -u -p -r1.1.1.1 -r1.2
--- Wnn/conv/cvt_key.c	20 Dec 2008 07:13:30 -0000	1.1.1.1
+++ Wnn/conv/cvt_key.c	20 Dec 2008 15:22:37 -0000	1.2
@@ -65,172 +65,165 @@
 extern struct CONVCODE tbl[];
 extern int cnv_tbl_cnt;         /* convert table count */
 
-
- /** intの配列 h をビットベクタとみなし、第iビットをチェックあるいは立てる */
+/** intの配列 h をビットベクタとみなし、第iビットをチェックあるいは立てる */
 #define BITONP(h, i) (h[i / BITSIZ] &  (1 << (i % BITSIZ)))
 #define BITOFP(h, i) (!BITONP(h, i))
 #define BIT_UP(h, i) (h[i / BITSIZ] |= (1 << (i % BITSIZ)))
 #define BITDWN(h, i) (h[i / BITSIZ] &= ~(1 << (i % BITSIZ)))
 
- /** 変換コードのチェックとコード変換 */
+/** 変換コードのチェックとコード変換 */
 int
-key_check (inbuf, conv_tbl, tbl_cnt, check_flg)
-     int inbuf[];               /* ソースストリング */
-     struct CONVCODE conv_tbl[];        /* コード変換テーブル */
-     int tbl_cnt;
-     int check_flg[];
+key_check (int inbuf[],			/* ソースストリング */
+	   struct CONVCODE conv_tbl[],	/* コード変換テーブル */
+	   int tbl_cnt,
+	   int check_flg[])
 {
-  int dist, base;
-  char *code_p;
-  int i;
-
-  for (base = 0; inbuf[base] != -1; base++)
-    {
-      for (dist = 0; dist < tbl_cnt; dist++)
-        {
-          if (BITONP (check_flg, dist) && conv_tbl[dist].fromkey != 0)
-            {
-              code_p = conv_tbl[dist].fromkey + base;
-              if (*code_p == (char) inbuf[base])
-                {
-                  if (*(code_p + 1) == (char) 0)
-                    {
-                      /* マッチした */
-                      for (i = 0, base++; (inbuf[i] = inbuf[base]) != -1; i++, base++);
-                      return (conv_tbl[dist].tokey);
-                    }
-                  /* まだマッチしていない */
-                }
-              else
-                {
-                  BITDWN (check_flg, dist);     /* 無効 */
-                }
-            }
-        }
-    }
-
-  /* ビットベクタ check_flg[] の第0〜tblcntビットに立ったまま残っている
-     ものがあるか調べる。 */
-  for (i = 0; i < tbl_cnt / BITSIZ; i++)
-    {
-      if (check_flg[i])
-        return (-1);
-    }
-  if ((tbl_cnt %= BITSIZ) && (check_flg[i] & ~(~0 << tbl_cnt)))
-    return (-1);
-  /* return -1 … まだ未決定の物がある */
+	int dist, base;
+	char *code_p;
+	int i;
+
+	for (base = 0; inbuf[base] != -1; base++) {
+		for (dist = 0; dist < tbl_cnt; dist++) {
+			if (BITONP (check_flg, dist) && conv_tbl[dist].fromkey != 0) {
+				code_p = conv_tbl[dist].fromkey + base;
+
+				if (*code_p == (char) inbuf[base]) {
+					if (*(code_p + 1) == (char) 0) {
+						/* マッチした */
+						for (i = 0, base++; (inbuf[i] = inbuf[base]) != -1; i++, base++);
+						return (conv_tbl[dist].tokey);
+					}
+					/* まだマッチしていない */
+				} else {
+					/* 無効 */
+					BITDWN (check_flg, dist);
+				}
+			}
+		}
+	}
+
+	/* ビットベクタ check_flg[] の第0〜tblcntビットに立ったまま残っている
+	   ものがあるか調べる。 */
+
+	for (i = 0; i < tbl_cnt / BITSIZ; i++) {
+		if (check_flg[i])
+			return (-1);
+	}
+
+	if ((tbl_cnt %= BITSIZ) && (check_flg[i] & ~(~0 << tbl_cnt)))
+		return (-1);
+	/* return -1 … まだ未決定の物がある */
 
-  return (-2);                  /* 変換対象となる物はない */
+	/* 変換対象となる物はない */
+	return (-2);
 }
 
- /** 指定された変換テーブルに従ってコード変換する。*/
+/** 指定された変換テーブルに従ってコード変換する。*/
 int
-convert_key (inkey, conv_tbl, tbl_cnt, matching_flg, in_buf)
-     int (*inkey) ();           /* キー入力関数 */
-     struct CONVCODE conv_tbl[];        /* 変換テーブル */
-     int tbl_cnt;               /* conv_tbl[] の個数 */
-     int matching_flg;          /* マッチングしなかったストリングの処理指定
-                                   0 : 返値として返す
-                                   1 : そのストリングは捨てる   */
-     char *in_buf;
+convert_key (int (*inkey)(),		/* キー入力関数 */
+	     struct CONVCODE conv_tbl[],	/* 変換テーブル */
+	     int tbl_cnt,		/* conv_tbl[] の個数 */
+	     int matching_flg,       /* マッチングしなかったストリングの処理指定
+					0 : 返値として返す
+					1 : そのストリングは捨てる   */
+	     char *in_buf)
 {
 #define MAX     20              /* キー入力バッファの最大値 */
 
-  static int inbuf[MAX];        /* キー入力バッファ */
-  /* バッファの終端は、-1 で示される。 */
-
-  int out_cnt;                  /* 出力バッファの出力カウント */
-
-  static int buf_cnt = 0;       /* inbuf の入力時のカウンタ   */
-
-  int check_flg[CHANGE_MAX];
-  /* ビットベクタとして扱われ、マッチング時に対象となっているconv_tbl[]
-     を示す。1の時対象となり、0で非対象 */
-
-  int i, c, flg = 0;            /* work */
-
-  for (i = 0; i < div_up (tbl_cnt, BITSIZ); check_flg[i++] = ~0);
-  /* 配列check_flgをビットベクタ扱いし、その第0〜tbl_cnt ビットを立てる。
-     但し、実際はその少し先まで立つ */
-
-  for (;;)
-    {
-      if (flg != 0 || buf_cnt == 0)
-        {
-          inbuf[buf_cnt] = (*inkey) (); /* 一文字入力 */
-          in_buf[buf_cnt] = (char) (inbuf[buf_cnt] & 0xff);
-          if (inbuf[buf_cnt] == -1)
-            {
-              if (buf_cnt > 0)
-                {
-                  c = -2;       /* タイムアウト */
-                  goto LABEL;
-                }
-              else
-                {
-                  continue;
-                }
-            }
-          else
-            {
-              inbuf[++buf_cnt] = -1;    /* ターミネータ */
-            }
-        }
-      flg++;
-
-      if (buf_cnt >= MAX - 1)
-        {
-          in_buf[0] = '\0';
-          return (-1);          /* ERROR */
-        }
-
-      c = key_check (inbuf, conv_tbl, tbl_cnt, check_flg);
-    LABEL:
-      switch (c)
-        {
-        case -1:                /* 未決定 */
-          continue;
-
-        case -2:                /* 変換対象でないことが決定した */
-          buf_cnt--;
-          out_cnt = 0;
-          c = inbuf[out_cnt++];
-          for (i = 0; inbuf[i] != -1; inbuf[i++] = inbuf[out_cnt++]);
-          if (matching_flg != 0)
-            {
-              flg = 0;
-              continue;
-            }
-          in_buf[0] = '\0';
-          return (c);
-
-        default:                /* 変換されたコード */
-          in_buf[buf_cnt] = '\0';
-          buf_cnt = 0;
-          return (c);
-        }
-    }
+        /* キー入力バッファ */
+	/* バッファの終端は、-1 で示される。 */
+	static int inbuf[MAX];
+
+	/* 出力バッファの出力カウント */
+	int out_cnt;
+	
+	/* inbuf の入力時のカウンタ   */
+	static int buf_cnt = 0;
+
+
+	/* ビットベクタとして扱われ、マッチング時に対象となっているconv_tbl[]
+	   を示す。1の時対象となり、0で非対象 */
+	int check_flg[CHANGE_MAX];
+
+	/* work */
+	int i, c, flg = 0;
+
+	for (i = 0; i < div_up (tbl_cnt, BITSIZ); check_flg[i++] = ~0);
+	/* 配列check_flgをビットベクタ扱いし、その第0〜tbl_cnt ビットを立てる。
+	   但し、実際はその少し先まで立つ */
+
+	for (;;) {
+		if (flg != 0 || buf_cnt == 0) {
+			inbuf[buf_cnt] = (*inkey) (); /* 一文字入力 */
+			in_buf[buf_cnt] = (char) (inbuf[buf_cnt] & 0xff);
+			if (inbuf[buf_cnt] == -1) {
+				if (buf_cnt > 0) {
+					c = -2;
+					/* タイムアウト */
+					goto LABEL;
+				} else {
+					continue;
+				}
+			} else {
+				/* ターミネータ */
+				inbuf[++buf_cnt] = -1;
+			}
+		}
+		flg++;
+
+		if (buf_cnt >= MAX - 1) {
+			in_buf[0] = '\0';
+
+			/* ERROR */
+			return (-1);
+		}
+
+		c = key_check (inbuf, conv_tbl, tbl_cnt, check_flg);
+
+	LABEL:
+		switch (c) {
+		case -1:
+			/* 未決定 */
+			continue;
+
+		case -2:
+			/* 変換対象でないことが決定した */
+			buf_cnt--;
+			out_cnt = 0;
+			c = inbuf[out_cnt++];
+			for (i = 0; inbuf[i] != -1; inbuf[i++] = inbuf[out_cnt++]);
+
+			if (matching_flg != 0) {
+				flg = 0;
+				continue;
+			}
+
+			in_buf[0] = '\0';
+			return (c);
+
+		default:
+			/* 変換されたコード */
+			in_buf[buf_cnt] = '\0';
+			buf_cnt = 0;
+			return (c);
+		}
+	}
 }
 
  /** コード変換を伴うキー入力関数 */
 int
-keyin1 (get_ch, in_buf)
-     int (*get_ch) ();          /* getchar() と同様の関数 */
-     char *in_buf;
+keyin1(int (*get_ch)(),          /* getchar() と同様の関数 */
+       char *in_buf)
 {
-  int ret;
+	int ret;
 
-  for (;;)
-    {
-      if (cnv_tbl_cnt == 0)
-        {
-          ret = (*get_ch) ();
-          if (ret >= 0)
-            return (ret);
-        }
-      else
-        {
-          return (convert_key (get_ch, tbl, cnv_tbl_cnt, 0, in_buf));
-        }
-    }
+	for (;;) {
+		if (cnv_tbl_cnt == 0) {
+			ret = (*get_ch)();
+			if (ret >= 0)
+				return (ret);
+		} else {
+			return (convert_key(get_ch, tbl, cnv_tbl_cnt, 0, in_buf));
+		}
+	}
 }