summaryrefslogtreecommitdiff
path: root/template/encdb.h.tmpl
diff options
context:
space:
mode:
authornaruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2013-07-01 14:12:10 +0000
committernaruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2013-07-01 14:12:10 +0000
commit5308b0fd5e9b0da96a018dea2ae43c64de7dabc7 (patch)
tree5a4dba9a8260badf4fe6304ae69187bc7a9816e2 /template/encdb.h.tmpl
parentdf1192edf575c50281ffba3ae1b9bac89c774cf7 (diff)
* 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
Diffstat (limited to 'template/encdb.h.tmpl')
-rw-r--r--template/encdb.h.tmpl18
1 files changed, 15 insertions, 3 deletions
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%>