From 5308b0fd5e9b0da96a018dea2ae43c64de7dabc7 Mon Sep 17 00:00:00 2001 From: naruse Date: Mon, 1 Jul 2013 14:12:10 +0000 Subject: * template/encdb.h.tmpl: define encoding index macros to use the index statically from C source. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41727 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- template/encdb.h.tmpl | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) (limited to 'template/encdb.h.tmpl') diff --git a/template/encdb.h.tmpl b/template/encdb.h.tmpl index 308227e9e9..a53562f680 100644 --- a/template/encdb.h.tmpl +++ b/template/encdb.h.tmpl @@ -19,9 +19,14 @@ def check_duplication(defs, name, fn, line) end end -count = 0 lines = [] -encodings = [] +BUILTIN_ENCODINGS = { + 'ASCII-8BIT' => 0, + 'UTF-8' => 1, + 'US-ASCII' => 2, +} +encodings = %w[ASCII-8BIT UTF-8 US-ASCII] # BUILTIN_ENCODINGS.keys is not available on cross compiling and used ruby 1.8 +count = encodings.size defs = {} encdirs = ARGV.dup encdirs << 'enc' if encdirs.empty? @@ -44,6 +49,7 @@ encdirs.each do |encdir| name = $1 end check_duplication(defs, $1, fn, $.) + next if BUILTIN_ENCODINGS[name] encodings << $1 count += 1 end @@ -52,6 +58,7 @@ encdirs.each do |encdir| when /^\s*rb_enc_register\(\s*"([^"]+)"/ count += 1 line = nil + encodings << $1 when /^ENC_REPLICATE\(\s*"([^"]+)"\s*,\s*"([^"]+)"/ raise ArgumentError, '%s:%d: ENC_REPLICATE: %s is not defined yet. (replica %s)' % @@ -73,11 +80,16 @@ encdirs.each do |encdir| end end end -encodings.each do |e| +encodings.each_with_index do |e, i| %>ENC_DEFINE("<%=e%>"); +#define ENCIDX_<%=e.tr('-', '_')%> <%=i%> % end +% encidx = encodings.size - 1 % lines.each do |line| <%=line%> +% if /^ENC_(?:DUMMY(?:_UNICODE)?|REPLICATE)\(\s*"([^"]+)/ =~ line +#define ENCIDX_<%=$1.tr('-', '_')%> <%=encidx+=1%> +% end % end #define ENCODING_COUNT <%=count%> -- cgit v1.2.3