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