Diff
Not logged in

Differences From Artifact [f0174dcc1a]:

To Artifact [d976617199]:


735
736
737
738
739
740
741
742

743
744

745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
















765
766
767

768
769


770
771

772
773


774
775
776
777
778
779
780
735
736
737
738
739
740
741

742
743

744
745
746
747
748
















749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764



765


766
767


768


769
770
771
772
773
774
775
776
777







-
+

-
+




-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
+
-
-
+
+
-
-
+
-
-
+
+







 * Bits 5-7	Case delta type: 000 = identity
 *				 010 = add delta for lower
 *				 011 = add delta for lower, add 1 for title
 *				 100 = subtract delta for title/upper
 *				 101 = sub delta for upper, sub 1 for title
 *				 110 = sub delta for upper, add delta for lower
 *
 * Bits 8-21	Reserved for future use.
 * Bits 8-14	Reserved for future use.
 *
 * Bits 22-31	Case delta: delta for case conversions.  This should be the
 * Bits 15-31	Case delta: delta for case conversions.  This should be the
 *			    highest field so we can easily sign extend.
 */

static const int groups[] = {
    0, 15, 12, 25, 27, 21, 22, 26, 20, 9, 134217793, 28, 19, 134217858,
    29, 2, 23, 16, 11, 1178599554, 24, -507510654, 4194369, 4194434,
    -834666431, 973078658, -507510719, 1258291330, -817889150, 880803905,
    864026689, 859832385, 331350081, 847249473, 851443777, 868220993,
    -406847358, 884998209, 876609601, -683671422, 893386817, -545259390,
    897581121, 914358337, 910164033, 918552641, 5, -234880894, 8388705,
    4194467, 8388770, 331350146, -406847423, -234880959, -545259455,
    -1967128511, -683671487, -1979711423, 1883242626, -817889215,
    289407041, 297795649, 2017460354, 2030043266, 2021654658, 880803970,
    864026754, 859832450, 847249538, 851443842, 868221058, -1241513854,
    876609666, 884998274, -2109734782, -2134900606, 893386882, 897581186,
    -2042625918, 914358402, 289407106, 910164098, 297795714, 918552706,
    4, 6, -352321402, 159383617, 155189313, 268435521, 264241217,
    159383682, 155189378, 130023554, 268435586, 264241282, 33554497,
    260046978, 239075458, 1, 197132418, 226492546, 33554562, 360710274,
    335544450, -29359998, -251658175, 402653314, -29360063, 335544385,
    0, 15, 12, 25, 27, 21, 22, 26, 20, 9, 1048641, 28, 19, 1048706,
    29, 2, 23, 16, 11, -24346494, 24, -3964798, 32833, 32898, -6520767,
    7602306, -3964863, 9830530, -6389630, 6881345, 6750273, 6717505,
    2588737, 6619201, 6651969, 6783041, -3178366, 6914113, 6848577,
    -5341054, 6979649, -4259710, 7012417, 7143489, 7110721, 7176257,
    5, -1834878, 65633, 32931, 65698, 2588802, -3178431, -1834943,
    -4259775, 353730625, -5341119, 353632321, -354385790, -6389695,
    2261057, 2326593, -353337214, -353238910, -353304446, 6881410,
    6750338, 6717570, 6619266, 6652034, 6783106, -1385430910, 6848642,
    6914178, -352026494, -352223102, 6979714, 7012482, -351502206,
    7143554, 2261122, 7110786, 2326658, 7176322, 4, 6, -2752378, 1245249,
    1212481, 2097217, 2064449, 1245314, 1212546, 1015938, 2097282,
    2064514, 262209, 2031746, 1867906, 1, 1540226, 1769602, 262274,
    2818178, 2621570, -229246, -1966015, 3145858, -229311, 2621505,
    7, 491585, 491650, 1572929, 1572994, 8, 238026817, 10, -1157758846,
    -124977022, 1933442, -249528255, -262014, -262079, -2424702, -2817918,
    7, 62914625, 62914690, 201326657, 201326722, 8, 402653249, 10,
    2130706562, 1182793858, 247464066, -1874853823, -33554302, -33554367,
    -310378366, -360710014, -419430270, -536870782, -469761918, -528482174,
    -3276670, -4194174, -3669886, -4128638, -262077, -294782, -2424767,
    -33554365, -37748606, -310378431, -37748669, 155189378, -360710079,
    -419430335, -469761983, -536870847, -528482239, 13, 14, -1463812031,
    -294845, 236093570, -2817983, -3276735, -3669951, -4194239, -4128703,
    13, 14, -246316991, -274694079, -270729151, 917569, 917634, 524362,
    -801111999, -293601215, 117440577, 117440642, 67108938, 67109002,
    109051997, 109052061, -2109734847, 1182793793, -2042625983, -1967128446,
    524426, 852061, 852125, -352026559, -124977087, -351502271, 353730690,
    -1979711358, 2030043201, -2134900671, 2017460289, 2021654593,
    1883242561, 402653314, 2130706497, -1241513919, 18, 17
    353632386, -353238975, -352223167, -353337279, -353304511, -354385855,
    238026882, -1157758911, -1385430975, 18, 17
};

/*
 * The following constants are used to determine the category of a
 * Unicode character.
 */

817
818
819
820
821
822
823
824

825
826
827
828
829
830
831
832
814
815
816
817
818
819
820

821
822
823
824
825
826
827
828
829







-
+








 * The following macros extract the fields of the character info.  The
 * GetDelta() macro is complicated because we can't rely on the C compiler
 * to do sign extension on right shifts.
 */

#define GetCaseType(info) (((info) & 0xE0) >> 5)
#define GetCategory(info) ((info) & 0x1F)
#define GetDelta(info) (((info) > 0) ? ((info) >> 22) : (~(~((info)) >> 22)))
#define GetDelta(info) (((info) > 0) ? ((info) >> 15) : (~(~((info)) >> 15)))

/*
 * This macro extracts the information about a character from the
 * Unicode character tables.
 */

#define GetUniCharInfo(ch) (groups[groupMap[(pageMap[(((int)(ch)) & 0xffff) >> OFFSET_BITS] << OFFSET_BITS) | ((ch) & ((1 << OFFSET_BITS)-1))]])