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

ruby-changes:7510

From: akr <ko1@a...>
Date: Mon, 1 Sep 2008 21:56:59 +0900 (JST)
Subject: [ruby-changes:7510] Ruby:r19031 (trunk): * tool/transcode-tblgen.rb: gather offsets array at top.

akr	2008-09-01 21:52:58 +0900 (Mon, 01 Sep 2008)

  New Revision: 19031

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

  Log:
    * tool/transcode-tblgen.rb: gather offsets array at top.

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

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 19030)
+++ ChangeLog	(revision 19031)
@@ -1,3 +1,7 @@
+Mon Sep  1 21:46:18 2008  Tanaka Akira  <akr@f...>
+
+	* tool/transcode-tblgen.rb: gather offsets array at top.
+
 Mon Sep  1 21:09:04 2008  Yuki Sonoda (Yugui)  <yugui@y...>
 
 	* ./: removed rubyspec from svn:ignore subversion property.
Index: tool/transcode-tblgen.rb
===================================================================
--- tool/transcode-tblgen.rb	(revision 19030)
+++ tool/transcode-tblgen.rb	(revision 19031)
@@ -298,7 +298,7 @@
     code
   end
 
-  def generate_lookup_node(name, table)
+  def generate_lookup_node(bytes_code, code, name, table)
     offsets = []
     infos = []
     infomap = {}
@@ -330,6 +330,7 @@
 #{offsets_name}[#{2+max-min+1}] = #{format_offsets(min,max,offsets)};
 End
       OffsetsMemo[offsets_key] = offsets_name
+      bytes_code << offsets_code
     end
 
     if n = InfosMemo[infos]
@@ -344,7 +345,7 @@
       InfosMemo[infos] = infos_name
     end
 
-    r = offsets_code + infos_code + <<"End"
+    r = infos_code + <<"End"
 static const BYTE_LOOKUP
 #{name} = {
     #{offsets_name},
@@ -352,14 +353,14 @@
 };
 
 End
-    r
+    code << r
   end
 
   PreMemo = {}
   PostMemo = {}
   NextName = "a"
 
-  def generate_node(code, name_hint=nil, valid_encoding=nil)
+  def generate_node(bytes_code, code, name_hint=nil, valid_encoding=nil)
     if n = PreMemo[[self,valid_encoding]]
       return n
     end
@@ -371,7 +372,7 @@
       else
         name_hint2 = nil
         name_hint2 = "#{name_hint}_#{'%02X' % byte}" if name_hint
-        table[byte] = "&" + rest.generate_node(code, name_hint2, rest_valid_encoding)
+        table[byte] = "&" + rest.generate_node(bytes_code, code, name_hint2, rest_valid_encoding)
       end
     }
 
@@ -386,13 +387,13 @@
 
     PreMemo[[self,valid_encoding]] = PostMemo[table] = name_hint
 
-    code << generate_lookup_node(name_hint, table)
+    generate_lookup_node(bytes_code, code, name_hint, table)
     name_hint
   end
 
-  def gennode(name_hint=nil, valid_encoding=nil)
+  def gennode(bytes_code, name_hint=nil, valid_encoding=nil)
     code = ''
-    name = generate_node(code, name_hint, valid_encoding)
+    name = generate_node(bytes_code, code, name_hint, valid_encoding)
     return name, code
   end
 end
@@ -535,11 +536,12 @@
     valid_encoding = nil
   end
 
-  defined_name, code = am.gennode(name, valid_encoding)
+  defined_name, code = am.gennode(TRANSCODE_GENERATED_BYTES_CODE, name, valid_encoding)
   return defined_name, code, max_input
 end
 
 TRANSCODERS = []
+TRANSCODE_GENERATED_BYTES_CODE = ''
 TRANSCODE_GENERATED_CODE = ''
 
 def transcode_tblgen(from, to, map)
@@ -577,13 +579,13 @@
 
 def transcode_generate_node(am, name_hint=nil)
   STDERR.puts "converter for #{name_hint}" if VERBOSE_MODE
-  name, code = am.gennode(name_hint)
+  name, code = am.gennode(TRANSCODE_GENERATED_BYTES_CODE, name_hint)
   TRANSCODE_GENERATED_CODE << code
   ''
 end
 
 def transcode_generated_code
-  TRANSCODE_GENERATED_CODE
+  TRANSCODE_GENERATED_BYTES_CODE + TRANSCODE_GENERATED_CODE
 end
 
 def transcode_register_code

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

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