ruby-changes:41841
From: duerst <ko1@a...>
Date: Wed, 24 Feb 2016 22:31:22 +0900 (JST)
Subject: [ruby-changes:41841] duerst:r53915 (trunk): * include/ruby/oniguruma.h: Rearranging flag assignments and making
duerst 2016-02-24 22:32:01 +0900 (Wed, 24 Feb 2016) New Revision: 53915 https://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=revision&revision=53915 Log: * include/ruby/oniguruma.h: Rearranging flag assignments and making space for titlecase indices; adding additional macros to add or extract titlecase index; adding comments for better documentation. * enc/unicode.c: Moving some macros to include/ruby/oniguruma.h; activating use of titlecase indices. (with Kimihito Matsui) Modified files: trunk/ChangeLog trunk/enc/unicode.c trunk/include/ruby/oniguruma.h Index: enc/unicode.c =================================================================== --- enc/unicode.c (revision 53914) +++ enc/unicode.c (revision 53915) @@ -71,10 +71,6 @@ static const unsigned short EncUNICODE_I https://github.com/ruby/ruby/blob/trunk/enc/unicode.c#L71 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2 }; -/* use bottom bytes for actual code point count; 3 bits is more than enough */ -#define OnigCodePointCount(n) ((n)&0x7) -#define OnigCaseFoldFlags(n) ((n)&~0x7) - typedef struct { int n; OnigCodePoint code[3]; @@ -144,7 +140,7 @@ code3_equal(const OnigCodePoint *x, cons https://github.com/ruby/ruby/blob/trunk/enc/unicode.c#L140 #define U ONIGENC_CASE_UPCASE #define D ONIGENC_CASE_DOWNCASE #define F ONIGENC_CASE_FOLD -#define T(n) ONIGENC_CASE_TITLECASE +#define T(n) (ONIGENC_CASE_TITLECASE|OnigTitlecaseEncode(n)) #include "enc/unicode/casefold.h" Index: ChangeLog =================================================================== --- ChangeLog (revision 53914) +++ ChangeLog (revision 53915) @@ -1,6 +1,15 @@ https://github.com/ruby/ruby/blob/trunk/ChangeLog#L1 +Wed Feb 24 22:31:13 2016 Martin Duerst <duerst@i...> + + * include/ruby/oniguruma.h: Rearranging flag assignments and making + space for titlecase indices; adding additional macros to add or + extract titlecase index; adding comments for better documentation. + * enc/unicode.c: Moving some macros to include/ruby/oniguruma.h; + activating use of titlecase indices. + (with Kimihito Matsui) + Wed Feb 24 21:03:04 2016 Tanaka Akira <akr@f...> - * random.c (limited_rand): Add a specialized path for the limit fits + * random.c (limited_rand): Add a specialized path for when the limit fits in 32 bit. Tue Feb 23 21:52:24 2016 Martin Duerst <duerst@i...> Index: include/ruby/oniguruma.h =================================================================== --- include/ruby/oniguruma.h (revision 53914) +++ include/ruby/oniguruma.h (revision 53915) @@ -116,22 +116,45 @@ typedef ptrdiff_t OnigPosition; https://github.com/ruby/ruby/blob/trunk/include/ruby/oniguruma.h#L116 #define ONIG_INFINITE_DISTANCE ~((OnigDistance )0) +/* + * Onig casefold/case mapping flags and related definitions + * + * Subfields (starting with 0 at LSB): + * 0-2: Code point count in casefold.h + * 3-9: Index into TitleCase array in casefold.h + * 10-15, 18-20: Case mapping flags + */ typedef unsigned int OnigCaseFoldType; /* case fold flag */ ONIG_EXTERN OnigCaseFoldType OnigDefaultCaseFoldFlag; -/* #define ONIGENC_CASE_FOLD_HIRAGANA_KATAKANA (1<<1) */ -/* #define ONIGENC_CASE_FOLD_KATAKANA_WIDTH (1<<2) */ -#define ONIGENC_CASE_TITLECASE (1<<10) -#define ONIGENC_CASE_UPCASE (1<<11) -#define ONIGENC_CASE_DOWNCASE (1<<12) -#define ONIGENC_CASE_FOLD (1<<13) -#define ONIGENC_CASE_ONCEONLY (1<<14) -#define ONIGENC_CASE_MODIFIED (1<<15) -#define ONIGENC_CASE_ASCII_ONLY (1<<19) -#define ONIGENC_CASE_FOLD_TURKISH_AZERI (1<<20) -#define ONIGENC_CASE_FOLD_LITHUANIAN (1<<21) -#define INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR (1<<30) +/* bits for actual code point count; 3 bits is more than enough, currently only 2 used */ +#define OnigCodePointMask (0x7) +#define OnigCodePointCount(n) ((n)&OnigCodePointMask) +#define OnigCaseFoldFlags(n) ((n)&~OnigCodePointMask) +/* #define ONIGENC_CASE_FOLD_HIRAGANA_KATAKANA (1<<1) */ /* no longer usable with these values! */ +/* #define ONIGENC_CASE_FOLD_KATAKANA_WIDTH (1<<2) */ /* no longer usable with these values! */ + +/* bits for index into table with separate titlecase mappings */ +/* 7 bits provide 128 values; as of Unicode 8.0.0, 89 values are used */ +#define OnigTitlecaseShift (3) +#define OnigTitlecaseWidth (7) +#define OnigTitlecaseMask (((1<<OnigTitlecaseWidth)-1)<<OnigTitlecaseShift) +#define OnigTitlecaseEncode(n) (((n)<<OnigTitlecaseShift)&OnigTitlecaseMask) +#define OnigTitlecaseDecode(n) (((n)&OnigTitlecaseMask)>>OnigTitlecaseShift) + +#define OnigTitlecaseIndex + +#define ONIGENC_CASE_TITLECASE (1<<10) /* has/needs titlecase mapping */ +#define ONIGENC_CASE_UPCASE (1<<11) /* has/needs uppercase mapping */ +#define ONIGENC_CASE_DOWNCASE (1<<12) /* has/needs lowercase mapping */ +#define ONIGENC_CASE_FOLD (1<<13) /* has/needs case folding */ +#define ONIGENC_CASE_SPECIAL (1<<14) /* has/needs special mapping from separate table */ +#define ONIGENC_CASE_MODIFIED (1<<15) /* data has been modified */ +#define ONIGENC_CASE_ASCII_ONLY (1<<18) /* only modify ASCII range */ +#define ONIGENC_CASE_FOLD_LITHUANIAN (1<<19) /* needs Lithuanian-specific mapping */ +#define ONIGENC_CASE_FOLD_TURKISH_AZERI (1<<20) /* needs mapping specific to Turkic languages; better not change original value! */ +#define INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR (1<<30) /* better not change original value! */ #define ONIGENC_CASE_FOLD_MIN INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR #define ONIGENC_CASE_FOLD_DEFAULT OnigDefaultCaseFoldFlag -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/