summaryrefslogtreecommitdiff
path: root/encoding.c
diff options
context:
space:
mode:
authornaruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2009-08-04 00:50:59 +0000
committernaruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2009-08-04 00:50:59 +0000
commitb3d7273dc1f7e29a759de8dd88cd00f99a66bed1 (patch)
treedc22ba0d8d5d8f40e161cbb68f297bc6a50427a3 /encoding.c
parente00b83ceb91048da8549399c11618345ce32d9cc (diff)
Add functions and macros for second encoding definitions.
* encoding.c (rb_enc_set_base): Add for setting base encoding with their names. this is internal function. * template/encdb.h.tmpl: specify ENC_SET_BASE for second encodings in each encoding files. * enc/encdb.c (rb_enc_set_base): add a declaration. (ENC_SET_BASE): ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24383 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'encoding.c')
-rw-r--r--encoding.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/encoding.c b/encoding.c
index 5e54ce7218..49326b6625 100644
--- a/encoding.c
+++ b/encoding.c
@@ -275,6 +275,18 @@ set_base_encoding(int index, rb_encoding *base)
return enc;
}
+/* for encdb.h
+ * Set base encoding for encodings which are not replicas
+ * but not in their own files.
+ */
+void
+rb_enc_set_base(const char *name, const char *orig)
+{
+ int idx = rb_enc_registered(name);
+ int origidx = rb_enc_registered(orig);
+ set_base_encoding(idx, rb_enc_from_index(origidx));
+}
+
int
rb_enc_replicate(const char *name, rb_encoding *encoding)
{