* enc/unicode.c (CodeRanges): initialized statically.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24582 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
nobu 2009-08-19 02:32:49 +00:00
parent 43d0c7263b
commit e1c9ac6bd9
2 changed files with 136 additions and 162 deletions

View File

@ -1,3 +1,7 @@
Wed Aug 19 11:32:43 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
* enc/unicode.c (CodeRanges): initialized statically.
Wed Aug 19 02:54:01 2009 Yusuke Endoh <mame@tsg.ne.jp> Wed Aug 19 02:54:01 2009 Yusuke Endoh <mame@tsg.ne.jp>
* test/ruby/test_settracefunc.rb (test_return, test_return2): add two * test/ruby/test_settracefunc.rb (test_return, test_return2): add two

View File

@ -10609,140 +10609,129 @@ static PosixBracketEntryType HashEntryData[] = {
{ (UChar* )NULL, -1, 0 } { (UChar* )NULL, -1, 0 }
}; };
#ifdef USE_UNICODE_PROPERTIES #define numberof(array) (int)(sizeof(array) / sizeof((array)[0]))
#define CODE_RANGES_NUM 115 #define CODE_RANGES_NUM numberof(CodeRanges)
#else
#define CODE_RANGES_NUM 15
#endif
static const OnigCodePoint* CodeRanges[CODE_RANGES_NUM]; static const OnigCodePoint* const CodeRanges[] = {
static int CodeRangeTableInited = 0; CR_NEWLINE,
CR_Alpha,
static void init_code_range_array(void) { CR_Blank,
THREAD_ATOMIC_START; CR_Cntrl,
CR_Digit,
CodeRanges[0] = CR_NEWLINE; CR_Graph,
CodeRanges[1] = CR_Alpha; CR_Lower,
CodeRanges[2] = CR_Blank; CR_Print,
CodeRanges[3] = CR_Cntrl; CR_Punct,
CodeRanges[4] = CR_Digit; CR_Space,
CodeRanges[5] = CR_Graph; CR_Upper,
CodeRanges[6] = CR_Lower; CR_XDigit,
CodeRanges[7] = CR_Print; CR_Word,
CodeRanges[8] = CR_Punct; CR_Alnum,
CodeRanges[9] = CR_Space; CR_ASCII,
CodeRanges[10] = CR_Upper;
CodeRanges[11] = CR_XDigit;
CodeRanges[12] = CR_Word;
CodeRanges[13] = CR_Alnum;
CodeRanges[14] = CR_ASCII;
#ifdef USE_UNICODE_PROPERTIES #ifdef USE_UNICODE_PROPERTIES
CodeRanges[15] = CR_Any; CR_Any,
CodeRanges[16] = CR_Assigned; CR_Assigned,
CodeRanges[17] = CR_C; CR_C,
CodeRanges[18] = CR_Cc; CR_Cc,
CodeRanges[19] = CR_Cf; CR_Cf,
CodeRanges[20] = CR_Cn; CR_Cn,
CodeRanges[21] = CR_Co; CR_Co,
CodeRanges[22] = CR_Cs; CR_Cs,
CodeRanges[23] = CR_L; CR_L,
CodeRanges[24] = CR_Ll; CR_Ll,
CodeRanges[25] = CR_Lm; CR_Lm,
CodeRanges[26] = CR_Lo; CR_Lo,
CodeRanges[27] = CR_Lt; CR_Lt,
CodeRanges[28] = CR_Lu; CR_Lu,
CodeRanges[29] = CR_M; CR_M,
CodeRanges[30] = CR_Mc; CR_Mc,
CodeRanges[31] = CR_Me; CR_Me,
CodeRanges[32] = CR_Mn; CR_Mn,
CodeRanges[33] = CR_N; CR_N,
CodeRanges[34] = CR_Nd; CR_Nd,
CodeRanges[35] = CR_Nl; CR_Nl,
CodeRanges[36] = CR_No; CR_No,
CodeRanges[37] = CR_P; CR_P,
CodeRanges[38] = CR_Pc; CR_Pc,
CodeRanges[39] = CR_Pd; CR_Pd,
CodeRanges[40] = CR_Pe; CR_Pe,
CodeRanges[41] = CR_Pf; CR_Pf,
CodeRanges[42] = CR_Pi; CR_Pi,
CodeRanges[43] = CR_Po; CR_Po,
CodeRanges[44] = CR_Ps; CR_Ps,
CodeRanges[45] = CR_S; CR_S,
CodeRanges[46] = CR_Sc; CR_Sc,
CodeRanges[47] = CR_Sk; CR_Sk,
CodeRanges[48] = CR_Sm; CR_Sm,
CodeRanges[49] = CR_So; CR_So,
CodeRanges[50] = CR_Z; CR_Z,
CodeRanges[51] = CR_Zl; CR_Zl,
CodeRanges[52] = CR_Zp; CR_Zp,
CodeRanges[53] = CR_Zs; CR_Zs,
CodeRanges[54] = CR_Arabic; CR_Arabic,
CodeRanges[55] = CR_Armenian; CR_Armenian,
CodeRanges[56] = CR_Bengali; CR_Bengali,
CodeRanges[57] = CR_Bopomofo; CR_Bopomofo,
CodeRanges[58] = CR_Braille; CR_Braille,
CodeRanges[59] = CR_Buginese; CR_Buginese,
CodeRanges[60] = CR_Buhid; CR_Buhid,
CodeRanges[61] = CR_Canadian_Aboriginal; CR_Canadian_Aboriginal,
CodeRanges[62] = CR_Cherokee; CR_Cherokee,
CodeRanges[63] = CR_Common; CR_Common,
CodeRanges[64] = CR_Coptic; CR_Coptic,
CodeRanges[65] = CR_Cypriot; CR_Cypriot,
CodeRanges[66] = CR_Cyrillic; CR_Cyrillic,
CodeRanges[67] = CR_Deseret; CR_Deseret,
CodeRanges[68] = CR_Devanagari; CR_Devanagari,
CodeRanges[69] = CR_Ethiopic; CR_Ethiopic,
CodeRanges[70] = CR_Georgian; CR_Georgian,
CodeRanges[71] = CR_Glagolitic; CR_Glagolitic,
CodeRanges[72] = CR_Gothic; CR_Gothic,
CodeRanges[73] = CR_Greek; CR_Greek,
CodeRanges[74] = CR_Gujarati; CR_Gujarati,
CodeRanges[75] = CR_Gurmukhi; CR_Gurmukhi,
CodeRanges[76] = CR_Han; CR_Han,
CodeRanges[77] = CR_Hangul; CR_Hangul,
CodeRanges[78] = CR_Hanunoo; CR_Hanunoo,
CodeRanges[79] = CR_Hebrew; CR_Hebrew,
CodeRanges[80] = CR_Hiragana; CR_Hiragana,
CodeRanges[81] = CR_Inherited; CR_Inherited,
CodeRanges[82] = CR_Kannada; CR_Kannada,
CodeRanges[83] = CR_Katakana; CR_Katakana,
CodeRanges[84] = CR_Kharoshthi; CR_Kharoshthi,
CodeRanges[85] = CR_Khmer; CR_Khmer,
CodeRanges[86] = CR_Lao; CR_Lao,
CodeRanges[87] = CR_Latin; CR_Latin,
CodeRanges[88] = CR_Limbu; CR_Limbu,
CodeRanges[89] = CR_Linear_B; CR_Linear_B,
CodeRanges[90] = CR_Malayalam; CR_Malayalam,
CodeRanges[91] = CR_Mongolian; CR_Mongolian,
CodeRanges[92] = CR_Myanmar; CR_Myanmar,
CodeRanges[93] = CR_New_Tai_Lue; CR_New_Tai_Lue,
CodeRanges[94] = CR_Ogham; CR_Ogham,
CodeRanges[95] = CR_Old_Italic; CR_Old_Italic,
CodeRanges[96] = CR_Old_Persian; CR_Old_Persian,
CodeRanges[97] = CR_Oriya; CR_Oriya,
CodeRanges[98] = CR_Osmanya; CR_Osmanya,
CodeRanges[99] = CR_Runic; CR_Runic,
CodeRanges[100] = CR_Shavian; CR_Shavian,
CodeRanges[101] = CR_Sinhala; CR_Sinhala,
CodeRanges[102] = CR_Syloti_Nagri; CR_Syloti_Nagri,
CodeRanges[103] = CR_Syriac; CR_Syriac,
CodeRanges[104] = CR_Tagalog; CR_Tagalog,
CodeRanges[105] = CR_Tagbanwa; CR_Tagbanwa,
CodeRanges[106] = CR_Tai_Le; CR_Tai_Le,
CodeRanges[107] = CR_Tamil; CR_Tamil,
CodeRanges[108] = CR_Telugu; CR_Telugu,
CodeRanges[109] = CR_Thaana; CR_Thaana,
CodeRanges[110] = CR_Thai; CR_Thai,
CodeRanges[111] = CR_Tibetan; CR_Tibetan,
CodeRanges[112] = CR_Tifinagh; CR_Tifinagh,
CodeRanges[113] = CR_Ugaritic; CR_Ugaritic,
CodeRanges[114] = CR_Yi; CR_Yi,
#endif /* USE_UNICODE_PROPERTIES */ #endif /* USE_UNICODE_PROPERTIES */
};
CodeRangeTableInited = 1;
THREAD_ATOMIC_END;
}
extern int extern int
onigenc_unicode_is_code_ctype(OnigCodePoint code, unsigned int ctype, OnigEncoding enc ARG_UNUSED) onigenc_unicode_is_code_ctype(OnigCodePoint code, unsigned int ctype, OnigEncoding enc ARG_UNUSED)
@ -10759,8 +10748,6 @@ onigenc_unicode_is_code_ctype(OnigCodePoint code, unsigned int ctype, OnigEncodi
return ONIGERR_TYPE_BUG; return ONIGERR_TYPE_BUG;
} }
if (CodeRangeTableInited == 0) init_code_range_array();
return onig_is_in_code_range((UChar* )CodeRanges[ctype], code); return onig_is_in_code_range((UChar* )CodeRanges[ctype], code);
} }
@ -10772,8 +10759,6 @@ onigenc_unicode_ctype_code_range(int ctype, const OnigCodePoint* ranges[])
return ONIGERR_TYPE_BUG; return ONIGERR_TYPE_BUG;
} }
if (CodeRangeTableInited == 0) init_code_range_array();
*ranges = CodeRanges[ctype]; *ranges = CodeRanges[ctype];
return 0; return 0;
@ -10846,7 +10831,7 @@ onigenc_unicode_property_name_to_ctype(OnigEncoding enc, UChar* name, UChar* end
return ONIGERR_INVALID_CHAR_PROPERTY_NAME; return ONIGERR_INVALID_CHAR_PROPERTY_NAME;
} }
return ctype; return (int)ctype;
} }
@ -10905,12 +10890,11 @@ static int init_case_fold_table(void)
FoldTable = st_init_numtable_with_size(1200); FoldTable = st_init_numtable_with_size(1200);
if (ONIG_IS_NULL(FoldTable)) return ONIGERR_MEMORY; if (ONIG_IS_NULL(FoldTable)) return ONIGERR_MEMORY;
for (i = 0; i < (int )(sizeof(CaseFold)/sizeof(CaseFold_11_Type)); i++) { for (i = 0; i < numberof(CaseFold); i++) {
p = &CaseFold[i]; p = &CaseFold[i];
st_add_direct(FoldTable, (st_data_t )p->from, (st_data_t )&(p->to)); st_add_direct(FoldTable, (st_data_t )p->from, (st_data_t )&(p->to));
} }
for (i = 0; i < (int )(sizeof(CaseFold_Locale)/sizeof(CaseFold_11_Type)); for (i = 0; i < numberof(CaseFold_Locale); i++) {
i++) {
p = &CaseFold_Locale[i]; p = &CaseFold_Locale[i];
st_add_direct(FoldTable, (st_data_t )p->from, (st_data_t )&(p->to)); st_add_direct(FoldTable, (st_data_t )p->from, (st_data_t )&(p->to));
} }
@ -10918,14 +10902,11 @@ static int init_case_fold_table(void)
Unfold1Table = st_init_numtable_with_size(1000); Unfold1Table = st_init_numtable_with_size(1000);
if (ONIG_IS_NULL(Unfold1Table)) return ONIGERR_MEMORY; if (ONIG_IS_NULL(Unfold1Table)) return ONIGERR_MEMORY;
for (i = 0; i < (int )(sizeof(CaseUnfold_11)/sizeof(CaseUnfold_11_Type)); for (i = 0; i < numberof(CaseUnfold_11); i++) {
i++) {
p1 = &CaseUnfold_11[i]; p1 = &CaseUnfold_11[i];
st_add_direct(Unfold1Table, (st_data_t )p1->from, (st_data_t )&(p1->to)); st_add_direct(Unfold1Table, (st_data_t )p1->from, (st_data_t )&(p1->to));
} }
for (i = 0; for (i = 0; i < numberof(CaseUnfold_11_Locale); i++) {
i < (int )(sizeof(CaseUnfold_11_Locale)/sizeof(CaseUnfold_11_Type));
i++) {
p1 = &CaseUnfold_11_Locale[i]; p1 = &CaseUnfold_11_Locale[i];
st_add_direct(Unfold1Table, (st_data_t )p1->from, (st_data_t )&(p1->to)); st_add_direct(Unfold1Table, (st_data_t )p1->from, (st_data_t )&(p1->to));
} }
@ -10933,14 +10914,11 @@ static int init_case_fold_table(void)
Unfold2Table = st_init_table_with_size(&type_code2_hash, 200); Unfold2Table = st_init_table_with_size(&type_code2_hash, 200);
if (ONIG_IS_NULL(Unfold2Table)) return ONIGERR_MEMORY; if (ONIG_IS_NULL(Unfold2Table)) return ONIGERR_MEMORY;
for (i = 0; i < (int )(sizeof(CaseUnfold_12)/sizeof(CaseUnfold_12_Type)); for (i = 0; i < numberof(CaseUnfold_12); i++) {
i++) {
p2 = &CaseUnfold_12[i]; p2 = &CaseUnfold_12[i];
st_add_direct(Unfold2Table, (st_data_t )p2->from, (st_data_t )(&p2->to)); st_add_direct(Unfold2Table, (st_data_t )p2->from, (st_data_t )(&p2->to));
} }
for (i = 0; for (i = 0; i < numberof(CaseUnfold_12_Locale); i++) {
i < (int )(sizeof(CaseUnfold_12_Locale)/sizeof(CaseUnfold_12_Type));
i++) {
p2 = &CaseUnfold_12_Locale[i]; p2 = &CaseUnfold_12_Locale[i];
st_add_direct(Unfold2Table, (st_data_t )p2->from, (st_data_t )(&p2->to)); st_add_direct(Unfold2Table, (st_data_t )p2->from, (st_data_t )(&p2->to));
} }
@ -10948,8 +10926,7 @@ static int init_case_fold_table(void)
Unfold3Table = st_init_table_with_size(&type_code3_hash, 30); Unfold3Table = st_init_table_with_size(&type_code3_hash, 30);
if (ONIG_IS_NULL(Unfold3Table)) return ONIGERR_MEMORY; if (ONIG_IS_NULL(Unfold3Table)) return ONIGERR_MEMORY;
for (i = 0; i < (int )(sizeof(CaseUnfold_13)/sizeof(CaseUnfold_13_Type)); for (i = 0; i < numberof(CaseUnfold_13); i++) {
i++) {
p3 = &CaseUnfold_13[i]; p3 = &CaseUnfold_13[i];
st_add_direct(Unfold3Table, (st_data_t )p3->from, (st_data_t )(&p3->to)); st_add_direct(Unfold3Table, (st_data_t )p3->from, (st_data_t )(&p3->to));
} }
@ -11023,8 +11000,7 @@ onigenc_unicode_apply_all_case_fold(OnigCaseFoldType flag,
/* if (CaseFoldInited == 0) init_case_fold_table(); */ /* if (CaseFoldInited == 0) init_case_fold_table(); */
for (i = 0; i < (int )(sizeof(CaseUnfold_11)/sizeof(CaseUnfold_11_Type)); for (i = 0; i < numberof(CaseUnfold_11); i++) {
i++) {
p11 = &CaseUnfold_11[i]; p11 = &CaseUnfold_11[i];
for (j = 0; j < p11->to.n; j++) { for (j = 0; j < p11->to.n; j++) {
code = p11->from; code = p11->from;
@ -11063,9 +11039,7 @@ onigenc_unicode_apply_all_case_fold(OnigCaseFoldType flag,
} }
else { else {
#endif #endif
for (i = 0; for (i = 0; i < numberof(CaseUnfold_11_Locale); i++) {
i < (int )(sizeof(CaseUnfold_11_Locale)/sizeof(CaseUnfold_11_Type));
i++) {
p11 = &CaseUnfold_11_Locale[i]; p11 = &CaseUnfold_11_Locale[i];
for (j = 0; j < p11->to.n; j++) { for (j = 0; j < p11->to.n; j++) {
code = p11->from; code = p11->from;
@ -11092,8 +11066,7 @@ onigenc_unicode_apply_all_case_fold(OnigCaseFoldType flag,
#endif #endif
if ((flag & INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR) != 0) { if ((flag & INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR) != 0) {
for (i = 0; i < (int )(sizeof(CaseUnfold_12)/sizeof(CaseUnfold_12_Type)); for (i = 0; i < numberof(CaseUnfold_12); i++) {
i++) {
for (j = 0; j < CaseUnfold_12[i].to.n; j++) { for (j = 0; j < CaseUnfold_12[i].to.n; j++) {
r = (*f)(CaseUnfold_12[i].to.code[j], r = (*f)(CaseUnfold_12[i].to.code[j],
(OnigCodePoint* )CaseUnfold_12[i].from, 2, arg); (OnigCodePoint* )CaseUnfold_12[i].from, 2, arg);
@ -11112,9 +11085,7 @@ onigenc_unicode_apply_all_case_fold(OnigCaseFoldType flag,
#ifdef USE_UNICODE_CASE_FOLD_TURKISH_AZERI #ifdef USE_UNICODE_CASE_FOLD_TURKISH_AZERI
if ((flag & ONIGENC_CASE_FOLD_TURKISH_AZERI) == 0) { if ((flag & ONIGENC_CASE_FOLD_TURKISH_AZERI) == 0) {
#endif #endif
for (i = 0; for (i = 0; i < numberof(CaseUnfold_12_Locale); i++) {
i < (int )(sizeof(CaseUnfold_12_Locale)/sizeof(CaseUnfold_12_Type));
i++) {
for (j = 0; j < CaseUnfold_12_Locale[i].to.n; j++) { for (j = 0; j < CaseUnfold_12_Locale[i].to.n; j++) {
r = (*f)(CaseUnfold_12_Locale[i].to.code[j], r = (*f)(CaseUnfold_12_Locale[i].to.code[j],
(OnigCodePoint* )CaseUnfold_12_Locale[i].from, 2, arg); (OnigCodePoint* )CaseUnfold_12_Locale[i].from, 2, arg);
@ -11134,8 +11105,7 @@ onigenc_unicode_apply_all_case_fold(OnigCaseFoldType flag,
} }
#endif #endif
for (i = 0; i < (int )(sizeof(CaseUnfold_13)/sizeof(CaseUnfold_13_Type)); for (i = 0; i < numberof(CaseUnfold_13); i++) {
i++) {
for (j = 0; j < CaseUnfold_13[i].to.n; j++) { for (j = 0; j < CaseUnfold_13[i].to.n; j++) {
r = (*f)(CaseUnfold_13[i].to.code[j], r = (*f)(CaseUnfold_13[i].to.code[j],
(OnigCodePoint* )CaseUnfold_13[i].from, 3, arg); (OnigCodePoint* )CaseUnfold_13[i].from, 3, arg);