aboutsummaryrefslogtreecommitdiffstats
path: root/template
diff options
context:
space:
mode:
Diffstat (limited to 'template')
-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%>