1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

* 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>
* test/ruby/test_settracefunc.rb (test_return, test_return2): add two

View file

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