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

ruby-changes:3438

From: ko1@a...
Date: 7 Jan 2008 16:48:37 +0900
Subject: [ruby-changes:3438] akr - Ruby:r14931 (trunk): * include/ruby/oniguruma.h (OnigEncodingType): new member

akr	2008-01-07 16:48:24 +0900 (Mon, 07 Jan 2008)

  New Revision: 14931

  Modified files:
    trunk/ChangeLog
    trunk/encoding.c
    trunk/include/ruby/encoding.h
    trunk/include/ruby/oniguruma.h

  Log:
    * include/ruby/oniguruma.h (OnigEncodingType): new member
      ruby_encoding_index to avoid linear search in rb_enc_to_index.
    
    * include/ruby/encoding.h (rb_enc_to_index): macro defined to use
      ruby_encoding_index.
    
    * encoding.c (rb_enc_to_index): removed.
      (enc_register_at): initialize ruby_encoding_index member.


  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/include/ruby/oniguruma.h?r1=14931&r2=14930&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ChangeLog?r1=14931&r2=14930&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/include/ruby/encoding.h?r1=14931&r2=14930&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/encoding.c?r1=14931&r2=14930&diff_format=u

Index: encoding.c
===================================================================
--- encoding.c	(revision 14930)
+++ encoding.c	(revision 14931)
@@ -67,7 +67,7 @@
 	RDATA(obj)->dmark != enc_mark) {
 	return -1;
     }
-    index = rb_enc_to_index(RDATA(obj)->data);
+    index = rb_enc_to_index((rb_encoding*)RDATA(obj)->data);
     if (rb_enc_from_index(index) != RDATA(obj)->data)
 	return -1;
     return index;
@@ -141,6 +141,7 @@
     *ent->enc = *encoding;
     encoding = ent->enc;
     encoding->name = name;
+    encoding->ruby_encoding_index = index;
     if (rb_cEncoding) {
 	/* initialize encoding data */
 	enc_new(encoding);
@@ -474,20 +475,6 @@
     rb_enc_internal_set_index(obj, idx);
 }
 
-int
-rb_enc_to_index(rb_encoding *enc)
-{
-    int i;
-
-    if (!enc) return 0;
-    for (i=0; i<enc_table_size; i++) {
-	if (enc_table[i].enc == enc) {
-	    return i;
-	}
-    }
-    return 0;
-}
-
 void
 rb_enc_associate(VALUE obj, rb_encoding *enc)
 {
Index: include/ruby/encoding.h
===================================================================
--- include/ruby/encoding.h	(revision 14930)
+++ include/ruby/encoding.h	(revision 14931)
@@ -67,7 +67,7 @@
 int rb_enc_replicate(const char *, rb_encoding *);
 int rb_define_dummy_encoding(const char *);
 int rb_enc_dummy_p(rb_encoding *);
-int rb_enc_to_index(rb_encoding*);
+#define rb_enc_to_index(enc) ((enc) ? ((enc)->ruby_encoding_index) : 0)
 int rb_enc_get_index(VALUE obj);
 int rb_enc_find_index(const char *name);
 int rb_to_encoding_index(VALUE);
Index: include/ruby/oniguruma.h
===================================================================
--- include/ruby/oniguruma.h	(revision 14930)
+++ include/ruby/oniguruma.h	(revision 14931)
@@ -167,6 +167,7 @@
   OnigUChar* (*left_adjust_char_head)(const OnigUChar* start, const OnigUChar* p, struct OnigEncodingTypeST* enc);
   int    (*is_allowed_reverse_match)(const OnigUChar* p, const OnigUChar* end, struct OnigEncodingTypeST* enc);
   void *auxiliary_data;
+  int ruby_encoding_index;
 } OnigEncodingType;
 
 typedef OnigEncodingType* OnigEncoding;
Index: ChangeLog
===================================================================
--- ChangeLog	(revision 14930)
+++ ChangeLog	(revision 14931)
@@ -1,3 +1,14 @@
+Mon Jan  7 15:52:10 2008  Tanaka Akira  <akr@f...>
+
+	* include/ruby/oniguruma.h (OnigEncodingType): new member
+	  ruby_encoding_index to avoid linear search in rb_enc_to_index.
+
+	* include/ruby/encoding.h (rb_enc_to_index): macro defined to use
+	  ruby_encoding_index.
+
+	* encoding.c (rb_enc_to_index): removed.
+	  (enc_register_at): initialize ruby_encoding_index member.
+
 Mon Jan  7 16:10:35 2008  Eric Hodel  <drbrain@s...>
 
 	* lib/rdoc/tokenstream.rb:  Namespace under RDoc.

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

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