summaryrefslogtreecommitdiff
path: root/tool/transcode-tblgen.rb
diff options
context:
space:
mode:
authorduerst <duerst@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2012-04-06 07:23:40 +0000
committerduerst <duerst@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2012-04-06 07:23:40 +0000
commit611159923088a098ee5903e7fb356ec7f12debd1 ()
treee90d79747a2f10da2ddab61288b697228e108079 /tool/transcode-tblgen.rb
parent529827d711b1a5ed06bea18af8770d13d4f44e0e (diff)
struct.c (documentation for rb_struct_members_m):
fix 'array of strings' to 'array of symbols' [ruby-core:44152][Bug #6264] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35244 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rwxr-xr-xtool/transcode-tblgen.rb488
1 files changed, 462 insertions, 26 deletions
@@ -1,3 +1,4 @@
require 'optparse'
require 'erb'
require 'fileutils'
@@ -553,37 +554,48 @@ class ActionMap
min = max = 0
end
- offsets_key = [min, max, offsets[min..max]]
- if n = OffsetsMemo[offsets_key]
- offsets_name = n
- else
- offsets_name = "#{name}_offsets"
- OffsetsMemo[offsets_key] = offsets_name
- size = bytes_code.length
- bytes_code.insert_at_last(2+max-min+1,
- "\#define #{offsets_name} #{size}\n" +
- format_offsets(min,max,offsets) + "\n")
- end
- if n = InfosMemo[infos]
- infos_name = n
- else
- infos_name = "#{name}_infos"
- InfosMemo[infos] = infos_name
- size = words_code.length
- words_code.insert_at_last(infos.length,
- "\#define #{infos_name} WORDINDEX2INFO(#{size})\n" +
- format_infos(infos) + "\n")
- end
- size = words_code.length
- words_code.insert_at_last(NUM_ELEM_BYTELOOKUP,
- "\#define #{name} WORDINDEX2INFO(#{size})\n" +
- <<"End" + "\n")
#{offsets_name},
#{infos_name},
End
end
PreMemo = {}
@@ -864,7 +876,428 @@ def transcode_generate_node(am, name_hint=nil)
''
end
def transcode_generated_code
TRANSCODE_GENERATED_BYTES_CODE.to_s +
TRANSCODE_GENERATED_WORDS_CODE.to_s +
"\#define TRANSCODE_TABLE_INFO " +
@@ -988,6 +1421,9 @@ if __FILE__ == $0
TRANSCODE_GENERATED_BYTES_CODE = ArrayCode.new("unsigned char", "#{OUTPUT_PREFIX}byte_array")
TRANSCODE_GENERATED_WORDS_CODE = ArrayCode.new("unsigned int", "#{OUTPUT_PREFIX}word_array")
arg = ARGV.shift
$srcdir = File.dirname(arg)
$:.unshift $srcdir unless $:.include? $srcdir
@@ -1059,6 +1495,6 @@ if __FILE__ == $0
elapsed = Time.now - start_time
STDERR.puts "done. (#{'%.2f' % tms.utime}user #{'%.2f' % tms.stime}system #{'%.2f' % elapsed}elapsed)" if VERBOSE_MODE
else
- print result
end
end