[前][次][番号順一覧][スレッド一覧]

ruby-changes:12668

From: naruse <ko1@a...>
Date: Tue, 4 Aug 2009 09:51:57 +0900 (JST)
Subject: [ruby-changes:12668] Ruby:r24383 (trunk): Add functions and macros for second encoding definitions.

naruse	2009-08-04 09:50:59 +0900 (Tue, 04 Aug 2009)

  New Revision: 24383

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=24383

  Log:
    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.

  Modified files:
    trunk/ChangeLog
    trunk/enc/encdb.c
    trunk/encoding.c
    trunk/template/encdb.h.tmpl

Index: encoding.c
===================================================================
--- encoding.c	(revision 24382)
+++ encoding.c	(revision 24383)
@@ -275,6 +275,18 @@
     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)
 {
Index: ChangeLog
===================================================================
--- ChangeLog	(revision 24382)
+++ ChangeLog	(revision 24383)
@@ -1,3 +1,14 @@
+Tue Aug  4 09:33:54 2009  NARUSE, Yui  <naruse@r...>
+
+	* 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.
+
 Tue Aug  4 06:30:01 2009  Yukihiro Matsumoto  <matz@r...>
 
 	* hash.c (rb_hash_replace): should copy compare_by_identity status as well.
Index: enc/encdb.c
===================================================================
--- enc/encdb.c	(revision 24382)
+++ enc/encdb.c	(revision 24383)
@@ -13,10 +13,12 @@
 int rb_encdb_alias(const char *alias, const char *orig);
 int rb_encdb_dummy(const char *name);
 void rb_encdb_declare(const char *name);
+void rb_enc_set_base(const char *name, const char *orig);
 #define ENC_REPLICATE(name, orig) rb_encdb_replicate(name, orig)
 #define ENC_ALIAS(name, orig) rb_encdb_alias(name, orig)
 #define ENC_DUMMY(name) rb_encdb_dummy(name)
 #define ENC_DEFINE(name) rb_encdb_declare(name)
+#define ENC_SET_BASE(name) rb_enc_set_base(name)
 
 void
 Init_encdb(void)
Index: template/encdb.h.tmpl
===================================================================
--- template/encdb.h.tmpl	(revision 24382)
+++ template/encdb.h.tmpl	(revision 24383)
@@ -34,11 +34,15 @@
     next if files[fn]
     files[fn] = true
     open(File.join(encdir,fn)) do |f|
-      orig = nil
       name = nil
       f.each_line do |line|
         if (/^OnigEncodingDefine/ =~ line)..(/"(.*?)"/ =~ line)
           if $1
+            if name
+              lines << %[ENC_SET_BASE("#$1", "#{name}");]
+            else
+              name = $1
+            end
             check_duplication(defs, $1, fn, $.)
             encodings << $1
             count += 1

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]