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

ruby-changes:7511

From: akr <ko1@a...>
Date: Mon, 1 Sep 2008 22:21:33 +0900 (JST)
Subject: [ruby-changes:7511] Ruby:r19032 (trunk): * tool/transcode-tblgen.rb: make offsets arrays into single array.

akr	2008-09-01 22:21:06 +0900 (Mon, 01 Sep 2008)

  New Revision: 19032

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

  Log:
    * tool/transcode-tblgen.rb: make offsets arrays into single array.

  Modified files:
    trunk/ChangeLog
    trunk/tool/transcode-tblgen.rb

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 19031)
+++ ChangeLog	(revision 19032)
@@ -1,3 +1,7 @@
+Mon Sep  1 22:20:22 2008  Tanaka Akira  <akr@f...>
+
+	* tool/transcode-tblgen.rb: make offsets arrays into single array.
+
 Mon Sep  1 21:46:18 2008  Tanaka Akira  <akr@f...>
 
 	* tool/transcode-tblgen.rb: gather offsets array at top.
Index: tool/transcode-tblgen.rb
===================================================================
--- tool/transcode-tblgen.rb	(revision 19031)
+++ tool/transcode-tblgen.rb	(revision 19032)
@@ -236,7 +236,7 @@
 
   def format_offsets(min, max, offsets)
     offsets = offsets[min..max]
-    code = "{ %d, %d,\n" % [min, max]
+    code = "%d, %d,\n" % [min, max]
     0.step(offsets.length-1,16) {|i|
       code << "    "
       code << offsets[i,8].map {|off| "%3d," % off.to_s }.join('')
@@ -246,7 +246,6 @@
       end
       code << "\n"
     }
-    code << '}'
     code
   end
 
@@ -322,15 +321,24 @@
     offsets_key = [min, max, offsets[min..max]]
     if n = OffsetsMemo[offsets_key]
       offsets_name = n
-      offsets_code = ''
     else
       offsets_name = "#{name}_offsets"
-      offsets_code = <<"End"
+      OffsetsMemo[offsets_key] = offsets_name
+      if bytes_code.empty?
+        bytes_code << <<"End"
 static const unsigned char
-#{offsets_name}[#{2+max-min+1}] = #{format_offsets(min,max,offsets)};
+byte_array[0] = {
+};
 End
-      OffsetsMemo[offsets_key] = offsets_name
-      bytes_code << offsets_code
+      end
+      size = bytes_code[/\[\d+\]/][1...-1].to_i
+      bytes_code.sub!(/^(\};\n\z)/) {
+        "\#define #{offsets_name} (byte_array+#{size})\n" +
+        format_offsets(min,max,offsets) + "\n" +
+        $1
+      }
+      size += 2+max-min+1
+      bytes_code.sub!(/\[\d+\]/) { "[#{size}]" }
     end
 
     if n = InfosMemo[infos]

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

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