[前][次][番号順一覧][スレッド一覧]

ruby-changes:7569

From: akr <ko1@a...>
Date: Wed, 3 Sep 2008 21:09:23 +0900 (JST)
Subject: [ruby-changes:7569] Ruby:r19090 (trunk): * transcode.c (BL_MIN_BYTE): defined.

akr	2008-09-03 21:08:27 +0900 (Wed, 03 Sep 2008)

  New Revision: 19090

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=19090

  Log:
    * transcode.c (BL_MIN_BYTE): defined.
      (BL_MAX_BYTE): defined.
      (BL_OFFSET): defined.
      (BL_ACTION): defined.
      (transcode_restartable0): use BL_MIN_BYTE, BL_MAX_BYTE and
      BL_ACTION.

  Modified files:
    trunk/ChangeLog
    trunk/transcode.c

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 19089)
+++ ChangeLog	(revision 19090)
@@ -1,3 +1,12 @@
+Wed Sep  3 21:07:30 2008  Tanaka Akira  <akr@f...>
+
+	* transcode.c (BL_MIN_BYTE): defined.
+	  (BL_MAX_BYTE): defined.
+	  (BL_OFFSET): defined.
+	  (BL_ACTION): defined.
+	  (transcode_restartable0): use BL_MIN_BYTE, BL_MAX_BYTE and
+	  BL_ACTION.
+
 Wed Sep  3 20:58:30 2008  Tanaka Akira  <akr@f...>
 
 	* transcode.c (BYTE_ADDR): defined.
Index: transcode.c
===================================================================
--- transcode.c	(revision 19089)
+++ transcode.c	(revision 19090)
@@ -493,16 +493,19 @@
 
 #define BYTE_ADDR(index) (tr->byte_array + (index))
 #define WORD_ADDR(index) (tr->word_array + (index)/sizeof(*tr->word_array))
-#define BL_BASE(next_table) BYTE_ADDR(BYTE_LOOKUP_BASE(WORD_ADDR(next_table)))
-#define BL_INFO(next_table) WORD_ADDR(BYTE_LOOKUP_INFO(WORD_ADDR(next_table)))
+#define BL_BASE(bl) BYTE_ADDR(BYTE_LOOKUP_BASE(WORD_ADDR(bl)))
+#define BL_INFO(bl) WORD_ADDR(BYTE_LOOKUP_INFO(WORD_ADDR(bl)))
+#define BL_MIN_BYTE(bl) (BYTE_ADDR(BYTE_LOOKUP_BASE(WORD_ADDR(bl)))[0])
+#define BL_MAX_BYTE(bl) (BYTE_ADDR(BYTE_LOOKUP_BASE(WORD_ADDR(bl)))[1])
+#define BL_OFFSET(bl, byte) (BL_BASE(bl)[2+(byte)-BL_MIN_BYTE(bl)])
+#define BL_ACTION(bl, byte) (BL_INFO(bl)[BL_OFFSET(bl, (byte))])
 
 	next_byte = (unsigned char)*in_p++;
       follow_byte:
-        if (next_byte < BL_BASE(next_table)[0] || BL_BASE(next_table)[1] < next_byte)
+        if (next_byte < BL_MIN_BYTE(next_table) || BL_MAX_BYTE(next_table) < next_byte)
             next_info = INVALID;
         else {
-            unsigned int next_offset = BL_BASE(next_table)[2+next_byte-BL_BASE(next_table)[0]];
-            next_info = (VALUE)BL_INFO(next_table)[next_offset];
+            next_info = (VALUE)BL_ACTION(next_table, next_byte);
         }
       follow_info:
 	switch (next_info & 0x1F) {

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]